OGL Engine 1.2.0-dev
Loading...
Searching...
No Matches
physicsystem.hpp
Go to the documentation of this file.
1
5#pragma once
6
7#include "../ecs/system.hpp"
10
11#include "rigidbody.hpp"
12#include "collider.hpp"
13#include "manifold.hpp"
14#include "spatialhash.hpp"
15#include "aabb.hpp"
16#include "obb.hpp"
17
18namespace Engine::Physics {
25 class PhysicSystem : public ECS::System {
26 private:
27 int maxIterations = MAX_PHYSICS_ITERATIONS;
28 double physicsTime = 0.0f;
29
35 glm::vec2 gravity = {0.0f, 9.81f};
36
42 void ApplyMotion(float dt);
48 void ResolveCollisions(float dt);
49
57 CollisionManifold CheckAABBCollision(const AABB& a, const AABB& b);
65 CollisionManifold CheckOBBCollision(const OBB& a, const OBB& b);
73 glm::vec2 Reflect(const glm::vec2& velocity, const glm::vec2& normal);
74
81 SpatialHash BuildSpatialHash(const std::vector<EntityID>& collidableIDs);
82
89 std::vector<std::pair<EntityID, EntityID>> GenerateBroadPhasePairs(SpatialHash spatialHash);
90 public:
96 void OnFixedUpdate(float deltaTime) override;
97 };
98}
Contient la déclaration de la structure AABB.
Component de "scripting" qui permet de profiter des fonctions de cycle de vie sur n'importe quelle en...
La classe System implémente une logique spécifique à des composants.
Definition system.hpp:24
Le Système physique dans son ensemble définit ici.
Definition physicsystem.hpp:25
void OnFixedUpdate(float deltaTime) override
Méthode de cycle de vie de l'app qui appelle les méthodes privées.
Definition physicsystem.cpp:12
Ce fichier contient les types de données nécessaires à la gestion des collisions dans les systèmes ph...
Definition aabb.hpp:10
std::unordered_map< Cell, std::vector< Engine::EntityID >, CellHash > SpatialHash
Défiinition du "type" spatialHash => simplement une unordered_map qui lit des entités à une cellule.
Definition spatialhash.hpp:53
constexpr int MAX_PHYSICS_ITERATIONS
Le nombre maximum d'itérations autorisés dans les systèmes physiques pour résoudre collisions et cont...
Definition constants.hpp:37
Définit la structure d'une OBB.
Définition d'un rigidbody au sens physique du terme.
Définit les structures de données nécessaires à la création d'un spatial hash.
Axis Aligned Bounding Box.
Definition aabb.hpp:17
Définition d'un manifeste de collision.
Definition manifold.hpp:11
Oriented Bounding Box.
Definition obb.hpp:18
Définit la manière dont le Système se comporte dans l'architecture ECS.