From 47dd27c42f375b65ee53f8b1e8c1b25327315a92 Mon Sep 17 00:00:00 2001 From: JAROWMR Date: Sun, 10 Nov 2024 21:38:58 +0100 Subject: box-box collision --- src/crepe/api/Rigidbody.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/crepe/api/Rigidbody.h') diff --git a/src/crepe/api/Rigidbody.h b/src/crepe/api/Rigidbody.h index 68481f4..b9edec2 100644 --- a/src/crepe/api/Rigidbody.h +++ b/src/crepe/api/Rigidbody.h @@ -75,6 +75,8 @@ public: bool use_gravity = true; //! if object bounces bool bounce = false; + //! offset of all colliders + Vector2 offset; }; public: -- cgit v1.2.3 From b019b401c3a1de0ffea7e6776242ae73599651ef Mon Sep 17 00:00:00 2001 From: JAROWMR Date: Fri, 15 Nov 2024 16:10:45 +0100 Subject: collision handeling example --- src/crepe/api/Event.h | 1 - src/crepe/api/Rigidbody.h | 5 +++-- src/crepe/api/Script.h | 2 +- src/crepe/system/CollisionSystem.cpp | 2 +- src/crepe/system/CollisionSystem.h | 2 +- src/crepe/system/ScriptSystem.cpp | 6 +++++- src/example/collision.cpp | 39 ++++++++++++++++++++++++++++++++---- 7 files changed, 46 insertions(+), 11 deletions(-) (limited to 'src/crepe/api/Rigidbody.h') diff --git a/src/crepe/api/Event.h b/src/crepe/api/Event.h index 3431f29..bd6a541 100644 --- a/src/crepe/api/Event.h +++ b/src/crepe/api/Event.h @@ -49,7 +49,6 @@ public: crepe::CollisionSystem::CollisionInfo info; CollisionEvent(const crepe::CollisionSystem::CollisionInfo& collisionInfo) : info(collisionInfo) {} - }; class TextSubmitEvent : public Event { public: diff --git a/src/crepe/api/Rigidbody.h b/src/crepe/api/Rigidbody.h index b9edec2..a45623f 100644 --- a/src/crepe/api/Rigidbody.h +++ b/src/crepe/api/Rigidbody.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include "../Component.h" @@ -60,13 +61,13 @@ public: //! linear velocity of object Vector2 linear_velocity; //! maximum linear velocity of object - Vector2 max_linear_velocity; + Vector2 max_linear_velocity = {INFINITY ,INFINITY}; //! linear damping of object Vector2 linear_damping; //! angular velocity of object double angular_velocity = 0.0; //! max angular velocity of object - double max_angular_velocity = 0.0; + double max_angular_velocity = INFINITY; //! angular damping of object double angular_damping = 0.0; //! movements constraints of object diff --git a/src/crepe/api/Script.h b/src/crepe/api/Script.h index 49e625f..0a10848 100644 --- a/src/crepe/api/Script.h +++ b/src/crepe/api/Script.h @@ -28,7 +28,7 @@ protected: template std::vector> get_components(); -private: +public: friend class crepe::BehaviorScript; BehaviorScript * parent = nullptr; }; diff --git a/src/crepe/system/CollisionSystem.cpp b/src/crepe/system/CollisionSystem.cpp index 56f07cc..b9366df 100644 --- a/src/crepe/system/CollisionSystem.cpp +++ b/src/crepe/system/CollisionSystem.cpp @@ -93,7 +93,7 @@ void CollisionSystem::call_collision_handler(const CollidedInfoStor& data1,const { *collider2, data2.transform, data2.rigidbody } }; CollisionEvent data(collision_info); - EventManager::get_instance().trigger_event(data, 0); + EventManager::get_instance().trigger_event(data, first); } } diff --git a/src/crepe/system/CollisionSystem.h b/src/crepe/system/CollisionSystem.h index c7e8e0b..a31ac48 100644 --- a/src/crepe/system/CollisionSystem.h +++ b/src/crepe/system/CollisionSystem.h @@ -27,7 +27,7 @@ public: void update(); private: void call_collision_handler(const CollidedInfoStor& data1,const CollidedInfoStor& data2); - std::vector> check_collisions(const std::vector>& boxcolliders, const std::vector>& circlecolliders); + std::vector> check_collisions(const std::vector>& boxcolliders, const std::vector>& circlecolliders); bool check_box_box_collision(const BoxCollider& box1, const BoxCollider& box2, const Transform& transform1, const Transform& transform2, const Rigidbody& rigidbody1, const Rigidbody& rigidbody2); bool check_box_circle_collision(const BoxCollider& box1, const CircleCollider& circle2, const Transform& transform1, const Transform& transform2, const Rigidbody& rigidbody1, const Rigidbody& rigidbody2); bool check_circle_circle_collision(const CircleCollider& circle1, const CircleCollider& circle2, const Transform& transform1, const Transform& transform2, const Rigidbody& rigidbody1, const Rigidbody& rigidbody2); diff --git a/src/crepe/system/ScriptSystem.cpp b/src/crepe/system/ScriptSystem.cpp index f2673e7..e41961e 100644 --- a/src/crepe/system/ScriptSystem.cpp +++ b/src/crepe/system/ScriptSystem.cpp @@ -17,7 +17,11 @@ void ScriptSystem::update() { dbg_trace(); forward_list