public void EquipeWeapen(RuntimeWeapen w, bool isLeft)
        {
            if (isLeft)
            {
                if (leftHandWeapen != null)
                {
                    leftHandWeapen.weapenModel.SetActive(false);
                }
                leftHandWeapen = w;
            }
            else
            {
                if (rightHandWeapen != null)
                {
                    rightHandWeapen.weapenModel.SetActive(false);
                }
                rightHandWeapen = w;
            }

            string targetIdle = w.instance.oh_idle;

            targetIdle += isLeft ? "_l" : "_r";
            states.anim.SetBool(StaticStrings.mirror, isLeft);
            states.anim.Play(StaticStrings.changeWeapen);
            states.anim.Play(targetIdle);

            UI.QuickSlot uiSlot = UI.QuickSlot.singleton;
            uiSlot.UpdateSlot(isLeft?UI.QSlotType.lh:UI.QSlotType.rh, w.instance.icon);

            w.weapenModel.SetActive(true);
        }
        public RuntimeWeapen WeapenToRuntimeWeapen(Weapen w, bool isLeft = false)
        {
            GameObject    go   = new GameObject();
            RuntimeWeapen inst = go.AddComponent <RuntimeWeapen>();

            inst.instance = new Weapen();
            StaticFunctions.DeepCopyWeapen(w, inst.instance);
            go.name          = w.itemName;
            inst.weapenModel = Instantiate(inst.instance.modelPrefab) as GameObject;
            Transform p = states.anim.GetBoneTransform(isLeft ? HumanBodyBones.LeftHand : HumanBodyBones.RightHand);

            inst.weapenModel.transform.parent           = p;
            inst.weapenModel.transform.localPosition    = isLeft?inst.instance.l_model_pos:inst.instance.r_model_pos;
            inst.weapenModel.transform.localEulerAngles = isLeft?inst.instance.l_model_eulers:inst.instance.r_model_eulers;
            inst.weapenModel.transform.localScale       = inst.instance.model_scale;
            inst.w_hook = inst.weapenModel.GetComponentInChildren <WeapenHook>();
            inst.w_hook.InitDamageColliders(states);

            if (isLeft)
            {
                r_l_weapens.Add(inst);
            }
            else
            {
                r_r_weapens.Add(inst);
            }
            inst.weapenModel.SetActive(false);
            return(inst);
        }
        private void LoadInventory(StateManager st)
        {
            for (int i = 0; i < rh_weapens.Count; i++)
            {
                WeapenToRuntimeWeapen(ResourcesManager.singleton.GetWeapen(rh_weapens[i]));
            }
            for (int i = 0; i < lh_weapens.Count; i++)
            {
                WeapenToRuntimeWeapen(ResourcesManager.singleton.GetWeapen(lh_weapens[i]), true);
            }
            if (r_r_weapens.Count > 0)
            {
                if (r_index > r_r_weapens.Count - 1)
                {
                    r_index = 0;
                }

                rightHandWeapen = r_r_weapens[r_index];
            }
            if (r_l_weapens.Count > 0)
            {
                if (l_index > r_l_weapens.Count - 1)
                {
                    l_index = 0;
                }

                leftHandWeapen = r_l_weapens[l_index];
            }
            for (int i = 0; i < spell_items.Count; i++)
            {
                SpellToRuntimeSpell(ResourcesManager.singleton.GetSpell(spell_items[i]));
            }
            if (r_spells.Count > 0)
            {
                EquipSpell(r_spells[0]);
            }

            if (rightHandWeapen != null)
            {
                EquipeWeapen(rightHandWeapen, false);
            }

            if (leftHandWeapen != null)
            {
                hasLeftHandWeapen = true;
                EquipeWeapen(leftHandWeapen, true);
            }

            InitAllDamageColliders(st);
            CloseAllDamageColliders();
        }