Graphics: Separate Renderable and make Light a Renderable (LightComponent)

Former-commit-id: 6177d473f27ef493ba77417fc14461cb08b6f9e1
This commit is contained in:
Lynix
2015-06-16 00:31:04 +02:00
parent b3597d5330
commit 6d953d9e93
21 changed files with 280 additions and 140 deletions

View File

@@ -6,6 +6,7 @@
#include <Nazara/Graphics/ColorBackground.hpp>
#include <NDK/Components/CameraComponent.hpp>
#include <NDK/Components/GraphicsComponent.hpp>
#include <NDK/Components/LightComponent.hpp>
#include <NDK/Components/NodeComponent.hpp>
namespace Ndk
@@ -24,14 +25,22 @@ namespace Ndk
NzAbstractRenderQueue* renderQueue = m_renderTechnique.GetRenderQueue();
renderQueue->Clear();
for (const Ndk::EntityHandle& drawable : m_drawables)
for (const Ndk::EntityHandle& light : m_drawables)
{
GraphicsComponent& graphicsComponent = drawable->GetComponent<GraphicsComponent>();
NodeComponent& drawableNode = drawable->GetComponent<NodeComponent>();
GraphicsComponent& graphicsComponent = light->GetComponent<GraphicsComponent>();
NodeComponent& drawableNode = light->GetComponent<NodeComponent>();
graphicsComponent.AddToRenderQueue(renderQueue);
}
for (const Ndk::EntityHandle& light : m_lights)
{
LightComponent& lightComponent = light->GetComponent<LightComponent>();
NodeComponent& drawableNode = light->GetComponent<NodeComponent>();
lightComponent.AddToRenderQueue(renderQueue, drawableNode.GetTransformMatrix());
}
NzColorBackground background;
NzSceneData sceneData;
@@ -47,6 +56,7 @@ namespace Ndk
{
m_cameras.Remove(entity);
m_drawables.Remove(entity);
m_lights.Remove(entity);
}
void RenderSystem::OnEntityValidation(Entity* entity, bool justAdded)
@@ -67,6 +77,10 @@ namespace Ndk
else
m_drawables.Remove(entity);
if (entity->HasComponent<LightComponent>() && entity->HasComponent<NodeComponent>())
m_lights.Insert(entity);
else
m_lights.Remove(entity);
}
SystemIndex RenderSystem::systemIndex;