From 3fda25b604d3feb1c75787633531cff5157dbac0 Mon Sep 17 00:00:00 2001 From: sippeangelo Date: Mon, 7 Mar 2016 19:38:49 +0100 Subject: [PATCH] Working first person animations for AssaultWeapon and DefenderWeapon and reload effect for AssaultWeapon --- assets | 2 +- include/Game/Systems/Weapon/WeaponBehaviour.h | 45 +-- resources/Schema/Components/Animation.xml | 2 +- .../Entities/BlendTreeAssaultWeapon.xml | 207 +++++++++-- .../Entities/BlendTreeDefenderWeapon.xml | 159 +++++++++ resources/Schema/Entities/MovementTest.xml | 4 +- .../Schema/Entities/PlayerAssaultBlue.xml | 331 ++++-------------- .../Schema/Entities/ReloadEffectView.xml | 14 +- .../Schema/Entities/WeaponAssaultBlueView.xml | 175 +++++++-- .../Entities/WeaponAssaultBlueWorld.xml | 2 +- .../WeaponAssaultReloadEffectView.xml | 54 +++ .../Entities/WeaponDefenderBlueView.xml | 252 ++++++++++--- .../Systems/Weapon/AssaultWeaponBehaviour.cpp | 36 +- .../Weapon/DefenderWeaponBehaviour.cpp | 78 +++-- .../Systems/Weapon/SidearmWeaponBehaviour.cpp | 2 +- 15 files changed, 915 insertions(+), 448 deletions(-) create mode 100644 resources/Schema/Entities/BlendTreeDefenderWeapon.xml create mode 100644 resources/Schema/Entities/WeaponAssaultReloadEffectView.xml diff --git a/assets b/assets index 6451a3f5..0f9208a3 160000 --- a/assets +++ b/assets @@ -1 +1 @@ -Subproject commit 6451a3f5a5a86944a8457b533a2f4518b2191d2b +Subproject commit 0f9208a305b204cc9a7a9d6accfb084bc40e8095 diff --git a/include/Game/Systems/Weapon/WeaponBehaviour.h b/include/Game/Systems/Weapon/WeaponBehaviour.h index e2d5980b..a21ed6d5 100644 --- a/include/Game/Systems/Weapon/WeaponBehaviour.h +++ b/include/Game/Systems/Weapon/WeaponBehaviour.h @@ -32,20 +32,19 @@ public: virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& cWeapon, double dt) override { - EntityWrapper firstPersonWeapon = entity.FirstChildByName("Hands").FirstChildByName("AssaultWeapon"); - EntityWrapper thirdPersonWeapon = entity.FirstChildByName("PlayerModel").FirstChildByName("AssaultWeapon"); - if (IsClient && (firstPersonWeapon.Valid() || thirdPersonWeapon.Valid())) { - if (m_ActiveWeapons.count(entity) == 0) { + /* EntityWrapper firstPersonWeapon = entity.FirstChildByName("Hands").FirstChildByName("AssaultWeapon"); + EntityWrapper thirdPersonWeapon = entity.FirstChildByName("PlayerModel").FirstChildByName("AssaultWeapon"); + if (IsClient && (firstPersonWeapon.Valid() || thirdPersonWeapon.Valid())) { + if (m_ActiveWeapons.count(entity) == 0) { + WeaponInfo& wi = m_ActiveWeapons[entity]; + wi.Player = entity; + wi.WeaponEntity = entity; + wi.FirstPersonEntity = firstPersonWeapon; + wi.ThirdPersonEntity = thirdPersonWeapon; - WeaponInfo& wi = m_ActiveWeapons[entity]; - wi.Player = entity; - wi.WeaponEntity = entity; - wi.FirstPersonEntity = firstPersonWeapon; - wi.ThirdPersonEntity = thirdPersonWeapon; - - OnEquip(cWeapon, wi); - } - } + OnEquip(cWeapon, wi); + } + }*/ auto weapon = getActiveWeapon(entity); if (!weapon) { @@ -89,7 +88,7 @@ protected: // Returns wi.FirstPersonEntity or wi.ThirdPersonEntity depending on // if the player is in first person mode or not. - EntityWrapper getRelevantWeaponModelEntity(WeaponInfo& wi) + EntityWrapper getRelevantWeaponEntity(WeaponInfo& wi) { if (isPlayerInFirstPerson(wi.Player)) { return wi.FirstPersonEntity; @@ -137,7 +136,7 @@ protected: void playAnimationAndReturn(EntityWrapper weaponModelEntity, const std::string& subTreeName, const std::string& animationNodeName) { - EntityWrapper root = weaponModelEntity.FirstParentWithComponent("Model"); + EntityWrapper root = weaponModelEntity; if (!root.Valid()) { return; } @@ -254,9 +253,9 @@ private: void selectWeapon(ComponentWrapper cWeapon, EntityWrapper player) { - if (!IsServer) { - return; - } + //if (!IsServer) { + // return; + //} // Don't reselect weapon if it's already active if (getActiveWeapon(player)) { @@ -287,13 +286,15 @@ private: // Spawn the weapon(s) EntityWrapper firstPersonWeapon; EntityWrapper thirdPersonWeapon; - //if (IsClient) { + if (IsClient) { if (firstPersonAttachment.Valid()) { firstPersonWeapon = SpawnerSystem::Spawn(firstPersonAttachment, firstPersonAttachment); } - //} - if (thirdPersonAttachment.Valid()) { - thirdPersonWeapon = SpawnerSystem::Spawn(thirdPersonAttachment, thirdPersonAttachment); + } + if (IsServer) { + if (thirdPersonAttachment.Valid()) { + thirdPersonWeapon = SpawnerSystem::Spawn(thirdPersonAttachment, thirdPersonAttachment); + } } WeaponInfo& wi = m_ActiveWeapons[player]; diff --git a/resources/Schema/Components/Animation.xml b/resources/Schema/Components/Animation.xml index 05de9f9f..8e7fd69b 100644 --- a/resources/Schema/Components/Animation.xml +++ b/resources/Schema/Components/Animation.xml @@ -4,7 +4,7 @@ false false - 0 + 1 true false \ No newline at end of file diff --git a/resources/Schema/Entities/BlendTreeAssaultWeapon.xml b/resources/Schema/Entities/BlendTreeAssaultWeapon.xml index a68175a2..2bdaa0bb 100644 --- a/resources/Schema/Entities/BlendTreeAssaultWeapon.xml +++ b/resources/Schema/Entities/BlendTreeAssaultWeapon.xml @@ -1,46 +1,102 @@ - + - - Idle - WeaponAction - 0 - true - + + MovementBlend + FinalBlend + + + Models/Characters/Assault/FirstPersonAssaultBlue.mesh + - + - Fire - Reload - 1 + BlendTreeAssaultWeapon + BlendTreeSecondaryWeapon + 0 + true - + + + + Fire + Reload + 0 + true + + + + + + + + ReloadSwitchF + 0.5 + false + + + + + + + + + ShootRifleF + 1 + false + + + + + + + + + + + + + + + + + + + Idle + Run + 0 + true + + + + + - ShootShotgunF + RunF 1 true - false + true - + - ReloadSwitchF - + IdleF 1 true + true @@ -48,17 +104,116 @@ - + - - IdleF - - 1 - true - - + + R_Arm_Weapon_Joint + + + Models/Weapons/Blue/AssaultWeaponBlue.mesh + + + + + - + + + + + Schema/Entities/RayBlue.xml + + + + + + + + + + + + Schema/Entities/WeaponAssaultReloadEffectView.xml + + + + + + + + + + + R_Ammo_Joint + + true + + + + + + + + + + + + Textures/Core/UnitHexagon.png + + + + + + + + + + + + + + + + + + + 32 + Fonts/DroidSans.ttf,64 + + + + PlayerAssault + AssaultWeapon + MagazineAmmo + + + + + + + + + + + 320 + Fonts/DroidSans.ttf,64 + + + + PlayerAssault + AssaultWeapon + Ammo + + + + + + + + + + + diff --git a/resources/Schema/Entities/BlendTreeDefenderWeapon.xml b/resources/Schema/Entities/BlendTreeDefenderWeapon.xml new file mode 100644 index 00000000..3f22d57f --- /dev/null +++ b/resources/Schema/Entities/BlendTreeDefenderWeapon.xml @@ -0,0 +1,159 @@ + + + + + + MovementBlend + FinalBlend + + + Models/Characters/Defender/FirstPersonDefenderBlue.mesh + + + + + + + + + BlendTreeDefenderWeapon + BlendTreeSecondaryWeapon + 0 + true + + + + + + + + ActionBlend + Shield + 0 + true + + + + + + + + ActivateDeactiveShieldF + + 1 + false + + + + + + + + + Idle + ActionBlend2 + 0 + true + + + + + + + + IdleF + + + + + + + + + Fire + Reload + 0 + + + + + + + + ShootShotgunF + + 1 + false + + + + + + + + + ShotgunReloadTwoF + + 1 + false + + + + + + + + + + + + + + + + + + + + + + + Idle + Run + 0 + true + + + + + + + + RunF + + 1 + true + true + + + + + + + + + IdleF + + 1 + true + true + + + + + + + + + + diff --git a/resources/Schema/Entities/MovementTest.xml b/resources/Schema/Entities/MovementTest.xml index 50f77401..47284d51 100644 --- a/resources/Schema/Entities/MovementTest.xml +++ b/resources/Schema/Entities/MovementTest.xml @@ -2,7 +2,9 @@ - + + + diff --git a/resources/Schema/Entities/PlayerAssaultBlue.xml b/resources/Schema/Entities/PlayerAssaultBlue.xml index 7773235b..8bceb701 100644 --- a/resources/Schema/Entities/PlayerAssaultBlue.xml +++ b/resources/Schema/Entities/PlayerAssaultBlue.xml @@ -16,6 +16,11 @@ + + + + + @@ -493,250 +498,34 @@ - + - - MovementBlend - FinalBlend - - - Models/Characters/Assault/FirstPersonAssaultBlue.mesh - - - R_Arm_Weapon_Joint - AssaultWeapon Schema/Entities/WeaponAssaultBlueView.xml - - - - - - - - - - Models/Weapons/Blue/AssaultWeaponBlue.mesh - - - - - - - - - - - - - - Schema/Entities/RayBlue.xml - - - - - - - - - - - - Schema/Entities/ReloadEffectView.xml - - - - - - - - - - - - - - - - - Textures/Core/UnitHexagon.png - - - - - - - - - - - - - - - - - - - 32 - Fonts/DroidSans.ttf,64 - - - - PlayerAssault - AssaultWeapon - MagazineAmmo - - - - - - - - - - - 320 - Fonts/DroidSans.ttf,64 - - - - PlayerAssault - AssaultWeapon - Ammo - - - - - - - - - - - - - - - - - - - - R_Arm_Weapon_Joint - - - SidearmWeapon - - - Schema/Entities/SidearmWeaponView.xml - - - - - + - + - - BlendTreeAssaultWeapon - BlendTreeSecondaryWeapon - 0 - true - + + DefenderWeapon + + + Schema/Entities/WeaponDefenderBlueView.xml + - - - - - Fire - Reload - 0 - true - - - - - - - - ShootRifleF - 1 - false - - - - - - - - - ReloadSwitchF - 1 - false - - - - - - - - - - - - - - - - - - - Idle - Run - 0 - true - - - - - - - - RunF - 1 - true - true - - - - - - - - - IdleF - 1 - true - true - - - - - - + @@ -769,8 +558,6 @@ Models/Characters/Assault/AssaultBlue.mesh - - true @@ -790,8 +577,8 @@ Schema/Entities/WeaponAssaultBlueWorld.xml - - + + @@ -811,8 +598,8 @@ Schema/Entities/SidearmWeaponWorld.xml - - + + @@ -832,7 +619,7 @@ AimSecWepA - + false true @@ -844,7 +631,7 @@ AimRifleA - + false true @@ -988,42 +775,6 @@ - - - - Left - Right - 0.033793529385008014 - - - - - - - - StrafeLeftF - - 1 - true - - - - - - - - - StrafeRightF - - 1 - true - - - - - - - @@ -1060,6 +811,42 @@ + + + + Left + Right + 0.033793529385008014 + + + + + + + + StrafeLeftF + + 1 + true + + + + + + + + + StrafeRightF + + 1 + true + + + + + + + @@ -1327,12 +1114,12 @@ - Insert name here + Fonts/DroidSans.ttf,100 - + diff --git a/resources/Schema/Entities/ReloadEffectView.xml b/resources/Schema/Entities/ReloadEffectView.xml index ca7e6e1a..8aa6b8ec 100644 --- a/resources/Schema/Entities/ReloadEffectView.xml +++ b/resources/Schema/Entities/ReloadEffectView.xml @@ -1,20 +1,20 @@ - + - 2 + 1 - true - - - true - + + + 1 + true Models/Weapons/Blue/AssaultWeaponBlue.mesh + true diff --git a/resources/Schema/Entities/WeaponAssaultBlueView.xml b/resources/Schema/Entities/WeaponAssaultBlueView.xml index 9b10618b..235a9480 100644 --- a/resources/Schema/Entities/WeaponAssaultBlueView.xml +++ b/resources/Schema/Entities/WeaponAssaultBlueView.xml @@ -1,44 +1,161 @@ - + + + MovementBlend + FinalBlend + - Models/Weapons/Blue/AssaultWeaponBlue.mesh + Models/Characters/Assault/FirstPersonAssaultBlue.mesh - + - - Schema/Entities/RayBlue.xml - - - - - - - - - - - - Schema/Entities/ReloadEffectView.xml - + + BlendTreeAssaultWeapon + BlendTreeSecondaryWeapon + 0 + true + - + + + + + Fire + Reload + 0 + true + + + + + + + + ReloadSwitchF + 0.5 + false + + + + + + + + + ShootRifleF + 1 + false + + + + + + + + + + + + + + - + + + Idle + Run + 0 + true + + + + + + + + IdleF + 1 + true + true + + + + + + + + + RunF + 1 + true + true + + + + + + + + + + + R_Arm_Weapon_Joint + + + Models/Weapons/Blue/AssaultWeaponBlue.mesh + - - + + - + + + + Schema/Entities/RayBlue.xml + + + + + + + + + + + + Schema/Entities/WeaponAssaultReloadEffectView.xml + + + + + + + + + + + R_Ammo_Joint + + true + + + + + + + + + Textures/Core/UnitHexagon.png @@ -52,7 +169,7 @@ - + @@ -65,7 +182,7 @@ - Player + AssaultWeapon MagazineAmmo @@ -83,7 +200,7 @@ - Player + AssaultWeapon Ammo @@ -98,12 +215,6 @@ - - - - - - diff --git a/resources/Schema/Entities/WeaponAssaultBlueWorld.xml b/resources/Schema/Entities/WeaponAssaultBlueWorld.xml index 9f33c8f2..cb1acae6 100644 --- a/resources/Schema/Entities/WeaponAssaultBlueWorld.xml +++ b/resources/Schema/Entities/WeaponAssaultBlueWorld.xml @@ -20,7 +20,7 @@ - + Schema/Entities/ReloadEffectWorld.xml diff --git a/resources/Schema/Entities/WeaponAssaultReloadEffectView.xml b/resources/Schema/Entities/WeaponAssaultReloadEffectView.xml new file mode 100644 index 00000000..fe33de28 --- /dev/null +++ b/resources/Schema/Entities/WeaponAssaultReloadEffectView.xml @@ -0,0 +1,54 @@ + + + + + + 2 + + + + + + + + + + + 1 + 1 + -1 + 1 + + true + + + Models/Weapons/Blue/AssaultWeaponBlue.mesh + true + + + + + + + + + 1 + + + + + 1 + + true + + + Models/Weapons/Blue/AssaultWeaponBlue.mesh + true + + + + + + + + diff --git a/resources/Schema/Entities/WeaponDefenderBlueView.xml b/resources/Schema/Entities/WeaponDefenderBlueView.xml index 24b18f68..493c7243 100644 --- a/resources/Schema/Entities/WeaponDefenderBlueView.xml +++ b/resources/Schema/Entities/WeaponDefenderBlueView.xml @@ -1,43 +1,209 @@ - + + + MovementBlend + FinalBlend + - Models/Weapons/Blue/DefenderWeaponBlue.mesh + Models/Characters/Defender/FirstPersonDefenderBlue.mesh - + - - Schema/Entities/RayBlue.xml - - - - - - - - - - - Schema/Entities/ReloadEffectView.xml - + + ActionBlend + Shield + 0 + true + - + + + + + ActivateDeactiveShieldF + + 1 + false + + + + + + + + + Fire + ReloadBlend + 0 + + + + + + + + ShootShotgunF + 1 + false + + + + + + + + + ReloadLoop + ReloadTransitionBlend + 1 + + + + + + + + ShotgunReloadTwoF + 1 + + + + + + + + + ReloadStart + ReloadEnd + 0 + + + + + + + + ShotgunReloadOneF + 1 + false + + + + + + + + + ShotgunReloadThreeF + 1 + false + + + + + + + + + + + + - + + + Idle + Run + 0 + true + + + + + + + + IdleF + 1 + true + true + + + + + + + + + RunF + 1 + true + true + + + + + + + + + + + R_Arm_Weapon_Joint + + + Models/Weapons/Blue/DefenderWeaponBlue.mesh + - - + + - + + + + Schema/Entities/RayBlue.xml + + + + + + + + + + + Schema/Entities/ReloadEffectView.xml + + + + + + + + + + + R_Ammo_Joint + true + + + + + + + + + Textures/Core/UnitHexagon.png @@ -51,38 +217,20 @@ - + - - - - 8 - Fonts/DroidSans.ttf,64 - - - - Player - DefenderWeapon - MagazineAmmo - - - - - - - - 64 + 38 Fonts/DroidSans.ttf,64 - Player + DefenderWeapon Ammo @@ -93,6 +241,24 @@ + + + + 5 + Fonts/DroidSans.ttf,64 + + + + + DefenderWeapon + MagazineAmmo + + + + + + + diff --git a/src/Game/Systems/Weapon/AssaultWeaponBehaviour.cpp b/src/Game/Systems/Weapon/AssaultWeaponBehaviour.cpp index fc5334c9..13c3d8a3 100644 --- a/src/Game/Systems/Weapon/AssaultWeaponBehaviour.cpp +++ b/src/Game/Systems/Weapon/AssaultWeaponBehaviour.cpp @@ -40,12 +40,16 @@ void AssaultWeaponBehaviour::UpdateWeapon(ComponentWrapper cWeapon, WeaponInfo& magAmmo = glm::min(magSize, ammo); isReloading = false; if (wi.FirstPersonEntity.Valid()) { - wi.FirstPersonEntity["Model"]["Visible"] = true; + wi.FirstPersonEntity.FirstChildByName("ViewModel")["Model"]["Visible"] = true; } if (wi.ThirdPersonEntity.Valid()) { wi.ThirdPersonEntity["Model"]["Visible"] = true; } } + double reloadTime = cWeapon["ReloadTime"]; + if (isReloading && reloadTimer <= reloadTime / 2) { + + } // Restore view angle if (IsClient) { @@ -122,18 +126,26 @@ void AssaultWeaponBehaviour::OnReload(ComponentWrapper cWeapon, WeaponInfo& wi) // Play animation playAnimationAndReturn(wi.FirstPersonEntity, "BlendTreeAssaultWeapon", "Reload"); - if (IsClient) { - // Spawn explosion effect - EntityWrapper reloadEffectSpawner = wi.FirstPersonEntity.FirstChildByName("FirstPersonReloadSpawner"); - if (reloadEffectSpawner.Valid()) { - SpawnerSystem::Spawn(reloadEffectSpawner, reloadEffectSpawner); + // Spawn explosion effect + if (wi.FirstPersonEntity.Valid()) { + if (IsClient) { + EntityWrapper reloadEffectSpawner = wi.FirstPersonEntity.FirstChildByName("ReloadSpawner"); + if (reloadEffectSpawner.Valid()) { + reloadEffectSpawner.DeleteChildren(); + SpawnerSystem::Spawn(reloadEffectSpawner, reloadEffectSpawner); + } } - if (wi.FirstPersonEntity.Valid()) { - wi.FirstPersonEntity["Model"]["Visible"] = false; - } - if (wi.ThirdPersonEntity.Valid()) { - wi.ThirdPersonEntity["Model"]["Visible"] = false; + wi.FirstPersonEntity.FirstChildByName("ViewModel")["Model"]["Visible"] = false; + } + if (wi.ThirdPersonEntity.Valid()) { + if (IsServer) { + EntityWrapper reloadEffectSpawner = wi.ThirdPersonEntity.FirstChildByName("ReloadSpawner"); + if (reloadEffectSpawner.Valid()) { + reloadEffectSpawner.DeleteChildren(); + SpawnerSystem::Spawn(reloadEffectSpawner, reloadEffectSpawner); + } } + wi.ThirdPersonEntity["Model"]["Visible"] = false; } // Sound @@ -190,7 +202,7 @@ void AssaultWeaponBehaviour::fireBullet(ComponentWrapper cWeapon, WeaponInfo& wi } // Get weapon model based on current person - EntityWrapper weaponModelEntity = getRelevantWeaponModelEntity(wi); + EntityWrapper weaponModelEntity = getRelevantWeaponEntity(wi); if (!weaponModelEntity.Valid()) { return; } diff --git a/src/Game/Systems/Weapon/DefenderWeaponBehaviour.cpp b/src/Game/Systems/Weapon/DefenderWeaponBehaviour.cpp index 2d6ab74b..c18f9397 100644 --- a/src/Game/Systems/Weapon/DefenderWeaponBehaviour.cpp +++ b/src/Game/Systems/Weapon/DefenderWeaponBehaviour.cpp @@ -36,7 +36,7 @@ void DefenderWeaponBehaviour::UpdateWeapon(ComponentWrapper cWeapon, WeaponInfo& m_EventBroker->Publish(e); } else { isReloading = false; - playAnimationAndReturn(wi.FirstPersonEntity, "FinalBlend", "Idle"); + playAnimationAndReturn(wi.FirstPersonEntity, "FinalBlend", "ReloadEnd"); } } @@ -99,7 +99,21 @@ void DefenderWeaponBehaviour::OnReload(ComponentWrapper cWeapon, WeaponInfo& wi) reloadTimer = reloadTime; // Play animation - playAnimationAndReturn(wi.FirstPersonEntity, "FinalBlend", "Reload"); + if (wi.FirstPersonEntity.Valid()) { + Events::AutoAnimationBlend eBlendStart; + eBlendStart.RootNode = wi.FirstPersonEntity; + eBlendStart.NodeName = "ReloadStart"; + eBlendStart.Restart = true; + eBlendStart.Start = true; + m_EventBroker->Publish(eBlendStart); + Events::AutoAnimationBlend eBlendLoop; + eBlendLoop.RootNode = wi.FirstPersonEntity; + eBlendLoop.NodeName = "ReloadLoop"; + eBlendLoop.Restart = true; + eBlendLoop.Start = true; + eBlendLoop.AnimationEntity = wi.FirstPersonEntity.FirstChildByName("ReloadStart"); + m_EventBroker->Publish(eBlendLoop); + } } void DefenderWeaponBehaviour::OnHolster(ComponentWrapper cWeapon, WeaponInfo& wi) @@ -114,42 +128,48 @@ void DefenderWeaponBehaviour::OnHolster(ComponentWrapper cWeapon, WeaponInfo& wi bool DefenderWeaponBehaviour::OnInputCommand(ComponentWrapper cWeapon, WeaponInfo& wi, const Events::InputCommand& e) { - if (e.Command == "SpecialAbility" && IsServer) { + if (e.Command == "SpecialAbility") { EntityWrapper attachment = wi.Player.FirstChildByName("ShieldAttachment"); if (attachment.Valid()) { if (e.Value > 0) { - SpawnerSystem::Spawn(attachment, attachment); + if (IsServer) { + SpawnerSystem::Spawn(attachment, attachment); + } - EntityWrapper root = wi.FirstPersonEntity.FirstParentWithComponent("Model"); - if (root.Valid()) { - EntityWrapper subTree = root.FirstChildByName("FinalBlend"); - if (subTree.Valid()) { - EntityWrapper animationNode = subTree.FirstChildByName("Shield"); - if (animationNode.Valid()) { - Events::AutoAnimationBlend eFireBlend; - eFireBlend.RootNode = root; - eFireBlend.NodeName = "Shield"; - eFireBlend.Restart = true; - eFireBlend.Start = true; - m_EventBroker->Publish(eFireBlend); + if (IsClient) { + EntityWrapper root = wi.FirstPersonEntity; + if (root.Valid()) { + EntityWrapper subTree = root.FirstChildByName("FinalBlend"); + if (subTree.Valid()) { + EntityWrapper animationNode = subTree.FirstChildByName("Shield"); + if (animationNode.Valid()) { + Events::AutoAnimationBlend eFireBlend; + eFireBlend.RootNode = root; + eFireBlend.NodeName = "Shield"; + eFireBlend.Restart = true; + eFireBlend.Start = true; + m_EventBroker->Publish(eFireBlend); + } } } } } else { attachment.DeleteChildren(); - EntityWrapper root = wi.FirstPersonEntity.FirstParentWithComponent("Model"); - if (root.Valid()) { - EntityWrapper subTree = root.FirstChildByName("FinalBlend"); - if (subTree.Valid()) { - EntityWrapper animationNode = subTree.FirstChildByName("ActionBlend"); - if (animationNode.Valid()) { - Events::AutoAnimationBlend eFireBlend; - eFireBlend.RootNode = root; - eFireBlend.NodeName = "ActionBlend"; - eFireBlend.Restart = true; - eFireBlend.Start = true; - m_EventBroker->Publish(eFireBlend); + if (IsClient) { + EntityWrapper root = wi.FirstPersonEntity; + if (root.Valid()) { + EntityWrapper subTree = root.FirstChildByName("FinalBlend"); + if (subTree.Valid()) { + EntityWrapper animationNode = subTree.FirstChildByName("ActionBlend"); + if (animationNode.Valid()) { + Events::AutoAnimationBlend eFireBlend; + eFireBlend.RootNode = root; + eFireBlend.NodeName = "ActionBlend"; + eFireBlend.Restart = true; + eFireBlend.Start = true; + m_EventBroker->Publish(eFireBlend); + } } } } @@ -232,7 +252,7 @@ void DefenderWeaponBehaviour::fireShell(ComponentWrapper cWeapon, WeaponInfo& wi } // Play animation - playAnimationAndReturn(wi.FirstPersonEntity, "BlendTreeDefenderWeapon", "Fire"); + playAnimationAndReturn(wi.FirstPersonEntity, "FinalBlend", "Fire"); // Sound Events::PlaySoundOnEntity e; diff --git a/src/Game/Systems/Weapon/SidearmWeaponBehaviour.cpp b/src/Game/Systems/Weapon/SidearmWeaponBehaviour.cpp index d32b7d7e..cba3d5e8 100644 --- a/src/Game/Systems/Weapon/SidearmWeaponBehaviour.cpp +++ b/src/Game/Systems/Weapon/SidearmWeaponBehaviour.cpp @@ -52,7 +52,7 @@ void SidearmWeaponBehaviour::fireBullet(ComponentWrapper cWeapon, WeaponInfo& wi cWeapon["FireCooldown"] = 60.0 / (double)cWeapon["RPM"]; // Get weapon model based on current person - EntityWrapper weaponModelEntity = getRelevantWeaponModelEntity(wi); + EntityWrapper weaponModelEntity = getRelevantWeaponEntity(wi); if (!weaponModelEntity.Valid()) { return; }