aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/system/CollisionSystem.cpp
diff options
context:
space:
mode:
authorJAROWMR <jarorutjes07@gmail.com>2024-12-06 15:42:52 +0100
committerJAROWMR <jarorutjes07@gmail.com>2024-12-06 15:42:52 +0100
commit70c1cd14ec4c4aca185d5a7e4a3749169f6425f4 (patch)
treec38250a2fa555f789a95ffe34510d8e9ab54ad84 /src/crepe/system/CollisionSystem.cpp
parente882a9787919b4e804878e5458c535342a718a08 (diff)
make format
Diffstat (limited to 'src/crepe/system/CollisionSystem.cpp')
-rw-r--r--src/crepe/system/CollisionSystem.cpp33
1 files changed, 13 insertions, 20 deletions
diff --git a/src/crepe/system/CollisionSystem.cpp b/src/crepe/system/CollisionSystem.cpp
index e196e10..44a0431 100644
--- a/src/crepe/system/CollisionSystem.cpp
+++ b/src/crepe/system/CollisionSystem.cpp
@@ -6,6 +6,8 @@
#include <utility>
#include <variant>
+#include "../manager/ComponentManager.h"
+#include "../manager/EventManager.h"
#include "api/BoxCollider.h"
#include "api/CircleCollider.h"
#include "api/Event.h"
@@ -13,8 +15,6 @@
#include "api/Rigidbody.h"
#include "api/Transform.h"
#include "api/Vector2.h"
-#include "../manager/ComponentManager.h"
-#include "../manager/EventManager.h"
#include "Collider.h"
#include "CollisionSystem.h"
@@ -27,17 +27,14 @@ void CollisionSystem::update() {
std::vector<CollisionInternal> all_colliders;
game_object_id_t id = 0;
ComponentManager & mgr = this->mediator.component_manager;
- RefVector<Rigidbody> rigidbodies
- = mgr.get_components_by_type<Rigidbody>();
+ RefVector<Rigidbody> rigidbodies = mgr.get_components_by_type<Rigidbody>();
// Collisions can only happen on object with a rigidbody
for (Rigidbody & rigidbody : rigidbodies) {
if (!rigidbody.active) continue;
id = rigidbody.game_object_id;
- Transform & transform
- = mgr.get_components_by_id<Transform>(id).front().get();
+ Transform & transform = mgr.get_components_by_id<Transform>(id).front().get();
// Check if the boxcollider is active and has the same id as the rigidbody.
- RefVector<BoxCollider> boxcolliders
- = mgr.get_components_by_type<BoxCollider>();
+ RefVector<BoxCollider> boxcolliders = mgr.get_components_by_type<BoxCollider>();
for (BoxCollider & boxcollider : boxcolliders) {
if (boxcollider.game_object_id != id) continue;
if (!boxcollider.active) continue;
@@ -159,7 +156,7 @@ CollisionSystem::collision_handler(CollisionInternal & data1, CollisionInternal
vec2 collider_pos2 = this->get_current_position(collider2.offset, data2.transform,
data2.rigidbody);
resolution = -this->get_circle_box_resolution(collider2, collider1, collider_pos2,
- collider_pos1);
+ collider_pos1);
break;
}
case CollisionInternalType::CIRCLE_CIRCLE: {
@@ -261,7 +258,6 @@ vec2 CollisionSystem::get_circle_circle_resolution(const CircleCollider & circle
// Normalize the delta vector to get the collision direction
vec2 collision_normal = delta / distance;
-
// Compute the resolution vector
vec2 resolution = -collision_normal * penetration_depth;
@@ -311,8 +307,7 @@ void CollisionSystem::determine_collision_handler(CollisionInfo & info) {
// Call collision event for user
CollisionEvent data(info);
EventManager & emgr = this->mediator.event_manager;
- emgr.trigger_event<CollisionEvent>(
- data, info.this_collider.game_object_id);
+ emgr.trigger_event<CollisionEvent>(data, info.this_collider.game_object_id);
}
void CollisionSystem::static_collision_handler(CollisionInfo & info) {
@@ -389,14 +384,14 @@ CollisionSystem::gather_collisions(std::vector<CollisionInternal> & colliders) {
bool CollisionSystem::have_common_layer(const std::set<int> & layers1,
const std::set<int> & layers2) {
-
+
// Check if any number is equal in the layers
for (int num : layers1) {
- if (layers2.contains(num)) {
- // Common layer found
- return true;
- break;
- }
+ if (layers2.contains(num)) {
+ // Common layer found
+ return true;
+ break;
+ }
}
// No common layer found
return false;
@@ -554,5 +549,3 @@ vec2 CollisionSystem::get_current_position(const vec2 & collider_offset,
// Final positions considering scaling and rotation
return (transform.position + vec2(rotated_total_offset_x1, rotated_total_offset_y1));
}
-
-