Sparkle 0.0.1
Loading...
Searching...
No Matches
spk::RigidBody2D Class Reference

Physics component that handles collisions in 2D. More...

#include <spk_rigid_body_2d.hpp>

Inheritance diagram for spk::RigidBody2D:
Inheritance graph
Collaboration diagram for spk::RigidBody2D:
Collaboration graph

Public Types

enum class  TriggerMode { Trigger , Blocking }
 Defines collision response behavior.
using RegistryEntry = std::pair<spk::Entity *, spk::RigidBody2D *>
 Registry entry associating an entity with a rigid body.
Public Types inherited from spk::ActivableObject
using Contract = StatefulObject<ActivationStatus>::Contract
 Subscription handle controlling callback lifetime.
using Job = StatefulObject<ActivationStatus>::Job
 Callback signature executed on activation state changes.
Public Types inherited from spk::StatefulObject< ActivationStatus >
using Contract
 Handle allowing subscribers to manage callback lifetimes.
using Job
 Callable invoked when the object transitions to a state.

Public Member Functions

 RigidBody2D (const std::wstring &p_name)
 Creates a rigid body component.
void start () override
 Registers the rigid body for collision updates.
void stop () override
 Unregisters the rigid body from collision updates.
void setMesh (const Mesh2D *p_mesh)
 Sets the mesh used for collision.
const Mesh2Dmesh () const
 Returns the mesh used for collision.
const CollisionMesh2DcollisionMesh () const
 Returns the collision mesh derived from the render mesh.
void setTriggerMode (TriggerMode p_mode)
 Sets the trigger mode.
TriggerMode triggerMode () const
 Returns the trigger mode.
void setTriggerAction (std::function< void(spk::Entity *, spk::Entity *)> p_action)
 Sets the trigger callback for collisions.
const std::function< void(spk::Entity *, spk::Entity *)> & triggerAction () const
 Returns the trigger callback.
bool collides (const RigidBody2D &p_other) const
 Tests collision against another rigid body.
bool collides (const spk::Vector2 &p_worldPoint) const
 Tests collision against a world-space point.
Public Member Functions inherited from spk::Component2D
 Component2D (const std::wstring &p_name)
 Builds a 2D component with a name.
Entity2Downer ()
 Returns the 2D owner entity.
const Entity2Downer () const
 Returns the 2D owner entity.
Public Member Functions inherited from spk::Component
 Component (const std::wstring &p_name)
 Builds a component with a name.
 ~Component () override
 Virtual destructor.
void setName (const std::wstring &p_name)
 Sets the component name.
void setPriority (const int &p_priority)
 Sets the component priority.
const std::wstring & name () const
 Returns the component name.
int priority () const
 Returns the component priority.
Entityowner ()
 Returns the owning entity.
const Entityowner () const
 Returns the owning entity.
virtual void awake ()
 Called when the component becomes active.
virtual void sleep ()
 Called when the component is put to sleep.
virtual void handleGeometryChange (const spk::Extend2D &p_geometry)
 Handles geometry change events.
virtual void handlePaintEvent (spk::PaintEvent &p_event)
 Handles paint events.
virtual void handleKeyPressEvent (spk::KeyPressEvent &p_event)
 Handles key press events.
virtual void handleKeyReleaseEvent (spk::KeyReleaseEvent &p_event)
 Handles key release events.
virtual void handleGlyphEvent (spk::GlyphEvent &p_event)
 Handles glyph input events.
virtual void handleMousePressEvent (spk::MousePressEvent &p_event)
 Handles mouse press events.
virtual void handleMouseReleaseEvent (spk::MouseReleaseEvent &p_event)
 Handles mouse release events.
virtual void handleMouseDoubleClickEvent (spk::MouseDoubleClickEvent &p_event)
 Handles mouse double-click events.
virtual void handleMouseMotionEvent (spk::MouseMotionEvent &p_event)
 Handles mouse motion events.
virtual void handleMouseWheelEvent (spk::MouseWheelEvent &p_event)
 Handles mouse wheel events.
virtual void handleEnterResizeModeEvent (spk::EnterResizeModeEvent &p_event)
 Handles enter resize mode events.
virtual void handleResizeEvent (spk::ResizeEvent &p_event)
 Handles resize events.
virtual void handleExitResizeModeEvent (spk::ExitResizeModeEvent &p_event)
 Handles exit resize mode events.
virtual void handleQuitEvent (spk::QuitEvent &p_event)
 Handles quit events.
virtual void handleMoveEvent (spk::MoveEvent &p_event)
 Handles move events.
virtual void handleFullScreenModeEvent (spk::FullScreenModeEvent &p_event)
 Handles fullscreen mode events.
virtual void handleMaximizedModeEvent (spk::MaximizedModeEvent &p_event)
 Handles maximized mode events.
virtual void handleFocusEvent (spk::FocusEvent &p_event)
 Handles focus events.
virtual void handleUpdateEvent (spk::UpdateEvent &p_event)
 Handles update events.
Public Member Functions inherited from spk::ActivableObject
 ActivableObject ()
 Builds a deactivated object.
 ActivableObject (ActivationStatus p_initial)
 Builds with a custom initial activation state.
void activate ()
 Sets the state to Activated.
void deactivate ()
 Sets the state to Deactivated.
void toggle ()
 Toggles between activated and deactivated states.
bool isActive () const
 Checks whether the object is currently activated.
Contract addActivationCallback (const Job &p_callback)
 Registers a callback executed when the object activates.
Contract addDeactivationCallback (const Job &p_callback)
 Registers a callback executed when the object deactivates.
Public Member Functions inherited from spk::StatefulObject< ActivationStatus >
 StatefulObject (const ActivationStatus &p_initialState)
 Builds with an initial state.
