Grindstone Game Engine v0.2.0
An open source game engine and toolkit.
Loading...
Searching...
No Matches
ColliderComponent.hpp
1#pragma once
2
3#include <bullet/btBulletCollisionCommon.h>
4#include <Common/Memory/SmartPointers/UniquePtr.hpp>
5#include <Common/Math.hpp>
6#include <EngineCore/ECS/Entity.hpp>
7#include <EngineCore/Reflection/ComponentReflection.hpp>
8
9namespace Grindstone {
10 class WorldContextSet;
11}
12
13namespace Grindstone::Physics {
15 virtual void Initialize() = 0;
16
17 Grindstone::UniquePtr<btCollisionShape> collisionShape = nullptr;
18 };
19
21 static void Construct(Grindstone::WorldContextSet& cxtSet, entt::entity entityId);
22 SphereColliderComponent Clone(Grindstone::WorldContextSet& cxt, entt::entity newEntityId) const;
23 virtual void Initialize() override;
24 virtual void SetRadius(float radius);
25 virtual float GetRadius() const;
26 private:
27 float radius = 0.0f;
28
29 REFLECT("SphereCollider")
30 };
31
33 static void Construct(Grindstone::WorldContextSet& cxtSet, entt::entity entityId);
34 PlaneColliderComponent Clone(Grindstone::WorldContextSet& cxt, entt::entity newEntityId) const;
35 virtual void Initialize() override;
36 virtual void SetCollider(Math::Float3 planeNormal, float positionAlongNormal);
37 virtual Math::Float3 GetPlaneNormal() const;
38 virtual float GetPositionAlongNormal() const;
39 private:
40 Math::Float3 planeNormal;
41 float positionAlongNormal;
42
43 REFLECT("PlaneCollider")
44 };
45
47 static void Construct(Grindstone::WorldContextSet& cxtSet, entt::entity entityId);
48 BoxColliderComponent Clone(Grindstone::WorldContextSet& cxt, entt::entity newEntityId) const;
49 virtual void Initialize() override;
50 virtual void SetSize(Math::Float3);
51 virtual Math::Float3 GetSize() const;
52 private:
53 Math::Float3 size;
54
55 REFLECT("BoxCollider")
56 };
57
59 static void Construct(Grindstone::WorldContextSet& cxtSet, entt::entity entityId);
60 CapsuleColliderComponent Clone(Grindstone::WorldContextSet& cxt, entt::entity newEntityId) const;
61 virtual void Initialize() override;
62 virtual void SetCollider(float radius, float height);
63 virtual float GetRadius() const;
64 virtual float GetHeight() const;
65 private:
66 float radius;
67 float height;
68
69 REFLECT("CapsuleCollider")
70 };
71}
Definition UniquePtr.hpp:7
Definition WorldContextSet.hpp:11
Definition PhysicsLayer.hpp:6
Definition ArchiveContentFile.hpp:8
Definition FloatVectors.cs:119
Definition ColliderComponent.hpp:46
Definition ColliderComponent.hpp:58
Definition ColliderComponent.hpp:14
Definition ColliderComponent.hpp:32
Definition ColliderComponent.hpp:20