Cogs.Core
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
16namespace Cogs
17{
18 namespace Core
19 {
20 class PhysicsManager;
21
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:
33 };
34
35 class PlaneCollisionSystem : public CollisionSystem<PlaneCollisionComponent>
36 {
37 public:
39
40 void update(Context * context) final;
41 };
42
43 class SphereCollisionSystem : public CollisionSystem<SphereCollisionComponent>
44 {
45 public:
47
48 void update(Context * context) final;
49 };
50
51 class BoxCollisionSystem : public CollisionSystem<BoxCollisionComponent>
52 {
53 public:
55
56 void update(Context * context) final;
57 };
58
59 class CapsuleCollisionSystem : public CollisionSystem<CapsuleCollisionComponent>
60 {
61 public:
63
64 void update(Context * context) final;
65 };
66
67 class CylinderCollisionSystem : public CollisionSystem<CylinderCollisionComponent>
68 {
69 public:
71
72 void update(Context * context) final;
73 };
74
75 class EmptyCollisionSystem : public CollisionSystem<EmptyCollisionComponent>
76 {
77 public:
79
80 void update(Context * context) final;
81 };
82
83 class MeshCollisionSystem : public CollisionSystem<MeshCollisionComponent>
84 {
85 public:
87
88 void update(Context * context) final;
89 };
90 }
91}
Context * context
Pointer to the Context instance the system lives in.
void update()
Updates the system state to that of the current frame.
Component system with parallel data per component stored in a pool similar to how the components them...
A Context instance contains all the services, systems and runtime components needed to use Cogs.
Definition: Context.h:83
Base allocator implementation.
Definition: Allocator.h:30
Contains all Cogs related functionality.
Definition: FieldSetter.h:23
ComponentIndex SizeType
Type used to track the size of pools.
Definition: Component.h:19