public override void Execute(StateManager states) { Managers.ResourcesManager manager = Managers.GameManagers.GetResourcesManager(); Weapon weapon = manager.GetItemInstance(states.inventory.weaponID) as Weapon; states.inventory.currentWeapon = weapon; weapon.Initialize(); weapon.properties.modelInstance.transform.parent = states.animatorInstance.GetBoneTransform(HumanBodyBones.RightHand); weapon.properties.modelInstance.transform.localPosition = states.animatorInstance.GetBoneTransform(HumanBodyBones.RightHand).localPosition; weapon.properties.modelInstance.transform.localEulerAngles = weapon.rightHandEulers.value; states.animatorController.LoadWeapon(weapon); }
public bool SpawnCurrentWeapon(Transform parentTransform) { if (currentWeapon != null && weapons[currentWeaponIndex].name == currentWeapon.name) { return(false); } Managers.ResourcesManager rm = Managers.GameManagers.ResourceManager; //Create Weapon string weaponName = weapons[currentWeaponIndex].name; Weapon targetWeapon; if (initializedWeapons == null) { initializedWeapons = new Dictionary <string, Weapon>(); } if (initializedWeapons.TryGetValue(weaponName, out targetWeapon)) { currentWeapon = targetWeapon; targetWeapon.CreateModel(); } else { targetWeapon = (Weapon)rm.InstiateItem(weaponName); currentWeapon = targetWeapon; targetWeapon.Init(); initializedWeapons.Add(weaponName, targetWeapon); } if (parentTransform != null) { //Set Weapon Transform Transform rightHand = parentTransform; Transform weaponTransform = targetWeapon.runtime.modelInstance.transform; weaponTransform.parent = rightHand; weaponTransform.localPosition = Vector3.zero; weaponTransform.localEulerAngles = Vector3.zero; weaponTransform.localScale = new Vector3(1, 1, 1); } return(true); }