From cead795b7ff7135e13caf9ad3b76628070391458 Mon Sep 17 00:00:00 2001 From: jaroWMR Date: Sun, 20 Oct 2024 16:58:13 +0200 Subject: added collision system and circlecollider --- src/crepe/PhysicsSystem.cpp | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'src/crepe/PhysicsSystem.cpp') diff --git a/src/crepe/PhysicsSystem.cpp b/src/crepe/PhysicsSystem.cpp index c24afa2..7d16044 100644 --- a/src/crepe/PhysicsSystem.cpp +++ b/src/crepe/PhysicsSystem.cpp @@ -2,6 +2,7 @@ #include "ComponentManager.h" #include "Rigidbody.h" #include "Transform.h" +#include "Force.h" #include using namespace crepe; @@ -14,7 +15,41 @@ void PhysicsSystem::update() { ComponentManager& mgr = ComponentManager::get_instance(); std::vector> rigidbodies = mgr.get_components_by_type(); std::vector> transforms = mgr.get_components_by_type(); + for (Rigidbody& rigidbody : rigidbodies) { - std::cout << rigidbody.gameObjectId << std::endl; + + 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> Forces = mgr.get_components_by_id(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; + } + + std::cout << "before transform.postion.x " << transform.postion.x << std::endl; + std::cout << "before transform.postion.y " << transform.postion.y << std::endl; + transform.postion.x += rigidbody.velocity_x; + transform.postion.y += rigidbody.velocity_y; + std::cout << "after transform.postion.x " << transform.postion.x << std::endl; + std::cout << "after transform.postion.y " << transform.postion.y << std::endl; + } + } + break; + case BodyType::Kinematic : + break; //(scripts) + case BodyType::Static : + break; //(unmoveable objects) + default: + break; + } } } -- cgit v1.2.3