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 SphereColliderComponent Clone(Grindstone::WorldContextSet& cxt, entt::entity newEntityId) const;
22 virtual void Initialize() override;
23 virtual void SetRadius(float radius);
24 virtual float GetRadius() const;
25 private:
26 float radius = 0.0f;
27
28 REFLECT("SphereCollider")
29 };
30
32 PlaneColliderComponent Clone(Grindstone::WorldContextSet& cxt, entt::entity newEntityId) const;
33 virtual void Initialize() override;
34 virtual void SetCollider(Math::Float3 planeNormal, float positionAlongNormal);
35 virtual Math::Float3 GetPlaneNormal() const;
36 virtual float GetPositionAlongNormal() const;
37 private:
38 Math::Float3 planeNormal;
39 float positionAlongNormal;
40
41 REFLECT("PlaneCollider")
42 };
43
45 BoxColliderComponent Clone(Grindstone::WorldContextSet& cxt, entt::entity newEntityId) const;
46 virtual void Initialize() override;
47 virtual void SetSize(Math::Float3);
48 virtual Math::Float3 GetSize() const;
49 private:
50 Math::Float3 size;
51
52 REFLECT("BoxCollider")
53 };
54
56 CapsuleColliderComponent Clone(Grindstone::WorldContextSet& cxt, entt::entity newEntityId) const;
57 virtual void Initialize() override;
58 virtual void SetCollider(float radius, float height);
59 virtual float GetRadius() const;
60 virtual float GetHeight() const;
61 private:
62 float radius;
63 float height;
64
65 REFLECT("CapsuleCollider")
66 };
67}
Definition UniquePtr.hpp:7
Definition WorldContextSet.hpp:11
Definition FloatVectors.cs:108
Definition ColliderComponent.hpp:44
Definition ColliderComponent.hpp:55
Definition ColliderComponent.hpp:14
Definition ColliderComponent.hpp:31
Definition ColliderComponent.hpp:20