public RuntimeWeapon WeaponToRuntimeWeapon(Weapon w, bool isLeft = false) { GameObject go = new GameObject(); RuntimeWeapon inst = go.AddComponent <RuntimeWeapon>(); go.name = w.itemName; inst.instance = new Weapon(); StaticFunctions.DeepCopyWeapon(w, inst.instance); inst.weapon_Model = Instantiate(inst.instance.modelPrefab); Transform p = states.anim.GetBoneTransform((isLeft) ? HumanBodyBones.LeftHand : HumanBodyBones.RightHand); inst.weapon_Model.transform.parent = p; inst.weapon_Model.transform.localPosition = (isLeft) ? inst.instance.l_model_equiped_pos : inst.instance.r_model_equiped_pos; inst.weapon_Model.transform.localEulerAngles = (isLeft) ? inst.instance.l_model_equiped_eulers : inst.instance.r_model_equiped_eulers; inst.weapon_Model.transform.localScale = inst.instance.model_scale; inst.weapon_Hook = inst.weapon_Model.GetComponentInChildren <WeaponHook>(); inst.weapon_Hook.InitDamageColliders(states); if (isLeft) { r_lh_weapons.Add(inst); } else { r_rh_weapons.Add(inst); } inst.weapon_Model.SetActive(false); return(inst); }
public void EquipWeapon(RuntimeWeapon w, bool isLeft = false) { if (isLeft) { if (leftHandWeapon != null) { leftHandWeapon.weapon_Model.SetActive(false); // leftHandWeapon.weapon_Model.transform.localPosition = leftHandWeapon.instance.l_model_unequiped_pos; // leftHandWeapon.weapon_Model.transform.localEulerAngles = leftHandWeapon.instance.l_model_unequiped_eulers; } leftHandWeapon = w; } else { if (rightHandWeapon != null) { rightHandWeapon.weapon_Model.SetActive(false); // rightHandWeapon.weapon_Model.transform.localPosition = rightHandWeapon.instance.r_model_unequiped_pos; // rightHandWeapon.weapon_Model.transform.localEulerAngles = rightHandWeapon.instance.r_model_unequiped_eulers; } rightHandWeapon = w; } string targetIdle = w.instance.oh_idle; targetIdle += (isLeft) ? "_l" : "_r"; states.anim.SetBool(StaticStrings.mirror, isLeft); states.anim.Play(StaticStrings.changeWeapon); states.anim.Play(targetIdle); UI.QuickSlot uiSlot = UI.QuickSlot.singleton; uiSlot.UpdateSlot( (isLeft) ? UI.QSlotType.lh : UI.QSlotType.rh, w.instance.icon); w.weapon_Model.SetActive(true); }
public void LoadInventory() { for (int i = 0; i < rh_weapons.Count; i++) { WeaponToRuntimeWeapon( ResourcesManager.singleton.GetWeapon(rh_weapons[i]) ); } for (int i = 0; i < lh_weapons.Count; i++) { WeaponToRuntimeWeapon( ResourcesManager.singleton.GetWeapon(lh_weapons[i]) , true); } if (r_rh_weapons.Count > 0) { if (r_index > r_rh_weapons.Count - 1) { r_index = 0; } rightHandWeapon = r_rh_weapons[r_index]; } if (r_lh_weapons.Count > 0) { if (r_index > r_lh_weapons.Count - 1) { r_index = 0; } leftHandWeapon = r_lh_weapons[l_index]; } if (rightHandWeapon != null) { EquipWeapon(rightHandWeapon, false); } if (leftHandWeapon != null) { EquipWeapon(leftHandWeapon, true); hasLeftHandWeapon = true; } for (int i = 0; i < spell_items.Count; i++) { SpellToRuntimeSpell( ResourcesManager.singleton.GetSpell(spell_items[i]) ); } if (r_spells.Count > 0) { if (s_index > r_spells.Count - 1) { s_index = 0; } EquipSpell(r_spells[s_index]); } InitAllDamageColliders(states); CloseAllDamageColliders(); }