Exemplo n.º 1
0
        public void UnArmHeldWeapon(Action onfinish)
        {
            WeaponScanStruct weaponInfo = HeldWeaponAgent.ComponentScan;

            AppearanceSpecific();
            float holsterParam = WeaponUtil.GetHolsterParam(HeldSlotType);

            RelatedStateInterface.CharacterUnmount(() => OnUnArmWeaponCallback(weaponInfo.ConfigId, onfinish), holsterParam);
        }
Exemplo n.º 2
0
        public WeaponDrawAppearanceStruct GetDrawAppearanceStruct(EWeaponSlotType slot)
        {
            var weaponDrawStruct = new WeaponDrawAppearanceStruct();
            var armOnLeft        = FilterHoldSecondWeapon();
            var drawOnLeft       = armOnLeft && (slot != EWeaponSlotType.PistolWeapon &&
                                                 slot != EWeaponSlotType.MeleeWeapon &&
                                                 slot != EWeaponSlotType.ThrowingWeapon);

            weaponDrawStruct.holsterParam = WeaponUtil.GetHolsterParam(armOnLeft);
            weaponDrawStruct.targetSlot   = slot;
            weaponDrawStruct.drawParam    = drawOnLeft
                ? AnimatorParametersHash.Instance.DrawLeftValue
                : AnimatorParametersHash.Instance.DrawRightValue;
            weaponDrawStruct.armOnLeft = armOnLeft;
            return(weaponDrawStruct);
        }
Exemplo n.º 3
0
        public void DrawWeapon(EWeaponSlotType slot, bool includeAction = true)
        {
            if (HeldSlotType == slot)
            {
                return;
            }
            WeaponScanStruct lastWeapon = HeldWeaponAgent.ComponentScan;

            if (!GetWeaponAgent(slot).IsValid())
            {
                return;
            }
            var destWeapon = GetWeaponAgent(slot).ComponentScan;

            AppearanceSpecific();
            DoDrawInterrupt();
            bool  armOnLeft    = slot == EWeaponSlotType.SecondaryWeapon;
            float holsterParam = WeaponUtil.GetHolsterParam(HeldSlotType == EWeaponSlotType.SecondaryWeapon);
            float drawParam    = armOnLeft ? AnimatorParametersHash.Instance.DrawLeftValue : AnimatorParametersHash.Instance.DrawRightValue;

            if (includeAction)
            {
                float switchParam = holsterParam * 10 + drawParam;
                if (lastWeapon.IsSafeVailed)
                {
                    RelatedStateInterface.SwitchWeapon(() => WeaponToHand(destWeapon.ConfigId, lastWeapon.ConfigId, slot, armOnLeft),
                                                       () => OnDrawWeaponCallback(destWeapon, slot), switchParam);
                }
                else
                {
                    WeaponToHand(destWeapon.ConfigId, lastWeapon.ConfigId, slot, armOnLeft);
                    OnSlotArmFinish(destWeapon, slot);
                    RelatedStateInterface.Draw(RelatedAppearence.RemountP3WeaponOnRightHand, drawParam);
                }
            }
            else
            {
                //CharacterState控制动作相关
                WeaponToHand(destWeapon.ConfigId, lastWeapon.ConfigId, slot, armOnLeft);
                OnDrawWeaponCallback(destWeapon, slot);
                OnSlotArmFinish(destWeapon, slot);
                RelatedAppearence.RemountP3WeaponOnRightHand();
            }
        }