diff --git a/SDK/include/NDK/Systems/RenderSystem.hpp b/SDK/include/NDK/Systems/RenderSystem.hpp new file mode 100644 index 000000000..a35dc53ba --- /dev/null +++ b/SDK/include/NDK/Systems/RenderSystem.hpp @@ -0,0 +1,39 @@ +// 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 + +#pragma once + +#ifndef NDK_SYSTEMS_RENDERSYSTEM_HPP +#define NDK_SYSTEMS_RENDERSYSTEM_HPP + +#include +#include +#include +#include + +namespace Ndk +{ + class GraphicsComponent; + + class NDK_API RenderSystem : public System + { + public: + RenderSystem(); + ~RenderSystem() = default; + + void Update(float elapsedTime); + + static SystemIndex systemIndex; + + private: + void OnEntityValidation(Entity* entity, bool justAdded) override; + + EntityList m_cameras; + EntityList m_drawables; + }; +} + +#include + +#endif // NDK_SYSTEMS_RENDERSYSTEM_HPP diff --git a/SDK/include/NDK/Systems/RenderSystem.inl b/SDK/include/NDK/Systems/RenderSystem.inl new file mode 100644 index 000000000..e5f296d27 --- /dev/null +++ b/SDK/include/NDK/Systems/RenderSystem.inl @@ -0,0 +1,3 @@ +// 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 diff --git a/SDK/src/NDK/Sdk.cpp b/SDK/src/NDK/Sdk.cpp index f24b3466b..71ee8cca5 100644 --- a/SDK/src/NDK/Sdk.cpp +++ b/SDK/src/NDK/Sdk.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include namespace Ndk @@ -65,6 +66,7 @@ namespace Ndk // Systèmes InitializeSystem(); InitializeSystem(); + InitializeSystem(); InitializeSystem(); NazaraNotice("Initialized: SDK"); diff --git a/SDK/src/NDK/Systems/RenderSystem.cpp b/SDK/src/NDK/Systems/RenderSystem.cpp new file mode 100644 index 000000000..4c4f3a629 --- /dev/null +++ b/SDK/src/NDK/Systems/RenderSystem.cpp @@ -0,0 +1,40 @@ +// 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 + +#include +#include +#include + +namespace Ndk +{ + RenderSystem::RenderSystem() + { + } + + void RenderSystem::Update(float elapsedTime) + { + } + + void RenderSystem::OnEntityValidation(Entity* entity, bool justAdded) + { + if (entity->HasComponent()) + { + m_cameras.Insert(entity); + std::sort(m_cameras.begin(), m_cameras.end(), [](const EntityHandle& handle1, const EntityHandle& handle2) + { + return handle1->GetComponent().GetLayer() < handle2->GetComponent().GetLayer(); + }); + } + else + m_cameras.Remove(entity); + + if (entity->HasComponent()) + m_drawables.Insert(entity); + else + m_drawables.Remove(entity); + + } + + SystemIndex RenderSystem::systemIndex; +} diff --git a/SDK/src/NDK/World.cpp b/SDK/src/NDK/World.cpp index 0bbf2b9f9..8db940558 100644 --- a/SDK/src/NDK/World.cpp +++ b/SDK/src/NDK/World.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include namespace Ndk @@ -20,6 +21,7 @@ namespace Ndk { AddSystem(); AddSystem(); + AddSystem(); AddSystem(); }