Skip to content

Commit fed403a

Browse files
committed
added awake() and start() to components
1 parent 5f66878 commit fed403a

14 files changed

+153
-61
lines changed

FluffyEngine/Component.h

+5-1
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,13 @@ namespace Fluffy
1313
{
1414
}
1515
virtual ~Component() = default;
16+
virtual void Awake() {}
17+
virtual void Start() {}
1618
virtual void Update(const float /*deltaTime*/) {}
17-
virtual std::string GetTypeName() = 0;
1819

1920
inline class GameObject* GetGameObject() const { return m_pOwner; }
21+
inline bool IsEnabled() const { return m_Enabled; }
22+
inline void SetEnabled(bool enabled) { m_Enabled = enabled; }
2023

2124
Component(const Component&) = delete;
2225
Component(Component&&) = delete;
@@ -26,5 +29,6 @@ namespace Fluffy
2629
protected:
2730

2831
class GameObject* m_pOwner;
32+
bool m_Enabled{ true };
2933
};
3034
}

FluffyEngine/Scene.cpp

+16-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ namespace Fluffy
1414

1515
void Scene::Add(std::shared_ptr<GameObject> object)
1616
{
17-
m_GameObjects.emplace_back(std::move(object));
17+
object->SetCurrentScene(this);
18+
m_NewlyAddedGameObjects.push(m_GameObjects.emplace_back(std::move(object)).get());
1819
}
1920

2021
void Scene::Remove(std::shared_ptr<GameObject> object)
@@ -29,6 +30,12 @@ namespace Fluffy
2930

