Stowy Physics Engine 0.1.0
Loading...
Searching...
No Matches
CollisionWorld.hpp
Go to the documentation of this file.
1
11#pragma once
12
13#include <vector>
14
15#include "BroadPhaseGrid.hpp"
16#include "CollisionBody.hpp"
17
18#include "dynamics/Solver.hpp"
19
20namespace stw
21{
28{
29public:
31 CollisionWorld(std::unordered_map<std::uint64_t, CollisionBody*> bodies, std::vector<Solver*> solvers);
32
34
40
45 void RemoveCollisionBody(const CollisionBody* body);
46
51 void AddSolver(Solver* solver);
52
57 void RemoveSolver(Solver* solver);
58
63 void SetCollisionCallback(const std::function<void(Collision&, float)>& callback);
64
70 void SolveCollisions(const std::vector<Collision>& collisions, float deltaTime) const;
71
77 void SendCollisionCallbacks(std::vector<Collision>& collisions, float deltaTime) const;
78
83 void ResolveCollisions(float deltaTime);
84
85 void FindCollisions(std::uint64_t firstId, std::uint64_t secondId, std::vector<Collision>& collisions, std::vector<Collision>& triggers);
86
87protected:
88 std::unordered_map<std::uint64_t, CollisionBody*> _bodies;
89 std::vector<Solver*> _solvers;
91
92 std::function<void(Collision&, float)> _onCollision;
93};
94}
Contains the BroadPhaseGrid class.
Contains the CollisionBody struct.
Contains the Solver struct.
A grid in which the physical object are placed in. This is used to optimize performance by only check...
Definition BroadPhaseGrid.hpp:27
A body that can receive collisions.
Definition CollisionBody.hpp:26
Represents a world where collisions can happen. It does not have dynamics, for this you will need the...
Definition CollisionWorld.hpp:28
void RemoveSolver(Solver *solver)
Removes the solver from the world.
Definition CollisionWorld.cpp:40
void FindCollisions(std::uint64_t firstId, std::uint64_t secondId, std::vector< Collision > &collisions, std::vector< Collision > &triggers)
Definition CollisionWorld.cpp:130
void SendCollisionCallbacks(std::vector< Collision > &collisions, float deltaTime) const
Calls the callbacks of all the bodies in each collisions.
Definition CollisionWorld.cpp:64
std::unordered_map< std::uint64_t, CollisionBody * > _bodies
Definition CollisionWorld.hpp:88
BroadPhaseGrid _grid
Definition CollisionWorld.hpp:90
void AddSolver(Solver *solver)
Adds a solver to the world.
Definition CollisionWorld.cpp:35
std::vector< Solver * > _solvers
Definition CollisionWorld.hpp:89
std::function< void(Collision &, float) _onCollision)
Definition CollisionWorld.hpp:92
CollisionWorld()
Definition CollisionWorld.cpp:10
bool useSpacePartitioning
Definition CollisionWorld.hpp:33
void RemoveCollisionBody(const CollisionBody *body)
Removes a collision body to the world.
Definition CollisionWorld.cpp:28
void AddCollisionBody(CollisionBody *body)
Adds a collision body to the world.
Definition CollisionWorld.cpp:21
void ResolveCollisions(float deltaTime)
Resolves all the collisions that happened in this world.
Definition CollisionWorld.cpp:76
void SolveCollisions(const std::vector< Collision > &collisions, float deltaTime) const
Solves the collisions with the provided solvers.
Definition CollisionWorld.cpp:56
void SetCollisionCallback(const std::function< void(Collision &, float)> &callback)
Sets the collision callback of this world.
Definition CollisionWorld.cpp:51
Generic class for all solvers.
Definition Solver.hpp:24
Definition BroadPhaseGrid.hpp:18
Struct representing a collision.
Definition Collision.hpp:21