diff options
Diffstat (limited to 'src/example')
| -rw-r--r-- | src/example/CMakeLists.txt | 13 | ||||
| -rw-r--r-- | src/example/audio_internal.cpp | 56 | ||||
| -rw-r--r-- | src/example/components_internal.cpp | 51 | ||||
| -rw-r--r-- | src/example/db.cpp | 30 | ||||
| -rw-r--r-- | src/example/ecs.cpp | 53 | ||||
| -rw-r--r-- | src/example/events.cpp | 112 | ||||
| -rw-r--r-- | src/example/log.cpp | 28 | ||||
| -rw-r--r-- | src/example/particles.cpp | 43 | ||||
| -rw-r--r-- | src/example/physics.cpp | 24 | ||||
| -rw-r--r-- | src/example/proxy.cpp | 45 | ||||
| -rw-r--r-- | src/example/rendering.cpp | 55 | ||||
| -rw-r--r-- | src/example/rendering_particle.cpp | 72 | ||||
| -rw-r--r-- | src/example/scene_manager.cpp | 79 | ||||
| -rw-r--r-- | src/example/script.cpp | 49 | 
14 files changed, 73 insertions, 637 deletions
| diff --git a/src/example/CMakeLists.txt b/src/example/CMakeLists.txt index ddb0262..560e2bc 100644 --- a/src/example/CMakeLists.txt +++ b/src/example/CMakeLists.txt @@ -16,19 +16,8 @@ function(add_example target_name)  	add_dependencies(examples ${target_name})  endfunction() -add_example(audio_internal) -# add_example(components_internal) -add_example(script) -add_example(log) -add_example(rendering)  add_example(asset_manager) -add_example(physics)  add_example(savemgr) -add_example(proxy) -add_example(db) -add_example(ecs) -add_example(scene_manager) -add_example(events) -add_example(particles) +add_example(rendering_particle)  add_example(gameloop) diff --git a/src/example/audio_internal.cpp b/src/example/audio_internal.cpp deleted file mode 100644 index 661161a..0000000 --- a/src/example/audio_internal.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/** \file - *  - * Standalone example for usage of the internal \c Sound class. - */ - -#include <crepe/api/Config.h> -#include <crepe/facade/Sound.h> -#include <crepe/util/Log.h> - -#include <thread> - -using namespace crepe; -using namespace std; -using namespace std::chrono_literals; -using std::make_unique; - -// Unrelated stuff that is not part of this POC -int _ = []() { -	// Show dbg_trace() output -	auto & cfg = Config::get_instance(); -	cfg.log.level = Log::Level::TRACE; - -	return 0; // satisfy compiler -}(); - -int main() { -	// Load a background track (Ogg Vorbis) -	auto bgm = Sound("../mwe/audio/bgm.ogg"); -	// Load three short samples (WAV) -	auto sfx1 = Sound("../mwe/audio/sfx1.wav"); -	auto sfx2 = Sound("../mwe/audio/sfx2.wav"); -	auto sfx3 = Sound("../mwe/audio/sfx3.wav"); - -	// Start the background track -	bgm.play(); - -	// Play each sample sequentially while pausing and resuming the background track -	this_thread::sleep_for(500ms); -	sfx1.play(); -	this_thread::sleep_for(500ms); -	sfx2.play(); -	bgm.pause(); -	this_thread::sleep_for(500ms); -	sfx3.play(); -	bgm.play(); -	this_thread::sleep_for(500ms); - -	// Play all samples simultaniously -	sfx1.play(); -	sfx2.play(); -	sfx3.play(); -	this_thread::sleep_for(1000ms); - -	// Stop all audio and exit -	return EXIT_SUCCESS; -} diff --git a/src/example/components_internal.cpp b/src/example/components_internal.cpp deleted file mode 100644 index 2a232a9..0000000 --- a/src/example/components_internal.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/** \file - *  - * Standalone example for usage of the internal ECS - */ - -#include <cassert> -#include <chrono> - -#include <crepe/Component.h> -#include <crepe/ComponentManager.h> - -#include <crepe/api/GameObject.h> -#include <crepe/api/Rigidbody.h> -#include <crepe/api/Sprite.h> - -#include <crepe/util/Log.h> - -using namespace crepe; -using namespace std; - -#define OBJ_COUNT 100000 - -int main() { -	dbg_trace(); - -	ComponentManager mgr{}; - -	auto start_adding = chrono::high_resolution_clock::now(); - -	for (int i = 0; i < OBJ_COUNT; ++i) { -		GameObject obj = mgr.new_object("Name", "Tag"); -		obj.add_component<Sprite>("test"); -		obj.add_component<Rigidbody>(0, 0, i); -	} - -	auto stop_adding = chrono::high_resolution_clock::now(); - -	auto sprites = mgr.get_components_by_type<Sprite>(); -	for (auto sprite : sprites) { -		assert(true); -	} - -	auto stop_looping = chrono::high_resolution_clock::now(); - -	auto add_time = chrono::duration_cast<chrono::microseconds>(stop_adding - start_adding); -	auto loop_time = chrono::duration_cast<chrono::microseconds>(stop_looping - stop_adding); -	printf("add time:  %ldus\n", add_time.count()); -	printf("loop time: %ldus\n", loop_time.count()); - -	return 0; -} diff --git a/src/example/db.cpp b/src/example/db.cpp deleted file mode 100644 index ee4e8fc..0000000 --- a/src/example/db.cpp +++ /dev/null @@ -1,30 +0,0 @@ -#include <crepe/api/Config.h> -#include <crepe/facade/DB.h> -#include <crepe/util/Log.h> - -using namespace crepe; -using namespace std; - -// run before main -static auto _ = []() { -	auto & cfg = Config::get_instance(); -	cfg.log.level = Log::Level::TRACE; -	return 0; -}(); - -int main() { -	dbg_trace(); - -	DB db("file.db"); - -	const char * test_key = "test-key"; -	string test_data = "Hello world!"; - -	dbg_logf("DB has key = {}", db.has(test_key)); - -	db.set(test_key, test_data); - -	dbg_logf("key = \"{}\"", db.get(test_key)); - -	return 0; -} diff --git a/src/example/ecs.cpp b/src/example/ecs.cpp deleted file mode 100644 index d5ba51b..0000000 --- a/src/example/ecs.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include <iostream> - -#include <crepe/ComponentManager.h> -#include <crepe/api/GameObject.h> -#include <crepe/api/Metadata.h> -#include <crepe/api/Transform.h> - -using namespace crepe; -using namespace std; - -int main() { -	ComponentManager mgr{}; - -	// Create a few GameObjects -	try { -		GameObject body = mgr.new_object("body", "person", Vector2{0, 0}, 0, 1); -		GameObject right_leg = mgr.new_object("rightLeg", "person", Vector2{1, 1}, 0, 1); -		GameObject left_leg = mgr.new_object("leftLeg", "person", Vector2{1, 1}, 0, 1); -		GameObject right_foot = mgr.new_object("rightFoot", "person", Vector2{2, 2}, 0, 1); -		GameObject left_foot = mgr.new_object("leftFoot", "person", Vector2{2, 2}, 0, 1); - -		// Set the parent of each GameObject -		right_foot.set_parent(right_leg); -		left_foot.set_parent(left_leg); -		right_leg.set_parent(body); -		left_leg.set_parent(body); - -		// Adding a second Transform component is not allowed and will invoke an exception -		body.add_component<Transform>(Vector2{10, 10}, 0, 1); -	} catch (const exception & e) { -		cerr << e.what() << endl; -	} - -	// Get the Metadata and Transform components of each GameObject -	vector<reference_wrapper<Metadata>> metadata = mgr.get_components_by_type<Metadata>(); -	vector<reference_wrapper<Transform>> transform = mgr.get_components_by_type<Transform>(); - -	// Print the Metadata and Transform components -	for (auto & m : metadata) { -		cout << "Id: " << m.get().game_object_id << " Name: " << m.get().name -			 << " Tag: " << m.get().tag << " Parent: " << m.get().parent << " Children: "; -		for (auto & c : m.get().children) { -			cout << c << " "; -		} -		cout << endl; -	} -	for (auto & t : transform) { -		cout << "Id: " << t.get().game_object_id << " Position: [" << t.get().position.x -			 << ", " << t.get().position.y << "]" << endl; -	} - -	return 0; -} diff --git a/src/example/events.cpp b/src/example/events.cpp deleted file mode 100644 index 1b9ea45..0000000 --- a/src/example/events.cpp +++ /dev/null @@ -1,112 +0,0 @@ -#include <iostream> - -#include <crepe/ComponentManager.h> -#include <crepe/system/ScriptSystem.h> -#include <crepe/util/log.h> - -#include <crepe/api/BehaviorScript.h> -#include <crepe/api/Config.h> -#include <crepe/api/Event.h> -#include <crepe/api/EventManager.h> -#include <crepe/api/GameObject.h> -#include <crepe/api/IKeyListener.h> -#include <crepe/api/IMouseListener.h> -#include <crepe/api/KeyCodes.h> -#include <crepe/api/Script.h> -#include <crepe/api/Transform.h> - -using namespace crepe; -using namespace std; - -class MyScript : public Script, public IKeyListener, public IMouseListener { -	void update() { -		// Retrieve component from the same GameObject this script is on -		Transform & test = get_component<Transform>(); -		dbg_logf("Transform(%.2f, %.2f)", test.position.x, test.position.y); -	} - -	bool on_key_pressed(const KeyPressEvent & event) override { -		std::cout << "KeyPressed function" << std::endl; -		this->deactivate_keys(); -		return false; -	} -	bool on_key_released(const KeyReleaseEvent & event) override { -		std::cout << "KeyRelease function" << std::endl; -		return false; -	} -	bool on_mouse_clicked(const MouseClickEvent & event) override { -		std::cout << "MouseClick function" << std::endl; -		return false; -	} -	bool on_mouse_pressed(const MousePressEvent & event) override { -		std::cout << "MousePress function" << std::endl; -		return false; -	} -	bool on_mouse_released(const MouseReleaseEvent & event) override { -		std::cout << "MouseRelease function" << std::endl; -		return false; -	} -	bool on_mouse_moved(const MouseMoveEvent & event) override { -		std::cout << "MouseMove function" << std::endl; -		return false; -	} -}; -class TestKeyListener : public IKeyListener { -public: -	bool on_key_pressed(const KeyPressEvent & event) override { -		std::cout << "TestKeyListener: Key Pressed - Code: " << static_cast<int>(event.key) -				  << std::endl; -		return false; -	} -	bool on_key_released(const KeyReleaseEvent & event) override { -		std::cout << "TestKeyListener: Key Released - Code: " << static_cast<int>(event.key) -				  << std::endl; -		return false; -	} -}; -int main() { -	// two events to trigger -	KeyPressEvent key_press; -	key_press.key = Keycode::A; -	key_press.repeat = 0; -	MouseClickEvent click_event; -	click_event.button = MouseButton::LEFT_MOUSE; -	click_event.mouse_x = 100; -	click_event.mouse_y = 200; -	// queue events to test queue -	EventManager::get_instance().queue_event<KeyPressEvent>(std::move(key_press), 0); -	EventManager::get_instance().queue_event<MouseClickEvent>(std::move(click_event), 0); -	{ -		TestKeyListener test_listener; -		test_listener.set_channel(1); -		auto obj = GameObject(0, "name", "tag", Vector2{1.2, 3.4}, 0, 1); -		obj.add_component<BehaviorScript>().set_script<MyScript>(); - -		ScriptSystem sys; -		sys.update(); - -		// Trigger the events while `testListener` is in scope -		EventManager::get_instance().trigger_event<KeyPressEvent>(key_press, 1); -		EventManager::get_instance().trigger_event( -			MouseClickEvent{ -				.mouse_x = 100, -				.mouse_y = 100, -				.button = MouseButton::LEFT_MOUSE, -			}, -			1); -	} -	// custom lambda event handler -	EventHandler<KeyPressEvent> event_handler = [](const KeyPressEvent & e) { -		std::cout << "lambda test" << std::endl; -		return false; -	}; -	EventManager::get_instance().subscribe<KeyPressEvent>(std::move(event_handler), 0); -	// testing trigger with testListener not in scope (unsubscribed) -	EventManager::get_instance().trigger_event<KeyPressEvent>(key_press, 0); -	EventManager::get_instance().trigger_event<MouseClickEvent>(click_event, 0); -	// dispatching queued events -	EventManager::get_instance().dispatch_events(); - -	EventManager::get_instance().unsubscribe<KeyPressEvent>(event_handler, 0); -	return EXIT_SUCCESS; -} diff --git a/src/example/log.cpp b/src/example/log.cpp deleted file mode 100644 index 5baa021..0000000 --- a/src/example/log.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/** \file - *  - * Standalone example for usage of the logging functions - */ - -#include <crepe/api/Config.h> -#include <crepe/util/Log.h> - -using namespace crepe; - -// unrelated setup code -int _ = []() { -	// make sure all log messages get printed -	auto & cfg = Config::get_instance(); -	cfg.log.level = Log::Level::TRACE; - -	return 0; // satisfy compiler -}(); - -int main() { -	dbg_trace(); -	dbg_log("debug message"); -	Log::logf("info message with variable: {}", 3); -	Log::logf(Log::Level::WARNING, "warning"); -	Log::logf(Log::Level::ERROR, "error"); - -	return 0; -} diff --git a/src/example/particles.cpp b/src/example/particles.cpp deleted file mode 100644 index 3d5f676..0000000 --- a/src/example/particles.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include <crepe/ComponentManager.h> -#include <crepe/api/AssetManager.h> - -#include <crepe/Component.h> -#include <crepe/api/Color.h> -#include <crepe/api/GameObject.h> -#include <crepe/api/ParticleEmitter.h> -#include <crepe/api/Rigidbody.h> -#include <crepe/api/Sprite.h> -#include <crepe/api/Texture.h> -#include <crepe/api/Transform.h> - -using namespace crepe; -using namespace std; - -int main(int argc, char * argv[]) { -	ComponentManager mgr{}; -	GameObject game_object = mgr.new_object("", "", Vector2{0, 0}, 0, 0); -	Color color(0, 0, 0, 0); -	Sprite test_sprite = game_object.add_component<Sprite>( -		make_shared<Texture>("../asset/texture/img.png"), color, FlipSettings{true, true}); -	game_object.add_component<ParticleEmitter>(ParticleEmitter::Data{ -		.position = {0, 0}, -		.max_particles = 100, -		.emission_rate = 0, -		.min_speed = 0, -		.max_speed = 0, -		.min_angle = 0, -		.max_angle = 0, -		.begin_lifespan = 0, -		.end_lifespan = 0, -		.force_over_time = Vector2{0, 0}, -		.boundary{ -			.width = 0, -			.height = 0, -			.offset = Vector2{0, 0}, -			.reset_on_exit = false, -		}, -		.sprite = test_sprite, -	}); - -	return 0; -} diff --git a/src/example/physics.cpp b/src/example/physics.cpp deleted file mode 100644 index ad663a0..0000000 --- a/src/example/physics.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include <crepe/Component.h> -#include <crepe/ComponentManager.h> -#include <crepe/api/GameObject.h> -#include <crepe/api/Rigidbody.h> -#include <crepe/api/Transform.h> -#include <crepe/system/PhysicsSystem.h> - -using namespace crepe; -using namespace std; - -int main(int argc, char * argv[]) { -	ComponentManager mgr{}; - -	GameObject game_object = mgr.new_object("Name", "Tag", Vector2{0, 0}, 0, 0); -	game_object.add_component<Rigidbody>(Rigidbody::Data{ -		.mass = 1, -		.gravity_scale = 1, -		.body_type = Rigidbody::BodyType::DYNAMIC, -		.constraints = {0, 0, 0}, -		.use_gravity = true, -		.bounce = false, -	}); -	return 0; -} diff --git a/src/example/proxy.cpp b/src/example/proxy.cpp deleted file mode 100644 index 69451f8..0000000 --- a/src/example/proxy.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/** \file - *  - * Standalone example for usage of the proxy type - */ - -#include <crepe/ValueBroker.h> -#include <crepe/api/Config.h> -#include <crepe/util/Log.h> -#include <crepe/util/Proxy.h> - -using namespace std; -using namespace crepe; - -void test_ro_ref(const int & val) {} -void test_rw_ref(int & val) {} -void test_ro_val(int val) {} - -int main() { -	auto & cfg = Config::get_instance(); -	cfg.log.level = Log::Level::DEBUG; - -	int real_value = 0; - -	ValueBroker<int> broker{ -		[&real_value](const int & target) { -			dbg_logf("set {} to {}", real_value, target); -			real_value = target; -		}, -		[&real_value]() -> const int & { -			dbg_logf("get {}", real_value); -			return real_value; -		}, -	}; - -	Proxy<int> proxy{broker}; - -	broker.set(54); -	proxy = 84; - -	test_ro_ref(proxy); // this is allowed -	// test_rw_ref(proxy); // this should throw a compile error -	test_ro_val(proxy); - -	return 0; -} diff --git a/src/example/rendering.cpp b/src/example/rendering.cpp deleted file mode 100644 index c9e62f1..0000000 --- a/src/example/rendering.cpp +++ /dev/null @@ -1,55 +0,0 @@ -#include "api/Camera.h" -#include <crepe/ComponentManager.h> -#include <crepe/api/GameObject.h> -#include <crepe/system/RenderSystem.h> -#include <crepe/util/Log.h> - -#include <crepe/api/AssetManager.h> -#include <crepe/api/Color.h> -#include <crepe/api/Sprite.h> -#include <crepe/api/Texture.h> -#include <crepe/api/Transform.h> -#include <crepe/api/Vector2.h> - -#include <chrono> -#include <memory> - -using namespace std; -using namespace crepe; - -int main() { -	dbg_trace(); - -	ComponentManager mgr{}; -	RenderSystem sys{mgr}; - -	GameObject obj = mgr.new_object("name", "tag", Vector2{0, 0}, 1, 1); -	GameObject obj1 = mgr.new_object("name", "tag", Vector2{500, 0}, 1, 0.1); -	GameObject obj2 = mgr.new_object("name", "tag", Vector2{800, 0}, 1, 0.1); - -	// Normal adding components -	{ -		Color color(0, 0, 0, 0); -		obj.add_component<Sprite>(make_shared<Texture>("../asset/texture/img.png"), color, -								  FlipSettings{false, false}); -		obj.add_component<Camera>(Color::get_red()); -	} -	{ -		Color color(0, 0, 0, 0); -		obj1.add_component<Sprite>(make_shared<Texture>("../asset/texture/second.png"), color, -								   FlipSettings{true, true}); -	} - -	/* -	{ -		Color color(0, 0, 0, 0); -		auto img = mgr.cache<Texture>("../asset/texture/second.png"); -		obj2.add_component<Sprite>(img, color, FlipSettings{true, true}); -	} -	*/ - -	auto start = std::chrono::steady_clock::now(); -	while (std::chrono::steady_clock::now() - start < std::chrono::seconds(5)) { -		sys.update(); -	} -} diff --git a/src/example/rendering_particle.cpp b/src/example/rendering_particle.cpp new file mode 100644 index 0000000..b38e860 --- /dev/null +++ b/src/example/rendering_particle.cpp @@ -0,0 +1,72 @@ +#include "api/Camera.h" +#include "system/ParticleSystem.h" +#include "types.h" +#include <SDL2/SDL_timer.h> +#include <crepe/ComponentManager.h> + +#include <crepe/Component.h> +#include <crepe/api/Color.h> +#include <crepe/api/GameObject.h> +#include <crepe/api/ParticleEmitter.h> +#include <crepe/api/Rigidbody.h> +#include <crepe/api/Sprite.h> +#include <crepe/api/Texture.h> +#include <crepe/api/Transform.h> +#include <crepe/api/Vector2.h> +#include <crepe/system/RenderSystem.h> + +#include <chrono> +#include <iostream> +#include <memory> + +using namespace crepe; +using namespace std; + +int main(int argc, char * argv[]) { +	ComponentManager mgr; +	GameObject game_object = mgr.new_object("", "", vec2{0, 0}, 0, 0.1); +	RenderSystem sys{mgr}; +	ParticleSystem psys{mgr}; + +	Color color(255, 255, 255, 255); + +	Sprite & test_sprite = game_object.add_component<Sprite>( +		make_shared<Texture>("asset/texture/img.png"), color, FlipSettings{false, false}); +	test_sprite.order_in_layer = 5; + +	auto & test = game_object.add_component<ParticleEmitter>(ParticleEmitter::Data{ +		.position = {0, 0}, +		.max_particles = 10, +		.emission_rate = 0.1, +		.min_speed = 6, +		.max_speed = 20, +		.min_angle = -20, +		.max_angle = 20, +		.begin_lifespan = 0, +		.end_lifespan = 60, +		.force_over_time = vec2{0, 0}, +		.boundary{ +			.width = 1000, +			.height = 1000, +			.offset = vec2{0, 0}, +			.reset_on_exit = false, +		}, +		.sprite = test_sprite, +	}); +	game_object.add_component<Camera>(Color::WHITE); + +	game_object +		.add_component<Sprite>(make_shared<Texture>("asset/texture/img.png"), color, +							   FlipSettings{false, false}) +		.order_in_layer +		= 6; + +	auto start = std::chrono::steady_clock::now(); +	while (std::chrono::steady_clock::now() - start < std::chrono::seconds(5)) { +		psys.update(); +		sys.update(); +		SDL_Delay(10); +	} + +	return 0; +} 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/example/script.cpp b/src/example/script.cpp deleted file mode 100644 index a23295b..0000000 --- a/src/example/script.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/** \file - *  - * Standalone example for usage of the script component and system - */ - -#include <crepe/ComponentManager.h> -#include <crepe/system/ScriptSystem.h> -#include <crepe/util/Log.h> - -#include <crepe/api/BehaviorScript.h> -#include <crepe/api/Config.h> -#include <crepe/api/GameObject.h> -#include <crepe/api/Script.h> -#include <crepe/api/Transform.h> - -using namespace crepe; -using namespace std; - -// Unrelated stuff that is not part of this POC -int _ = []() { -	// Show dbg_trace() output -	auto & cfg = Config::get_instance(); -	cfg.log.level = Log::Level::TRACE; - -	return 0; // satisfy compiler -}(); - -// User-defined script: -class MyScript : public Script { -	void update() { -		// Retrieve component from the same GameObject this script is on -		Transform & test = get_component<Transform>(); -		dbg_logf("Transform({:.2f}, {:.2f})", test.position.x, test.position.y); -	} -}; - -int main() { -	ComponentManager component_manager{}; -	ScriptSystem system{component_manager}; - -	// Create game object with Transform and BehaviorScript components -	GameObject obj = component_manager.new_object("name"); -	obj.add_component<BehaviorScript>().set_script<MyScript>(); - -	// Update all scripts. This should result in MyScript::update being called -	system.update(); - -	return EXIT_SUCCESS; -} |