Stowy Physics Engine 0.1.0
Loading...
Searching...
No Matches
stw::CollisionWorld Class Reference

Represents a world where collisions can happen. It does not have dynamics, for this you will need the DynamicsWorld. More...

#include <CollisionWorld.hpp>

Inheritance diagram for stw::CollisionWorld:
Collaboration diagram for stw::CollisionWorld:

Public Member Functions

 CollisionWorld ()
 
 CollisionWorld (std::unordered_map< std::uint64_t, CollisionBody * > bodies, std::vector< Solver * > solvers)
 
void AddCollisionBody (CollisionBody *body)
 Adds a collision body to the world.
 
void RemoveCollisionBody (const CollisionBody *body)
 Removes a collision body to the world.
 
void AddSolver (Solver *solver)
 Adds a solver to the world.
 
void RemoveSolver (Solver *solver)
 Removes the solver from the world.
 
void SetCollisionCallback (const std::function< void(Collision &, float)> &callback)
 Sets the collision callback of this world.
 
void SolveCollisions (const std::vector< Collision > &collisions, float deltaTime) const
 Solves the collisions with the provided solvers.
 
void SendCollisionCallbacks (std::vector< Collision > &collisions, float deltaTime) const
 Calls the callbacks of all the bodies in each collisions.
 
void ResolveCollisions (float deltaTime)
 Resolves all the collisions that happened in this world.
 
void FindCollisions (std::uint64_t firstId, std::uint64_t secondId, std::vector< Collision > &collisions, std::vector< Collision > &triggers)
 

Public Attributes

bool useSpacePartitioning = true
 

Protected Attributes

std::unordered_map< std::uint64_t, CollisionBody * > _bodies
 
std::vector< Solver * > _solvers
 
BroadPhaseGrid _grid
 
std::function< void(Collision &, float) _onCollision )
 

Detailed Description

Represents a world where collisions can happen. It does not have dynamics, for this you will need the DynamicsWorld.

See also
DynamicsWorld

Constructor & Destructor Documentation

◆ CollisionWorld() [1/2]

stw::CollisionWorld::CollisionWorld ( )

◆ CollisionWorld() [2/2]

stw::CollisionWorld::CollisionWorld ( std::unordered_map< std::uint64_t, CollisionBody * > bodies,
std::vector< Solver * > solvers )

Member Function Documentation

◆ AddCollisionBody()

void stw::CollisionWorld::AddCollisionBody ( CollisionBody * body)

Adds a collision body to the world.

Parameters
bodyBody to add.

◆ AddSolver()

void stw::CollisionWorld::AddSolver ( Solver * solver)

Adds a solver to the world.

Parameters
solverSolver to add.

◆ FindCollisions()

void stw::CollisionWorld::FindCollisions ( std::uint64_t firstId,
std::uint64_t secondId,
std::vector< Collision > & collisions,
std::vector< Collision > & triggers )
Here is the call graph for this function:

◆ RemoveCollisionBody()

void stw::CollisionWorld::RemoveCollisionBody ( const CollisionBody * body)

Removes a collision body to the world.

Parameters
bodyBody to remove.

◆ RemoveSolver()

void stw::CollisionWorld::RemoveSolver ( Solver * solver)

Removes the solver from the world.

Parameters
solverSolver to remove.

◆ ResolveCollisions()

void stw::CollisionWorld::ResolveCollisions ( float deltaTime)

Resolves all the collisions that happened in this world.

Parameters
deltaTimeTime elapsed since the last frame.
Here is the call graph for this function:

◆ SendCollisionCallbacks()

void stw::CollisionWorld::SendCollisionCallbacks ( std::vector< Collision > & collisions,
float deltaTime ) const

Calls the callbacks of all the bodies in each collisions.

Parameters
collisionsCollisions to send callback from.
deltaTimeTime elapsed since the last frame.

◆ SetCollisionCallback()

void stw::CollisionWorld::SetCollisionCallback ( const std::function< void(Collision &, float)> & callback)

Sets the collision callback of this world.

Parameters
callbackCallback to set.

◆ SolveCollisions()

void stw::CollisionWorld::SolveCollisions ( const std::vector< Collision > & collisions,
float deltaTime ) const

Solves the collisions with the provided solvers.

Parameters
collisionsCollisions to solve.
deltaTimeTime elapsed since the last frame.

Member Data Documentation

◆ _bodies

std::unordered_map<std::uint64_t, CollisionBody*> stw::CollisionWorld::_bodies
protected

◆ _grid

BroadPhaseGrid stw::CollisionWorld::_grid
protected

◆ _onCollision

std::function<void(Collision&, float) stw::CollisionWorld::_onCollision)
protected

◆ _solvers

std::vector<Solver*> stw::CollisionWorld::_solvers
protected

◆ useSpacePartitioning

bool stw::CollisionWorld::useSpacePartitioning = true

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