Fishy
This commit is contained in:
@@ -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);
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user