From 2f27b3ac6ec1d8983e5ca06975d5215be0a0ea6a Mon Sep 17 00:00:00 2001
From: Joseph Walton-Rivers <joseph@walton-rivers.uk>
Date: Sun, 24 Jul 2022 23:41:36 +0100
Subject: [PATCH] rewite ECS to avoid undefined behaviour

---
 demo/demo/rollball.cpp   | 1 +
 fggl/gfx/ogl4/models.cpp | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/demo/demo/rollball.cpp b/demo/demo/rollball.cpp
index 7236d40..88cc926 100644
--- a/demo/demo/rollball.cpp
+++ b/demo/demo/rollball.cpp
@@ -127,6 +127,7 @@ namespace demo {
 		Game::activate();
 
 		fggl::debug::log(fggl::debug::Level::info, "RollBall::activate()");
+
 		auto* assetLoader = m_owner.service<fggl::assets::Loader>();
 		assetLoader->load("rollball.yml", fggl::entity::PROTOTYPE_ASSET);
 
diff --git a/fggl/gfx/ogl4/models.cpp b/fggl/gfx/ogl4/models.cpp
index 1149e91..5a99963 100644
--- a/fggl/gfx/ogl4/models.cpp
+++ b/fggl/gfx/ogl4/models.cpp
@@ -74,6 +74,8 @@ namespace fggl::gfx::ogl4 {
 			}
 
 			auto& meshComp = world.get<data::StaticMesh>(renderable);
+			auto& modelComp = world.add<StaticModel>(renderable);
+
 			auto shader = m_phong;
 			try {
 				shader = std::make_shared<ogl::Shader>( m_shaders->get( meshComp.pipeline ) );
@@ -81,7 +83,6 @@ namespace fggl::gfx::ogl4 {
 				debug::log(debug::Level::warning, "Could not find shader: {}", meshComp.pipeline);
 			}
 
-			auto& modelComp = world.add<StaticModel>(renderable);
 			setupComponent(modelComp, shader, meshComp.mesh);
 			debug::log(debug::Level::info, "Added static mesh to {}", (uint64_t)renderable);
 		}
-- 
GitLab