RavEngine
Loading...
Searching...
No Matches
PhysicsCollider.hpp
1#pragma once
2#include "PhysXDefines.h"
3#include <PxMaterial.h>
4#include <PxPhysics.h>
5#include <PxSimulationEventCallback.h>
6#include "DebugDrawer.hpp"
7#include "mathtypes.hpp"
8#include "PhysicsMaterial.hpp"
9#include "Common3D.hpp"
10#include "Ref.hpp"
11#include "MeshAsset.hpp"
12
13namespace physx {
14 class PxShape;
15}
16
17namespace RavEngine {
18 struct PhysicsBodyComponent;
19 struct Transform;
21 {
22 friend class PhysicsBodyComponent;
23 protected:
24 physx::PxShape* collider = nullptr;
25 Ref<PhysicsMaterial> material;
26
32 public:
33 enum class CollisionType { Trigger, Collider };
34 void UpdateFilterData(PhysicsBodyComponent* owner);
40 void SetType(CollisionType);
41
46 CollisionType GetType() const;
47
53 void SetQueryable(bool);
54
59 bool GetQueryable() const;
60
66 void SetRelativeTransform(const vector3& position, const quaternion& rotation);
67
72
73 virtual void DebugDraw(RavEngine::DebugDrawer& dbg, color_t debug_color, const RavEngine::Transform&) const{}
74 };
75
76
78 protected:
79 vector3 extent;
80 public:
81
82 virtual ~BoxCollider() {}
83
90 BoxCollider(PhysicsBodyComponent* owner, const vector3& ext, Ref<PhysicsMaterial> mat, const vector3& position = vector3(0, 0, 0), const quaternion& rotation = quaternion(1.0, 0.0, 0.0, 0.0));
91
96 void DebugDraw(RavEngine::DebugDrawer& dbg, color_t, const RavEngine::Transform&) const override;
97
98 };
99
101 public:
102
110 SphereCollider(PhysicsBodyComponent* owner, decimalType radius, Ref<PhysicsMaterial> mat, const vector3& position = vector3(0,0,0), const quaternion& rotation = quaternion(1.0, 0.0, 0.0, 0.0));
111
116 void DebugDraw(RavEngine::DebugDrawer& dbg, color_t, const RavEngine::Transform&) const override;
117
118 decimalType GetRadius() const;
119 };
120
122 protected:
123 decimalType radius;
124 decimalType halfHeight;
125 public:
134 CapsuleCollider(PhysicsBodyComponent* owner, decimalType r, decimalType hh, Ref<PhysicsMaterial> mat, const vector3& position = vector3(0,0,0), const quaternion& rotation = quaternion(1.0, 0.0, 0.0, 0.0));
135
140 void DebugDraw(RavEngine::DebugDrawer& dbg, color_t, const RavEngine::Transform&) const override;
141 };
142
150
151#ifndef NDEBUG
152 Ref<MeshAsset> mesh; // used for debug wireframe
153#endif
154
155 void DebugDraw(RavEngine::DebugDrawer& dbg, color_t, const RavEngine::Transform&) const override;
156 };
157
159
166
167 void DebugDraw(RavEngine::DebugDrawer& dbg, color_t, const RavEngine::Transform&) const override{
168 //TODO: debug draw mesh collider
169 }
170 };
171}
Definition PhysicsCollider.hpp:77
void DebugDraw(RavEngine::DebugDrawer &dbg, color_t, const RavEngine::Transform &) const override
Definition PhysicsCollider.cpp:177
Definition PhysicsCollider.hpp:121
void DebugDraw(RavEngine::DebugDrawer &dbg, color_t, const RavEngine::Transform &) const override
Definition PhysicsCollider.cpp:185
Definition DebugDrawer.hpp:11
Definition PhysicsBodyComponent.hpp:41
Definition PhysicsCollider.hpp:21
void SetRelativeTransform(const vector3 &position, const quaternion &rotation)
Definition PhysicsCollider.cpp:164
void SetQueryable(bool)
Definition PhysicsCollider.cpp:154
Transformation GetRelativeTransform() const
Definition PhysicsCollider.cpp:168
CollisionType GetType() const
Definition PhysicsCollider.cpp:149
matrix4 CalculateWorldMatrix(const RavEngine::Transform &) const
Definition PhysicsCollider.cpp:173
void SetType(CollisionType)
Definition PhysicsCollider.cpp:135
bool GetQueryable() const
Definition PhysicsCollider.cpp:159
Definition PhysicsCollider.hpp:100
void DebugDraw(RavEngine::DebugDrawer &dbg, color_t, const RavEngine::Transform &) const override
Definition PhysicsCollider.cpp:181
Definition concurrentqueue.h:747
Abstract class for collision shapes.
Definition PxShape.h:146
Definition Animation.hpp:6
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39
Definition PhysicsCollider.hpp:158
Definition PhysicsCollider.hpp:143
Definition Transform.hpp:20
Definition Common3D.hpp:46
Definition qualifier.hpp:36
Definition type_quat.hpp:20
Definition qualifier.hpp:35