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
9
namespace
Grindstone {
10
class
WorldContextSet
;
11
}
12
13
namespace
Grindstone::Physics {
14
struct
ColliderComponent
{
15
virtual
void
Initialize() = 0;
16
17
Grindstone::UniquePtr<btCollisionShape>
collisionShape =
nullptr
;
18
};
19
20
struct
SphereColliderComponent
:
public
ColliderComponent
{
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
31
struct
PlaneColliderComponent
:
public
ColliderComponent
{
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
44
struct
BoxColliderComponent
:
public
ColliderComponent
{
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
55
struct
CapsuleColliderComponent
:
public
ColliderComponent
{
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
}
Grindstone::UniquePtr
Definition
UniquePtr.hpp:7
Grindstone::WorldContextSet
Definition
WorldContextSet.hpp:11
Grindstone::Math.Float3
Definition
FloatVectors.cs:108
Grindstone::Physics::BoxColliderComponent
Definition
ColliderComponent.hpp:44
Grindstone::Physics::CapsuleColliderComponent
Definition
ColliderComponent.hpp:55
Grindstone::Physics::ColliderComponent
Definition
ColliderComponent.hpp:14
Grindstone::Physics::PlaneColliderComponent
Definition
ColliderComponent.hpp:31
Grindstone::Physics::SphereColliderComponent
Definition
ColliderComponent.hpp:20
sources
code
Plugins
PhysicsBullet
Components
ColliderComponent.hpp
Generated by
1.13.2