diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-10-23 21:54:28 +0200 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-10-23 21:54:28 +0200 |
commit | 9b7be419c9dcc6ebd1e504713c7b2676ca3d2fdf (patch) | |
tree | 97a2fc5ce1ec1345bd6f44889682ea9a2ffafd76 /src/crepe/PhysicsSystem.cpp | |
parent | 080ad535e6fc6666b919b1a21b6986aaf9b678eb (diff) |
`clang-format`
Diffstat (limited to 'src/crepe/PhysicsSystem.cpp')
-rw-r--r-- | src/crepe/PhysicsSystem.cpp | 80 |
1 files changed, 42 insertions, 38 deletions
diff --git a/src/crepe/PhysicsSystem.cpp b/src/crepe/PhysicsSystem.cpp index 93b20f1..4bb931d 100644 --- a/src/crepe/PhysicsSystem.cpp +++ b/src/crepe/PhysicsSystem.cpp @@ -1,56 +1,60 @@ #include "PhysicsSystem.h" #include "ComponentManager.h" +#include "api/Force.h" #include "api/Rigidbody.h" #include "api/Transform.h" -#include "api/Force.h" #include <iostream> using namespace crepe; using namespace crepe::api; -PhysicsSystem::PhysicsSystem() { - -} +PhysicsSystem::PhysicsSystem() {} void PhysicsSystem::update() { - ComponentManager& mgr = ComponentManager::get_instance(); - std::vector<std::reference_wrapper<Rigidbody>> rigidbodies = mgr.get_components_by_type<Rigidbody>(); - std::vector<std::reference_wrapper<Transform>> transforms = mgr.get_components_by_type<Transform>(); - - for (Rigidbody& rigidbody : rigidbodies) { + ComponentManager & mgr = ComponentManager::get_instance(); + std::vector<std::reference_wrapper<Rigidbody>> rigidbodies + = mgr.get_components_by_type<Rigidbody>(); + std::vector<std::reference_wrapper<Transform>> transforms + = mgr.get_components_by_type<Transform>(); + + for (Rigidbody & rigidbody : rigidbodies) { + + switch (rigidbody.body_type) { + case BodyType::DYNAMIC: + for (Transform & transform : transforms) { + if (transform.game_object_id == rigidbody.game_object_id) { + rigidbody.velocity_x = 0; + rigidbody.velocity_y = 0; + std::vector<std::reference_wrapper<Force>> forces + = mgr.get_components_by_id<Force>( + rigidbody.game_object_id); + rigidbody.velocity_y + += rigidbody.gravity_scale * 1 * rigidbody.mass; - switch (rigidbody.body_type) - { - case BodyType::Dynamic : - for (Transform& transform : transforms) { - if(transform.gameObjectId == rigidbody.gameObjectId) - { - rigidbody.velocity_x = 0; - rigidbody.velocity_y = 0; - std::vector<std::reference_wrapper<Force>> Forces = mgr.get_components_by_id<Force>(rigidbody.gameObjectId); - rigidbody.velocity_y += rigidbody.gravity_scale * 1 * rigidbody.mass; + for (Force & force : forces) { + rigidbody.velocity_x += force.force_x; + rigidbody.velocity_y += force.force_y; + } - for (Force& force : Forces) - { - rigidbody.velocity_x += force.force_x; - rigidbody.velocity_y += force.force_y; + std::cout << "before transform.postion.x " + << transform.position.x << std::endl; + std::cout << "before transform.postion.y " + << transform.position.y << std::endl; + transform.position.x += rigidbody.velocity_x; + transform.position.y += rigidbody.velocity_y; + std::cout << "after transform.postion.x " + << transform.position.x << std::endl; + std::cout << "after transform.postion.y " + << transform.position.y << std::endl; } - - std::cout << "before transform.postion.x " << transform.position.x << std::endl; - std::cout << "before transform.postion.y " << transform.position.y << std::endl; - transform.position.x += rigidbody.velocity_x; - transform.position.y += rigidbody.velocity_y; - std::cout << "after transform.postion.x " << transform.position.x << std::endl; - std::cout << "after transform.postion.y " << transform.position.y << std::endl; } - } - break; - case BodyType::Kinematic : - break; //(scripts) - case BodyType::Static : - break; //(unmoveable objects) - default: - break; + break; + case BodyType::KINEMATIC: + break; //(scripts) + case BodyType::STATIC: + break; //(unmoveable objects) + default: + break; } } } |