This commit is contained in:
ViktorLjung
2014-05-27 09:10:59 +02:00
parent c37df5c178
commit f775864ed2
12 changed files with 106 additions and 21 deletions
+9 -10
View File
@@ -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();
}
}
-5
View File
@@ -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;
+29 -3
View File
@@ -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);
}
}*/
}
+3
View File
@@ -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);
};