Grindstone Game Engine
v0.2.0
An open source game engine and toolkit.
Toggle main menu visibility
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
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
32
struct
PlaneColliderComponent
:
public
ColliderComponent
{
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
46
struct
BoxColliderComponent
:
public
ColliderComponent
{
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
58
struct
CapsuleColliderComponent
:
public
ColliderComponent
{
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
}
Grindstone::UniquePtr
Definition
UniquePtr.hpp:7
Grindstone::WorldContextSet
Definition
WorldContextSet.hpp:11
Grindstone::Physics
Definition
PhysicsLayer.hpp:6
Grindstone
Definition
ArchiveContentFile.hpp:8
Grindstone::Math.Float3
Definition
FloatVectors.cs:119
Grindstone::Physics::BoxColliderComponent
Definition
ColliderComponent.hpp:46
Grindstone::Physics::CapsuleColliderComponent
Definition
ColliderComponent.hpp:58
Grindstone::Physics::ColliderComponent
Definition
ColliderComponent.hpp:14
Grindstone::Physics::PlaneColliderComponent
Definition
ColliderComponent.hpp:32
Grindstone::Physics::SphereColliderComponent
Definition
ColliderComponent.hpp:20
plugins
Grindstone.Physics.Bullet
include
Components
ColliderComponent.hpp
Generated by
1.17.0