3#include "structure/engine/2d/spk_collision_mesh_2d.hpp"
4#include "structure/engine/2d/spk_component_2d.hpp"
5#include "structure/engine/2d/spk_mesh_2d.hpp"
36 static std::set<RegistryEntry> _rigidBodies;
38 const Mesh2D *_mesh =
nullptr;
52 void start()
override;
98 static const std::set<RegistryEntry> &
rigidBodies();
110 bool collides(
const spk::Vector2 &p_worldPoint)
const;
Convex collision mesh built from 2D points.
Definition spk_collision_mesh_2d.hpp:21
Component2D(const std::wstring &p_name)
Builds a 2D component with a name.
Definition spk_component_2d.cpp:9
Hierarchical game object containing components and children.
Definition spk_entity.hpp:34
ContractProvider::Contract EditionContract
Definition spk_mesh.hpp:38
Renderable mesh composed of 2D vertices.
Definition spk_mesh_2d.hpp:30
const CollisionMesh2D & collisionMesh() const
Returns the collision mesh derived from the render mesh.
Definition spk_rigid_body_2d.cpp:51
std::pair< spk::Entity *, spk::RigidBody2D * > RegistryEntry
Registry entry associating an entity with a rigid body.
Definition spk_rigid_body_2d.hpp:33
TriggerMode
Defines collision response behavior.
Definition spk_rigid_body_2d.hpp:27
const std::function< void(spk::Entity *, spk::Entity *)> & triggerAction() const
Returns the trigger callback.
Definition spk_rigid_body_2d.cpp:71
bool collides(const RigidBody2D &p_other) const
Tests collision against another rigid body.
Definition spk_rigid_body_2d.cpp:81
void start() override
Registers the rigid body for collision updates.
Definition spk_rigid_body_2d.cpp:14
static const std::set< RegistryEntry > & rigidBodies()
Returns the registry of active rigid bodies.
Definition spk_rigid_body_2d.cpp:76
void stop() override
Unregisters the rigid body from collision updates.
Definition spk_rigid_body_2d.cpp:22
void setTriggerMode(TriggerMode p_mode)
Sets the trigger mode.
Definition spk_rigid_body_2d.cpp:56
RigidBody2D(const std::wstring &p_name)
Creates a rigid body component.
Definition spk_rigid_body_2d.cpp:9
void setMesh(const Mesh2D *p_mesh)
Sets the mesh used for collision.
Definition spk_rigid_body_2d.cpp:30
const Mesh2D * mesh() const
Returns the mesh used for collision.
Definition spk_rigid_body_2d.cpp:46
void setTriggerAction(std::function< void(spk::Entity *, spk::Entity *)> p_action)
Sets the trigger callback for collisions.
Definition spk_rigid_body_2d.cpp:66
TriggerMode triggerMode() const
Returns the trigger mode.
Definition spk_rigid_body_2d.cpp:61