Direct damage and VulnerableToSplash flag on Health component
This commit is contained in:
@@ -0,0 +1,27 @@
|
|||||||
|
#ifndef Components_DamageModel_h__
|
||||||
|
#define Components_DamageModel_h__
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "Component.h"
|
||||||
|
|
||||||
|
namespace Components
|
||||||
|
{
|
||||||
|
|
||||||
|
struct DamageModel : Component
|
||||||
|
{
|
||||||
|
DamageModel()
|
||||||
|
: Color(glm::vec4(1.0f, 1.0f, 1.0f, 1.0f))
|
||||||
|
, ShadowCaster(true)
|
||||||
|
, Transparent(false)
|
||||||
|
{ }
|
||||||
|
std::string ModelFile;
|
||||||
|
glm::vec4 Color;
|
||||||
|
bool ShadowCaster;
|
||||||
|
bool Transparent;
|
||||||
|
|
||||||
|
virtual DamageModel* Clone() const override { return new DamageModel(*this); }
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif // !Components_DamageModel_h__
|
||||||
@@ -9,9 +9,12 @@ namespace Components
|
|||||||
struct Health : Component
|
struct Health : Component
|
||||||
{
|
{
|
||||||
Health()
|
Health()
|
||||||
: Amount(1.0f) { }
|
: Amount(1.0f)
|
||||||
|
, VulnerableToSplash(true)
|
||||||
|
{ }
|
||||||
|
|
||||||
float Amount;
|
float Amount;
|
||||||
|
bool VulnerableToSplash;
|
||||||
|
|
||||||
virtual Health* Clone() const override { return new Health(*this); }
|
virtual Health* Clone() const override { return new Health(*this); }
|
||||||
};
|
};
|
||||||
|
|||||||
+10
-7
@@ -650,9 +650,12 @@ EntityID GameWorld::CreateWall(EntityID parent, glm::vec3 pos, glm::quat orienta
|
|||||||
|
|
||||||
auto model = AddComponent<Components::Model>(wall);
|
auto model = AddComponent<Components::Model>(wall);
|
||||||
model->ModelFile = "Models/Wall/WallWhole/Wall.obj";
|
model->ModelFile = "Models/Wall/WallWhole/Wall.obj";
|
||||||
|
auto damageModel = AddComponent<Components::DamageModel>(wall);
|
||||||
|
damageModel->ModelFile = "Models/Wall/WallWhole/WallCracks.obj";
|
||||||
|
|
||||||
auto health = AddComponent<Components::Health>(wall);
|
auto health = AddComponent<Components::Health>(wall);
|
||||||
health->Amount = 50.f;
|
health->Amount = 50.f;
|
||||||
|
health->VulnerableToSplash = false;
|
||||||
|
|
||||||
auto shape = CreateEntity(wall);
|
auto shape = CreateEntity(wall);
|
||||||
auto shapetransform = AddComponent<Components::Transform>(shape);
|
auto shapetransform = AddComponent<Components::Transform>(shape);
|
||||||
@@ -752,7 +755,7 @@ void GameWorld::CreateTerrain()
|
|||||||
}
|
}
|
||||||
|
|
||||||
CreateBase(glm::quat(), 1);
|
CreateBase(glm::quat(), 1);
|
||||||
//CreateBase(glm::quat(glm::vec3(0, glm::pi<float>(), 0)), 2);
|
CreateBase(glm::quat(glm::vec3(0, glm::pi<float>(), 0)), 2);
|
||||||
|
|
||||||
{
|
{
|
||||||
auto tree = CreateEntity();
|
auto tree = CreateEntity();
|
||||||
@@ -1085,12 +1088,12 @@ void GameWorld::CreateBase(glm::quat orientation, int teamID)
|
|||||||
|
|
||||||
CreateGate(base, glm::vec3(273.f, 40.185f, 0.06f), glm::quat(glm::vec3(0, glm::pi<float>() / 2.f, 0)), teamID);
|
CreateGate(base, glm::vec3(273.f, 40.185f, 0.06f), glm::quat(glm::vec3(0, glm::pi<float>() / 2.f, 0)), teamID);
|
||||||
CreateWall(base, glm::vec3(273.f, 40.3f, -55.f), glm::quat(glm::vec3(0, glm::pi<float>() / 2.f, 0)));
|
CreateWall(base, glm::vec3(273.f, 40.3f, -55.f), glm::quat(glm::vec3(0, glm::pi<float>() / 2.f, 0)));
|
||||||
//CreateWall(base, glm::vec3(273.f, 40.3f, -45.f), glm::quat(glm::vec3(0, glm::pi<float>() / 2.f, 0)));
|
CreateWall(base, glm::vec3(273.f, 40.3f, -45.f), glm::quat(glm::vec3(0, glm::pi<float>() / 2.f, 0)));
|
||||||
//CreateWall(base, glm::vec3(273.f, 40.3f, -35.f), glm::quat(glm::vec3(0, glm::pi<float>() / 2.f, 0)));
|
CreateWall(base, glm::vec3(273.f, 40.3f, -35.f), glm::quat(glm::vec3(0, glm::pi<float>() / 2.f, 0)));
|
||||||
//CreateWall(base, glm::vec3(273.f, 40.3f, -25.f), glm::quat(glm::vec3(0, glm::pi<float>() / 2.f, 0)));
|
CreateWall(base, glm::vec3(273.f, 40.3f, -25.f), glm::quat(glm::vec3(0, glm::pi<float>() / 2.f, 0)));
|
||||||
//CreateWall(base, glm::vec3(273.f, 40.3f, -15.f), glm::quat(glm::vec3(0, glm::pi<float>() / 2.f, 0)));
|
CreateWall(base, glm::vec3(273.f, 40.3f, -15.f), glm::quat(glm::vec3(0, glm::pi<float>() / 2.f, 0)));
|
||||||
//CreateWall(base, glm::vec3(273.f, 40.3f, 15.f), glm::quat(glm::vec3(0, glm::pi<float>() / 2.f, 0)));
|
CreateWall(base, glm::vec3(273.f, 40.3f, 15.f), glm::quat(glm::vec3(0, glm::pi<float>() / 2.f, 0)));
|
||||||
//CreateWall(base, glm::vec3(273.f, 40.3f, 25.f), glm::quat(glm::vec3(0, glm::pi<float>() / 2.f, 0)));
|
CreateWall(base, glm::vec3(273.f, 40.3f, 25.f), glm::quat(glm::vec3(0, glm::pi<float>() / 2.f, 0)));
|
||||||
|
|
||||||
CreateGarage(base, glm::vec3(323.2f, 41.4f, -10.2f), glm::quat(glm::vec3(0, glm::pi<float>() / 2.f, 0)), teamID);
|
CreateGarage(base, glm::vec3(323.2f, 41.4f, -10.2f), glm::quat(glm::vec3(0, glm::pi<float>() / 2.f, 0)), teamID);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
#include "Components/DirectionalLight.h"
|
#include "Components/DirectionalLight.h"
|
||||||
#include "Components/Input.h"
|
#include "Components/Input.h"
|
||||||
#include "Components/Model.h"
|
#include "Components/Model.h"
|
||||||
|
#include "Components/DamageModel.h"
|
||||||
#include "Components/ParticleEmitter.h"
|
#include "Components/ParticleEmitter.h"
|
||||||
#include "Components/Particle.h"
|
#include "Components/Particle.h"
|
||||||
#include "Components/PointLight.h"
|
#include "Components/PointLight.h"
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
void Systems::DamageSystem::RegisterComponents( ComponentFactory* cf )
|
void Systems::DamageSystem::RegisterComponents( ComponentFactory* cf )
|
||||||
{
|
{
|
||||||
cf->Register<Components::Health>([]() { return new Components::Health(); });
|
cf->Register<Components::Health>([]() { return new Components::Health(); });
|
||||||
|
cf->Register<Components::DamageModel>([]() { return new Components::DamageModel(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void Systems::DamageSystem::Initialize()
|
void Systems::DamageSystem::Initialize()
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#include "System.h"
|
#include "System.h"
|
||||||
#include "Components/Health.h"
|
#include "Components/Health.h"
|
||||||
|
#include "Components/DamageModel.h"
|
||||||
#include "Events/Damage.h"
|
#include "Events/Damage.h"
|
||||||
#include "Events/OnDead.h"
|
#include "Events/OnDead.h"
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,6 @@ void Systems::TankSteeringSystem::UpdateEntity(double dt, EntityID entity, Entit
|
|||||||
eSteering.Handbrake = inputController->Handbrake;
|
eSteering.Handbrake = inputController->Handbrake;
|
||||||
EventBroker->Publish(eSteering);
|
EventBroker->Publish(eSteering);
|
||||||
|
|
||||||
|
|
||||||
auto towerSteeringComponent = m_World->GetComponent<Components::TowerSteering>(tankSteeringComponent->Turret);
|
auto towerSteeringComponent = m_World->GetComponent<Components::TowerSteering>(tankSteeringComponent->Turret);
|
||||||
auto barrelSteeringComponent = m_World->GetComponent<Components::BarrelSteering>(tankSteeringComponent->Barrel);
|
auto barrelSteeringComponent = m_World->GetComponent<Components::BarrelSteering>(tankSteeringComponent->Barrel);
|
||||||
|
|
||||||
@@ -65,7 +64,7 @@ void Systems::TankSteeringSystem::UpdateEntity(double dt, EntityID entity, Entit
|
|||||||
{
|
{
|
||||||
auto tankTransform = m_World->GetComponent<Components::Transform>(entity);
|
auto tankTransform = m_World->GetComponent<Components::Transform>(entity);
|
||||||
auto transformComponent = m_World->GetComponent<Components::Transform>(tankSteeringComponent->Barrel);
|
auto transformComponent = m_World->GetComponent<Components::Transform>(tankSteeringComponent->Barrel);
|
||||||
auto absoluteTransform = m_World->GetSystem<Systems::TransformSystem>()->AbsoluteTransform(tankSteeringComponent->Barrel);
|
|
||||||
glm::quat orientation = glm::angleAxis(barrelSteeringComponent->TurnSpeed * inputController->BarrelDirection * (float)dt, barrelSteeringComponent->Axis);
|
glm::quat orientation = glm::angleAxis(barrelSteeringComponent->TurnSpeed * inputController->BarrelDirection * (float)dt, barrelSteeringComponent->Axis);
|
||||||
transformComponent->Orientation *= orientation;
|
transformComponent->Orientation *= orientation;
|
||||||
|
|
||||||
@@ -81,7 +80,7 @@ void Systems::TankSteeringSystem::UpdateEntity(double dt, EntityID entity, Entit
|
|||||||
transformComponent->Orientation = glm::quat(angles);
|
transformComponent->Orientation = glm::quat(angles);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto absoluteTransform = m_World->GetSystem<Systems::TransformSystem>()->AbsoluteTransform(tankSteeringComponent->Barrel);
|
||||||
|
|
||||||
if(inputController->Shoot && m_TimeSinceLastShot[tankSteeringComponent->Barrel] > 0.5)
|
if(inputController->Shoot && m_TimeSinceLastShot[tankSteeringComponent->Barrel] > 0.5)
|
||||||
{
|
{
|
||||||
@@ -138,7 +137,7 @@ void Systems::TankSteeringSystem::UpdateEntity(double dt, EntityID entity, Entit
|
|||||||
auto clonePhysicsComponent = m_World->GetComponent<Components::Physics>(clone);
|
auto clonePhysicsComponent = m_World->GetComponent<Components::Physics>(clone);
|
||||||
//1,670m/s
|
//1,670m/s
|
||||||
//25kg
|
//25kg
|
||||||
Events::ApplyPointImpulse ePointImpulse ;
|
Events::ApplyPointImpulse ePointImpulse;
|
||||||
ePointImpulse.Entity = entity;
|
ePointImpulse.Entity = entity;
|
||||||
ePointImpulse.Position = absoluteTransform.Position;
|
ePointImpulse.Position = absoluteTransform.Position;
|
||||||
ePointImpulse.Impulse = glm::normalize(absoluteTransform.Orientation * glm::vec3(0, 0, 1)) * clonePhysicsComponent->Mass * 6.f * 1670.f;
|
ePointImpulse.Impulse = glm::normalize(absoluteTransform.Orientation * glm::vec3(0, 0, 1)) * clonePhysicsComponent->Mass * 6.f * 1670.f;
|
||||||
@@ -194,39 +193,39 @@ bool Systems::TankSteeringSystem::OnCollision(const Events::Collision &e)
|
|||||||
//auto otherTransform = m_World->GetComponent<Components::Transform>(otherEntity);
|
//auto otherTransform = m_World->GetComponent<Components::Transform>(otherEntity);
|
||||||
|
|
||||||
{
|
{
|
||||||
// Events::CreateExplosion e;
|
|
||||||
// e.LifeTime = 3;
|
|
||||||
// e.ParticleScale.push_back(8);
|
|
||||||
// e.ParticlesToSpawn = 20;
|
|
||||||
// e.Position = shellTransform->Position;
|
|
||||||
// e.RelativeUpOrientation = glm::angleAxis(glm::pi<float>() / 2, glm::vec3(1,0,0));
|
|
||||||
// e.Speed = 3;
|
|
||||||
// e.SpreadAngle = glm::pi<float>();
|
|
||||||
// e.spritePath = "Textures/Sprites/Smoke1.png";
|
|
||||||
// e.Color = glm::vec4(0.6,0.6,0.6,1);
|
|
||||||
// EventBroker->Publish(e);
|
|
||||||
// e.LifeTime = 0.7;
|
|
||||||
// e.ParticleScale.push_back(12);
|
|
||||||
// e.ParticlesToSpawn = 10;
|
|
||||||
// e.Position = shellTransform->Position;
|
|
||||||
// e.RelativeUpOrientation = glm::angleAxis(glm::pi<float>() / 2, glm::vec3(1,0,0));
|
|
||||||
// e.Speed = 17;
|
|
||||||
// e.SpreadAngle = glm::pi<float>();
|
|
||||||
// e.spritePath = "Textures/Sprites/Fire.png";
|
|
||||||
// EventBroker->Publish(e);
|
|
||||||
// e.LifeTime = 0.2;
|
|
||||||
// e.ParticleScale.push_back(1);
|
|
||||||
// e.ParticleScale.push_back(15);
|
|
||||||
// e.ParticlesToSpawn = 5;
|
|
||||||
// e.Position = shellTransform->Position;
|
|
||||||
// e.RelativeUpOrientation = glm::angleAxis(glm::pi<float>() / 2, glm::vec3(1,0,0));
|
|
||||||
// e.Speed = 6;
|
|
||||||
// e.SpreadAngle = glm::pi<float>();
|
|
||||||
// e.spritePath = "Textures/Sprites/Blast1.png";
|
|
||||||
// e.Color = glm::vec4(2, 2, 2, 0.2);
|
|
||||||
// EventBroker->Publish(e);
|
|
||||||
|
|
||||||
Events::CreateExplosion e;
|
Events::CreateExplosion e;
|
||||||
|
e.LifeTime = 3;
|
||||||
|
e.ParticleScale.push_back(8);
|
||||||
|
e.ParticlesToSpawn = 20;
|
||||||
|
e.Position = shellTransform->Position;
|
||||||
|
e.RelativeUpOrientation = glm::angleAxis(glm::pi<float>() / 2, glm::vec3(1, 0, 0));
|
||||||
|
e.Speed = 3;
|
||||||
|
e.SpreadAngle = glm::pi<float>();
|
||||||
|
e.spritePath = "Textures/Sprites/Smoke1.png";
|
||||||
|
e.Color = glm::vec4(0.6, 0.6, 0.6, 1);
|
||||||
|
EventBroker->Publish(e);
|
||||||
|
e.LifeTime = 0.7;
|
||||||
|
e.ParticleScale.push_back(12);
|
||||||
|
e.ParticlesToSpawn = 10;
|
||||||
|
e.Position = shellTransform->Position;
|
||||||
|
e.RelativeUpOrientation = glm::angleAxis(glm::pi<float>() / 2, glm::vec3(1, 0, 0));
|
||||||
|
e.Speed = 17;
|
||||||
|
e.SpreadAngle = glm::pi<float>();
|
||||||
|
e.spritePath = "Textures/Sprites/Fire.png";
|
||||||
|
EventBroker->Publish(e);
|
||||||
|
e.LifeTime = 0.2;
|
||||||
|
e.ParticleScale.push_back(1);
|
||||||
|
e.ParticleScale.push_back(15);
|
||||||
|
e.ParticlesToSpawn = 5;
|
||||||
|
e.Position = shellTransform->Position;
|
||||||
|
e.RelativeUpOrientation = glm::angleAxis(glm::pi<float>() / 2, glm::vec3(1, 0, 0));
|
||||||
|
e.Speed = 6;
|
||||||
|
e.SpreadAngle = glm::pi<float>();
|
||||||
|
e.spritePath = "Textures/Sprites/Blast1.png";
|
||||||
|
e.Color = glm::vec4(2, 2, 2, 0.2);
|
||||||
|
EventBroker->Publish(e);
|
||||||
|
|
||||||
|
/*Events::CreateExplosion e;
|
||||||
e.LifeTime = 1.5;
|
e.LifeTime = 1.5;
|
||||||
e.ParticleScale.push_back(1);
|
e.ParticleScale.push_back(1);
|
||||||
e.ParticleScale.push_back(6);
|
e.ParticleScale.push_back(6);
|
||||||
@@ -253,7 +252,7 @@ bool Systems::TankSteeringSystem::OnCollision(const Events::Collision &e)
|
|||||||
e.Speed = 12;
|
e.Speed = 12;
|
||||||
e.spritePath = "Textures/Sprites/Splash.png";
|
e.spritePath = "Textures/Sprites/Splash.png";
|
||||||
e.Color = glm::vec4(1.f,1.f,1.f,1);
|
e.Color = glm::vec4(1.f,1.f,1.f,1);
|
||||||
EventBroker->Publish(e);
|
EventBroker->Publish(e);*/
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
Events::PlaySFX e;
|
Events::PlaySFX e;
|
||||||
@@ -263,27 +262,41 @@ bool Systems::TankSteeringSystem::OnCollision(const Events::Collision &e)
|
|||||||
EventBroker->Publish(e);
|
EventBroker->Publish(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Direct damage
|
||||||
|
auto health = m_World->GetComponent<Components::Health>(otherEntity);
|
||||||
|
if (health)
|
||||||
|
{
|
||||||
|
Events::Damage d;
|
||||||
|
d.Entity = otherEntity;
|
||||||
|
d.Amount = shellComponent->Damage;
|
||||||
|
EventBroker->Publish(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Splash damage
|
||||||
for (auto &physComponent : *physicsComponents)
|
for (auto &physComponent : *physicsComponents)
|
||||||
{
|
{
|
||||||
EntityID physicsEntity = std::dynamic_pointer_cast<Components::Physics>(physComponent)->Entity;
|
EntityID physicsEntity = physComponent->Entity;
|
||||||
auto physEntityTransform = m_World->GetComponent<Components::Transform>(physicsEntity);
|
// No splash damage to the direct hit target
|
||||||
|
if (physicsEntity == otherEntity)
|
||||||
|
continue;
|
||||||
|
auto physEntityTransform = m_World->GetSystem<Systems::TransformSystem>()->AbsoluteTransform(physicsEntity);
|
||||||
|
|
||||||
float distance = glm::distance(physEntityTransform->Position, shellTransform->Position);
|
float distance = glm::distance(physEntityTransform.Position, shellTransform->Position);
|
||||||
if (distance <= shellComponent->ExplosionRadius)
|
if (distance <= shellComponent->ExplosionRadius)
|
||||||
{
|
{
|
||||||
// DO STUFF! :D
|
// DO STUFF! :D
|
||||||
float radius = shellComponent->ExplosionRadius;
|
float radius = shellComponent->ExplosionRadius;
|
||||||
float strength = (1.f - pow(distance / radius, 2)) * shellComponent->ExplosionStrength;
|
float strength = (1.f - pow(distance / radius, 2)) * shellComponent->ExplosionStrength;
|
||||||
glm::vec3 direction = glm::normalize(physEntityTransform->Position - shellTransform->Position);
|
glm::vec3 direction = glm::normalize(physEntityTransform.Position - shellTransform->Position);
|
||||||
|
|
||||||
Events::ApplyPointImpulse e;
|
Events::ApplyPointImpulse e;
|
||||||
e.Entity = physicsEntity;
|
e.Entity = physicsEntity;
|
||||||
e.Impulse = direction * strength;
|
e.Impulse = direction * strength;
|
||||||
e.Position = physEntityTransform->Position;
|
e.Position = physEntityTransform.Position;
|
||||||
EventBroker->Publish(e);
|
EventBroker->Publish(e);
|
||||||
|
|
||||||
auto health = m_World->GetComponent<Components::Health>(physicsEntity);
|
auto health = m_World->GetComponent<Components::Health>(physicsEntity);
|
||||||
if(health)
|
if (health && health->VulnerableToSplash)
|
||||||
{
|
{
|
||||||
Events::Damage d;
|
Events::Damage d;
|
||||||
d.Entity = physicsEntity;
|
d.Entity = physicsEntity;
|
||||||
@@ -513,8 +526,8 @@ EntityID Systems::TankSteeringSystem::CreateTank(int playerID)
|
|||||||
modelComponent->ModelFile = "Models/Placeholders/rocket/Rocket.obj";
|
modelComponent->ModelFile = "Models/Placeholders/rocket/Rocket.obj";
|
||||||
auto tankShellComponent = m_World->AddComponent<Components::TankShell>(shot);
|
auto tankShellComponent = m_World->AddComponent<Components::TankShell>(shot);
|
||||||
tankShellComponent->Damage = 20.f;
|
tankShellComponent->Damage = 20.f;
|
||||||
tankShellComponent->ExplosionRadius = 30.f;
|
tankShellComponent->ExplosionRadius = 20.f;
|
||||||
tankShellComponent->ExplosionStrength = 300000.f;
|
tankShellComponent->ExplosionStrength = 140.f;
|
||||||
{
|
{
|
||||||
auto shape = m_World->CreateEntity(shot);
|
auto shape = m_World->CreateEntity(shot);
|
||||||
auto transform = m_World->AddComponent<Components::Transform>(shape);
|
auto transform = m_World->AddComponent<Components::Transform>(shape);
|
||||||
|
|||||||
@@ -20,6 +20,18 @@ bool Systems::WallSystem::Damage( const Events::Damage &event )
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
LOG_INFO("WallSystem::Damage");
|
LOG_INFO("WallSystem::Damage");
|
||||||
|
|
||||||
|
// Change to damage model
|
||||||
|
auto modelComponent = m_World->GetComponent<Components::Model>(event.Entity);
|
||||||
|
auto damageModel = m_World->GetComponent<Components::DamageModel>(event.Entity);
|
||||||
|
if (modelComponent)
|
||||||
|
{
|
||||||
|
modelComponent->ModelFile = damageModel->ModelFile;
|
||||||
|
modelComponent->Color = damageModel->Color;
|
||||||
|
modelComponent->ShadowCaster = damageModel->ShadowCaster;
|
||||||
|
modelComponent->Transparent = damageModel->Transparent;
|
||||||
|
}
|
||||||
|
|
||||||
auto wallhealthcomponent = m_World->GetComponent<Components::Health>(event.Entity);
|
auto wallhealthcomponent = m_World->GetComponent<Components::Health>(event.Entity);
|
||||||
if(wallhealthcomponent->Amount > 0)
|
if(wallhealthcomponent->Amount > 0)
|
||||||
{
|
{
|
||||||
@@ -29,6 +41,7 @@ bool Systems::WallSystem::Damage( const Events::Damage &event )
|
|||||||
//auto transformComponent = m_World->GetComponent<Components::Transform>(event.Entity);
|
//auto transformComponent = m_World->GetComponent<Components::Transform>(event.Entity);
|
||||||
Components::Transform transformComponent = m_World->GetSystem<Systems::TransformSystem>()->AbsoluteTransform(event.Entity);
|
Components::Transform transformComponent = m_World->GetSystem<Systems::TransformSystem>()->AbsoluteTransform(event.Entity);
|
||||||
|
|
||||||
|
// Spawn debris
|
||||||
for(auto d : wallComponent->Walldebris)
|
for(auto d : wallComponent->Walldebris)
|
||||||
{
|
{
|
||||||
auto debris = m_World->CloneEntity(d);
|
auto debris = m_World->CloneEntity(d);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include "Events/Damage.h"
|
#include "Events/Damage.h"
|
||||||
#include "Events/ApplyPointImpulse.h"
|
#include "Events/ApplyPointImpulse.h"
|
||||||
#include "Components/Model.h"
|
#include "Components/Model.h"
|
||||||
|
#include "Components/DamageModel.h"
|
||||||
#include "Components/Wall.h"
|
#include "Components/Wall.h"
|
||||||
#include "Components/Transform.h"
|
#include "Components/Transform.h"
|
||||||
#include "Components/Physics.h"
|
#include "Components/Physics.h"
|
||||||
|
|||||||
@@ -139,6 +139,7 @@
|
|||||||
<ClInclude Include="..\..\src\Components\BlendMap.h" />
|
<ClInclude Include="..\..\src\Components\BlendMap.h" />
|
||||||
<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\DamageModel.h" />
|
||||||
<ClInclude Include="..\..\src\Components\DirectionalLight.h" />
|
<ClInclude Include="..\..\src\Components\DirectionalLight.h" />
|
||||||
<ClInclude Include="..\..\src\Components\Flag.h" />
|
<ClInclude Include="..\..\src\Components\Flag.h" />
|
||||||
<ClInclude Include="..\..\src\Components\Follow.h" />
|
<ClInclude Include="..\..\src\Components\Follow.h" />
|
||||||
|
|||||||
@@ -74,7 +74,6 @@
|
|||||||
<ClCompile Include="..\..\src\Systems\DamageSystem.cpp">
|
<ClCompile Include="..\..\src\Systems\DamageSystem.cpp">
|
||||||
<Filter>Game\Systems</Filter>
|
<Filter>Game\Systems</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\src\Systems\WheelPairSystem.cpp" />
|
|
||||||
<ClCompile Include="..\..\src\Systems\FollowSystem.cpp">
|
<ClCompile Include="..\..\src\Systems\FollowSystem.cpp">
|
||||||
<Filter>Game\Systems</Filter>
|
<Filter>Game\Systems</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -84,11 +83,18 @@
|
|||||||
<ClCompile Include="..\..\src\Sound.cpp">
|
<ClCompile Include="..\..\src\Sound.cpp">
|
||||||
<Filter>Audio</Filter>
|
<Filter>Audio</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\src\Systems\WallSystem.cpp" />
|
|
||||||
<ClCompile Include="..\..\src\Systems\GameStateSystem.cpp" />
|
|
||||||
<ClCompile Include="..\..\src\Systems\JeepSteeringSystem.cpp">
|
<ClCompile Include="..\..\src\Systems\JeepSteeringSystem.cpp">
|
||||||
<Filter>Physics\Systems</Filter>
|
<Filter>Physics\Systems</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\Systems\GameStateSystem.cpp">
|
||||||
|
<Filter>Game\Systems</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\Systems\WheelPairSystem.cpp">
|
||||||
|
<Filter>Physics\Systems</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\Systems\WallSystem.cpp">
|
||||||
|
<Filter>Game\Systems</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Filter Include="Util">
|
<Filter Include="Util">
|
||||||
@@ -573,10 +579,6 @@
|
|||||||
<ClInclude Include="..\..\src\Components\SpawnPoint.h">
|
<ClInclude Include="..\..\src\Components\SpawnPoint.h">
|
||||||
<Filter>Game\Components</Filter>
|
<Filter>Game\Components</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\src\Components\JeepSteering.h" />
|
|
||||||
<ClInclude Include="..\..\src\Events\JeepSteer.h" />
|
|
||||||
<ClInclude Include="..\..\src\Events\OnDead.h" />
|
|
||||||
<ClInclude Include="..\..\src\Systems\WallSystem.h" />
|
|
||||||
<ClInclude Include="..\..\src\Components\Team.h">
|
<ClInclude Include="..\..\src\Components\Team.h">
|
||||||
<Filter>Game\Components</Filter>
|
<Filter>Game\Components</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
@@ -612,6 +614,21 @@
|
|||||||
<ClInclude Include="..\..\src\Events\GameStart.h">
|
<ClInclude Include="..\..\src\Events\GameStart.h">
|
||||||
<Filter>Game\Events</Filter>
|
<Filter>Game\Events</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\Events\OnDead.h">
|
||||||
|
<Filter>Game\Events</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\Events\JeepSteer.h">
|
||||||
|
<Filter>Physics\Events</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\Components\JeepSteering.h">
|
||||||
|
<Filter>Physics\Components</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\Systems\WallSystem.h">
|
||||||
|
<Filter>Game\Systems</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\src\Components\DamageModel.h">
|
||||||
|
<Filter>Rendering\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