To reduce the frequency of getting blocked on EquipmentGun asset being locked.
[ ] In AMassCharacter add a UFUNCTION PlayerFireCurrentWeapon. It should do the work that's currently done in Human_Character BP's IA_Weapons_Shoot. Note this will require moving some variables which are currently defined in Human_Character BP to the C++ AMassCharacter base class (e.g. MoveState and Lowered). Instead of calling UFC_GenericAttachable::UseItem at the end, move the code from EquipmentGun ""Server Used" event into PlayerFireCurrentWeapon.
[ ] To get the gun barrel location, see how FMassGetSoldierProjectileSpawnLocationTask::EnterState calls GetGunProjectileSpawnLocation. We'll also need the gun barrel rotation, so we should make a function similar to GetGunProjectileSpawnLocation but instead called GetGunProjectileSpawnTransform. We can then use that in PlayerFireCurrentWeapon to get the gun barrel location/rotation.
[ ] Migrate EquipmentGun "TryToReloadGun" event to C++ in AMassCharacter::TryToReloadGun.
[ ] In Human_Character update IA_Weapons_Reload to call AMassCharacter::TryToReloadGun.
[ ] In Human_Character delete ExecuteReload function.
[ ] In EquipmentGun delete the "Server Used" and "TryToReloadGun" events.
To reduce the frequency of getting blocked on EquipmentGun asset being locked.