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