Merge pull request #222 from teamfisk/DeathAnimation
Death effect re-added
This commit is contained in:
@@ -10,8 +10,7 @@ PlayerDeathSystem::PlayerDeathSystem(SystemParams params)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PlayerDeathSystem::Update(double dt)
|
void PlayerDeathSystem::Update(double dt)
|
||||||
{
|
{ }
|
||||||
}
|
|
||||||
|
|
||||||
bool PlayerDeathSystem::OnPlayerDeath(Events::PlayerDeath& e)
|
bool PlayerDeathSystem::OnPlayerDeath(Events::PlayerDeath& e)
|
||||||
{
|
{
|
||||||
@@ -33,31 +32,35 @@ void PlayerDeathSystem::createDeathEffect(EntityWrapper player)
|
|||||||
auto entityFile = ResourceManager::Load<EntityFile>("Schema/Entities/PlayerDeathExplosionWithCamera.xml");
|
auto entityFile = ResourceManager::Load<EntityFile>("Schema/Entities/PlayerDeathExplosionWithCamera.xml");
|
||||||
EntityWrapper deathEffectEW = entityFile->MergeInto(m_World);
|
EntityWrapper deathEffectEW = entityFile->MergeInto(m_World);
|
||||||
|
|
||||||
//components that we need from player
|
|
||||||
auto playerModel = player.FirstChildByName("PlayerModel");
|
auto playerModel = player.FirstChildByName("PlayerModel");
|
||||||
if (!playerModel.HasComponent("Model") || !playerModel.HasComponent("Animation")) {
|
if (!playerModel.Valid()) {
|
||||||
if (player == LocalPlayer) {
|
if (player == LocalPlayer) {
|
||||||
setSpectatorCamera();
|
setSpectatorCamera();
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
auto playerEntityModel = playerModel["Model"];
|
if (!playerModel.HasComponent("Model")) {
|
||||||
auto playerEntityAnimation = playerModel["Animation"];
|
return;
|
||||||
|
}
|
||||||
//copy the data from player to explosioneffectmodel
|
EntityWrapper deathEffect = playerModel.Clone();
|
||||||
playerEntityModel.Copy(deathEffectEW["Model"]);
|
for (auto& cAnim : deathEffect.ChildrenWithComponent("Animation")) {
|
||||||
playerEntityAnimation.Copy(deathEffectEW["Animation"]);
|
cAnim["Animation"]["Play"] = false;
|
||||||
|
}
|
||||||
//copy the models position,orientation
|
deathEffect.AttachComponent("ExplosionEffect");
|
||||||
deathEffectEW["Transform"]["Position"] = (glm::vec3)player["Transform"]["Position"];
|
deathEffectEW["ExplosionEffect"].Copy(deathEffect["ExplosionEffect"]);
|
||||||
deathEffectEW["Transform"]["Orientation"] = (glm::vec3)player["Transform"]["Orientation"];
|
deathEffect.AttachComponent("Lifetime");
|
||||||
//effect,camera is relative to playersPosition
|
deathEffectEW["Lifetime"].Copy(deathEffect["Lifetime"]);
|
||||||
//deathEffectEW["ExplosionEffect"]["ExplosionOrigin"] = glm::vec3(0, 0, 0);
|
deathEffect["Transform"]["Position"] = (glm::vec3)player["Transform"]["Position"];
|
||||||
|
deathEffect["Transform"]["Orientation"] = (glm::vec3)player["Transform"]["Orientation"];
|
||||||
|
for (auto& cModel : deathEffect.ChildrenWithComponent("Model")) {
|
||||||
|
EntityWrapper e(m_World, cModel.ID);
|
||||||
|
e.AttachComponent("ExplosionEffect");
|
||||||
|
deathEffectEW["ExplosionEffect"].Copy(e["ExplosionEffect"]);
|
||||||
|
}
|
||||||
|
EntityWrapper cam = deathEffectEW.FirstChildByName("Camera").Clone(deathEffect);
|
||||||
//camera (with lifetime) behind the player
|
//camera (with lifetime) behind the player
|
||||||
if (player == LocalPlayer) {
|
if (player == LocalPlayer) {
|
||||||
m_LocalPlayerDeathEffect = deathEffectEW;
|
m_LocalPlayerDeathEffect = deathEffect;
|
||||||
auto cam = deathEffectEW.FirstChildByName("Camera");
|
|
||||||
Events::SetCamera eSetCamera;
|
Events::SetCamera eSetCamera;
|
||||||
eSetCamera.CameraEntity = cam;
|
eSetCamera.CameraEntity = cam;
|
||||||
m_EventBroker->Publish(eSetCamera);
|
m_EventBroker->Publish(eSetCamera);
|
||||||
|
|||||||
Reference in New Issue
Block a user