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.WeaponStats = new WeaponStats(); WeaponStats w_stats = ResourcesManager.singleton.GetWeaponStats(w.itemName); StaticFunctions.DeepCopyWeaponStats(w_stats, inst.WeaponStats); inst.weaponModel = Instantiate(inst.instance.modelPrefeb) as GameObject; Transform p = states.anim.GetBoneTransform((isLeft) ? HumanBodyBones.LeftHand : HumanBodyBones.RightHand); inst.weaponModel.transform.parent = p; inst.weaponModel.transform.localPosition = (isLeft) ? inst.instance.l_model_pos : inst.instance.r_model_pos; inst.weaponModel.transform.localEulerAngles = (isLeft) ? inst.instance.l_model_eulers : inst.instance.r_model_eulers; inst.weaponModel.transform.localScale = inst.instance.model_scale; inst.w_hook = inst.weaponModel.GetComponentInChildren <WeaponHook>(); inst.w_hook.InitDamageColliders(states); inst.weaponModel.SetActive(false); return(inst); }
public void EquipWeapon(Runtimeweapon w, bool isLeft = false) { if (isLeft) { if (leftHandWeapon != null) { leftHandWeapon.weaponModel.SetActive(false); } leftHandWeapon = w; } else { if (rightHandWeapon != null) { rightHandWeapon.weaponModel.SetActive(false); } rightHandWeapon = w; } string targetIlde = w.instance.oh_idle; targetIlde += (isLeft) ? "_l" : "_r"; states.anim.SetBool(StaticStrings.mirror, isLeft); states.anim.Play(StaticStrings.changeWeapon); states.anim.Play(targetIlde); UI.QuickSlot uiSlot = UI.QuickSlot.singleton; uiSlot.UpdateSlot((isLeft) ? UI.QSlotType.lh : UI.QSlotType.rh, w.instance.icon); w.weaponModel.SetActive(true); }
public void LoadInventory() { unarmedRuntime = WeaponToRuntimeWeapon(ResourcesManager.singleton.GetWeapon(unarmedId), false); for (int i = 0; i < rh_weapons.Count; i++) { Runtimeweapon rw = WeaponToRuntimeWeapon(ResourcesManager.singleton.GetWeapon(rh_weapons[i])); r_r_weapons.Add(rw); } for (int i = 0; i < lh_weapons.Count; i++) { Runtimeweapon rw = WeaponToRuntimeWeapon(ResourcesManager.singleton.GetWeapon(lh_weapons[i]), true); r_l_weapons.Add(rw); } if (r_r_weapons.Count > 0) { if (r_index > r_r_weapons.Count - 1) { r_index = 0; } rightHandWeapon = r_r_weapons[r_index]; } if (r_l_weapons.Count > 0) { if (l_index > r_l_weapons.Count - 1) { l_index = 0; } leftHandWeapon = r_l_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])); } //hasLeftHandWeapon = (leftHandWeapon != null); if (r_spells.Count > 0) { if (s_index > r_spells.Count) { s_index = 0; } EquipSpell(r_spells[s_index]); } for (int i = 0; i < consumable_items.Count; i++) { RuntimeConsumable c = ConsumableToRuntime(ResourcesManager.singleton.GetConsumable(consumable_items[i])); r_consum.Add(c); } if (r_consum.Count > 0) { if (c_index > r_consum.Count - 1) { c_index = 0; } EquipConsuamble(r_consum[c_index]); } InitALLDamageColliders(states); CloseAllDamageColliders(); }