Merge remote-tracking branch 'origin/deffered_rendering'
This commit is contained in:
@@ -18,12 +18,12 @@ bool Systems::DamageSystem::OnDamage( const Events::Damage &event )
|
||||
return false;
|
||||
auto health = m_World->GetComponent<Components::Health>(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::OnDead e;
|
||||
// e.Entity = event.Entity;
|
||||
// EventBroker->Publish(e);
|
||||
//}
|
||||
LOG_INFO("Damaged entity %i, Health left: %f", event.Entity, health->Amount);
|
||||
return true;
|
||||
}
|
||||
+16
-17
@@ -25,30 +25,29 @@ bool Systems::WallSystem::Damage( const Events::Damage &event )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
LOG_INFO("You are dead");
|
||||
auto transformComponent = m_World->GetComponent<Components::Transform>(event.Entity);
|
||||
LOG_INFO("Entity %i is dead", event.Entity);
|
||||
//auto transformComponent = m_World->GetComponent<Components::Transform>(event.Entity);
|
||||
Components::Transform transformComponent = m_World->GetSystem<Systems::TransformSystem>()->AbsoluteTransform(event.Entity);
|
||||
|
||||
for(auto d : wallComponent->Walldebris)
|
||||
{
|
||||
auto debris = m_World->CloneEntity(d);
|
||||
|
||||
auto transform = m_World->GetComponent<Components::Transform>(debris);
|
||||
transform->Position += transformComponent->Position;
|
||||
|
||||
// DO STUFF! :D
|
||||
float distance = glm::distance(transform->Position, transformComponent->Position);
|
||||
float radius = 5.f;
|
||||
float strength = (1.f - pow(distance / radius, 2)) * 500.f;
|
||||
glm::vec3 direction = glm::normalize(transformComponent->Position - transform->Position);
|
||||
|
||||
Events::ApplyPointImpulse e;
|
||||
e.Entity = debris;
|
||||
e.Impulse = direction * strength;
|
||||
e.Position = transformComponent->Position;
|
||||
EventBroker->Publish(e);
|
||||
transform->Orientation = transform->Orientation * transformComponent.Orientation;
|
||||
transform->Position = transform->Orientation * transform->Position + transformComponent.Position;
|
||||
|
||||
//DO STUFF! :D
|
||||
float distance = glm::distance(transform->Position, transformComponent.Position);
|
||||
float radius = 5.f;
|
||||
float strength = (1.f - pow(distance / radius, 2)) * 20.f;
|
||||
glm::vec3 direction = glm::normalize(transformComponent.Position - transform->Position);
|
||||
|
||||
Events::ApplyPointImpulse e;
|
||||
e.Entity = debris;
|
||||
e.Impulse = direction * strength;
|
||||
e.Position = transformComponent.Position;
|
||||
EventBroker->Publish(e);
|
||||
}
|
||||
|
||||
m_World->RemoveEntity(event.Entity);
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
|
||||
#include "System.h"
|
||||
#include "Systems/TransformSystem.h"
|
||||
#include "Events/OnDead.h"
|
||||
#include "Events/Damage.h"
|
||||
#include "Events/ApplyPointImpulse.h"
|
||||
|
||||
Reference in New Issue
Block a user