From 80ed8c48bd8f23faa8f2af234a76a6acb786a09c Mon Sep 17 00:00:00 2001 From: Lynix Date: Thu, 4 Jun 2015 00:20:51 +0200 Subject: [PATCH] Ndk/RenderSystem: Finish first implementation Huge WIP, but I have a first render with it Former-commit-id: 82ecea8b6ce5c452818f1585c61af7623c28e958 --- SDK/include/NDK/Systems/RenderSystem.hpp | 3 +++ SDK/include/NDK/Systems/RenderSystem.inl | 8 ++++++++ SDK/include/NDK/World.inl | 2 ++ SDK/src/NDK/Systems/RenderSystem.cpp | 18 ++++++++++++++++++ 4 files changed, 31 insertions(+) diff --git a/SDK/include/NDK/Systems/RenderSystem.hpp b/SDK/include/NDK/Systems/RenderSystem.hpp index 5cd046f55..47af05039 100644 --- a/SDK/include/NDK/Systems/RenderSystem.hpp +++ b/SDK/include/NDK/Systems/RenderSystem.hpp @@ -7,6 +7,7 @@ #ifndef NDK_SYSTEMS_RENDERSYSTEM_HPP #define NDK_SYSTEMS_RENDERSYSTEM_HPP +#include #include #include #include @@ -20,6 +21,7 @@ namespace Ndk { public: RenderSystem(); + inline RenderSystem(const RenderSystem& renderSystem); ~RenderSystem() = default; void Update(float elapsedTime); @@ -32,6 +34,7 @@ namespace Ndk EntityList m_cameras; EntityList m_drawables; + NzForwardRenderTechnique m_renderTechnique; }; } diff --git a/SDK/include/NDK/Systems/RenderSystem.inl b/SDK/include/NDK/Systems/RenderSystem.inl index e5f296d27..065fc714d 100644 --- a/SDK/include/NDK/Systems/RenderSystem.inl +++ b/SDK/include/NDK/Systems/RenderSystem.inl @@ -1,3 +1,11 @@ // Copyright (C) 2015 Jérôme Leclercq // This file is part of the "Nazara Development Kit" // For conditions of distribution and use, see copyright notice in Prerequesites.hpp + +namespace Ndk +{ + inline RenderSystem::RenderSystem(const RenderSystem& renderSystem) : + System(renderSystem) + { + } +} diff --git a/SDK/include/NDK/World.inl b/SDK/include/NDK/World.inl index 0b0b30b63..f71d6962b 100644 --- a/SDK/include/NDK/World.inl +++ b/SDK/include/NDK/World.inl @@ -11,6 +11,8 @@ namespace Ndk { if (addDefaultSystems) AddDefaultSystems(); + + m_entities.reserve(100); // Temporaire, je le jure } inline BaseSystem& World::AddSystem(std::unique_ptr&& system) diff --git a/SDK/src/NDK/Systems/RenderSystem.cpp b/SDK/src/NDK/Systems/RenderSystem.cpp index 632d053d2..3c0f9b37b 100644 --- a/SDK/src/NDK/Systems/RenderSystem.cpp +++ b/SDK/src/NDK/Systems/RenderSystem.cpp @@ -3,6 +3,7 @@ // For conditions of distribution and use, see copyright notice in Prerequesites.hpp #include +#include #include #include #include @@ -21,6 +22,23 @@ namespace Ndk NodeComponent& cameraNode = camera->GetComponent(); camComponent.ApplyView(); + + NzScene dummyScene; + dummyScene.SetViewer(camComponent); + + NzAbstractRenderQueue* renderQueue = m_renderTechnique.GetRenderQueue(); + renderQueue->Clear(); + + for (const Ndk::EntityHandle& drawable : m_drawables) + { + GraphicsComponent& graphicsComponent = drawable->GetComponent(); + NodeComponent& drawableNode = drawable->GetComponent(); + + graphicsComponent.AddToRenderQueue(renderQueue, drawableNode.GetTransformMatrix()); + } + + m_renderTechnique.Clear(&dummyScene); + m_renderTechnique.Draw(&dummyScene); } }