diff --git a/assets b/assets
index 26839b6..5357a0c 160000
--- a/assets
+++ b/assets
@@ -1 +1 @@
-Subproject commit 26839b66e2dd3e867332fde0bd20ec138a2a0247
+Subproject commit 5357a0c4e1020317bb8745a057d6da62ab6c6504
diff --git a/src/Events/Dead.h b/src/Events/Dead.h
new file mode 100644
index 0000000..32d618a
--- /dev/null
+++ b/src/Events/Dead.h
@@ -0,0 +1,16 @@
+#ifndef Events_Dead_h__
+#define Events_Dead_h__
+#include "Entity.h"
+#include "EventBroker.h"
+
+namespace Events
+{
+ struct Dead : Event
+ {
+ EntityID Entity;
+ };
+}
+
+
+
+#endif // Events_Dead_h__
\ No newline at end of file
diff --git a/src/Events/FlagCaptured.h b/src/Events/FlagCaptured.h
index fbb0a85..482d2f8 100644
--- a/src/Events/FlagCaptured.h
+++ b/src/Events/FlagCaptured.h
@@ -8,7 +8,7 @@ namespace Events
{
struct FlagCaptured : Event
{
- EntityID Player;
+ unsigned int Player;
};
}
diff --git a/src/Events/FlagDropped.h b/src/Events/FlagDropped.h
index eee5bbf..5340e0b 100644
--- a/src/Events/FlagDropped.h
+++ b/src/Events/FlagDropped.h
@@ -8,7 +8,7 @@ namespace Events
{
struct FlagDropped : Event
{
- EntityID Player;
+ unsigned int Player;
};
}
diff --git a/src/Events/FlagPickup.h b/src/Events/FlagPickup.h
index d1ad727..6d45f63 100644
--- a/src/Events/FlagPickup.h
+++ b/src/Events/FlagPickup.h
@@ -8,7 +8,7 @@ namespace Events
{
struct FlagPickup : Event
{
- EntityID Player;
+ unsigned int Player;
};
}
diff --git a/src/Events/FlagReturned.h b/src/Events/FlagReturned.h
index 9bdc55e..ac0b890 100644
--- a/src/Events/FlagReturned.h
+++ b/src/Events/FlagReturned.h
@@ -8,7 +8,7 @@ namespace Events
{
struct FlagReturned : Event
{
- EntityID Player;
+ unsigned int Player;
};
}
diff --git a/src/Events/GameOver.h b/src/Events/GameOver.h
index b544954..7c34ce4 100644
--- a/src/Events/GameOver.h
+++ b/src/Events/GameOver.h
@@ -8,7 +8,7 @@ namespace Events
{
struct GameOver : Event
{
- EntityID Winner;
+ unsigned int Player;
};
}
diff --git a/src/Events/OnDead.h b/src/Events/OnDead.h
deleted file mode 100644
index 0149ac1..0000000
--- a/src/Events/OnDead.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef Events_OnDead_h__
-#define Events_OnDead_h__
-#include "Entity.h"
-#include "EventBroker.h"
-
-namespace Events
-{
- struct OnDead : Event
- {
- EntityID Entity;
- };
-}
-
-
-
-#endif // Events_OnDead_h__
\ No newline at end of file
diff --git a/src/GUI/GameFrame.h b/src/GUI/GameFrame.h
index 56d0391..afa4fcf 100644
--- a/src/GUI/GameFrame.h
+++ b/src/GUI/GameFrame.h
@@ -11,6 +11,7 @@
#include "GameWorld.h"
#include "Events/GameStart.h"
#include "Events/GameOver.h"
+#include "Events/Dead.h"
namespace GUI
{
diff --git a/src/GUI/HealthOverlay.h b/src/GUI/HealthOverlay.h
index 3760a93..f93c243 100644
--- a/src/GUI/HealthOverlay.h
+++ b/src/GUI/HealthOverlay.h
@@ -37,7 +37,7 @@ namespace GUI
if (!health)
return false;
- SetColor(glm::vec4(1.f, 1.f, 1.f, 1 - health->Amount / 100.f));
+ SetColor(glm::vec4(1.f, 1.f, 1.f, 1 - (health->Amount / 100.f * 2)));
return true;
}
diff --git a/src/GUI/PlayerHUD.h b/src/GUI/PlayerHUD.h
index 63aaf14..96b9967 100644
--- a/src/GUI/PlayerHUD.h
+++ b/src/GUI/PlayerHUD.h
@@ -7,6 +7,7 @@
#include "GUI/GameOverFrame.h"
#include "Events/GameOver.h"
+#include "Events/Dead.h"
#include "Components/Player.h"
namespace GUI
@@ -20,7 +21,8 @@ namespace GUI
, m_World(world)
, m_PlayerID(playerID)
{
- EVENT_SUBSCRIBE_MEMBER(m_EGameOver, &GUI::PlayerHUD::OnGameOver)
+ EVENT_SUBSCRIBE_MEMBER(m_EGameOver, &GUI::PlayerHUD::OnGameOver);
+ EVENT_SUBSCRIBE_MEMBER(m_EDead, &GUI::PlayerHUD::OnDead);
m_HealthOverlay = new HealthOverlay(this, "HealthOverlay", m_World, m_PlayerID);
@@ -35,6 +37,7 @@ namespace GUI
m_VehicleSelection = new VehicleSelection(this, "VehicleSelection", m_World, m_PlayerID);
m_GameOverFrame = new GameOverFrame(this, "GameOver");
+ m_GameOverFrame->Hide();
}
protected:
@@ -49,14 +52,7 @@ namespace GUI
EventRelay m_EGameOver;
bool OnGameOver(const Events::GameOver &event)
{
- auto playerComponent = m_World->GetComponent(event.Winner);
- if (!playerComponent)
- {
- LOG_ERROR("Winner is not a valid player!");
- return false;
- }
-
- if (m_PlayerID == playerComponent->ID)
+ if (m_PlayerID == event.Player)
m_GameOverFrame->Show(true);
else
m_GameOverFrame->Show(false);
@@ -64,6 +60,14 @@ namespace GUI
return true;
}
+ EventRelay m_EDead;
+ bool OnDead(const Events::Dead &event)
+ {
+ m_VehicleSelection->Show();
+ m_HealthOverlay->SetColor(glm::vec4(1, 1, 1, 0));
+ return true;
+ }
+
bool OnCommand(const Events::InputCommand &event)
{
if (event.PlayerID != m_PlayerID)
@@ -71,10 +75,10 @@ namespace GUI
if (event.Command == "interface_confirm" && event.Value > 0)
{
- if (m_GameOverFrame->Visible())
+ /*if (m_GameOverFrame->Visible())
{
m_GameOverFrame->Hide();
- }
+ }*/
}
return true;
diff --git a/src/GUI/Viewport.h b/src/GUI/Viewport.h
index 44c8e81..40d54e5 100644
--- a/src/GUI/Viewport.h
+++ b/src/GUI/Viewport.h
@@ -51,7 +51,7 @@ public:
return;
Components::Transform absoluteTransform = m_TransformSystem->AbsoluteTransform(m_CameraEntity);
-
+
m_Camera->SetFOV(cameraComponent->FOV);
m_Camera->SetNearClip(cameraComponent->NearClip);
m_Camera->SetFarClip(cameraComponent->FarClip);
diff --git a/src/GameWorld.cpp b/src/GameWorld.cpp
index 07bab79..0b17e0c 100755
--- a/src/GameWorld.cpp
+++ b/src/GameWorld.cpp
@@ -296,37 +296,7 @@ void GameWorld::Initialize()
- {
- auto flag = CreateEntity();
- auto transform = AddComponent(flag);
- transform->Position = glm::vec3(0, -50, 100);
- auto model = AddComponent(flag);
- model->ModelFile = "Models/Flag/FishingRod/FishingRod.obj";
- {
- auto fish = CreateEntity(flag);
- auto transform = AddComponent(fish);
- transform->Position = glm::vec3(-1.3f, 1.0, 0);
- auto model = AddComponent(fish);
- model->ModelFile = "Models/Flag/LeFish/Salmon.obj";
- CommitEntity(fish);
- }
-
- auto trigger = AddComponent(flag);
- {
- auto shape = CreateEntity(flag);
- auto transform = AddComponent(shape);
- transform->Position = glm::vec3(-0.9f, 0.9f, 0);
- auto box = AddComponent(shape);
- box->Width = 1.1f;
- box->Depth = 0.7f;
- box->Height = 3.9f;
- CommitEntity(shape);
- }
-
- auto flagComponent = AddComponent(flag);
-
- CommitEntity(flag);
- }
+
//for (int i = 0; i < 500; i++)
//{
@@ -418,7 +388,6 @@ void GameWorld::RegisterComponents()
m_ComponentFactory.Register([]() { return new Components::Transform(); });
m_ComponentFactory.Register([]() { return new Components::Template(); });
m_ComponentFactory.Register([]() { return new Components::Player(); });
- m_ComponentFactory.Register([]() { return new Components::Flag(); });
m_ComponentFactory.Register([]() { return new Components::Move(); });
m_ComponentFactory.Register([]() { return new Components::Rotate(); });
m_ComponentFactory.Register([]() { return new Components::Team(); });
@@ -445,6 +414,8 @@ void GameWorld::RegisterSystems()
m_SystemFactory.Register([this]() { return new Systems::FollowSystem(this, EventBroker, ResourceManager); });
m_SystemFactory.Register([this]() { return new Systems::GarageSystem(this, EventBroker, ResourceManager); });
m_SystemFactory.Register([this]() { return new Systems::WallSystem(this, EventBroker, ResourceManager); });
+ m_SystemFactory.Register([this]() { return new Systems::FlagSystem(this, EventBroker, ResourceManager); });
+ m_SystemFactory.Register([this]() { return new Systems::GameStateSystem(this, EventBroker, ResourceManager); });
m_SystemFactory.Register([this]() { return new Systems::RenderSystem(this, EventBroker, ResourceManager); });
}
@@ -469,6 +440,8 @@ void GameWorld::AddSystems()
AddSystem();
AddSystem();
AddSystem();
+ AddSystem();
+ AddSystem();
AddSystem();
}
@@ -1096,6 +1069,8 @@ void GameWorld::CreateBase(glm::quat orientation, int teamID)
CreateWall(base, glm::vec3(273.f, 40.3f, 25.f), glm::quat(glm::vec3(0, glm::pi() / 2.f, 0)));
CreateGarage(base, glm::vec3(323.2f, 41.4f, -10.2f), glm::quat(glm::vec3(0, glm::pi() / 2.f, 0)), teamID);
+
+ CreateFlag(base, glm::vec3(291.f, 41.7412f, -36.2f), glm::quat(glm::vec3(0, glm::pi() / 2.f, 0)), teamID);
}
EntityID GameWorld::CreateGarage(EntityID parent, glm::vec3 Position, glm::quat orientation, int teamID)
@@ -1275,3 +1250,47 @@ EntityID GameWorld::CreateGarage(EntityID parent, glm::vec3 Position, glm::quat
return garage;
}
+
+void GameWorld::CreateFlag(EntityID parent, glm::vec3 position, glm::quat orientation, int TeamID)
+{
+
+ auto flag = CreateEntity(parent);
+ SetProperty(flag, "Name", "Flag");
+ auto transform = AddComponent(flag);
+ transform->Position = position;
+ transform->Orientation = orientation;
+ auto flagComponent = AddComponent(flag);
+ auto trigger = AddComponent(flag);
+ auto team = AddComponent(flag);
+ team->TeamID = TeamID;
+ {
+ auto fish = CreateEntity(flag);
+ auto transform = AddComponent(fish);
+ transform->Position = glm::vec3(-1.3f, 1.0, 0);
+ auto model = AddComponent(fish);
+ model->ModelFile = "Models/Flag/LeFish/Salmon.obj";
+ CommitEntity(fish);
+ }
+
+ {
+ auto rod = CreateEntity(flag);
+ auto transform = AddComponent(rod);
+ transform->Position = glm::vec3(-1.3f, 1.0, 0);
+ auto model = AddComponent(rod);
+ model->ModelFile = "Models/Flag/FishingRod/FishingRod.obj";
+ CommitEntity(rod);
+ }
+
+ {
+ auto shape = CreateEntity(flag);
+ auto transform = AddComponent(shape);
+ transform->Position = glm::vec3(-0.9f, 0.9f, 0);
+ auto box = AddComponent(shape);
+ box->Width = 1.1f;
+ box->Depth = 0.7f;
+ box->Height = 3.9f;
+ CommitEntity(shape);
+ }
+ CommitEntity(flag);
+
+}
diff --git a/src/GameWorld.h b/src/GameWorld.h
index 85539ca..fc1d2bf 100755
--- a/src/GameWorld.h
+++ b/src/GameWorld.h
@@ -25,6 +25,8 @@
#include "Systems/WallSystem.h"
#include "Systems/GarageSystem.h"
#include "Systems/JeepSteeringSystem.h"
+#include "Systems/FlagSystem.h"
+#include "Systems/GameStateSystem.h"
#include "Components/Camera.h"
#include "Components/DirectionalLight.h"
@@ -88,6 +90,7 @@ private:
EntityID CreateGarage(EntityID parent, glm::vec3 Position, glm::quat orientation, int teamID);
void CreateTerrain();
void CreateBase(glm::quat orientation, int playerID);
+ void CreateFlag(EntityID parent, glm::vec3 position, glm::quat orientation, int TeamID);
std::vector m_WallDebrisTemplates;
};
diff --git a/src/Systems/DamageSystem.cpp b/src/Systems/DamageSystem.cpp
index ffbce89..775b1bd 100644
--- a/src/Systems/DamageSystem.cpp
+++ b/src/Systems/DamageSystem.cpp
@@ -19,12 +19,14 @@ bool Systems::DamageSystem::OnDamage( const Events::Damage &event )
return false;
auto health = m_World->GetComponent(event.Entity);
health->Amount -= event.Amount;
- //if(health->Amount <= 0)
- //{
- // Events::OnDead e;
- // e.Entity = event.Entity;
- // EventBroker->Publish(e);
- //}
+ if(health->Amount <= 0)
+ {
+ Events::Dead e;
+ e.Entity = event.Entity;
+ EventBroker->Publish(e);
+ }
+
+
LOG_INFO("Damaged entity %i, Health left: %f", event.Entity, health->Amount);
return true;
}
\ No newline at end of file
diff --git a/src/Systems/DamageSystem.h b/src/Systems/DamageSystem.h
index 2b1a43a..0bf5272 100644
--- a/src/Systems/DamageSystem.h
+++ b/src/Systems/DamageSystem.h
@@ -6,7 +6,7 @@
#include "Components/Health.h"
#include "Components/DamageModel.h"
#include "Events/Damage.h"
-#include "Events/OnDead.h"
+#include "Events/Dead.h"
namespace Systems
{
diff --git a/src/Systems/FlagSystem.cpp b/src/Systems/FlagSystem.cpp
new file mode 100644
index 0000000..cb245f2
--- /dev/null
+++ b/src/Systems/FlagSystem.cpp
@@ -0,0 +1,63 @@
+#include "PrecompiledHeader.h"
+#include "FlagSystem.h"
+#include "World.h"
+void Systems::FlagSystem::RegisterComponents( ComponentFactory* cf )
+{
+ cf->Register([]() { return new Components::Flag(); });
+}
+
+void Systems::FlagSystem::Initialize()
+{
+ EVENT_SUBSCRIBE_MEMBER(m_EEnterTrigger, &Systems::FlagSystem::OnEnterTrigger);
+}
+
+void Systems::FlagSystem::Update( double dt )
+{
+
+}
+
+void Systems::FlagSystem::UpdateEntity( double dt, EntityID entity, EntityID parent )
+{
+
+}
+
+bool Systems::FlagSystem::OnEnterTrigger( const Events::EnterTrigger &event )
+{
+ auto JeepSteeringComponent = m_World->GetComponent(event.Entity);
+ if(!JeepSteeringComponent)
+ return false;
+
+ auto teamComponent = m_World->GetComponent(event.Trigger);
+ auto playerComponent = m_World->GetComponent(event.Entity);
+
+ if(!teamComponent || !playerComponent)
+ return false;
+ if (teamComponent->TeamID == playerComponent->ID)
+ return false;
+
+
+
+ auto flagComponent = m_World->GetComponent(event.Trigger);
+ if(!flagComponent)
+ return false;
+
+ PickUpFlag(event.Entity, event.Trigger);
+
+ return true;
+}
+void Systems::FlagSystem::PickUpFlag( EntityID entity, EntityID trigger )
+{
+ m_World->RemoveComponent(trigger);
+ m_World->SetEntityParent(trigger, entity);
+
+ auto triggerTransform = m_World->GetComponent(trigger);
+ triggerTransform->Position = glm::vec3(-1.5f, 0.1f, 2.f);
+
+ auto teamComponent = m_World->GetComponent(trigger);
+ auto playerComponent = m_World->GetComponent(entity);
+
+ Events::FlagPickup ePickup;
+ ePickup.Player = playerComponent->ID;
+ EventBroker->Publish(ePickup);
+}
+
diff --git a/src/Systems/FlagSystem.h b/src/Systems/FlagSystem.h
new file mode 100644
index 0000000..c5b720d
--- /dev/null
+++ b/src/Systems/FlagSystem.h
@@ -0,0 +1,44 @@
+#ifndef FlagSystem_h__
+#define FlagSystem_h__
+
+
+#include "System.h"
+#include "Components/Flag.h"
+#include "Components/Player.h"
+#include "Components/Team.h"
+#include "Components/Trigger.h"
+#include "Components/Transform.h"
+#include "Components/JeepSteering.h"
+
+#include "Events/FlagCaptured.h"
+#include "Events/FlagDropped.h"
+#include "Events/FlagPickup.h"
+#include "Events/FlagReturned.h"
+
+
+#include "Events/EnterTrigger.h"
+
+namespace Systems
+{
+ class FlagSystem : public System
+ {
+ public:
+
+ FlagSystem(World* world, std::shared_ptr<::EventBroker> eventBroker, std::shared_ptr<::ResourceManager> resourceManager)
+ : System(world, eventBroker, resourceManager) { }
+
+
+ void Initialize() override;
+ void RegisterComponents(ComponentFactory* cf) override;
+ void Update(double dt) override;
+ void UpdateEntity(double dt, EntityID entity, EntityID parent) override;
+
+ private:
+ EventRelay m_EEnterTrigger;
+ bool OnEnterTrigger(const Events::EnterTrigger &event);
+
+ void PickUpFlag(EntityID entity, EntityID trigger);
+ };
+
+}
+#endif // DamageSystem_h__
diff --git a/src/Systems/GameStateSystem.cpp b/src/Systems/GameStateSystem.cpp
index ca17bd3..d0ed866 100644
--- a/src/Systems/GameStateSystem.cpp
+++ b/src/Systems/GameStateSystem.cpp
@@ -12,7 +12,7 @@ bool Systems::GameStateSystem::OnFlagCaptured(const Events::FlagCaptured &event)
m_InGame = false;
Events::GameOver e;
- e.Winner = event.Player;
+ e.Player = event.Player;
EventBroker->Publish(e);
return true;
diff --git a/src/Systems/GarageSystem.cpp b/src/Systems/GarageSystem.cpp
index 9d805c5..cd10610 100644
--- a/src/Systems/GarageSystem.cpp
+++ b/src/Systems/GarageSystem.cpp
@@ -112,6 +112,27 @@ bool Systems::GarageSystem::OnCommand(const Events::InputCommand &event)
if (triggerTeamComponent->TeamID == entityPlayerComponent->ID)
{
+
+ auto components = m_World->GetComponentsOfType();
+
+ for (auto &component : *components)
+ {
+ auto teamComponent = m_World->GetComponent(component->Entity);
+ if(!teamComponent)
+ continue;
+
+ auto parent = m_World->GetEntityParent(component->Entity);
+ if(parent != entity)
+ continue;
+
+ if(teamComponent->TeamID != entityPlayerComponent->ID)
+ {
+ Events::FlagCaptured e;
+ e.Player = entityPlayerComponent->ID;
+ EventBroker->Publish(e);
+ }
+ }
+
EntityID garage = m_World->GetEntityParent(trigger);
auto garageComponent = m_World->GetComponent(garage);
ToggleGarage(garageComponent);
diff --git a/src/Systems/GarageSystem.h b/src/Systems/GarageSystem.h
index af0f4cf..30074d1 100644
--- a/src/Systems/GarageSystem.h
+++ b/src/Systems/GarageSystem.h
@@ -19,6 +19,8 @@
#include "Components/Move.h"
#include "Components/Rotate.h"
#include "Components/Team.h"
+#include "Components/Flag.h"
+#include "Events/FlagCaptured.h"
namespace Systems
{
diff --git a/src/Systems/JeepSteeringSystem.cpp b/src/Systems/JeepSteeringSystem.cpp
index 0121a43..a6325ca 100644
--- a/src/Systems/JeepSteeringSystem.cpp
+++ b/src/Systems/JeepSteeringSystem.cpp
@@ -102,7 +102,6 @@ EntityID Systems::JeepSteeringSystem::CreateJeep(int playerID)
{
auto jeep = m_World->CreateEntity();
auto transform = m_World->AddComponent(jeep);
- transform->Position = glm::vec3(0, 5, 0);
//transform->Orientation = glm::angleAxis(0.f, glm::vec3(0, 1, 0));
auto physics = m_World->AddComponent(jeep);
physics->Mass = 2000;
diff --git a/src/Systems/PhysicsSystem.cpp b/src/Systems/PhysicsSystem.cpp
index f7b34f0..eb691a4 100644
--- a/src/Systems/PhysicsSystem.cpp
+++ b/src/Systems/PhysicsSystem.cpp
@@ -39,6 +39,7 @@ void Systems::PhysicsSystem::Initialize()
EVENT_SUBSCRIBE_MEMBER(m_EApplyPointImpulse, &Systems::PhysicsSystem::OnApplyPointImpulse);
EVENT_SUBSCRIBE_MEMBER(m_EEnableCollisions, &Systems::PhysicsSystem::OnEnableCollisions);
EVENT_SUBSCRIBE_MEMBER(m_EDisableCollisions, &Systems::PhysicsSystem::OnDisableCollisions);
+ EVENT_SUBSCRIBE_MEMBER(m_EDead, &Systems::PhysicsSystem::OnDead);
hkMemorySystem::FrameInfo finfo(10000 * 1024); // Allocate 10MB of Physics solver buffer
hkMemoryRouter* memoryRouter = hkMemoryInitUtil::initDefault(hkMallocAllocator::m_defaultMallocAllocator, finfo);
@@ -797,27 +798,19 @@ void Systems::PhysicsSystem::OnComponentRemoved(EntityID entity, std::string typ
void Systems::PhysicsSystem::OnEntityRemoved( EntityID entity )
{
- if(m_RigidBodies.find(entity) != m_RigidBodies.end())
+ /*
+ else if(m_RigidBodies.find(entity) != m_RigidBodies.end())
{
- LOG_INFO("Removed rigid body of entity %i", entity);
+ LOG_INFO("Removed rigid body of entity %i abogfusdkifbhdzfsgiudfhghdfhgdhfögödhfgödhfödhfödfjhödgfdgföuhudgf", entity);
+
m_PhysicsWorld->markForWrite();
- m_RigidBodyEntities.erase(m_RigidBodies[entity]);
- if(m_ListShapes.find(entity) != m_ListShapes.end())
- {
- m_ListShapes[entity]->removeReference();
- m_ListShapes.erase(entity);
- }
-
m_PhysicsWorld->removeEntity(m_RigidBodies[entity]);
+ m_PhysicsWorld->unmarkForWrite();
+
m_RigidBodies.erase(entity);
- m_PhysicsWorld->unmarkForWrite();
- }
- if(m_Vehicles.find(entity) != m_Vehicles.end())
- {
- m_PhysicsWorld->markForWrite();
- m_Vehicles[entity]->removeFromWorld();
- m_PhysicsWorld->unmarkForWrite();
- }
+ m_RigidBodyEntities.erase(m_RigidBodies[entity]);
+
+ }*/
}
bool Systems::PhysicsSystem::OnEnableCollisions( const Events::EnableCollisions &e )
@@ -900,3 +893,23 @@ bool Systems::PhysicsSystem::OnJeepSteer( const Events::JeepSteer &event )
return true;
}
+
+bool Systems::PhysicsSystem::OnDead( const Events::Dead &e )
+{
+ if(m_Vehicles.find(e.Entity) != m_Vehicles.end())
+ {
+ EntityID camera = m_World->GetProperty(e.Entity, "Camera");
+ m_World->RemoveComponent(camera);
+ auto transform = m_World->GetComponent(e.Entity);
+ transform->Position = glm::vec3(0, -10000.f, 0);
+ m_RigidBodies[e.Entity]->setPosition(hkVector4(0, -10000, 0));
+
+ /*m_Vehicles.erase(e.Entity);
+ m_RigidBodyEntities.erase(m_RigidBodies[e.Entity]);
+ m_RigidBodies.erase(e.Entity);*/
+
+ m_World->RemoveComponent(e.Entity);
+
+ }
+ return true;
+}
diff --git a/src/Systems/PhysicsSystem.h b/src/Systems/PhysicsSystem.h
index cdfac8a..ccaba19 100644
--- a/src/Systems/PhysicsSystem.h
+++ b/src/Systems/PhysicsSystem.h
@@ -86,9 +86,10 @@
#include "Events/DisableCollisions.h"
#include "Components/Trigger.h"
#include "Components/Template.h"
-
+#include "Components/Camera.h"
#include "Events/EnterTrigger.h"
#include "Events/JeepSteer.h"
+#include "Events/Dead.h"
namespace Systems
{
@@ -192,6 +193,9 @@ private:
bool OnEnableCollisions(const Events::EnableCollisions &e);
EventRelay m_EDisableCollisions;
bool OnDisableCollisions(const Events::DisableCollisions &e);
+ EventRelay m_EDead;
+ bool OnDead(const Events::Dead &e);
+
void SetUpPhysicsState(EntityID entity, EntityID parent);
void TearDownPhysicsState(EntityID entity, EntityID parent);
diff --git a/src/Systems/TankSteeringSystem.cpp b/src/Systems/TankSteeringSystem.cpp
index c9c1022..dbd7779 100644
--- a/src/Systems/TankSteeringSystem.cpp
+++ b/src/Systems/TankSteeringSystem.cpp
@@ -461,7 +461,7 @@ EntityID Systems::TankSteeringSystem::CreateTank(int playerID)
auto tankSteering = m_World->AddComponent(tank);
m_World->AddComponent(tank);
auto health = m_World->AddComponent(tank);
- health->Amount = 100.f;
+ health->Amount = 1.f;
m_World->AddComponent(tank);
{
diff --git a/src/Systems/TriggerSystem.cpp b/src/Systems/TriggerSystem.cpp
index b087354..ad73c3e 100644
--- a/src/Systems/TriggerSystem.cpp
+++ b/src/Systems/TriggerSystem.cpp
@@ -53,19 +53,7 @@ bool Systems::TriggerSystem::OnEnterTrigger( const Events::EnterTrigger &event )
if (teamComponent->TeamID != playerComponent->ID)
return false;
- auto flagComponent1 = m_World->GetComponent(event.Trigger);
- auto flagComponent2 = m_World->GetComponent(event.Entity);
-
- //HACK: SIMON IS DISSING AMERICA
- if(flagComponent1)
- {
- Flag(event.Entity, event.Trigger);
- }
- else if (flagComponent2)
- {
- Flag(event.Trigger, event.Entity);
- }
-
+
auto triggerMoveComponent = m_World->GetComponent(event.Trigger);
if (triggerMoveComponent)
@@ -148,20 +136,6 @@ void Systems::TriggerSystem::Move(EntityID entity, bool queue, bool swap)
}
}
-
-void Systems::TriggerSystem::Flag( EntityID entity, EntityID phantomEntity )
-{
- auto tankSteering = m_World->GetComponent(entity);
- if (!tankSteering)
- return;
-
- m_World->RemoveComponent(phantomEntity);
- m_World->SetEntityParent(phantomEntity, entity);
- auto phantomTransform = m_World->GetComponent(phantomEntity);
- phantomTransform->Position = glm::vec3(-1.5f, 0.1f, 2.f);
-}
-
-
void Systems::TriggerSystem::Explosion( EntityID entity, EntityID phantomEntity )
{
/*auto transformComponent = m_World->GetComponent(entity);
diff --git a/src/Systems/TriggerSystem.h b/src/Systems/TriggerSystem.h
index 8891c9e..4aec308 100644
--- a/src/Systems/TriggerSystem.h
+++ b/src/Systems/TriggerSystem.h
@@ -48,7 +48,6 @@ namespace Systems
EventRelay m_ELeaveTrigger;
bool OnLeaveTrigger(const Events::LeaveTrigger &event);
private:
- void Flag(EntityID entity, EntityID phantomEntity);
void Explosion(EntityID entity, EntityID phantomEntity);
void Move(EntityID entity, bool queue, bool swap);
void Rotate(EntityID entity, bool queue, bool swap);
diff --git a/src/Systems/WallSystem.h b/src/Systems/WallSystem.h
index 6dbdea6..33decaa 100644
--- a/src/Systems/WallSystem.h
+++ b/src/Systems/WallSystem.h
@@ -4,7 +4,7 @@
#include "System.h"
#include "Systems/TransformSystem.h"
-#include "Events/OnDead.h"
+#include "Events/Dead.h"
#include "Events/Damage.h"
#include "Events/ApplyPointImpulse.h"
#include "Components/Model.h"
diff --git a/src/World.cpp b/src/World.cpp
index e5f9dfe..61f1f36 100755
--- a/src/World.cpp
+++ b/src/World.cpp
@@ -78,14 +78,16 @@ bool World::ValidEntity(EntityID entity)
void World::RemoveEntity(EntityID entity)
{
- m_EntitiesToRemove.insert(entity);
- for (auto pair : m_EntityParents)
+ auto it = m_EntityChildren.find(entity);
+ if (it != m_EntityChildren.end())
{
- if (pair.second == entity)
+ for (auto entity : it->second)
{
- m_EntitiesToRemove.insert(pair.first);
+ m_EntitiesToRemove.insert(entity);
}
}
+
+ m_EntitiesToRemove.insert(entity);
}
void World::ProcessEntityRemovals()
diff --git a/vs11/Returngeance/Returngeance.vcxproj b/vs11/Returngeance/Returngeance.vcxproj
index eddc0a6..f3f14ba 100755
--- a/vs11/Returngeance/Returngeance.vcxproj
+++ b/vs11/Returngeance/Returngeance.vcxproj
@@ -109,6 +109,7 @@
+
@@ -214,7 +215,7 @@
-
+
@@ -251,6 +252,7 @@
+
diff --git a/vs11/Returngeance/Returngeance.vcxproj.filters b/vs11/Returngeance/Returngeance.vcxproj.filters
index 71d2baf..ba3e8ee 100755
--- a/vs11/Returngeance/Returngeance.vcxproj.filters
+++ b/vs11/Returngeance/Returngeance.vcxproj.filters
@@ -95,6 +95,9 @@
Game\Systems
+
+ Game\Systems
+
@@ -585,7 +588,6 @@
Physics\Systems
-
GUI
@@ -629,6 +631,10 @@
Rendering\Components
+
+ Game\Systems
+
+