diff --git a/Escape-the-Dawn/Components/Model.h b/Escape-the-Dawn/Components/Model.h index ce27b3b..11297da 100644 --- a/Escape-the-Dawn/Components/Model.h +++ b/Escape-the-Dawn/Components/Model.h @@ -11,7 +11,7 @@ namespace Components struct Model : Component { - std::string ModelFile; + const char* ModelFile; Color Color; }; diff --git a/Escape-the-Dawn/Systems/RenderSystem.cpp b/Escape-the-Dawn/Systems/RenderSystem.cpp index e69de29..ca4d33b 100644 --- a/Escape-the-Dawn/Systems/RenderSystem.cpp +++ b/Escape-the-Dawn/Systems/RenderSystem.cpp @@ -0,0 +1,43 @@ +#include "RenderSystem.h" +#include "World.h" + + + +void Systems::RenderSystem::OnComponentCreated( std::string type, std:: shared_ptr component ) +{ + if(type == "Model") + { + auto modelComponent = std::static_pointer_cast(component); + + if (m_CachedModels.find(modelComponent->ModelFile) != m_CachedModels.end()) { + m_CachedModels[modelComponent->ModelFile] = new Model(modelComponent->ModelFile); + } + + } +} + +void Systems::RenderSystem::UpdateEntity( double dt, EntityID entity, EntityID parent ) +{ + auto modelComponent = m_World->GetComponent(entity, "Model"); + if (modelComponent == nullptr) + return; + auto transformComponent = m_World->GetComponent(entity, "Transform"); + if (transformComponent == nullptr) + return; + + Model* model = m_CachedModels[modelComponent->ModelFile]; + + + + + m_Renderer->AddModelToDraw(model, transformComponent->Position, transformComponent->Orientation); +} + +void Systems::RenderSystem::Update( double dt ) +{ + +} + + + + diff --git a/Escape-the-Dawn/Systems/RenderSystem.h b/Escape-the-Dawn/Systems/RenderSystem.h index e69de29..6f02f56 100644 --- a/Escape-the-Dawn/Systems/RenderSystem.h +++ b/Escape-the-Dawn/Systems/RenderSystem.h @@ -0,0 +1,41 @@ +#ifndef RenderSystem_h__ +#define RenderSystem_h__ + +#include "System.h" +#include "Model.h" +#include "Texture.h" +#include "Components/Model.h" +#include "Components/Transform.h" +#include "Renderer.h" +#include + +namespace Systems +{ + + class RenderSystem : public System + { + public: + RenderSystem(World* world, std::shared_ptr renderer) + : System(world), m_Renderer(renderer) {} + + + std::unordered_map m_CachedModels; + + + void AddModelToDraw(); + void OnComponentCreated(std::string type, std:: shared_ptr component) override; + void UpdateEntity(double dt, EntityID entity, EntityID parent) override; + void Update(double dt) override; + + private: + std::shared_ptr m_Renderer; + + }; + + +} + + + + +#endif //RenderSystem_h__ \ No newline at end of file