public RuntimeWeapon WeaponToRuntimeWeapon(Weapon w, bool isLeft = false)
        {
            GameObject    go   = new GameObject();
            RuntimeWeapon inst = go.AddComponent <RuntimeWeapon> ();

            inst.instance = new Weapon();
            StaticFunction.DeepCopyWeapon(w, inst.instance);

            inst.weaponModel = Instantiate(inst.instance.modelPrefab) as GameObject;
            Transform p = states.anim.GetBoneTransform((isLeft) ? HumanBodyBones.LeftHand : HumanBodyBones.RightHand);

            inst.weaponModel.transform.parent = p;

            if (isLeft)
            {
                inst.weaponModel.transform.localPosition    = inst.instance.l_model_pos;
                inst.weaponModel.transform.localEulerAngles = inst.instance.l_model_eulers;
            }
            else
            {
                inst.weaponModel.transform.localPosition    = inst.instance.r_model_pos;
                inst.weaponModel.transform.localEulerAngles = 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);

            return(inst);
        }
 void EmptyAllSlots()
 {
     for (int i = 0; i < 4; i++)
     {
         Action a = StaticFunction.GetAction((ActionInput)i, actionSlots);
         a.targetAnim = null;
         a.mirror     = false;
         a.type       = ActionType.attack;
     }
 }
        public void UpdateActionsTwoHanded()
        {
            EmptyAllSlots();
            Weapon w = states.inventoryManager.rightHandWeapon.instance;

            for (int i = 0; i < w.twoHandedActions.Count; i++)
            {
                Action a = StaticFunction.GetAction(w.twoHandedActions [i].input, actionSlots);
                a.targetAnim = w.twoHandedActions [i].targetAnim;
                a.type       = w.twoHandedActions [i].type;
            }
        }
        public void UpdateActionsOneHanded()
        {
            EmptyAllSlots();

            StaticFunction.DeepCopyAction(states.inventoryManager.rightHandWeapon.instance, ActionInput.rb, ActionInput.rb, actionSlots);
            StaticFunction.DeepCopyAction(states.inventoryManager.rightHandWeapon.instance, ActionInput.rt, ActionInput.rt, actionSlots);

            if (states.inventoryManager.hasLeftHandWeapon)
            {
                StaticFunction.DeepCopyAction(states.inventoryManager.leftHandWeapon.instance, ActionInput.rb, ActionInput.lb, actionSlots, true);
                StaticFunction.DeepCopyAction(states.inventoryManager.leftHandWeapon.instance, ActionInput.rt, ActionInput.lt, actionSlots, true);
            }
            else
            {
                StaticFunction.DeepCopyAction(states.inventoryManager.rightHandWeapon.instance, ActionInput.lb, ActionInput.lb, actionSlots);
                StaticFunction.DeepCopyAction(states.inventoryManager.rightHandWeapon.instance, ActionInput.lt, ActionInput.lt, actionSlots);
            }
        }
        public Action GetActionSlot(StateManager st)
        {
            ActionInput a_input = GetActionInput(st);

            return(StaticFunction.GetAction(a_input, actionSlots));
        }