StatefulObjectoperator= (const StatefulObject &p_other)=delete
void setState (const ActivationStatus &p_newState)
 Sets a new state and triggers callbacks registered for it.
ActivationStatus state () const
 Returns the current state.
Contract addCallback (const ActivationStatus &p_state, const Job &p_callback)
 Subscribes a callback for a specific state.

Static Public Member Functions

static const std::set< RegistryEntry > & rigidBodies ()
 Returns the registry of active rigid bodies.

Additional Inherited Members

Protected Member Functions inherited from spk::Component
virtual void _onGeometryChange (const spk::Extend2D &p_geometry)
 Handles geometry changes before public callbacks.
virtual void _onPaintEvent (spk::PaintEvent &p_event)
 Handles paint events before public callbacks.
virtual void _onKeyPressEvent (spk::KeyPressEvent &p_event)
 Handles key press events before public callbacks.
virtual void _onKeyReleaseEvent (spk::KeyReleaseEvent &p_event)
 Handles key release events before public callbacks.
virtual void _onGlyphEvent (spk::GlyphEvent &p_event)
 Handles glyph input events before public callbacks.
virtual void _onMousePressEvent (spk::MousePressEvent &p_event)
 Handles mouse press events before public callbacks.
virtual void _onMouseReleaseEvent (spk::MouseReleaseEvent &p_event)
 Handles mouse release events before public callbacks.
virtual void _onMouseDoubleClickEvent (spk::MouseDoubleClickEvent &p_event)
 Handles mouse double-click events before public callbacks.
virtual void _onMouseMotionEvent (spk::MouseMotionEvent &p_event)
 Handles mouse motion events before public callbacks.
virtual void _onMouseWheelEvent (spk::MouseWheelEvent &p_event)
 Handles mouse wheel events before public callbacks.
virtual void _onEnterResizeModeEvent (spk::EnterResizeModeEvent &p_event)
 Handles enter resize mode events before public callbacks.
virtual void _onResizeEvent (spk::ResizeEvent &p_event)
 Handles resize events before public callbacks.
virtual void _onExitResizeModeEvent (spk::ExitResizeModeEvent &p_event)
 Handles exit resize mode events before public callbacks.
virtual void _onQuitEvent (spk::QuitEvent &p_event)
 Handles quit events before public callbacks.
virtual void _onMoveEvent (spk::MoveEvent &p_event)
 Handles move events before public callbacks.
virtual void _onFullScreenModeEvent (spk::FullScreenModeEvent &p_event)
 Handles fullscreen mode events before public callbacks.
virtual void _onMaximizedModeEvent (spk::MaximizedModeEvent &p_event)
 Handles maximized mode events before public callbacks.
virtual void _onFocusEvent (spk::FocusEvent &p_event)
 Handles focus events before public callbacks.
virtual void _onUpdateEvent (spk::UpdateEvent &p_event)
 Handles update events before public callbacks.

Detailed Description

Physics component that handles collisions in 2D.

Constructor & Destructor Documentation

◆ RigidBody2D()

spk::RigidBody2D::RigidBody2D ( const std::wstring & p_name)
explicit

Creates a rigid body component.

Parameters
p_nameComponent name.
Here is the call graph for this function:
Here is the caller graph for this function:

Member Function Documentation

◆ collides() [1/2]

bool spk::RigidBody2D::collides ( const RigidBody2D & p_other) const

Tests collision against another rigid body.

Parameters
p_otherOther rigid body.
Returns
True if the collision meshes overlap.
Here is the call graph for this function:

◆ collides() [2/2]

bool spk::RigidBody2D::collides ( const spk::Vector2 & p_worldPoint) const

Tests collision against a world-space point.

Parameters
p_worldPointWorld point to test.
Returns
True if the point is inside the collision mesh.
Here is the call graph for this function:

◆ collisionMesh()

const CollisionMesh2D & spk::RigidBody2D::collisionMesh ( ) const

Returns the collision mesh derived from the render mesh.

Returns
Collision mesh.

◆ mesh()

const Mesh2D * spk::RigidBody2D::mesh ( ) const

Returns the mesh used for collision.

Returns
Pointer to the mesh or nullptr.

◆ rigidBodies()

const std::set< RigidBody2D::RegistryEntry > & spk::RigidBody2D::rigidBodies ( )
static

Returns the registry of active rigid bodies.

Returns
Set of registry entries.

◆ setMesh()

void spk::RigidBody2D::setMesh ( const Mesh2D * p_mesh)

Sets the mesh used for collision.

Parameters
p_meshMesh to use.
Here is the call graph for this function:

◆ setTriggerAction()

void spk::RigidBody2D::setTriggerAction ( std::function< void(spk::Entity *, spk::Entity *)> p_action)

Sets the trigger callback for collisions.

Parameters
p_actionCallback invoked with self and other entities.

◆ setTriggerMode()

void spk::RigidBody2D::setTriggerMode ( TriggerMode p_mode)

Sets the trigger mode.

Parameters
p_modeTrigger or blocking mode.

◆ start()

void spk::RigidBody2D::start ( )
overridevirtual

Registers the rigid body for collision updates.

Reimplemented from spk::Component.

Here is the call graph for this function:

◆ stop()

void spk::RigidBody2D::stop ( )
overridevirtual

Unregisters the rigid body from collision updates.

Reimplemented from spk::Component.

Here is the call graph for this function:

◆ triggerAction()

const std::function< void(spk::Entity *, spk::Entity *)> & spk::RigidBody2D::triggerAction ( ) const

Returns the trigger callback.

Returns
Callback function.

◆ triggerMode()

RigidBody2D::TriggerMode spk::RigidBody2D::triggerMode ( ) const

Returns the trigger mode.

Returns
Current trigger mode.

The documentation for this class was generated from the following files: