diff --git a/include/Engine/Core/System.h b/include/Engine/Core/System.h index 1ca1c824..8077fcc7 100644 --- a/include/Engine/Core/System.h +++ b/include/Engine/Core/System.h @@ -68,7 +68,7 @@ protected: const std::string m_ComponentType; - virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& scoreScreen, double dt) = 0; + virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& cFade, double dt) = 0; }; class ImpureSystem : public virtual System diff --git a/include/Game/Systems/FadeOutSystem.h b/include/Game/Systems/FadeSystem.h similarity index 54% rename from include/Game/Systems/FadeOutSystem.h rename to include/Game/Systems/FadeSystem.h index a327577d..e2e930df 100644 --- a/include/Game/Systems/FadeOutSystem.h +++ b/include/Game/Systems/FadeSystem.h @@ -1,14 +1,15 @@ -#ifndef FadeOutSystem_h__ -#define FadeOutSystem_h__ +#ifndef FadeSystem_h__ +#define FadeSystem_h__ #include "Core/System.h" +#include "GLM.h" -class FadeOutSystem : public PureSystem +class FadeSystem : public PureSystem { public: - FadeOutSystem(SystemParams params) + FadeSystem(SystemParams params) : System(params) - , PureSystem("FadeOut") + , PureSystem("Fade") { } diff --git a/resources/Schema/Components.xsd b/resources/Schema/Components.xsd index a57f55a7..aa303da9 100644 --- a/resources/Schema/Components.xsd +++ b/resources/Schema/Components.xsd @@ -69,5 +69,5 @@ - + \ No newline at end of file diff --git a/resources/Schema/Components/Fade.xml b/resources/Schema/Components/Fade.xml new file mode 100644 index 00000000..6a8ac525 --- /dev/null +++ b/resources/Schema/Components/Fade.xml @@ -0,0 +1,6 @@ + + + 1 + + true + \ No newline at end of file diff --git a/resources/Schema/Components/Fade.xsd b/resources/Schema/Components/Fade.xsd new file mode 100644 index 00000000..b0c5152a --- /dev/null +++ b/resources/Schema/Components/Fade.xsd @@ -0,0 +1,17 @@ + + + + + + + + + + + + If the entity should fade out or in. + + + + + \ No newline at end of file diff --git a/resources/Schema/Components/FadeOut.xml b/resources/Schema/Components/FadeOut.xml deleted file mode 100644 index f322d1b7..00000000 --- a/resources/Schema/Components/FadeOut.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - 0 - \ No newline at end of file diff --git a/resources/Schema/Components/FadeOut.xsd b/resources/Schema/Components/FadeOut.xsd deleted file mode 100644 index d5c240d6..00000000 --- a/resources/Schema/Components/FadeOut.xsd +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/resources/Schema/Types/Entity.xsd b/resources/Schema/Types/Entity.xsd index 363f65e7..9da41687 100644 --- a/resources/Schema/Types/Entity.xsd +++ b/resources/Schema/Types/Entity.xsd @@ -72,7 +72,7 @@ - + diff --git a/src/Game/Game.cpp b/src/Game/Game.cpp index 359f0b57..a9d3f2d5 100644 --- a/src/Game/Game.cpp +++ b/src/Game/Game.cpp @@ -41,7 +41,7 @@ #include "Game/Systems/ServerListSystem.h" #include "Game/Systems/StartSystem.h" #include "Game/Systems/EndScreenSystem.h" -#include "Game/Systems/FadeOutSystem.h" +#include "Game/Systems/FadeSystem.h" #include "Rendering/TextureSprite.h" @@ -160,6 +160,7 @@ Game::Game(int argc, char* argv[]) m_SystemPipeline->AddSystem(updateOrderLevel, m_Renderer); m_SystemPipeline->AddSystem(updateOrderLevel); m_SystemPipeline->AddSystem(updateOrderLevel); + m_SystemPipeline->AddSystem(updateOrderLevel); // Populate Octree with collidables ++updateOrderLevel; m_SystemPipeline->AddSystem(updateOrderLevel, m_OctreeCollision, "Collidable"); diff --git a/src/Game/Systems/FadeOutSystem.cpp b/src/Game/Systems/FadeOutSystem.cpp deleted file mode 100644 index 96a11b83..00000000 --- a/src/Game/Systems/FadeOutSystem.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#include "Systems/FadeOutSystem.h" - -void FadeOutSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& cFadeOut, double dt) -{ - //if (dt == 0.0) { - // return; - //} - - //if (!entity.Valid()) { - // return; - //} - - //double& lifetime = cLifetime["Lifetime"]; - //lifetime -= dt; - - //if (lifetime <= 0.0) { - // m_Deletions.push_back(entity); - //} -} \ No newline at end of file diff --git a/src/Game/Systems/FadeSystem.cpp b/src/Game/Systems/FadeSystem.cpp new file mode 100644 index 00000000..f71bd316 --- /dev/null +++ b/src/Game/Systems/FadeSystem.cpp @@ -0,0 +1,37 @@ +#include "Systems/FadeSystem.h" + +void FadeSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& cFade, double dt) +{ + double dTime = dt; + if (dTime == 0.0) { + return; + } + + if (!entity.Valid()) { + return; + } + + if (!(bool)cFade["Out"]) { + dTime *= -1; + } + + double fadeTime = cFade["FadeTime"]; + double& currentTime = cFade["Time"]; + currentTime += dTime; + + if(currentTime > fadeTime) { + currentTime = 0.0; + } + if(currentTime < 0.0) { + currentTime = fadeTime; + } + double ratio = currentTime/fadeTime; + + if(entity.HasComponent("Model")){ + ((glm::vec4&)entity["Model"]["Color"]).a = ratio; + } + if (entity.HasComponent("Sprite")) { + ((glm::vec4&)entity["Sprite"]["Color"]).a = ratio; + + } +} \ No newline at end of file