Cogs.Core
Extensions
Physics
Source
CollisionSystem.h
1
#pragma once
2
#pragma once
3
#ifdef _WIN32
4
#pragma warning(push)
5
#pragma warning(disable: 4127)
// conditional expression is constant
6
#pragma warning(disable: 5033)
// 'register' is no longer a supported storage class
7
#endif
8
#include <btBulletDynamicsCommon.h>
9
#ifdef _WIN32
10
#pragma warning(pop)
11
#endif
12
13
#include "Systems/ComponentSystem.h"
14
#include "CollisionComponent.h"
15
16
namespace
Cogs
17
{
18
namespace
Core
19
{
20
class
PhysicsManager;
21
22
struct
CollisionData
23
{
24
std::unique_ptr<btCollisionShape> collisionShape;
25
std::unique_ptr<btTriangleMesh> mesh;
26
};
27
28
template
<
typename
T>
29
class
CollisionSystem
:
public
ComponentSystemWithDataPool
<T, CollisionData>
30
{
31
public
:
32
CollisionSystem
(
Memory::Allocator
* allocator,
Cogs::SizeType
capacity) :
ComponentSystemWithDataPool<T, CollisionData>
(allocator, capacity) {}
33
};
34
35
class
PlaneCollisionSystem
:
public
CollisionSystem
<PlaneCollisionComponent>
36
{
37
public
:
38
PlaneCollisionSystem
(
Memory::Allocator
* allocator,
Cogs::SizeType
capacity) :
CollisionSystem<PlaneCollisionComponent>
(allocator, capacity) {}
39
40
void
update
(
Context
*
context
)
final
;
41
};
42
43
class
SphereCollisionSystem
:
public
CollisionSystem
<SphereCollisionComponent>
44
{
45
public
:
46
SphereCollisionSystem
(
Memory::Allocator
* allocator,
Cogs::SizeType
capacity) :
CollisionSystem<SphereCollisionComponent>
(allocator, capacity) {}
47
48
void
update
(
Context
*
context
)
final
;
49
};
50
51
class
BoxCollisionSystem
:
public
CollisionSystem
<BoxCollisionComponent>
52
{
53
public
:
54
BoxCollisionSystem
(
Memory::Allocator
* allocator,
Cogs::SizeType
capacity) :
CollisionSystem<BoxCollisionComponent>
(allocator, capacity) {}
55
56
void
update
(
Context
*
context
)
final
;
57
};
58
59
class
CapsuleCollisionSystem
:
public
CollisionSystem
<CapsuleCollisionComponent>
60
{
61
public
:
62
CapsuleCollisionSystem
(
Memory::Allocator
* allocator,
Cogs::SizeType
capacity) :
CollisionSystem<CapsuleCollisionComponent>
(allocator, capacity) {}
63
64
void
update
(
Context
*
context
)
final
;
65
};
66
67
class
CylinderCollisionSystem
:
public
CollisionSystem
<CylinderCollisionComponent>
68
{
69
public
:
70
CylinderCollisionSystem
(
Memory::Allocator
* allocator,
Cogs::SizeType
capacity) :
CollisionSystem<CylinderCollisionComponent>
(allocator, capacity) {}
71
72
void
update
(
Context
*
context
)
final
;
73
};
74
75
class
EmptyCollisionSystem
:
public
CollisionSystem
<EmptyCollisionComponent>
76
{
77
public
:
78
EmptyCollisionSystem
(
Memory::Allocator
* allocator,
Cogs::SizeType
capacity) :
CollisionSystem<EmptyCollisionComponent>
(allocator, capacity) {}
79
80
void
update
(
Context
*
context
)
final
;
81
};
82
83
class
MeshCollisionSystem
:
public
CollisionSystem
<MeshCollisionComponent>
84
{
85
public
:
86
MeshCollisionSystem
(
Memory::Allocator
* allocator,
Cogs::SizeType
capacity) :
CollisionSystem<MeshCollisionComponent>
(allocator, capacity) {}
87
88
void
update
(
Context
*
context
)
final
;
89
};
90
}
91
}
Cogs::Core::BoxCollisionSystem
Definition:
CollisionSystem.h:52
Cogs::Core::CapsuleCollisionSystem
Definition:
CollisionSystem.h:60
Cogs::Core::CollisionSystem
Definition:
CollisionSystem.h:30
Cogs::Core::ComponentSystemBase::context
Context * context
Pointer to the Context instance the system lives in.
Definition:
ComponentSystem.h:136
Cogs::Core::ComponentSystemBase::update
void update()
Updates the system state to that of the current frame.
Definition:
ComponentSystem.h:65
Cogs::Core::ComponentSystemWithDataPool
Component system with parallel data per component stored in a pool similar to how the components them...
Definition:
ComponentSystem.h:365
Cogs::Core::Context
A Context instance contains all the services, systems and runtime components needed to use Cogs.
Definition:
Context.h:83
Cogs::Core::CylinderCollisionSystem
Definition:
CollisionSystem.h:68
Cogs::Core::EmptyCollisionSystem
Definition:
CollisionSystem.h:76
Cogs::Core::MeshCollisionSystem
Definition:
CollisionSystem.h:84
Cogs::Core::PlaneCollisionSystem
Definition:
CollisionSystem.h:36
Cogs::Core::SphereCollisionSystem
Definition:
CollisionSystem.h:44
Cogs::Memory::Allocator
Base allocator implementation.
Definition:
Allocator.h:30
Cogs
Contains all Cogs related functionality.
Definition:
FieldSetter.h:23
Cogs::SizeType
ComponentIndex SizeType
Type used to track the size of pools.
Definition:
Component.h:19
Cogs::Core::CollisionData
Definition:
CollisionSystem.h:23
Generated by
1.9.6