#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); } } void Systems::RenderSystem::UpdateEntity( double dt, EntityID entity, EntityID parent ) { auto transformComponent = m_World->GetComponent(entity, "Transform"); if (transformComponent == nullptr) return; auto modelComponent = m_World->GetComponent(entity, "Model"); if (modelComponent != nullptr) { if (m_CachedModels.find(modelComponent->ModelFile) == m_CachedModels.end()){ m_CachedModels[modelComponent->ModelFile] = new Model(modelComponent->ModelFile); } Model* model = m_CachedModels[modelComponent->ModelFile]; m_Renderer->AddModelToDraw(model, transformComponent->Position, transformComponent->Orientation); } auto pointLightComponent = m_World->GetComponent(entity, "PointLight"); if (pointLightComponent != nullptr) { m_Renderer->AddPointLightToDraw( transformComponent->Position, pointLightComponent->Specular, pointLightComponent->Diffuse, pointLightComponent->constantAttenuation, pointLightComponent->linearAttenuation, pointLightComponent->quadraticAttenuation, pointLightComponent->spotExponent); } auto cameraComponent = m_World->GetComponent(entity, "Camera"); if (cameraComponent != nullptr) { m_Renderer->GetCamera()->Position(transformComponent->Position); m_Renderer->GetCamera()->Orientation(transformComponent->Orientation); m_Renderer->GetCamera()->FOV(cameraComponent->FOV); m_Renderer->GetCamera()->NearClip(cameraComponent->NearClip); m_Renderer->GetCamera()->FarClip(cameraComponent->FarClip); } }