From e0a6b09d36e0da7b8a2e116d0d37dee633069155 Mon Sep 17 00:00:00 2001 From: viktorljung Date: Fri, 11 Mar 2016 19:16:34 +0100 Subject: [PATCH] Defender early alpha --- assets | 2 +- .../Systems/Weapon/DefenderWeaponBehaviour.h | 2 + resources/Schema/Entities/DefenderShield.xml | 19 +- resources/Schema/Entities/MovementTest.xml | 4 +- .../Schema/Entities/PlayerDefenderBlue.xml | 889 ++++++++++-------- .../Entities/SidearmWeaponBlueWorld.xml | 25 + .../Entities/WeaponDefenderBlueView.xml | 11 +- .../WeaponSidearmDefenderBlueView.xml | 195 ++++ .../Weapon/DefenderWeaponBehaviour.cpp | 106 ++- .../Systems/Weapon/SidearmWeaponBehaviour.cpp | 26 +- 10 files changed, 839 insertions(+), 440 deletions(-) create mode 100644 resources/Schema/Entities/SidearmWeaponBlueWorld.xml create mode 100644 resources/Schema/Entities/WeaponSidearmDefenderBlueView.xml diff --git a/assets b/assets index 298641b1..69ddae17 160000 --- a/assets +++ b/assets @@ -1 +1 @@ -Subproject commit 298641b1afe313ebde00d77a0c4d75e6c6a0533d +Subproject commit 69ddae179ac02d5c1582a8c6834451b3f5e4bbaf diff --git a/include/Game/Systems/Weapon/DefenderWeaponBehaviour.h b/include/Game/Systems/Weapon/DefenderWeaponBehaviour.h index a32d65f1..9244bb60 100644 --- a/include/Game/Systems/Weapon/DefenderWeaponBehaviour.h +++ b/include/Game/Systems/Weapon/DefenderWeaponBehaviour.h @@ -22,6 +22,8 @@ public: void OnReload(ComponentWrapper cWeapon, WeaponInfo& wi) override; void OnHolster(ComponentWrapper cWeapon, WeaponInfo& wi) override; bool OnInputCommand(ComponentWrapper cWeapon, WeaponInfo& wi, const Events::InputCommand& e) override; + void OnEquip(ComponentWrapper cWeapon, WeaponInfo& wi) override; + private: std::random_device m_RandomDevice; diff --git a/resources/Schema/Entities/DefenderShield.xml b/resources/Schema/Entities/DefenderShield.xml index 845f7d90..d2cca1da 100755 --- a/resources/Schema/Entities/DefenderShield.xml +++ b/resources/Schema/Entities/DefenderShield.xml @@ -2,9 +2,7 @@ - - - + @@ -32,8 +30,8 @@ - ActivateDeactiveShieldF - true + ActivateShieldU + false @@ -42,7 +40,8 @@ - ShieldFrontF + ShieldFrontU + true @@ -67,14 +66,15 @@ false false + - ActivateDeactiveShieldF - true + ActivateShieldU + false @@ -83,7 +83,8 @@ - ShieldFrontF + ShieldFrontU + false diff --git a/resources/Schema/Entities/MovementTest.xml b/resources/Schema/Entities/MovementTest.xml index 604aaca4..b4db78d9 100644 --- a/resources/Schema/Entities/MovementTest.xml +++ b/resources/Schema/Entities/MovementTest.xml @@ -103,7 +103,7 @@ - + @@ -116,7 +116,7 @@ - + diff --git a/resources/Schema/Entities/PlayerDefenderBlue.xml b/resources/Schema/Entities/PlayerDefenderBlue.xml index 8da1a67a..5fcc6c64 100644 --- a/resources/Schema/Entities/PlayerDefenderBlue.xml +++ b/resources/Schema/Entities/PlayerDefenderBlue.xml @@ -8,15 +8,14 @@ - + - 4 - 52 + 8 - + 150 150 @@ -24,41 +23,18 @@ - - true + 5 - - + - - - - false - Models/Core/UnitQuad.mesh - - Textures/Icons/Arrow.png - - - - - 50 - true - - - - - - - - @@ -67,7 +43,6 @@ - @@ -84,6 +59,37 @@ + + + + + + + + + Schema/Entities/WeaponDefenderBlueView.xml + + + + DefenderWeapon + + + + + + + + Schema/Entities/WeaponSidearmDefenderBlueView.xml + + + + SidearmWeapon + + + + + + @@ -115,156 +121,6 @@ - - - - - - - - - 1 - - - - - Models/Core/UnitQuad.mesh - - Textures/HealthHUD3.png - - - - - - - - - - - - - - - - - - - - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/White.png - - - - - - - - - - - - - - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/White.png - - - - - - - - - - - - - - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/White.png - - - - - - - - - - - - - - - - inf - - - - false - Models/Core/UnitQuad.mesh - - Textures\Icons\Abilities\SheildDots-01.png - - - - - - - - - - - 0.0 - Fonts/DroidSans.ttf,64 - - - - - - - - - - - - - - - - - - 1 - - - - 150/150 - Fonts/DroidSans.ttf,64 - - - - - - - - - - - - - @@ -276,6 +132,7 @@ + false Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon.png @@ -295,6 +152,7 @@ 2 + false Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon_Rotated.png @@ -312,6 +170,7 @@ + false Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon.png @@ -331,6 +190,7 @@ 3 + false Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon_Rotated.png @@ -348,6 +208,7 @@ + false Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon.png @@ -368,6 +229,7 @@ 4 + false Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon_Rotated.png @@ -385,6 +247,7 @@ + false Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon.png @@ -404,6 +267,7 @@ 1 + false Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon_Rotated.png @@ -421,6 +285,7 @@ + false Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon.png @@ -439,6 +304,7 @@ + false Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon_Rotated.png @@ -469,7 +335,6 @@ Fonts/DroidSans.ttf,64 - @@ -522,43 +387,152 @@ Models/Widgets/Arrows/Arrow5.mesh - - - + + - - - - - - - - + - - Schema/Entities/WeaponDefenderBlueView.xml - - - - DefenderWeapon - + + + + - - - - - - Schema/Entities/WeaponDefenderBlueView.xml - - - - DefenderWeapon - - - + + + + + 1 + + + + 150/150 + Fonts/DroidSans.ttf,64 + + + + + + + + + + + + + + + 1 + + + + + Models/Core/UnitQuad.mesh + + Textures/HealthHUD3.png + + + + + + + + + + + + + + + + + + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Icons/Boosts/Assault-01.png + + + + + + + + + + + + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Icons/Boosts/Defender-01.png + + + + + + + + + + + + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Icons/Boosts/Sniper-01.png + + + + + + + + + + + + + + + + + inf + + + + false + Models/Core/UnitQuad.mesh + + Textures\Icons\Abilities\SheildDots-01.png + + + + + + + + + + + @@ -595,47 +569,47 @@ - + + + R_Arm_Weapon_Joint + + + Schema/Entities/WeaponDefenderBlueWorld.xml + - + + + + DefenderWeapon + + + + - - - - - Deploy - Idle - 0 - - - Models/Characters/Defender/DefenderShield.mesh - - - - - - - - ActivateDeactiveShieldF - - - - - - - - - ShieldFrontF - - - - - - - - + + + + + + R_Arm_Weapon_Joint + + + Schema/Entities/SidearmWeaponBlueWorld.xml + + + + + + + SidearmWeapon + + + + + + @@ -659,116 +633,12 @@ - - - - DirectionBlend - Idle - 0 - - - - - - - - IdleF - - true - - - - - - - - - RunWalkBlend - StrafeLRBlend - 0 - - - - - - - - Walk - Run - 1 - - - - - - - - WalkF - - true - - - - - - - - - RunF - - 2 - true - - - - - - - - - - - Left - Right - - - - - - - - StrafeLeftF - - 2 - true - - - - - - - - - StrafeRightF - - 2 - true - - - - - - - - - - - DirectionBlend Idle + 1 @@ -778,6 +648,7 @@ Walk StrafeLRBlend + 0 @@ -787,6 +658,7 @@ Left Right + 0.033793529385008014 @@ -795,7 +667,7 @@ CrouchStrafeLeftF - + true @@ -806,7 +678,7 @@ CrouchStrafeRightF - + true @@ -819,7 +691,7 @@ CrouchWalkF - + true @@ -832,7 +704,113 @@ CrouchF - + + true + + + + + + + + + + + DirectionBlend + Idle + 1 + + + + + + + + RunWalkBlend + StrafeLRBlend + 2.4565650245976452e-16 + + + + + + + + Walk + Run + 1.2938206818383024e-24 + + + + + + + + WalkF + + true + + + + + + + + + RunF + + 2 + true + + + + + + + + + + + Left + Right + 0.033793529385008014 + + + + + + + + StrafeLeftF + + 2 + true + + + + + + + + + StrafeRightF + + 2 + true + + + + + + + + + + + + + IdleF + true @@ -856,60 +834,18 @@ - - - - R_Arm_Weapon_Joint - - - Schema/Entities/WeaponDefenderBlueWorld.xml - - - - - - - DefenderWeapon - - - - - - - - - - - R_Arm_Weapon_Joint - - - Schema/Entities/WeaponDefenderBlueWorld.xml - - - - - - - DefenderWeapon - - - - - - - - DefenderWeaponBlend + DefenderWeapon SidearmWeapon - 0 + 1 true - + Aim @@ -941,7 +877,7 @@ IdleAssaultRifleU - + true true @@ -953,7 +889,7 @@ IdleAssaultRifleU - + true true @@ -968,6 +904,7 @@ ShieldBlend ActionBlend + 1 @@ -977,7 +914,7 @@ Fire Reload - 1 + 0 @@ -986,6 +923,7 @@ ShootgunReloadU + 0.5 @@ -996,6 +934,7 @@ ShootRifleU + false @@ -1009,25 +948,29 @@ ActivateShield SheildFront + 1 - + - ShieldFrontU - true + ActivateShieldU + + 2 + false - + - ActivateShieldU - false + ShieldFrontU + + true @@ -1044,6 +987,101 @@ AimRifleA + true + + + + + + + + + + + Aim + WeaponBlend + + + + + + + + MovementBlend2 + ActionBlend + + + + + + + + Reload + Fire + + + + + + + + ReloadSwitchU + false + + + + + + + + + ShootSecWepU + false + + + + + + + + + + + Idle + Run + + + + + + + + IdleSecWepU + true + + + + + + + + + IdleSecWepU + true + + + + + + + + + + + + + AimSecWepA + 0.10000000149011612 false true @@ -1093,21 +1131,40 @@ - + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Icons/Arrow.png + + + + + 50 + true + + + + + + + + Schema/Entities/DefenderShield.xml - - - + diff --git a/resources/Schema/Entities/SidearmWeaponBlueWorld.xml b/resources/Schema/Entities/SidearmWeaponBlueWorld.xml new file mode 100644 index 00000000..d497e955 --- /dev/null +++ b/resources/Schema/Entities/SidearmWeaponBlueWorld.xml @@ -0,0 +1,25 @@ + + + + + + Models/Weapons/Blue/SecondaryWeaponBlue.mesh + + + + + + + + + Schema/Entities/RayBlue.xml + + + + + + + + + + diff --git a/resources/Schema/Entities/WeaponDefenderBlueView.xml b/resources/Schema/Entities/WeaponDefenderBlueView.xml index c22e7200..fac92111 100644 --- a/resources/Schema/Entities/WeaponDefenderBlueView.xml +++ b/resources/Schema/Entities/WeaponDefenderBlueView.xml @@ -27,7 +27,7 @@ - ActivateDeactivateShieldF + ActivateShieldF false @@ -156,7 +156,7 @@ - + @@ -190,16 +190,17 @@ - - + + - Textures/Core/UnitHexagon.png + Models/Core/UnitQuad.mesh + Textures/Core/UnitHexagon.png diff --git a/resources/Schema/Entities/WeaponSidearmDefenderBlueView.xml b/resources/Schema/Entities/WeaponSidearmDefenderBlueView.xml new file mode 100644 index 00000000..45f18c33 --- /dev/null +++ b/resources/Schema/Entities/WeaponSidearmDefenderBlueView.xml @@ -0,0 +1,195 @@ + + + + + + MovementBlend + ActionBlend + + + Models/Characters/Defender/FirstPersonDefenderBlue.mesh + + + + + + + + + Idle + Run + 1 + true + + + + + + + + IdleSecF + true + true + + + + + + + + + RunSecF + true + true + + + + + + + + + + + R_Arm_Weapon_Joint + + + Models/Weapons/Blue/SecondaryWeaponBlue.mesh + + + + + + + + + + + Schema/Entities/RayBlue.xml + + + + + + + + + + + Schema/Entities/ReloadEffectView.xml + + + + + + + + + + + R_Ammo_Joint + true + + + + + + + + + + + + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon.png + + + + + + + + + + + + + + + + + + 38 + Fonts/DroidSans.ttf,64 + + + + + Sidearm + Ammo + + + + + + + + + + + + 5 + Fonts/DroidSans.ttf,64 + + + + + Sidearm + MagazineAmmo + + + + + + + + + + + + + + + Fire + Reload + 0 + + + + + + + + ShootSecF + false + + + + + + + + + ReloadSwitchSecF + false + + + + + + + + + + diff --git a/src/Game/Systems/Weapon/DefenderWeaponBehaviour.cpp b/src/Game/Systems/Weapon/DefenderWeaponBehaviour.cpp index ca12ec91..cf611c44 100644 --- a/src/Game/Systems/Weapon/DefenderWeaponBehaviour.cpp +++ b/src/Game/Systems/Weapon/DefenderWeaponBehaviour.cpp @@ -37,6 +37,16 @@ void DefenderWeaponBehaviour::UpdateWeapon(ComponentWrapper cWeapon, WeaponInfo& } else { isReloading = false; playAnimationAndReturn(wi.FirstPersonEntity, "FinalBlend", "ReloadEnd"); + + if (wi.ThirdPersonPlayerModel.Valid()) { + Events::AutoAnimationBlend eFireIdle; + eFireIdle.Duration = 0.2; + eFireIdle.RootNode = wi.ThirdPersonPlayerModel; + eFireIdle.NodeName = "Fire"; + eFireIdle.Start = false; + m_EventBroker->Publish(eFireIdle); + } + } } @@ -114,6 +124,16 @@ void DefenderWeaponBehaviour::OnReload(ComponentWrapper cWeapon, WeaponInfo& wi) eBlendLoop.AnimationEntity = wi.FirstPersonEntity.FirstChildByName("ReloadStart"); m_EventBroker->Publish(eBlendLoop); } + + if(wi.ThirdPersonPlayerModel.Valid()) { + Events::AutoAnimationBlend eReload; + eReload.Duration = 0.2; + eReload.RootNode = wi.ThirdPersonPlayerModel; + eReload.NodeName = "Reload"; + eReload.Restart = true; + eReload.Start = true; + m_EventBroker->Publish(eReload); + } } void DefenderWeaponBehaviour::OnHolster(ComponentWrapper cWeapon, WeaponInfo& wi) @@ -136,17 +156,58 @@ bool DefenderWeaponBehaviour::OnInputCommand(ComponentWrapper cWeapon, WeaponInf SpawnerSystem::Spawn(attachment, attachment); } + EntityWrapper backAttachment = attachment.FirstChildByName("Back"); + if (backAttachment.Valid()) { + Events::AutoAnimationBlend eDeployShieldAttachement; + eDeployShieldAttachement.RootNode = backAttachment; + eDeployShieldAttachement.NodeName = "Deploy"; + eDeployShieldAttachement.Restart = true; + eDeployShieldAttachement.Start = true; + m_EventBroker->Publish(eDeployShieldAttachement); + } + EntityWrapper frontAttachment = attachment.FirstChildByName("Front"); + if (frontAttachment.Valid()) { + Events::AutoAnimationBlend eDeployShieldAttachement; + eDeployShieldAttachement.RootNode = frontAttachment; + eDeployShieldAttachement.NodeName = "Deploy"; + eDeployShieldAttachement.Restart = true; + eDeployShieldAttachement.Start = true; + m_EventBroker->Publish(eDeployShieldAttachement); + + } + if (IsClient) { EntityWrapper root = wi.FirstPersonEntity; if (root.Valid()) { EntityWrapper animationNode = root.FirstChildByName("Shield"); if (animationNode.Valid()) { - Events::AutoAnimationBlend eFireBlend; - eFireBlend.RootNode = root; - eFireBlend.NodeName = "Shield"; - eFireBlend.Restart = true; - eFireBlend.Start = true; - m_EventBroker->Publish(eFireBlend); + Events::AutoAnimationBlend eShieldBlend; + eShieldBlend.RootNode = root; + eShieldBlend.NodeName = "Shield"; + eShieldBlend.Restart = true; + eShieldBlend.Start = true; + m_EventBroker->Publish(eShieldBlend); + } + } + } else { // server only + EntityWrapper root = wi.ThirdPersonPlayerModel; + if (root.Valid()) { + Events::AutoAnimationBlend eShieldActivateBlend; + eShieldActivateBlend.RootNode = root; + eShieldActivateBlend.NodeName = "ActivateShield"; + eShieldActivateBlend.Restart = true; + eShieldActivateBlend.Start = true; + m_EventBroker->Publish(eShieldActivateBlend); + + EntityWrapper animationNode = root.FirstChildByName("ActivateShield"); + if (animationNode.Valid()) { + Events::AutoAnimationBlend eShieldIdleBlend; + eShieldIdleBlend.RootNode = root; + eShieldIdleBlend.NodeName = "ShieldFront"; + eShieldIdleBlend.Restart = true; + eShieldIdleBlend.Start = true; + eShieldIdleBlend.AnimationEntity = animationNode; + m_EventBroker->Publish(eShieldIdleBlend); } } } @@ -166,6 +227,26 @@ bool DefenderWeaponBehaviour::OnInputCommand(ComponentWrapper cWeapon, WeaponInf m_EventBroker->Publish(eFireBlend); } } + } else { // server only + EntityWrapper root = wi.ThirdPersonPlayerModel; + if (root.Valid()) { + Events::AutoAnimationBlend eShieldDeactivateBlend; + eShieldDeactivateBlend.RootNode = root; + eShieldDeactivateBlend.NodeName = "ActivateShield"; + eShieldDeactivateBlend.Restart = true; + eShieldDeactivateBlend.Start = true; + eShieldDeactivateBlend.Reverse = true; + m_EventBroker->Publish(eShieldDeactivateBlend); + + EntityWrapper animationNode = root.FirstChildByName("ActivateShield"); + if (animationNode.Valid()) { + Events::AutoAnimationBlend eActionBlend; + eActionBlend.RootNode = root; + eActionBlend.NodeName = "ActionBlend"; + eActionBlend.AnimationEntity = animationNode; + m_EventBroker->Publish(eActionBlend); + } + } } } } @@ -174,6 +255,18 @@ bool DefenderWeaponBehaviour::OnInputCommand(ComponentWrapper cWeapon, WeaponInf return false; } + +void DefenderWeaponBehaviour::OnEquip(ComponentWrapper cWeapon, WeaponInfo& wi) +{ + if (wi.ThirdPersonPlayerModel.Valid()) { + Events::AutoAnimationBlend b1; + b1.RootNode = wi.ThirdPersonPlayerModel; + b1.NodeName = "DefenderWeapon"; + b1.SingleLevelBlend = true; + m_EventBroker->Publish(b1); + } +} + void DefenderWeaponBehaviour::fireShell(ComponentWrapper cWeapon, WeaponInfo& wi) { cWeapon["FireCooldown"] = 60.0 / (double)cWeapon["RPM"]; @@ -237,6 +330,7 @@ void DefenderWeaponBehaviour::fireShell(ComponentWrapper cWeapon, WeaponInfo& wi // Play animation playAnimationAndReturn(wi.FirstPersonEntity, "FinalBlend", "Fire"); + playAnimationAndReturn(wi.ThirdPersonPlayerModel, "FinalBlend", "Fire"); // Sound Events::PlaySoundOnEntity e; diff --git a/src/Game/Systems/Weapon/SidearmWeaponBehaviour.cpp b/src/Game/Systems/Weapon/SidearmWeaponBehaviour.cpp index cba3d5e8..db5a9ede 100644 --- a/src/Game/Systems/Weapon/SidearmWeaponBehaviour.cpp +++ b/src/Game/Systems/Weapon/SidearmWeaponBehaviour.cpp @@ -35,6 +35,14 @@ void SidearmWeaponBehaviour::OnCeasePrimaryFire(ComponentWrapper cWeapon, Weapon void SidearmWeaponBehaviour::OnEquip(ComponentWrapper cWeapon, WeaponInfo& wi) { cWeapon["FireCooldown"] = (double)cWeapon["EquipTime"]; + + if(wi.ThirdPersonPlayerModel.Valid()) { + Events::AutoAnimationBlend b1; + b1.RootNode = wi.ThirdPersonPlayerModel; + b1.NodeName = "SidearmWeapon"; + b1.SingleLevelBlend = true; + m_EventBroker->Publish(b1); + } } void SidearmWeaponBehaviour::OnHolster(ComponentWrapper cWeapon, WeaponInfo& wi) @@ -64,7 +72,23 @@ void SidearmWeaponBehaviour::fireBullet(ComponentWrapper cWeapon, WeaponInfo& wi glm::vec3 direction = Transform::AbsoluteOrientation(tracerSpawner) * glm::vec3(0, 0, -1); float distance = traceRayDistance(origin, direction); EntityWrapper ray = SpawnerSystem::Spawn(tracerSpawner); - ((glm::vec3&)ray["Transform"]["Scale"]).z = (distance / 100.f); + if (ray.Valid()) { + ((glm::vec3&)ray["Transform"]["Scale"]).z = (distance / 100.f); + } + } + + + // Play animation + playAnimationAndReturn(wi.FirstPersonEntity, "ActionBlend", "Fire"); + + // Third person anim + if (wi.ThirdPersonPlayerModel.Valid()) { + Events::AutoAnimationBlend b1; + b1.RootNode = wi.ThirdPersonPlayerModel; + b1.NodeName = "Fire"; + b1.Restart = true; + b1.Start = true; + m_EventBroker->Publish(b1); } }