diff options
| -rw-r--r-- | src/crepe/ScriptSystem.cpp | 1 | ||||
| -rw-r--r-- | src/crepe/api/Transform.cpp | 2 | ||||
| -rw-r--r-- | src/crepe/api/Transform.h | 2 | ||||
| -rw-r--r-- | src/example/script.cpp | 31 | 
4 files changed, 24 insertions, 12 deletions
| diff --git a/src/crepe/ScriptSystem.cpp b/src/crepe/ScriptSystem.cpp index d00d474..171b490 100644 --- a/src/crepe/ScriptSystem.cpp +++ b/src/crepe/ScriptSystem.cpp @@ -37,6 +37,7 @@ forward_list<Script *> ScriptSystem::get_scripts() {  	for (auto behavior_script_ref : behavior_scripts) {  		BehaviorScript & behavior_script = behavior_script_ref.get(); +		if (!behavior_script.active) continue;  		Script * script = behavior_script.script.get();  		if (script == nullptr) continue;  		scripts.push_front(script); diff --git a/src/crepe/api/Transform.cpp b/src/crepe/api/Transform.cpp index 626cd67..3b218bc 100644 --- a/src/crepe/api/Transform.cpp +++ b/src/crepe/api/Transform.cpp @@ -8,7 +8,7 @@  using namespace crepe::api; -Transform::Transform(uint32_t game_id, Point & point, double rot, double scale) +Transform::Transform(uint32_t game_id, const Point & point, double rot, double scale)  	: Component(game_id), position(point), rotation(rot), scale(scale) {  	dbg_trace();  } diff --git a/src/crepe/api/Transform.h b/src/crepe/api/Transform.h index c69ec61..c451c16 100644 --- a/src/crepe/api/Transform.h +++ b/src/crepe/api/Transform.h @@ -14,7 +14,7 @@ class Transform : public Component {  	// works similar (or the same) as those found in GLSL?  public: -	Transform(uint32_t id, Point &, double, double); +	Transform(uint32_t id, const Point &, double, double);  	~Transform();  	//! Translation (shift)  	Point position; diff --git a/src/example/script.cpp b/src/example/script.cpp index 43f1c22..cda9591 100644 --- a/src/example/script.cpp +++ b/src/example/script.cpp @@ -17,27 +17,38 @@ using namespace crepe;  using namespace crepe::api;  using namespace std; +// Unrelated stuff that is not part of this POC +int _ = [] () { +	// Show dbg_trace() output +	auto & cfg = api::Config::get_instance(); +	cfg.log.level = util::LogLevel::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() { -	auto & cfg = api::Config::get_instance(); -	cfg.log.level = util::LogLevel::TRACE; - +	// Create game object with Transform and BehaviorScript components  	auto obj = GameObject(0, "name", "tag", 0); -	Point point = { -		.x = 1.2, -		.y = 3.4, -	}; -	obj.add_component<Transform>(point, 0, 0); +	obj.add_component<Transform>(Point { .x = 1.2, .y = 3.4, }, 0, 0);  	obj.add_component<BehaviorScript>().set_script<MyScript>(); +	// Get ScriptSystem singleton instance (this would normally be done from the +	// game loop)  	auto & sys = ScriptSystem::get_instance(); -	sys.update(); // -> MyScript::update +	// Update all scripts. This should result in MyScript::update being called +	sys.update(); -	return 0; +	return EXIT_SUCCESS;  } + |