diff options
author | JAROWMR <jarorutjes07@gmail.com> | 2024-11-20 11:37:49 +0100 |
---|---|---|
committer | JAROWMR <jarorutjes07@gmail.com> | 2024-11-20 11:37:49 +0100 |
commit | 02cdbd367d701d8d858806f45bfe2f15b392bb59 (patch) | |
tree | 1f474c4a2d3793c171ea1eb7405fccab32ae22dd /src | |
parent | 5b7f4b3461a7108c8c320ffaa239b11b6ef5933c (diff) |
made test function and fixed static value
Diffstat (limited to 'src')
-rw-r--r-- | src/example/game.cpp | 5 | ||||
-rw-r--r-- | src/test/CollisionTest.cpp | 60 |
2 files changed, 56 insertions, 9 deletions
diff --git a/src/example/game.cpp b/src/example/game.cpp index a9f6103..b6a0c31 100644 --- a/src/example/game.cpp +++ b/src/example/game.cpp @@ -26,7 +26,6 @@ class MyScript : public Script { } void update() { // Retrieve component from the same GameObject this script is on - } }; @@ -35,8 +34,8 @@ public: using Scene::Scene; void load_scene() { - ComponentManager & mgr = this->component_manager; - Color color(0, 0, 0, 0); + ComponentManager & mgr = this->component_manager; + Color color(0, 0, 0, 0); double screen_size_width = 640; double screen_size_height = 480; diff --git a/src/test/CollisionTest.cpp b/src/test/CollisionTest.cpp index 3c2ee6e..5da26cc 100644 --- a/src/test/CollisionTest.cpp +++ b/src/test/CollisionTest.cpp @@ -1,3 +1,4 @@ +#include <cstddef> #include <gtest/gtest.h> #include <crepe/api/Config.h> @@ -9,7 +10,8 @@ #include <crepe/api/Script.h> #include <crepe/ComponentManager.h> -#include <crepe/system/PhysicsSystem.h> +#include <crepe/system/CollisionSystem.h> +#include <type_traits> using namespace std; @@ -19,10 +21,10 @@ using namespace crepe; class MyScript : public Script { public: - static crepe::CollisionSystem::CollisionInfo last_collision_info; + static const crepe::CollisionSystem::CollisionInfo* last_collision_info; private: static bool oncollision(const CollisionEvent& test) { - std::cout << "test collision: " << test.info.first.collider.game_object_id << std::endl; + last_collision_info = &test.info; return true; } void init() { @@ -37,14 +39,60 @@ class MyScript : public Script { class CollisionTest : public ::testing::Test { public: ComponentManager component_manager; - PhysicsSystem system{component_manager}; + CollisionSystem system{component_manager}; void SetUp() override { + MyScript::last_collision_info = nullptr; ComponentManager & mgr = this->component_manager; + if(mgr.get_components_by_id<Transform>(0).empty()) + { + create_test_world(); + create_test_components(); + } + reset_test_components(); + } + + void create_test_world() { + double screen_size_width = 640; + double screen_size_height = 480; + double world_collider = 1000; + ComponentManager & mgr = this->component_manager; + GameObject world = mgr.new_object("Name", "Tag", Vector2{screen_size_width/2, screen_size_height/2}, 0, 1); + world.add_component<Rigidbody>(Rigidbody::Data{ + .mass = 0, + .gravity_scale = 0, + .body_type = Rigidbody::BodyType::STATIC, + .constraints = {0, 0, 0}, + .use_gravity = false, + .bounce = false, + .offset = {0,0} + }); + world.add_component<BoxCollider>(Vector2{0, 0-(screen_size_height/2+world_collider/2)}, world_collider, world_collider);; // Top + world.add_component<BoxCollider>(Vector2{0, screen_size_height/2+world_collider/2}, world_collider, world_collider); // Bottom + world.add_component<BoxCollider>(Vector2{0-(screen_size_width/2+world_collider/2), 0}, world_collider, world_collider); // Left + world.add_component<BoxCollider>(Vector2{screen_size_width/2+world_collider/2, 0}, world_collider, world_collider); // right + } + + void create_test_components() + { + + } + + void reset_test_components() + { + } }; TEST_F(CollisionTest, collision) { -//read static data -const CollisionEvent& test = MyScript::last_collision_info; + // change object data before calling update + + // call collision system update + system.update(); + // should not be nullptr after update + ASSERT_NE(MyScript::last_collision_info, nullptr); + + // check if values are correct + EXPECT_EQ(MyScript::last_collision_info->first.collider.game_object_id, 1); + EXPECT_EQ(MyScript::last_collision_info->second.collider.game_object_id, 2); } |