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;
}