diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/example/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/example/scene_manager.cpp | 79 | ||||
| -rw-r--r-- | src/test/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/test/ECSTest.cpp | 3 | ||||
| -rw-r--r-- | src/test/SceneManagerTest.cpp | 120 | 
5 files changed, 121 insertions, 83 deletions
| diff --git a/src/example/CMakeLists.txt b/src/example/CMakeLists.txt index bbeec09..30432e5 100644 --- a/src/example/CMakeLists.txt +++ b/src/example/CMakeLists.txt @@ -25,7 +25,6 @@ add_example(physics)  add_example(savemgr)  add_example(proxy)  add_example(db) -add_example(scene_manager)  add_example(particles)  add_example(gameloop) diff --git a/src/example/scene_manager.cpp b/src/example/scene_manager.cpp deleted file mode 100644 index accec7d..0000000 --- a/src/example/scene_manager.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#include <iostream> - -#include <crepe/ComponentManager.h> -#include <crepe/api/GameObject.h> -#include <crepe/api/Metadata.h> -#include <crepe/api/Scene.h> -#include <crepe/api/SceneManager.h> -#include <crepe/api/Vector2.h> - -using namespace crepe; -using namespace std; - -class ConcreteScene1 : public Scene { -public: -	using Scene::Scene; - -	void load_scene() { -		auto & mgr = this->component_manager; -		GameObject object1 = mgr.new_object("scene_1", "tag_scene_1", Vector2{0, 0}, 0, 1); -		GameObject object2 = mgr.new_object("scene_1", "tag_scene_1", Vector2{1, 0}, 0, 1); -		GameObject object3 = mgr.new_object("scene_1", "tag_scene_1", Vector2{2, 0}, 0, 1); -	} -}; - -class ConcreteScene2 : public Scene { -public: -	using Scene::Scene; - -	void load_scene() { -		auto & mgr = this->component_manager; -		GameObject object1 = mgr.new_object("scene_2", "tag_scene_2", Vector2{0, 0}, 0, 1); -		GameObject object2 = mgr.new_object("scene_2", "tag_scene_2", Vector2{0, 1}, 0, 1); -		GameObject object3 = mgr.new_object("scene_2", "tag_scene_2", Vector2{0, 2}, 0, 1); -		GameObject object4 = mgr.new_object("scene_2", "tag_scene_2", Vector2{0, 3}, 0, 1); -	} -}; - -int main() { -	ComponentManager component_mgr{}; -	SceneManager scene_mgr{component_mgr}; - -	// Add the scenes to the scene manager -	scene_mgr.add_scene<ConcreteScene1>("scene1"); -	scene_mgr.add_scene<ConcreteScene2>("scene2"); - -	// There is no need to call set_next_scene() at the beginnen, because the first scene will be -	// automatically set as the next scene - -	// Load scene1 (the first scene added) -	scene_mgr.load_next_scene(); - -	// Get the Metadata components of each GameObject of Scene1 -	vector<reference_wrapper<Metadata>> metadata -		= component_mgr.get_components_by_type<Metadata>(); - -	cout << "Metadata components of Scene1:" << endl; -	// Print the Metadata -	for (auto & m : metadata) { -		cout << "Id: " << m.get().game_object_id << " Name: " << m.get().name -			 << " Tag: " << m.get().tag << endl; -	} - -	// Set scene2 as the next scene -	scene_mgr.set_next_scene("scene2"); -	// Load scene2 -	scene_mgr.load_next_scene(); - -	// Get the Metadata components of each GameObject of Scene2 -	metadata = component_mgr.get_components_by_type<Metadata>(); - -	cout << "Metadata components of Scene2:" << endl; -	// Print the Metadata -	for (auto & m : metadata) { -		cout << "Id: " << m.get().game_object_id << " Name: " << m.get().name -			 << " Tag: " << m.get().tag << endl; -	} - -	return 0; -} diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt index 0849b98..d56d80f 100644 --- a/src/test/CMakeLists.txt +++ b/src/test/CMakeLists.txt @@ -4,5 +4,6 @@ target_sources(test_main PUBLIC  	ScriptTest.cpp  	ParticleTest.cpp  	ECSTest.cpp +	SceneManagerTest.cpp  ) diff --git a/src/test/ECSTest.cpp b/src/test/ECSTest.cpp index a245879..eaa2dbc 100644 --- a/src/test/ECSTest.cpp +++ b/src/test/ECSTest.cpp @@ -1,5 +1,3 @@ -#include <climits> -#include <cstdint>  #define protected public  #include <crepe/ComponentManager.h> @@ -7,7 +5,6 @@  #include <crepe/api/Metadata.h>  #include <crepe/api/Transform.h>  #include <crepe/api/Vector2.h> -#include <crepe/api/Rigidbody.h>  #include <gtest/gtest.h>  using namespace std; diff --git a/src/test/SceneManagerTest.cpp b/src/test/SceneManagerTest.cpp new file mode 100644 index 0000000..98b2a23 --- /dev/null +++ b/src/test/SceneManagerTest.cpp @@ -0,0 +1,120 @@ +#include <crepe/ComponentManager.h> +#include <crepe/api/GameObject.h> +#include <crepe/api/Metadata.h> +#include <crepe/api/Transform.h> +#include <crepe/api/Vector2.h> +#include <crepe/api/Scene.h> +#include <crepe/api/SceneManager.h> +#include <gtest/gtest.h> + +using namespace std; +using namespace crepe; + +class ConcreteScene1 : public Scene { +public: +	using Scene::Scene; + +	void load_scene() { +		auto & mgr = this->component_manager; +		GameObject object1 = mgr.new_object("scene_1", "tag_scene_1", Vector2{0, 0}, 0, 1); +		GameObject object2 = mgr.new_object("scene_1", "tag_scene_1", Vector2{1, 0}, 0, 1); +		GameObject object3 = mgr.new_object("scene_1", "tag_scene_1", Vector2{2, 0}, 0, 1); +	} +}; + +class ConcreteScene2 : public Scene { +public: +	using Scene::Scene; + +	void load_scene() { +		auto & mgr = this->component_manager; +		GameObject object1 = mgr.new_object("scene_2", "tag_scene_2", Vector2{0, 0}, 0, 1); +		GameObject object2 = mgr.new_object("scene_2", "tag_scene_2", Vector2{0, 1}, 0, 1); +		GameObject object3 = mgr.new_object("scene_2", "tag_scene_2", Vector2{0, 2}, 0, 1); +		GameObject object4 = mgr.new_object("scene_2", "tag_scene_2", Vector2{0, 3}, 0, 1); +	} +}; + +class SceneManagerTest : public ::testing::Test { +public: +	ComponentManager component_mgr{}; +	SceneManager scene_mgr{component_mgr}; +}; + +TEST_F(SceneManagerTest, loadScene) { +	scene_mgr.add_scene<ConcreteScene1>("scene1"); +	scene_mgr.add_scene<ConcreteScene2>("scene2"); + +	scene_mgr.load_next_scene(); + +	vector<reference_wrapper<Metadata>> metadata = component_mgr.get_components_by_type<Metadata>(); +	vector<reference_wrapper<Transform>> transform = component_mgr.get_components_by_type<Transform>(); + +	EXPECT_EQ(metadata.size(), 3); +	EXPECT_EQ(transform.size(), 3); + +	EXPECT_EQ(metadata[0].get().game_object_id, 0); +	EXPECT_EQ(metadata[0].get().name, "scene_1"); +	EXPECT_EQ(metadata[0].get().tag, "tag_scene_1"); +	EXPECT_EQ(metadata[0].get().parent, -1); +	EXPECT_EQ(metadata[0].get().children.size(), 0); +	EXPECT_EQ(transform[0].get().position.x, 0); +	EXPECT_EQ(transform[0].get().position.y, 0); + +	EXPECT_EQ(metadata[1].get().game_object_id, 1); +	EXPECT_EQ(metadata[1].get().name, "scene_1"); +	EXPECT_EQ(metadata[1].get().tag, "tag_scene_1"); +	EXPECT_EQ(metadata[1].get().parent, -1); +	EXPECT_EQ(metadata[1].get().children.size(), 0); +	EXPECT_EQ(transform[1].get().position.x, 1); +	EXPECT_EQ(transform[1].get().position.y, 0); + +	EXPECT_EQ(metadata[2].get().game_object_id, 2); +	EXPECT_EQ(metadata[2].get().name, "scene_1"); +	EXPECT_EQ(metadata[2].get().tag, "tag_scene_1"); +	EXPECT_EQ(metadata[2].get().parent, -1); +	EXPECT_EQ(metadata[2].get().children.size(), 0); +	EXPECT_EQ(transform[2].get().position.x, 2); +	EXPECT_EQ(transform[2].get().position.y, 0); + +	scene_mgr.set_next_scene("scene2"); +	scene_mgr.load_next_scene(); + +	metadata = component_mgr.get_components_by_type<Metadata>(); +	transform = component_mgr.get_components_by_type<Transform>(); + +	EXPECT_EQ(metadata.size(), 4); +	EXPECT_EQ(transform.size(), 4); + +	EXPECT_EQ(metadata[0].get().game_object_id, 0); +	EXPECT_EQ(metadata[0].get().name, "scene_2"); +	EXPECT_EQ(metadata[0].get().tag, "tag_scene_2"); +	EXPECT_EQ(metadata[0].get().parent, -1); +	EXPECT_EQ(metadata[0].get().children.size(), 0); +	EXPECT_EQ(transform[0].get().position.x, 0); +	EXPECT_EQ(transform[0].get().position.y, 0); + +	EXPECT_EQ(metadata[1].get().game_object_id, 1); +	EXPECT_EQ(metadata[1].get().name, "scene_2"); +	EXPECT_EQ(metadata[1].get().tag, "tag_scene_2"); +	EXPECT_EQ(metadata[1].get().parent, -1); +	EXPECT_EQ(metadata[1].get().children.size(), 0); +	EXPECT_EQ(transform[1].get().position.x, 0); +	EXPECT_EQ(transform[1].get().position.y, 1); + +	EXPECT_EQ(metadata[2].get().game_object_id, 2); +	EXPECT_EQ(metadata[2].get().name, "scene_2"); +	EXPECT_EQ(metadata[2].get().tag, "tag_scene_2"); +	EXPECT_EQ(metadata[2].get().parent, -1); +	EXPECT_EQ(metadata[2].get().children.size(), 0); +	EXPECT_EQ(transform[2].get().position.x, 0); +	EXPECT_EQ(transform[2].get().position.y, 2); + +	EXPECT_EQ(metadata[3].get().game_object_id, 3); +	EXPECT_EQ(metadata[3].get().name, "scene_2"); +	EXPECT_EQ(metadata[3].get().tag, "tag_scene_2"); +	EXPECT_EQ(metadata[3].get().parent, -1); +	EXPECT_EQ(metadata[3].get().children.size(), 0); +	EXPECT_EQ(transform[3].get().position.x, 0); +	EXPECT_EQ(transform[3].get().position.y, 3); +} |