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);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
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();
|
||||
@@ -1172,6 +1202,7 @@ void GameWorld::RegisterComponents()
|
||||
m_ComponentFactory.Register<Components::Transform>([]() { return new Components::Transform(); });
|
||||
m_ComponentFactory.Register<Components::Template>([]() { return new Components::Template(); });
|
||||
m_ComponentFactory.Register<Components::Player>([]() { return new Components::Player(); });
|
||||
m_ComponentFactory.Register<Components::Flag>([]() { return new Components::Flag(); });
|
||||
}
|
||||
|
||||
void GameWorld::RegisterSystems()
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
#include "Components/Player.h"
|
||||
#include "Components/Health.h"
|
||||
#include "Components/Trigger.h"
|
||||
#include "Components/Flag.h"
|
||||
|
||||
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)
|
||||
{
|
||||
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();
|
||||
m_RigidBodyEntities.erase(m_RigidBodies[entity]);
|
||||
m_PhysicsWorld->removeEntity(m_RigidBodies[entity]);
|
||||
m_RigidBodies.erase(entity);
|
||||
m_PhysicsWorld->unmarkForWrite();
|
||||
}
|
||||
LOG_INFO("Removed Trigger of entity %i", entity);
|
||||
m_PhysicsWorld->markForWrite();
|
||||
m_RigidBodyEntities.erase(m_RigidBodies[entity]);
|
||||
m_PhysicsWorld->removeEntity(m_RigidBodies[entity]);
|
||||
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))
|
||||
{
|
||||
auto trigger = m_PhysicsSystem->m_World->GetComponent<Components::Trigger>(entity1);
|
||||
if(trigger->TriggerOnce)
|
||||
{
|
||||
m_PhysicsSystem->m_World->RemoveComponent<Components::Trigger>(entity1);
|
||||
}
|
||||
Events::EnterTrigger e;
|
||||
e.Entity1 = entity1;
|
||||
e.Entity2 = entity2;
|
||||
|
||||
@@ -45,7 +45,7 @@ void Systems::TriggerSystem::OnEntityRemoved( EntityID entity )
|
||||
|
||||
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);
|
||||
|
||||
if(explosionComponent1)
|
||||
@@ -55,14 +55,40 @@ bool Systems::TriggerSystem::OnEnterTrigger( const Events::EnterTrigger &event )
|
||||
else if (explosionComponent2)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
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 )
|
||||
{
|
||||
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 explosionComponent = m_World->GetComponent<Components::TriggerExplosion>(phantomEntity);
|
||||
|
||||
@@ -82,7 +108,7 @@ void Systems::TriggerSystem::Explosion( EntityID entity, EntityID phantomEntity
|
||||
EventBroker->Publish(e);
|
||||
|
||||
m_World->RemoveEntity(phantomEntity);
|
||||
}
|
||||
}*/
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
#include "System.h"
|
||||
#include "Components/Transform.h"
|
||||
#include "Components/TankSteering.h"
|
||||
#include "Events/SetVelocity.h"
|
||||
#include "Events/ApplyForce.h"
|
||||
#include "Events/ApplyPointImpulse.h"
|
||||
@@ -13,6 +14,7 @@
|
||||
#include "Components/Trigger.h"
|
||||
#include "Components/TriggerExplosion.h"
|
||||
#include "Events/EnterTrigger.h"
|
||||
#include "Components/Flag.h"
|
||||
#include <math.h>
|
||||
namespace Systems
|
||||
{
|
||||
@@ -35,6 +37,7 @@ namespace Systems
|
||||
EventRelay<TriggerSystem, Events::EnterTrigger> m_EEnterTrigger;
|
||||
bool OnEnterTrigger(const Events::EnterTrigger &event);
|
||||
private:
|
||||
void Flag(EntityID entity, EntityID phantomEntity);
|
||||
void Explosion(EntityID entity, EntityID phantomEntity);
|
||||
|
||||
};
|
||||
|
||||
@@ -204,3 +204,11 @@ std::list<EntityID> World::GetEntityChildren(EntityID entity)
|
||||
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 CloneEntity(EntityID entity, EntityID parent = 0);
|
||||
|
||||
void RemoveEntity(EntityID entity);
|
||||
|
||||
bool ValidEntity(EntityID entity);
|
||||
@@ -53,6 +52,8 @@ public:
|
||||
EntityID GetEntityBaseParent(EntityID entity);
|
||||
std::list<EntityID> GetEntityChildren(EntityID entity);
|
||||
|
||||
void SetEntityParent(EntityID entity, EntityID newParent);
|
||||
|
||||
template <class T>
|
||||
T GetProperty(EntityID entity, std::string property)
|
||||
{
|
||||
|
||||
@@ -133,6 +133,7 @@
|
||||
<ClInclude Include="..\..\src\Components\BoxShape.h" />
|
||||
<ClInclude Include="..\..\src\Components\Camera.h" />
|
||||
<ClInclude Include="..\..\src\Components\DirectionalLight.h" />
|
||||
<ClInclude Include="..\..\src\Components\Flag.h" />
|
||||
<ClInclude Include="..\..\src\Components\FrameTimer.h" />
|
||||
<ClInclude Include="..\..\src\Components\Timer.h" />
|
||||
<ClInclude Include="..\..\src\Components\TriggerExplosion.h" />
|
||||
|
||||
@@ -451,6 +451,9 @@
|
||||
<ClInclude Include="..\..\src\Events\Damage.h">
|
||||
<Filter>Gameplay\Events</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\Components\Flag.h">
|
||||
<Filter>Gameplay\Components</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\src\Shaders\Fragment2.glsl">
|
||||
|
||||
Reference in New Issue
Block a user