]> git.tdb.fi Git - libs/game.git/commitdiff
Have MeshRenderer's constructor take a GL::Object
authorMikko Rasa <tdb@tdb.fi>
Sat, 21 Jan 2023 18:39:20 +0000 (20:39 +0200)
committerMikko Rasa <tdb@tdb.fi>
Sat, 21 Jan 2023 18:46:26 +0000 (20:46 +0200)
source/gameview/meshrenderer.cpp
source/gameview/meshrenderer.h
source/gameview/renderer.cpp

index c29aeed74e0c20dd174a7e16bf337d81b36c595b..34fd6a73276605b110f18dbeb6cd990000dc850d 100644 (file)
@@ -4,10 +4,9 @@
 
 namespace Msp::GameView {
 
-MeshRenderer::MeshRenderer(Game::Handle<Game::Entity> e, Game::Handle<Game::MeshSource> s):
+MeshRenderer::MeshRenderer(Game::Handle<Game::Entity> e, const GL::Object &o):
        Component(e),
-       source(s),
-       object(entity->get_stage().get_resources().get<GL::Object>(source->get_object_name())),
+       object(o),
        instance(object)
 { }
 
index f5e954894b883331505bef6506a9fd48de80e9df..2bed53f7bb98193f8f19b292be8c6d741f4d65f0 100644 (file)
@@ -2,7 +2,6 @@
 #define MSP_GAMEVIEW_MESHRENDERER_H_
 
 #include <msp/game/component.h>
-#include <msp/game/meshsource.h>
 #include <msp/gl/objectinstance.h>
 #include "mspgameview_api.h"
 
@@ -11,12 +10,11 @@ namespace Msp::GameView {
 class MSPGAMEVIEW_API MeshRenderer: public Game::Component
 {
 private:
-       Game::Handle<Game::MeshSource> source;
        const GL::Object &object;
        GL::ObjectInstance instance;
 
 public:
-       MeshRenderer(Game::Handle<Game::Entity>, Game::Handle<Game::MeshSource>);
+       MeshRenderer(Game::Handle<Game::Entity>, const GL::Object &);
 
        GL::ObjectInstance &get_instance() { return instance; }
 
index ef8f99567c03e221adddfec167803b3719955e74..cef857daa902baed17b9fa4027791c8745737ca5 100644 (file)
@@ -39,7 +39,8 @@ void Renderer::entity_created(const Game::Events::EntityCreated &event)
        if(mesh_source && !mesh_renderer)
        {
                auto i = lower_bound_member(entities, event.entity, &RenderedEntity::entity);
-               i = entities.emplace(i, event.entity, Game::Owned<MeshRenderer>(event.entity, mesh_source));
+               const GL::Object &object = stage.get_resources().get<GL::Object>(mesh_source->get_object_name());
+               i = entities.emplace(i, entity, Game::Owned<MeshRenderer>(entity, object));
                scene.add(i->mesh_renderer->get_instance());
        }
 }