diff options
| -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);  } |