Beispiel #1
0
        protected static void AddTransitionFromJumpToDying(PostureState state)
        {
            state.AddTransition(
                (command, addOutput) =>
            {
                var ret = command.IsMatch(FsmInput.Dying);

                if (ret)
                {
                    command.Handled = true;

                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.FreeFallHash,
                                             AnimatorParametersHash.Instance.FreeFallName,
                                             AnimatorParametersHash.Instance.FreeFallDisable,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.JumpStartHash,
                                             AnimatorParametersHash.Instance.JumpStartName,
                                             AnimatorParametersHash.Instance.JumpStartDisable,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    FsmOutput.Cache.SetLayerWeight(AnimatorParametersHash.Instance.DyingLayer,
                                                   AnimatorParametersHash.Instance.DyingEnableValue,
                                                   CharacterView.ThirdPerson);
                    addOutput(FsmOutput.Cache);
                }

                return(ret);
            },
                null, (int)PostureStateId.Dying, null, 0, new[] { FsmInput.Dying });
        }
Beispiel #2
0
        public static PostureState CreateSwimState()
        {
            PostureState state = new PostureState(PostureStateId.Swim);

            #region swim to stand

            AddTransitionFromWaterToStand(state);

            #endregion

            #region swim to dive

            state.AddTransition(new DiveTransition(
                                    state.AvailableTransitionId(),
                                    (int)PostureStateId.Dive,
                                    SingletonManager.Get <CharacterStateConfigManager>().GetPostureTransitionTime(PostureInConfig.Swim, PostureInConfig.Dive),
                                    AnimatorParametersHash.Instance.SwimStateSwimValue,
                                    AnimatorParametersHash.Instance.SwimStateDiveValue,
                                    FsmInput.Dive),
                                new[] { FsmInput.Dive });

            #endregion

            return(state);
        }
Beispiel #3
0
 public void InitAsLeanState(IFsmTransitionHelper infoProvider)
 {
     AddState(PostureState.CreateNoPeekState(), infoProvider);
     AddState(PostureState.CreatePeekLeftState(), infoProvider);
     AddState(PostureState.CreatePeekRightState(), infoProvider);
     _resetParam = ResetLeanStateParam;
 }
Beispiel #4
0
        private static void AddTransitionToDying(PostureState state)
        {
            state.AddTransition(
                (command, addOutput) =>
            {
                var ret = command.IsMatch(FsmInput.Dying);

                if (ret)
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.ProneHash,
                                             AnimatorParametersHash.Instance.ProneName,
                                             AnimatorParametersHash.Instance.ProneDisable,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.InjuredMoveHash,
                                             AnimatorParametersHash.Instance.InjuredMoveName,
                                             AnimatorParametersHash.Instance.InjuredMoveEnableValue,
                                             CharacterView.ThirdPerson,
                                             false);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;
                }

                return(ret);
            },
                null, (int)PostureStateId.DyingTransition, null, 0, new[] { FsmInput.Dying });
        }
Beispiel #5
0
        public void InitAsCommonState(IFsmTransitionHelper infoProvider)
        {
            AddState(PostureState.CreateStandState(), infoProvider);
            AddState(PostureState.CreateCrouchState(), infoProvider);
            AddState(PostureState.CreateProneState(), infoProvider);
            AddState(PostureState.CreateJumpStartState(), infoProvider);
            AddState(PostureState.CreateProneTransitState(), infoProvider);
            AddState(PostureState.CreateProneToStandState(), infoProvider);
            AddState(PostureState.CreateProneToCrouchState(), infoProvider);
            AddState(PostureState.CreateJumpEndState(), infoProvider);
            AddState(PostureState.CreateFreefallState(), infoProvider);
            AddState(PostureState.CreateSwimState(), infoProvider);
            AddState(PostureState.CreateDiveState(), infoProvider);
            AddState(PostureState.CreateDyingState(), infoProvider);

            AddState(PostureState.CreateClimbState(), infoProvider);

            _resetParam = ResetCommonStateParam;
        }
Beispiel #6
0
        private static void AddTransitionFromWaterToStand(PostureState state, int duration)
        {
            state.AddTransition(
                (command, addOutput) =>
            {
                var ret = command.IsMatch(FsmInput.Ashore);

                if (ret)
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.PostureHash,
                                             AnimatorParametersHash.Instance.PostureName,
                                             AnimatorParametersHash.Instance.StandValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson);
                    addOutput(FsmOutput.Cache);

                    FsmOutput.Cache.SetValue(FsmOutputType.FirstPersonHeight,
                                             AnimatorParametersHash.FirstPersonStandCameraHeight);
                    addOutput(FsmOutput.Cache);

                    FsmOutput.Cache.SetValue(FsmOutputType.FirstPersonForwardOffset,
                                             AnimatorParametersHash.FirstPersonStandCameraForwardOffset);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;
                }

                return(ret);
            },
                (command, addOutput) => FsmTransitionResponseType.NoResponse,
                (int)PostureStateId.Stand,
                (normalizedTime, addOutput) =>
            {
                FsmOutput.Cache.SetLayerWeight(AnimatorParametersHash.Instance.SwimLayer,
                                               Mathf.Lerp(AnimatorParametersHash.Instance.SwimEnableValue,
                                                          AnimatorParametersHash.Instance.SwimDisableValue,
                                                          Mathf.Clamp01(normalizedTime)),
                                               CharacterView.ThirdPerson);
                addOutput(FsmOutput.Cache);
            },
                duration, new[] { FsmInput.Ashore });
        }
Beispiel #7
0
        public static PostureState CreateNoPeekState()
        {
            PostureState state = new PostureState(PostureStateId.NoPeek);

            #region NoPeek to PeekLeft

            state.AddTransition(new NoPeekToPeekLeftTransition(state.AvailableTransitionId(),
                                                               (int)PostureStateId.PeekLeft,
                                                               AnimatorParametersHash.PeekTime),
                                new[] { FsmInput.PeekLeft });

            #endregion

            #region NoPeek to PeekRight

            state.AddTransition(new NoPeekToPeekRightTransition(state.AvailableTransitionId(),
                                                                (int)PostureStateId.PeekRight,
                                                                AnimatorParametersHash.PeekTime),
                                new[] { FsmInput.PeekRight });

            #endregion

            return(state);
        }
Beispiel #8
0
        public static PostureState CreateDyingState()
        {
            PostureState state = new PostureState(PostureStateId.Dying);

            #region dying to crouch

            state.AddTransition(
                (command, addOutput) =>
            {
                var ret = command.IsMatch(FsmInput.Revive);

                if (ret)
                {
                    FsmOutput.Cache.SetLayerWeight(AnimatorParametersHash.Instance.DyingLayer,
                                                   AnimatorParametersHash.Instance.DyingDisableValue,
                                                   CharacterView.ThirdPerson);
                    addOutput(FsmOutput.Cache);

                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.PostureHash,
                                             AnimatorParametersHash.Instance.PostureName,
                                             AnimatorParametersHash.Instance.CrouchValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;
                }

                return(ret);
            },
                (command, addOutput) => FsmTransitionResponseType.NoResponse,
                (int)PostureStateId.Crouch, null, 0, new[] { FsmInput.Revive });

            #endregion

            return(state);
        }