Fishy
This commit is contained in:
+1
-1
Submodule assets updated: 72b93d5750...bc811a1b39
@@ -0,0 +1,17 @@
|
|||||||
|
#ifndef Components_Flag_h__
|
||||||
|
#define Components_Flag_h__
|
||||||
|
|
||||||
|
#include "Component.h"
|
||||||
|
|
||||||
|
namespace Components
|
||||||
|
{
|
||||||
|
|
||||||
|
struct Flag : Component
|
||||||
|
{
|
||||||
|
|
||||||
|
virtual Flag* Clone() const override { return new Flag(*this); }
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // Components_TankShell_h__
|
||||||
+32
-1
@@ -114,7 +114,37 @@ void GameWorld::Initialize()
|
|||||||
CommitEntity(ground);
|
CommitEntity(ground);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
auto flag = CreateEntity();
|
||||||
|
auto transform = AddComponent<Components::Transform>(flag);
|
||||||
|
transform->Position = glm::vec3(0, -50, 100);
|
||||||
|
auto model = AddComponent<Components::Model>(flag);
|
||||||
|
model->ModelFile = "Models/Flag/FishingRod/FishingRod.obj";
|
||||||
|
{
|
||||||
|
auto fish = CreateEntity(flag);
|
||||||
|
auto transform = AddComponent<Components::Transform>(fish);
|
||||||
|
transform->Position = glm::vec3(-1.3f, 1.0, 0);
|
||||||
|
auto model = AddComponent<Components::Model>(fish);
|
||||||
|
model->ModelFile = "Models/Flag/LeFish/Salmon.obj";
|
||||||
|
CommitEntity(fish);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto trigger = AddComponent<Components::Trigger>(flag);
|
||||||
|
{
|
||||||
|
auto shape = CreateEntity(flag);
|
||||||
|
auto transform = AddComponent<Components::Transform>(shape);
|
||||||
|
transform->Position = glm::vec3(-0.9f, 0.9f, 0);
|
||||||
|
auto box = AddComponent<Components::BoxShape>(shape);
|
||||||
|
box->Width = 1.1f;
|
||||||
|
box->Depth = 0.7f;
|
||||||
|
box->Height = 3.9f;
|
||||||
|
CommitEntity(shape);
|
||||||
|
}
|
||||||
|
|
||||||
|
auto flagComponent = AddComponent<Components::Flag>(flag);
|
||||||
|
|
||||||
|
CommitEntity(flag);
|
||||||
|
}
|
||||||
|
|
||||||
/*{
|
/*{
|
||||||
auto jeep = CreateEntity();
|
auto jeep = CreateEntity();
|
||||||
@@ -1172,6 +1202,7 @@ void GameWorld::RegisterComponents()
|
|||||||
m_ComponentFactory.Register<Components::Transform>([]() { return new Components::Transform(); });
|
m_ComponentFactory.Register<Components::Transform>([]() { return new Components::Transform(); });
|
||||||
m_ComponentFactory.Register<Components::Template>([]() { return new Components::Template(); });
|
m_ComponentFactory.Register<Components::Template>([]() { return new Components::Template(); });
|
||||||
m_ComponentFactory.Register<Components::Player>([]() { return new Components::Player(); });
|
m_ComponentFactory.Register<Components::Player>([]() { return new Components::Player(); });
|
||||||
|
m_ComponentFactory.Register<Components::Flag>([]() { return new Components::Flag(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameWorld::RegisterSystems()
|
void GameWorld::RegisterSystems()
|
||||||
|
|||||||
@@ -46,6 +46,7 @@
|
|||||||
#include "Components/Player.h"
|
#include "Components/Player.h"
|
||||||
#include "Components/Health.h"
|
#include "Components/Health.h"
|
||||||
#include "Components/Trigger.h"
|
#include "Components/Trigger.h"
|
||||||
|
#include "Components/Flag.h"
|
||||||
|
|
||||||
class GameWorld : public World
|
class GameWorld : public World
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -758,18 +758,17 @@ bool Systems::PhysicsSystem::OnApplyPointImpulse( const Events::ApplyPointImpuls
|
|||||||
|
|
||||||
void Systems::PhysicsSystem::OnComponentRemoved(EntityID entity, std::string type, Component* component)
|
void Systems::PhysicsSystem::OnComponentRemoved(EntityID entity, std::string type, Component* component)
|
||||||
{
|
{
|
||||||
if(type == "Trigger")
|
|
||||||
|
if(m_RigidBodies.find(entity) != m_RigidBodies.end())
|
||||||
{
|
{
|
||||||
if(m_RigidBodies.find(entity) != m_RigidBodies.end())
|
LOG_INFO("Removed Trigger of entity %i", entity);
|
||||||
{
|
m_PhysicsWorld->markForWrite();
|
||||||
LOG_INFO("Removed Trigger of entity %i", entity);
|
m_RigidBodyEntities.erase(m_RigidBodies[entity]);
|
||||||
m_PhysicsWorld->markForWrite();
|
m_PhysicsWorld->removeEntity(m_RigidBodies[entity]);
|
||||||
m_RigidBodyEntities.erase(m_RigidBodies[entity]);
|
m_RigidBodies.erase(entity);
|
||||||
m_PhysicsWorld->removeEntity(m_RigidBodies[entity]);
|
m_PhysicsWorld->unmarkForWrite();
|
||||||
m_RigidBodies.erase(entity);
|
|
||||||
m_PhysicsWorld->unmarkForWrite();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -130,11 +130,6 @@ public:
|
|||||||
|
|
||||||
if(m_PhysicsSystem->m_World->ValidEntity(entity1) && m_PhysicsSystem->m_World->ValidEntity(entity2))
|
if(m_PhysicsSystem->m_World->ValidEntity(entity1) && m_PhysicsSystem->m_World->ValidEntity(entity2))
|
||||||
{
|
{
|
||||||
auto trigger = m_PhysicsSystem->m_World->GetComponent<Components::Trigger>(entity1);
|
|
||||||
if(trigger->TriggerOnce)
|
|
||||||
{
|
|
||||||
m_PhysicsSystem->m_World->RemoveComponent<Components::Trigger>(entity1);
|
|
||||||
}
|
|
||||||
Events::EnterTrigger e;
|
Events::EnterTrigger e;
|
||||||
e.Entity1 = entity1;
|
e.Entity1 = entity1;
|
||||||
e.Entity2 = entity2;
|
e.Entity2 = entity2;
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ void Systems::TriggerSystem::OnEntityRemoved( EntityID entity )
|
|||||||
|
|
||||||
bool Systems::TriggerSystem::OnEnterTrigger( const Events::EnterTrigger &event )
|
bool Systems::TriggerSystem::OnEnterTrigger( const Events::EnterTrigger &event )
|
||||||
{
|
{
|
||||||
auto explosionComponent1 = m_World->GetComponent<Components::TriggerExplosion>(event.Entity1);
|
/*auto explosionComponent1 = m_World->GetComponent<Components::TriggerExplosion>(event.Entity1);
|
||||||
auto explosionComponent2 = m_World->GetComponent<Components::TriggerExplosion>(event.Entity2);
|
auto explosionComponent2 = m_World->GetComponent<Components::TriggerExplosion>(event.Entity2);
|
||||||
|
|
||||||
if(explosionComponent1)
|
if(explosionComponent1)
|
||||||
@@ -55,14 +55,40 @@ bool Systems::TriggerSystem::OnEnterTrigger( const Events::EnterTrigger &event )
|
|||||||
else if (explosionComponent2)
|
else if (explosionComponent2)
|
||||||
{
|
{
|
||||||
Explosion(event.Entity1, event.Entity2);
|
Explosion(event.Entity1, event.Entity2);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
auto flagComponent1 = m_World->GetComponent<Components::Flag>(event.Entity1);
|
||||||
|
auto flagComponent2 = m_World->GetComponent<Components::Flag>(event.Entity2);
|
||||||
|
|
||||||
|
if(flagComponent1)
|
||||||
|
{
|
||||||
|
Flag(event.Entity2, event.Entity1);
|
||||||
|
}
|
||||||
|
else if (flagComponent2)
|
||||||
|
{
|
||||||
|
Flag(event.Entity1, event.Entity2);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Systems::TriggerSystem::Flag( EntityID entity, EntityID phantomEntity )
|
||||||
|
{
|
||||||
|
auto tankSteering = m_World->GetComponent<Components::TankSteering>(entity);
|
||||||
|
if (!tankSteering)
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_World->RemoveComponent<Components::Trigger>(phantomEntity);
|
||||||
|
m_World->SetEntityParent(phantomEntity, entity);
|
||||||
|
auto phantomTransform = m_World->GetComponent<Components::Transform>(phantomEntity);
|
||||||
|
phantomTransform->Position = glm::vec3(1.f, 0.1f, 2.f);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Systems::TriggerSystem::Explosion( EntityID entity, EntityID phantomEntity )
|
void Systems::TriggerSystem::Explosion( EntityID entity, EntityID phantomEntity )
|
||||||
{
|
{
|
||||||
auto transformComponent = m_World->GetComponent<Components::Transform>(entity);
|
/*auto transformComponent = m_World->GetComponent<Components::Transform>(entity);
|
||||||
auto PhantomTransformComponent = m_World->GetComponent<Components::Transform>(phantomEntity);
|
auto PhantomTransformComponent = m_World->GetComponent<Components::Transform>(phantomEntity);
|
||||||
auto explosionComponent = m_World->GetComponent<Components::TriggerExplosion>(phantomEntity);
|
auto explosionComponent = m_World->GetComponent<Components::TriggerExplosion>(phantomEntity);
|
||||||
|
|
||||||
@@ -82,7 +108,7 @@ void Systems::TriggerSystem::Explosion( EntityID entity, EntityID phantomEntity
|
|||||||
EventBroker->Publish(e);
|
EventBroker->Publish(e);
|
||||||
|
|
||||||
m_World->RemoveEntity(phantomEntity);
|
m_World->RemoveEntity(phantomEntity);
|
||||||
}
|
}*/
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#include "System.h"
|
#include "System.h"
|
||||||
#include "Components/Transform.h"
|
#include "Components/Transform.h"
|
||||||
|
#include "Components/TankSteering.h"
|
||||||
#include "Events/SetVelocity.h"
|
#include "Events/SetVelocity.h"
|
||||||
#include "Events/ApplyForce.h"
|
#include "Events/ApplyForce.h"
|
||||||
#include "Events/ApplyPointImpulse.h"
|
#include "Events/ApplyPointImpulse.h"
|
||||||
@@ -13,6 +14,7 @@
|
|||||||
#include "Components/Trigger.h"
|
#include "Components/Trigger.h"
|
||||||
#include "Components/TriggerExplosion.h"
|
#include "Components/TriggerExplosion.h"
|
||||||
#include "Events/EnterTrigger.h"
|
#include "Events/EnterTrigger.h"
|
||||||
|
#include "Components/Flag.h"
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
namespace Systems
|
namespace Systems
|
||||||
{
|
{
|
||||||
@@ -35,6 +37,7 @@ namespace Systems
|
|||||||
EventRelay<TriggerSystem, Events::EnterTrigger> m_EEnterTrigger;
|
EventRelay<TriggerSystem, Events::EnterTrigger> m_EEnterTrigger;
|
||||||
bool OnEnterTrigger(const Events::EnterTrigger &event);
|
bool OnEnterTrigger(const Events::EnterTrigger &event);
|
||||||
private:
|
private:
|
||||||
|
void Flag(EntityID entity, EntityID phantomEntity);
|
||||||
void Explosion(EntityID entity, EntityID phantomEntity);
|
void Explosion(EntityID entity, EntityID phantomEntity);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -204,3 +204,11 @@ std::list<EntityID> World::GetEntityChildren(EntityID entity)
|
|||||||
return it->second;
|
return it->second;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void World::SetEntityParent(EntityID entity, EntityID newParent)
|
||||||
|
{
|
||||||
|
EntityID currentParent = m_EntityParents[entity];
|
||||||
|
m_EntityChildren[currentParent].remove(entity);
|
||||||
|
m_EntityParents[entity] = newParent;
|
||||||
|
m_EntityChildren[newParent].push_back(entity);
|
||||||
|
}
|
||||||
|
|||||||
+2
-1
@@ -44,7 +44,6 @@ public:
|
|||||||
|
|
||||||
EntityID CreateEntity(EntityID parent = 0);
|
EntityID CreateEntity(EntityID parent = 0);
|
||||||
EntityID CloneEntity(EntityID entity, EntityID parent = 0);
|
EntityID CloneEntity(EntityID entity, EntityID parent = 0);
|
||||||
|
|
||||||
void RemoveEntity(EntityID entity);
|
void RemoveEntity(EntityID entity);
|
||||||
|
|
||||||
bool ValidEntity(EntityID entity);
|
bool ValidEntity(EntityID entity);
|
||||||
@@ -53,6 +52,8 @@ public:
|
|||||||
EntityID GetEntityBaseParent(EntityID entity);
|
EntityID GetEntityBaseParent(EntityID entity);
|
||||||
std::list<EntityID> GetEntityChildren(EntityID entity);
|
std::list<EntityID> GetEntityChildren(EntityID entity);
|
||||||
|
|
||||||
|
void SetEntityParent(EntityID entity, EntityID newParent);
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
T GetProperty(EntityID entity, std::string property)
|
T GetProperty(EntityID entity, std::string property)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -133,6 +133,7 @@
|
|||||||
<ClInclude Include="..\..\src\Components\BoxShape.h" />
|
<ClInclude Include="..\..\src\Components\BoxShape.h" />
|
||||||
<ClInclude Include="..\..\src\Components\Camera.h" />
|
<ClInclude Include="..\..\src\Components\Camera.h" />
|
||||||
<ClInclude Include="..\..\src\Components\DirectionalLight.h" />
|
<ClInclude Include="..\..\src\Components\DirectionalLight.h" />
|
||||||
|
<ClInclude Include="..\..\src\Components\Flag.h" />
|
||||||
<ClInclude Include="..\..\src\Components\FrameTimer.h" />
|
<ClInclude Include="..\..\src\Components\FrameTimer.h" />
|
||||||
<ClInclude Include="..\..\src\Components\Timer.h" />
|
<ClInclude Include="..\..\src\Components\Timer.h" />
|
||||||
<ClInclude Include="..\..\src\Components\TriggerExplosion.h" />
|
<ClInclude Include="..\..\src\Components\TriggerExplosion.h" />
|
||||||
|
|||||||
@@ -451,6 +451,9 @@
|
|||||||
<ClInclude Include="..\..\src\Events\Damage.h">
|
<ClInclude Include="..\..\src\Events\Damage.h">
|
||||||
<Filter>Gameplay\Events</Filter>
|
<Filter>Gameplay\Events</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\Components\Flag.h">
|
||||||
|
<Filter>Gameplay\Components</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\..\src\Shaders\Fragment2.glsl">
|
<None Include="..\..\src\Shaders\Fragment2.glsl">
|
||||||
|
|||||||
Reference in New Issue
Block a user