diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp
index 184b9611..3577475d 100644
--- a/SHADE_Application/src/Application/SBApplication.cpp
+++ b/SHADE_Application/src/Application/SBApplication.cpp
@@ -1,5 +1,6 @@
#include "SBpch.h"
#include "SBApplication.h"
+#include "ECS_Base/UnitTesting/SHECSUnitTest.h"
#ifdef SHEDITOR
#include "Editor/SHEditor.h"
@@ -23,11 +24,13 @@ namespace Sandbox
{
window.Create(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
-
+
#ifdef SHEDITOR
#else
#endif
+
+
}
void SBApplication::Update(void)
diff --git a/SHADE_Engine/SHADE_Engine.vcxproj b/SHADE_Engine/SHADE_Engine.vcxproj
index e54c82ec..2b2541bb 100644
--- a/SHADE_Engine/SHADE_Engine.vcxproj
+++ b/SHADE_Engine/SHADE_Engine.vcxproj
@@ -110,11 +110,17 @@
+
+
+
-
-
+
+
-
+
+
+
+
@@ -196,9 +202,12 @@
-
-
-
+
+
+
+
+
+
diff --git a/SHADE_Engine/SHADE_Engine.vcxproj.filters b/SHADE_Engine/SHADE_Engine.vcxproj.filters
index 7486fad4..4f80a4f8 100644
--- a/SHADE_Engine/SHADE_Engine.vcxproj.filters
+++ b/SHADE_Engine/SHADE_Engine.vcxproj.filters
@@ -13,6 +13,9 @@
{07FEB307-F3F6-D259-1C29-B8DE0881B265}
+
+ {37718753-A387-85E9-ECFE-100B58545671}
+
{EE037863-5A8F-E527-63A0-681CCFAA4128}
@@ -141,21 +144,21 @@
ECS_Base\General
+
+ ECS_Base\Managers
+
+
+ ECS_Base\Managers
+
+
+ ECS_Base\Managers
+
ECS_Base
-
- ECS_Base\System
-
-
- ECS_Base\System
-
ECS_Base\System
-
- ECS_Base\System
-
Engine
@@ -382,6 +385,12 @@
Tools
+
+
+
+
+
+
@@ -393,14 +402,14 @@
ECS_Base\Entity
-
- ECS_Base\System
+
+ ECS_Base\Managers
-
- ECS_Base\System
+
+ ECS_Base\Managers
-
- ECS_Base\System
+
+ ECS_Base\Managers
Engine
@@ -583,5 +592,8 @@
Tools
+
+
+
\ No newline at end of file
diff --git a/SHADE_Engine/src/ECS_Base/Components/SHComponent.h b/SHADE_Engine/src/ECS_Base/Components/SHComponent.h
index c9c5e6f1..66d1d8c4 100644
--- a/SHADE_Engine/src/ECS_Base/Components/SHComponent.h
+++ b/SHADE_Engine/src/ECS_Base/Components/SHComponent.h
@@ -9,8 +9,7 @@
*********************************************************************/
-#ifndef SH_COMPONENT_H
-#define SH_COMPONENT_H
+#pragma once
#include "SHpch.h"
#include "../SHECSMacros.h"
@@ -118,4 +117,3 @@ namespace SHADE
};
}
-#endif
diff --git a/SHADE_Engine/src/ECS_Base/Components/SHComponentGroup.cpp b/SHADE_Engine/src/ECS_Base/Components/SHComponentGroup.cpp
index 3ccb7778..2627d9fb 100644
--- a/SHADE_Engine/src/ECS_Base/Components/SHComponentGroup.cpp
+++ b/SHADE_Engine/src/ECS_Base/Components/SHComponentGroup.cpp
@@ -14,7 +14,7 @@
#include "SHpch.h"
#include "SHComponentGroup.h"
-#include "../System/SHComponentManager.h"
+#include "../Managers/SHComponentManager.h"
namespace SHADE
diff --git a/SHADE_Engine/src/ECS_Base/Components/SHComponentGroup.h b/SHADE_Engine/src/ECS_Base/Components/SHComponentGroup.h
index 3f67aff0..2b20ec13 100644
--- a/SHADE_Engine/src/ECS_Base/Components/SHComponentGroup.h
+++ b/SHADE_Engine/src/ECS_Base/Components/SHComponentGroup.h
@@ -12,9 +12,7 @@
consent of DigiPen Institute of Technology is prohibited.
*********************************************************************/
-
-#ifndef SH_COMPONENT_GROUP
-#define SH_COMPONENT_GROUP
+#pragma once
#include "../SHECSMacros.h"
#include "../General/SHFamily.h"
@@ -180,6 +178,3 @@ namespace SHADE
};
}
-
-
-#endif
diff --git a/SHADE_Engine/src/ECS_Base/Entity/SHEntity.cpp b/SHADE_Engine/src/ECS_Base/Entity/SHEntity.cpp
index 08139158..ef613390 100644
--- a/SHADE_Engine/src/ECS_Base/Entity/SHEntity.cpp
+++ b/SHADE_Engine/src/ECS_Base/Entity/SHEntity.cpp
@@ -9,9 +9,9 @@
*********************************************************************/
#include "SHpch.h"
#include "SHEntity.h"
-#include "../System/SHEntityManager.h"
+#include "../Managers/SHEntityManager.h"
//#include "Scene/SHSceneGraph.h"
-#include "../System/SHComponentManager.h"
+#include "../Managers/SHComponentManager.h"
namespace SHADE
{
diff --git a/SHADE_Engine/src/ECS_Base/Entity/SHEntity.h b/SHADE_Engine/src/ECS_Base/Entity/SHEntity.h
index 0e00c8af..ab73f45f 100644
--- a/SHADE_Engine/src/ECS_Base/Entity/SHEntity.h
+++ b/SHADE_Engine/src/ECS_Base/Entity/SHEntity.h
@@ -8,12 +8,11 @@
consent of DigiPen Institute of Technology is prohibited.
*********************************************************************/
-#ifndef SH_ENTITY_H
-#define SH_ENTITY_H
+#pragma once
#include "../SHECSMacros.h"
#include "../Components/SHComponent.h"
-#include "../System/SHComponentManager.h"
+#include "../Managers/SHComponentManager.h"
//#include "../../Scene/SHSceneNode.h"
@@ -166,6 +165,3 @@ namespace SHADE
};
}
-
-
-#endif
diff --git a/SHADE_Engine/src/ECS_Base/General/SHFamily.h b/SHADE_Engine/src/ECS_Base/General/SHFamily.h
index f97bbe0e..5815703f 100644
--- a/SHADE_Engine/src/ECS_Base/General/SHFamily.h
+++ b/SHADE_Engine/src/ECS_Base/General/SHFamily.h
@@ -11,8 +11,7 @@
consent of DigiPen Institute of Technology is prohibited.
*********************************************************************/
-#ifndef SH_FAMILY_H
-#define SH_FAMILY_H
+#pragma once
#include "../SHECSMacros.h"
@@ -81,8 +80,4 @@ namespace SHADE
template
ComponentTypeID SHFamilyID::currentID = 0;
-}
-
-
-
-#endif
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/SHADE_Engine/src/ECS_Base/General/SHHandleGenerator.h b/SHADE_Engine/src/ECS_Base/General/SHHandleGenerator.h
index 48ae2132..7c68f66d 100644
--- a/SHADE_Engine/src/ECS_Base/General/SHHandleGenerator.h
+++ b/SHADE_Engine/src/ECS_Base/General/SHHandleGenerator.h
@@ -11,8 +11,7 @@
or disclosure of this file or its contents without the prior written
consent of DigiPen Institute of Technology is prohibited.
*********************************************************************/
-#ifndef SH_HANDLE_GENERATOR_H
-#define SH_HANDLE_GENERATOR_H
+#pragma once
#include
#include
@@ -299,7 +298,4 @@ namespace SHADE
typedef SHHandleGenerator EntityHandleGenerator;
-}
-
-
-#endif
+}
\ No newline at end of file
diff --git a/SHADE_Engine/src/ECS_Base/General/SHSparseBase.h b/SHADE_Engine/src/ECS_Base/General/SHSparseBase.h
index 2deebe74..913fca5a 100644
--- a/SHADE_Engine/src/ECS_Base/General/SHSparseBase.h
+++ b/SHADE_Engine/src/ECS_Base/General/SHSparseBase.h
@@ -10,8 +10,7 @@
consent of DigiPen Institute of Technology is prohibited.
*********************************************************************/
-#ifndef SH_SPARSE_BASE_H
-#define SH_SPARSE_BASE_H
+#pragma once
#include "../SHECSMacros.h"
@@ -44,7 +43,4 @@ namespace SHADE
};
-}
-
-
-#endif
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/SHADE_Engine/src/ECS_Base/General/SHSparseSet.h b/SHADE_Engine/src/ECS_Base/General/SHSparseSet.h
index 3473eb37..8e096a37 100644
--- a/SHADE_Engine/src/ECS_Base/General/SHSparseSet.h
+++ b/SHADE_Engine/src/ECS_Base/General/SHSparseSet.h
@@ -9,8 +9,7 @@
or disclosure of this file or its contents without the prior written
consent of DigiPen Institute of Technology is prohibited.
*********************************************************************/
-#ifndef SH_SPARSE_SET_H
-#define SH_SPARSE_SET_H
+#pragma once
#include "../SHECSMacros.h"
#include "../General/SHSparseBase.h"
@@ -351,6 +350,4 @@ namespace SHADE
}
};
-}
-
-#endif
+}
\ No newline at end of file
diff --git a/SHADE_Engine/src/ECS_Base/General/SHSparseSetContainer.h b/SHADE_Engine/src/ECS_Base/General/SHSparseSetContainer.h
index 8698d1f5..8f8814f6 100644
--- a/SHADE_Engine/src/ECS_Base/General/SHSparseSetContainer.h
+++ b/SHADE_Engine/src/ECS_Base/General/SHSparseSetContainer.h
@@ -10,8 +10,7 @@
consent of DigiPen Institute of Technology is prohibited.
*********************************************************************/
-#ifndef SH_SPARSE_SET_CONTAINER_H
-#define SH_SPARSE_SET_CONTAINER_H
+#pragma once
#include "SHSparseSet.h"
#include "SHFamily.h"
@@ -243,6 +242,3 @@ namespace SHADE
};
}
-
-
-#endif
diff --git a/SHADE_Engine/src/ECS_Base/System/SHComponentManager.cpp b/SHADE_Engine/src/ECS_Base/Managers/SHComponentManager.cpp
similarity index 100%
rename from SHADE_Engine/src/ECS_Base/System/SHComponentManager.cpp
rename to SHADE_Engine/src/ECS_Base/Managers/SHComponentManager.cpp
diff --git a/SHADE_Engine/src/ECS_Base/System/SHComponentManager.h b/SHADE_Engine/src/ECS_Base/Managers/SHComponentManager.h
similarity index 99%
rename from SHADE_Engine/src/ECS_Base/System/SHComponentManager.h
rename to SHADE_Engine/src/ECS_Base/Managers/SHComponentManager.h
index 2c747663..995e8b24 100644
--- a/SHADE_Engine/src/ECS_Base/System/SHComponentManager.h
+++ b/SHADE_Engine/src/ECS_Base/Managers/SHComponentManager.h
@@ -12,8 +12,7 @@
consent of DigiPen Institute of Technology is prohibited.
*********************************************************************/
-#ifndef SH_ENGINE_H
-#define SH_ENGINE_H
+#pragma once
#include "../General/SHSparseSetContainer.h"
#include "../Components/SHComponent.h"
@@ -477,7 +476,4 @@ namespace SHADE
-}
-
-
-#endif
+}
\ No newline at end of file
diff --git a/SHADE_Engine/src/ECS_Base/System/SHEntityManager.cpp b/SHADE_Engine/src/ECS_Base/Managers/SHEntityManager.cpp
similarity index 100%
rename from SHADE_Engine/src/ECS_Base/System/SHEntityManager.cpp
rename to SHADE_Engine/src/ECS_Base/Managers/SHEntityManager.cpp
diff --git a/SHADE_Engine/src/ECS_Base/System/SHEntityManager.h b/SHADE_Engine/src/ECS_Base/Managers/SHEntityManager.h
similarity index 98%
rename from SHADE_Engine/src/ECS_Base/System/SHEntityManager.h
rename to SHADE_Engine/src/ECS_Base/Managers/SHEntityManager.h
index 7afece52..bec60a17 100644
--- a/SHADE_Engine/src/ECS_Base/System/SHEntityManager.h
+++ b/SHADE_Engine/src/ECS_Base/Managers/SHEntityManager.h
@@ -12,9 +12,7 @@
or disclosure of this file or its contents without the prior written
consent of DigiPen Institute of Technology is prohibited.
*********************************************************************/
-
-#ifndef SH_ENTITY_MANAGER_H
-#define SH_ENTITY_MANAGER_H
+#pragma once
#include
#include
@@ -198,7 +196,3 @@ namespace SHADE
}
-
-
-
-#endif
diff --git a/SHADE_Engine/src/ECS_Base/Managers/SHSystemManager.cpp b/SHADE_Engine/src/ECS_Base/Managers/SHSystemManager.cpp
new file mode 100644
index 00000000..551233db
--- /dev/null
+++ b/SHADE_Engine/src/ECS_Base/Managers/SHSystemManager.cpp
@@ -0,0 +1,77 @@
+/*********************************************************************
+ * \file SHSystemManager.cpp
+ * \author Daniel Chua Yee Chen
+ * \brief Implementation for the SHSystemManager class.
+ * SHSystemManager is the interface class where users of the engine create
+ * the systems that gives the components their functionality. This also
+ * ensures that the Init and Exit functions are ran at the appropriate time
+ *
+ * \copyright Copyright (c) 2021 DigiPen Institute of Technology. Reproduction
+ or disclosure of this file or its contents without the prior written
+ consent of DigiPen Institute of Technology is prohibited.
+ *********************************************************************/
+#include "SHpch.h"
+#include "SHSystemManager.h"
+#include
+
+#include
+#include
+#include
+
+namespace SHADE
+{
+ SHSystemManager::SystemContainer SHSystemManager::systemContainer;
+ SHSystemManager::SystemRoutineContainer SHSystemManager::systemRoutineContainer;
+
+ void SHSystemManager::Init() noexcept
+ {
+ for (auto& system : systemContainer)
+ {
+ system.second->Init();
+#ifdef _DEBUG
+ std::cout << system.first << " Init" << std::endl;
+#endif
+ }
+ }
+
+ void SHSystemManager::RunRoutines(bool editorPause, double deltaTime) noexcept
+ {
+ for (auto& routine : systemRoutineContainer)
+ {
+ if (editorPause == true)
+ {
+ if (routine.get()->IsRunInEditorPause)
+ {
+ std::chrono::high_resolution_clock::time_point start = std::chrono::high_resolution_clock::now();
+ routine.get()->Execute(deltaTime);
+ std::chrono::high_resolution_clock::time_point end = std::chrono::high_resolution_clock::now();
+ routine.get()->stats.executionTime = std::chrono::duration(end - start).count();
+ }
+ }
+ else
+ {
+ std::chrono::high_resolution_clock::time_point start = std::chrono::high_resolution_clock::now();
+ routine.get()->Execute(deltaTime);
+ std::chrono::high_resolution_clock::time_point end = std::chrono::high_resolution_clock::now();
+ routine.get()->stats.executionTime = std::chrono::duration(end - start).count();
+ }
+ }
+ }
+
+
+ void SHSystemManager::Exit() noexcept
+ {
+ systemRoutineContainer.clear();
+
+ for (SystemContainer::reverse_iterator it = systemContainer.rbegin(); it != systemContainer.rend(); ++it)
+ {
+ (*it).second->Exit();
+ //delete system.second;
+ }
+
+ systemContainer.clear();
+
+ }
+
+
+}
diff --git a/SHADE_Engine/src/ECS_Base/System/SHSystemManager.h b/SHADE_Engine/src/ECS_Base/Managers/SHSystemManager.h
similarity index 58%
rename from SHADE_Engine/src/ECS_Base/System/SHSystemManager.h
rename to SHADE_Engine/src/ECS_Base/Managers/SHSystemManager.h
index a81370e9..f97d98a2 100644
--- a/SHADE_Engine/src/ECS_Base/System/SHSystemManager.h
+++ b/SHADE_Engine/src/ECS_Base/Managers/SHSystemManager.h
@@ -10,34 +10,32 @@
consent of DigiPen Institute of Technology is prohibited.
*********************************************************************/
-
-#ifndef SH_SYSTEM_MANAGER_H
-#define SH_SYSTEM_MANAGER_H
+#pragma once
-#include
+#include