3031
void Scene::Update(const float deltaTime)
3132
{
33+
while (!m_NewlyAddedGameObjects.empty())
34+
{
35+
m_NewlyAddedGameObjects.front()->Start();
36+
m_NewlyAddedGameObjects.pop();
37+
}
38+
3239
for (int i = int(m_GameObjects.size()) - 1; i >= 0; --i)
3340
{
3441
const auto& object{ m_GameObjects[i] };
@@ -48,13 +55,19 @@ namespace Fluffy
4855
{
4956
for (const auto& object : m_GameObjects)
5057
{
58+
if (!object->IsActive())
59+
continue;
60+
5161
const std::vector<Component*> components{ object->GetAllComponents() };
5262

5363
for (auto& component : components)
5464
{
55-
if (IRenderable* renderable = dynamic_cast<IRenderable*>(component))
65+
if (component->IsEnabled())
5666
{
57-
renderable->Render();
67+
if (IRenderable* renderable = dynamic_cast<IRenderable*>(component))
68+
{
69+
renderable->Render();
70+
}
5871
}
5972
}
6073
}

FluffyEngine/Scene.h

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#pragma once
22
#include "SceneManager.h"
3+
#include <queue>
34

45
namespace Fluffy
56
{
@@ -26,6 +27,7 @@ namespace Fluffy
2627

2728
const std::string m_Name;
2829
std::vector<std::shared_ptr<GameObject>> m_GameObjects{};
30+
std::queue<GameObject*> m_NewlyAddedGameObjects{};
2931

3032
static unsigned int m_idCounter;
3133
};

FluffyEngine/Sprite.h

-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ namespace Fluffy
1010
class Sprite : public Component, public IRenderable
1111
{
1212
public:
13-
std::string GetTypeName() override { return typeid(*this).name(); }
1413
void Render() const override;
1514
void SetTexture(const std::string& fileName);
1615
inline glm::vec2 GetTextureSize() const { return m_pTexture->GetSize(); }

FluffyEngine/Text.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace Fluffy
1414
{
1515
public:
1616
void Update(const float deltaTime) override;
17-
std::string GetTypeName() override { return typeid(*this).name(); }
17+
//std::string GetTypeName() override { return typeid(*this).name(); }
1818
void Render() const override;
1919

2020
void SetText(const std::string& text);

Galaga/AchievementComponent.h

-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,5 @@
55

66
class AchievementComponent : public Fluffy::Component, Fluffy::IEventListener
77
{
8-
// Inherited via Component
98

10-
std::string GetTypeName() override { return typeid(*this).name(); }
119
};

Galaga/EnemyCharacter.h

-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,5 @@ class EnemyCharacter final : public Character
1717
EnemyCharacter& operator=(const EnemyCharacter&) = delete;
1818
EnemyCharacter& operator=(EnemyCharacter&&) = delete;*/
1919

20-
std::string GetTypeName() override { return typeid(*this).name(); }
2120
};
2221

Galaga/FPSCounter.h

-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ class FPSCounter : public Fluffy::Component
1313
public:
1414
FPSCounter(Fluffy::GameObject* pOwner, Fluffy::Text* pText);
1515
void Update(const float deltaTime) override;
16-
std::string GetTypeName() override { return typeid(*this).name(); }
1716
inline float GetCurrentFPS() const { return m_FPS; }
1817

1918
private:

Galaga/Galaga.vcxproj

+22-12
Original file line numberDiff line numberDiff line change
@@ -88,73 +88,77 @@
8888
</PropertyGroup>
8989
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
9090
<ClCompile>
91-
<WarningLevel>Level3</WarningLevel>
91+
<WarningLevel>Level4</WarningLevel>
9292
<SDLCheck>true</SDLCheck>
9393
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
9494
<ConformanceMode>true</ConformanceMode>
9595
<AdditionalIncludeDirectories>$(SolutionDir)\FluffyEngine;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
9696
<LanguageStandard>stdcpp20</LanguageStandard>
97+
<TreatWarningAsError>true</TreatWarningAsError>
9798
</ClCompile>
9899
<Link>
99100
<SubSystem>Console</SubSystem>
100101
<GenerateDebugInformation>true</GenerateDebugInformation>
101-
<AdditionalLibraryDirectories>$(OutputPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
102+
<AdditionalLibraryDirectories>$(SolutionDir)Win32\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
102103
<AdditionalDependencies>FluffyEngine.lib;opengl32.lib;xinput.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
103104
</Link>
104105
</ItemDefinitionGroup>
105106
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
106107
<ClCompile>
107-
<WarningLevel>Level3</WarningLevel>
108+
<WarningLevel>Level4</WarningLevel>
108109
<FunctionLevelLinking>true</FunctionLevelLinking>
109110
<IntrinsicFunctions>true</IntrinsicFunctions>
110111
<SDLCheck>true</SDLCheck>
111112
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
112113
<ConformanceMode>true</ConformanceMode>
113114
<AdditionalIncludeDirectories>$(SolutionDir)\FluffyEngine;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
114115
<LanguageStandard>stdcpp20</LanguageStandard>
116+
<TreatWarningAsError>true</TreatWarningAsError>
115117
</ClCompile>
116118
<Link>
117119
<SubSystem>Console</SubSystem>
118120
<EnableCOMDATFolding>true</EnableCOMDATFolding>
119121
<OptimizeReferences>true</OptimizeReferences>
120122
<GenerateDebugInformation>true</GenerateDebugInformation>
121-
<AdditionalLibraryDirectories>$(OutputPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
123+
<AdditionalLibraryDirectories>$(SolutionDir)Win32\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
122124
<AdditionalDependencies>FluffyEngine.lib;opengl32.lib;xinput.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
123125
</Link>
124126
</ItemDefinitionGroup>
125127
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
126128
<ClCompile>
127-
<WarningLevel>Level3</WarningLevel>
129+
<WarningLevel>Level4</WarningLevel>
128130
<SDLCheck>true</SDLCheck>
129131
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
130132
<ConformanceMode>true</ConformanceMode>
131133
<AdditionalIncludeDirectories>$(SolutionDir)\FluffyEngine;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
132134
<LanguageStandard>stdcpp20</LanguageStandard>
135+
<TreatWarningAsError>true</TreatWarningAsError>
133136
</ClCompile>
134137
<Link>
135138
<SubSystem>Console</SubSystem>
136139
<GenerateDebugInformation>true</GenerateDebugInformation>
137-
<AdditionalLibraryDirectories>$(OutputPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
140+
<AdditionalLibraryDirectories>$(SolutionDir)x64\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
138141
<AdditionalDependencies>FluffyEngine.lib;opengl32.lib;xinput.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
139142
</Link>
140143
</ItemDefinitionGroup>
141144
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
142145
<ClCompile>
143-
<WarningLevel>Level3</WarningLevel>
146+
<WarningLevel>Level4</WarningLevel>
144147
<FunctionLevelLinking>true</FunctionLevelLinking>
145148
<IntrinsicFunctions>true</IntrinsicFunctions>
146149
<SDLCheck>true</SDLCheck>
147150
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
148151
<ConformanceMode>true</ConformanceMode>
149152
<AdditionalIncludeDirectories>$(SolutionDir)\FluffyEngine;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
150153
<LanguageStandard>stdcpp20</LanguageStandard>
154+
<TreatWarningAsError>true</TreatWarningAsError>
151155
</ClCompile>
152156
<Link>
153157
<SubSystem>Console</SubSystem>
154158
<EnableCOMDATFolding>true</EnableCOMDATFolding>
155159
<OptimizeReferences>true</OptimizeReferences>
156160
<GenerateDebugInformation>true</GenerateDebugInformation>
157-
<AdditionalLibraryDirectories>$(OutputPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
161+
<AdditionalLibraryDirectories>$(SolutionDir)x64\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
158162
<AdditionalDependencies>FluffyEngine.lib;opengl32.lib;xinput.lib;shell32.lib;%(AdditionalDependencies)</AdditionalDependencies>
159163
</Link>
160164
</ItemDefinitionGroup>
@@ -164,37 +168,43 @@
164168
<ClCompile Include="BulletsManager.cpp" />
165169
<ClCompile Include="Character.cpp" />
166170
<ClCompile Include="CharactersManager.cpp" />
167-
<ClCompile Include="CollidersHandler.cpp" />
168171
<ClCompile Include="EnemyCharacter.cpp" />
172+
<ClCompile Include="FiniteStateMachine.cpp" />
169173
<ClCompile Include="FPSCounter.cpp" />
170174
<ClCompile Include="HealthDisplayComponent.cpp" />
171175
<ClCompile Include="KillEnemyCommand.cpp" />
176+
<ClCompile Include="Level.cpp" />
172177
<ClCompile Include="Main.cpp" />
173178
<ClCompile Include="MoveCommand.cpp" />
174179
<ClCompile Include="PlayerCharacter.cpp" />
175180
<ClCompile Include="Rotator.cpp" />
176181
<ClCompile Include="ScoreComponent.cpp" />
177182
<ClCompile Include="ShootCommand.cpp" />
178-
<ClCompile Include="SpriteColliderComponent.cpp" />
183+
<ClCompile Include="EnemyStates.cpp" />
179184
<ClCompile Include="SuicideCommand.cpp" />
180185
</ItemGroup>
181186
<ItemGroup>
182187
<ClInclude Include="AchievementComponent.h" />
188+
<ClInclude Include="Blackboard.h" />
183189
<ClInclude Include="Bullet.h" />
184190
<ClInclude Include="BulletsManager.h" />
185191
<ClInclude Include="Character.h" />
186192
<ClInclude Include="CharactersManager.h" />
187-
<ClInclude Include="CollidersHandler.h" />
193+
<ClInclude Include="CollisionLayers.h" />
188194
<ClInclude Include="EnemyCharacter.h" />
195+
<ClInclude Include="EventParams.h" />
196+
<ClInclude Include="FiniteStateMachine.h" />
189197
<ClInclude Include="FPSCounter.h" />
190198
<ClInclude Include="HealthDisplayComponent.h" />
199+
<ClInclude Include="JSONParser.h" />
191200
<ClInclude Include="KillEnemyCommand.h" />
201+
<ClInclude Include="Level.h" />
192202
<ClInclude Include="MoveCommand.h" />
193203
<ClInclude Include="PlayerCharacter.h" />
194204
<ClInclude Include="Rotator.h" />
195205
<ClInclude Include="ScoreComponent.h" />
196206
<ClInclude Include="ShootCommand.h" />
197-
<ClInclude Include="SpriteColliderComponent.h" />
207+
<ClInclude Include="EnemyStates.h" />
198208
<ClInclude Include="Structs.h" />
199209
<ClInclude Include="SuicideCommand.h" />
200210
</ItemGroup>

Galaga/Galaga.vcxproj.filters

+29-11
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,22 @@
5454
<ClCompile Include="SuicideCommand.cpp">
5555
<Filter>Source Files</Filter>
5656
</ClCompile>
57-
<ClCompile Include="SpriteColliderComponent.cpp">
57+
<ClCompile Include="ShootCommand.cpp">
5858
<Filter>Source Files</Filter>
5959
</ClCompile>
60-
<ClCompile Include="CollidersHandler.cpp">
60+
<ClCompile Include="Bullet.cpp">
6161
<Filter>Source Files</Filter>
6262
</ClCompile>
63-
<ClCompile Include="ShootCommand.cpp">
63+
<ClCompile Include="BulletsManager.cpp">
6464
<Filter>Source Files</Filter>
6565
</ClCompile>
66-
<ClCompile Include="Bullet.cpp">
66+
<ClCompile Include="FiniteStateMachine.cpp">
6767
<Filter>Source Files</Filter>
6868
</ClCompile>
69-
<ClCompile Include="BulletsManager.cpp">
69+
<ClCompile Include="EnemyStates.cpp">
70+
<Filter>Source Files</Filter>
71+
</ClCompile>
72+
<ClCompile Include="Level.cpp">
7073
<Filter>Source Files</Filter>
7174
</ClCompile>
7275
</ItemGroup>
@@ -107,12 +110,6 @@
107110
<ClInclude Include="SuicideCommand.h">
108111
<Filter>Header Files</Filter>
109112
</ClInclude>
110-
<ClInclude Include="SpriteColliderComponent.h">
111-
<Filter>Header Files</Filter>
112-
</ClInclude>
113-
<ClInclude Include="CollidersHandler.h">
114-
<Filter>Header Files</Filter>
115-
</ClInclude>
116113
<ClInclude Include="Structs.h">
117114
<Filter>Header Files</Filter>
118115
</ClInclude>
@@ -125,5 +122,26 @@
125122
<ClInclude Include="BulletsManager.h">
126123
<Filter>Header Files</Filter>
127124
</ClInclude>
125+
<ClInclude Include="FiniteStateMachine.h">
126+
<Filter>Header Files</Filter>
127+
</ClInclude>
128+
<ClInclude Include="Blackboard.h">
129+
<Filter>Header Files</Filter>
130+
</ClInclude>
131+
<ClInclude Include="EnemyStates.h">
132+
<Filter>Header Files</Filter>
133+
</ClInclude>
134+
<ClInclude Include="Level.h">
135+
<Filter>Header Files</Filter>
136+
</ClInclude>
137+
<ClInclude Include="EventParams.h">
138+
<Filter>Header Files</Filter>
139+
</ClInclude>
140+
<ClInclude Include="CollisionLayers.h">
141+
<Filter>Header Files</Filter>
142+
</ClInclude>
143+
<ClInclude Include="JSONParser.h">
144+
<Filter>Header Files</Filter>
145+
</ClInclude>
128146
</ItemGroup>
129147
</Project>

Galaga/HealthDisplayComponent.h

-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ class HealthDisplayComponent final : public Fluffy::Component, Fluffy::IEventLis
1717
public:
1818
HealthDisplayComponent(Fluffy::GameObject* pOwner, int playerIndex, const std::string& fontPath, int fontSize);
1919
~HealthDisplayComponent();
20-
std::string GetTypeName() override { return typeid(*this).name(); }
2120

2221
void OnNotify(const Fluffy::EventType& eventType, const struct Fluffy::IEventParam* param) override;
2322

Galaga/Rotator.h

-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ class Rotator final : public Fluffy::Component
1717
Rotator(Fluffy::GameObject* pOwner, const float angleDegrees, const float centerX, const float centerY);
1818
~Rotator() = default;
1919
void Update(const float deltaTime) override;
20-
std::string GetTypeName() override { return typeid(*this).name(); }
2120
inline void SetRotationAngle(const float angleDegrees) { m_RotationAngleDegrees = angleDegrees; }
2221
inline void SetRotationCenter(const glm::vec2& center) { m_RotationCenter = center; }
2322
inline void SetRotationCenter(const float centerX, const float centerY) { m_RotationCenter = glm::vec2(centerX, centerY); }

Galaga/ScoreComponent.h

-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ class ScoreComponent final: public Fluffy::Component, Fluffy::IEventListener
1717
public:
1818
ScoreComponent(Fluffy::GameObject* pOwner, int playerIndex, const std::string& fontPath, int fontSize);
1919
~ScoreComponent();
20-
std::string GetTypeName() override { return typeid(*this).name(); }
2120

2221
void OnNotify(const Fluffy::EventType& eventType, const struct Fluffy::IEventParam* pParam) override;
2322

0 commit comments

Comments
 (0)