コード例 #1
0
        public static ActionState CreateGlidingState()
        {
            ActionState state = new ActionState(ActionStateId.Gliding);

            #region Gliding to Parachute

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.Parachuting))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.GlidingHash,
                                             AnimatorParametersHash.Instance.GlidingName,
                                             AnimatorParametersHash.Instance.GlidingDisableValue,
                                             CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.ParachuteHash,
                                             AnimatorParametersHash.Instance.ParachuteName,
                                             AnimatorParametersHash.Instance.ParachuteEnableValue,
                                             CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;

                    return(true);
                }

                return(false);
            },
                null, (int)ActionStateId.Parachuting, null, 0, new[] { FsmInput.Parachuting });

            #endregion

            return(state);
        }
コード例 #2
0
        public static ActionState CreateKeepNullState()
        {
            ActionState state = new ActionState(ActionStateId.KeepNull);

            #region KeepNull to Sight

            state.AddTransition(new OverlayNullToSightTransition(state.AvailableTransitionId(),
                                                                 (int)ActionStateId.Sight,
                                                                 SingletonManager.Get <CharacterStateConfigManager>().GetPostureTransitionTime(PostureInConfig.Null, PostureInConfig.Sight)),
                                new[] { FsmInput.Sight });

            #endregion

            #region KeepNull to VehiclesAnim

            state.AddTransition(
                (command, addOutput) =>
            {
                float seatId  = command.AdditioanlValue % 10;
                int postureId = (int)(command.AdditioanlValue / 10);

                if (command.IsMatch(FsmInput.DriveStart))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.VehiclesAnimHash,
                                             AnimatorParametersHash.Instance.VehiclesAnimName,
                                             AnimatorParametersHash.Instance.VehiclesAnimEnableValue,
                                             CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.VehiclesAnimStateHash,
                                             AnimatorParametersHash.Instance.VehiclesAnimStateName,
                                             seatId,
                                             CharacterView.ThirdPerson);
                    addOutput(FsmOutput.Cache);

                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.VehiclesStateHash,
                                             AnimatorParametersHash.Instance.VehiclesStateName,
                                             (float)postureId,
                                             CharacterView.ThirdPerson);
                    addOutput(FsmOutput.Cache);

                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.GripHandPoseHash,
                                             AnimatorParametersHash.Instance.GripHandPoseName,
                                             AnimatorParametersHash.Instance.GripHandPoseDisableValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    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.ForceEndProneHash,
                                             AnimatorParametersHash.Instance.ForceEndProneName,
                                             AnimatorParametersHash.Instance.ForceEndProneEnable,
                                             CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

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

                    command.Handled = true;

                    return(true);
                }

                return(false);
            },
                null, (int)ActionStateId.Drive, null, 0, new[] { FsmInput.DriveStart });

            #endregion

            #region KeepNull to Rescue

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.Rescue))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.RescueHash,
                                             AnimatorParametersHash.Instance.RescueName,
                                             AnimatorParametersHash.Instance.RescueEnableValue,
                                             CharacterView.ThirdPerson | CharacterView.FirstPerson, false);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;

                    return(true);
                }

                return(false);
            },
                null, (int)ActionStateId.Rescue, null, 0, new[] { FsmInput.Rescue });

            #endregion

            #region KeepNull to Rage

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.RageStart))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.RageStartHash,
                                             AnimatorParametersHash.Instance.RageStartName,
                                             AnimatorParametersHash.Instance.RageStartEnable,
                                             CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;

                    return(true);
                }

                return(false);
            },
                null, (int)ActionStateId.RageStart, null, 0, new[] { FsmInput.RageStart });

            #endregion

            #region KeepNull to SuccessPose

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.StartSuccessPose))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.SuccessHash,
                                             AnimatorParametersHash.Instance.SuccessName,
                                             AnimatorParametersHash.Instance.SuccessEnable,
                                             CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.SuccessStateHash,
                                             AnimatorParametersHash.Instance.SuccessStateName,
                                             command.AdditioanlValue,
                                             CharacterView.ThirdPerson);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;

                    return(true);
                }

                return(false);
            },
                null, (int)ActionStateId.SuccessPose, null, 0, new[] { FsmInput.StartSuccessPose });

            #endregion

            return(state);
        }
コード例 #3
0
        public static ActionState CreateCommonNullState()
        {
            ActionState state = new ActionState(ActionStateId.CommonNull);

            #region UpperBody Additive Animation Layer

            #region CommonNull => Fire

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.Fire))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.FireHash,
                                             AnimatorParametersHash.Instance.FireName,
                                             AnimatorParametersHash.Instance.FireEnableValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, true);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;

                    return(true);
                }
                return(false);
            },
                null, (int)ActionStateId.Fire, null, 0, new[] { FsmInput.Fire });

            #endregion

            #region CommonNull => SightsFire

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.SightsFire))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.SightsFireHash,
                                             AnimatorParametersHash.Instance.SightsFireName,
                                             AnimatorParametersHash.Instance.SightsFireEnableValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, true);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;

                    return(true);
                }
                return(false);
            },
                null, (int)ActionStateId.Fire, null, 0, new[] { FsmInput.SightsFire });

            #endregion

            #region CommonNull => SpecialFire(栓动)

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.SpecialFire))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.FireHash,
                                             AnimatorParametersHash.Instance.FireName,
                                             AnimatorParametersHash.Instance.FireEnableValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;

                    return(true);
                }

                return(false);
            },
                null, (int)ActionStateId.SpecialFire, null, 0, new[] { FsmInput.SpecialFire });

            #endregion

            #region CommonNull => SpecialSightsFire(栓动)

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.SpecialSightsFire))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.SightsFireHash,
                                             AnimatorParametersHash.Instance.SightsFireName,
                                             AnimatorParametersHash.Instance.SightsFireEnableValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.FireHash,
                                             AnimatorParametersHash.Instance.FireName,
                                             AnimatorParametersHash.Instance.FireEnableValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;

                    return(true);
                }

                return(false);
            },
                null, (int)ActionStateId.SpecialFire, null, 0, new[] { FsmInput.SpecialSightsFire });

            #endregion

            #region CommonNull To SpecialFireEnd

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.SpecialFireEnd))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.FireEndHash,
                                             AnimatorParametersHash.Instance.FireEndName,
                                             AnimatorParametersHash.Instance.FireEndEnableValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    return(true);
                }

                return(false);
            },
                null, (int)ActionStateId.SpecialFireEnd, null, 0, new[] { FsmInput.SpecialFireEnd });

            #endregion

            #region CommonNull => Injury

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.Injury))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.InjuryHash,
                                             AnimatorParametersHash.Instance.InjuryName,
                                             AnimatorParametersHash.Instance.InjuryStartValue,
                                             CharacterView.ThirdPerson, true);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;

                    return(true);
                }

                return(false);
            }, null, (int)ActionStateId.Injury, null, 0, new[] { FsmInput.Injury });

            #endregion

            #region CommonNull => Reload

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.Reload))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.ReloadHash,
                                             AnimatorParametersHash.Instance.ReloadName,
                                             AnimatorParametersHash.Instance.ReloadEnableValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);
                    command.Handled = true;
                    return(true);
                }
                else if (command.IsMatch(FsmInput.ReloadEmpty))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.ReloadEmptyHash,
                                             AnimatorParametersHash.Instance.ReloadEmptyName,
                                             AnimatorParametersHash.Instance.ReloadEmptyEnableValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);
                    command.Handled = true;
                    return(true);
                }

                command.Handled = true;

                return(false);
            },
                null, (int)ActionStateId.Reload, null, 0, new[] { FsmInput.Reload, FsmInput.ReloadEmpty });

            #endregion

            #endregion

            #region UpperBody Overlay Animation Layer

            #region CommonNull to Unarm

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.Unarm))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.HolsterStateHash,
                                             AnimatorParametersHash.Instance.HolsterStateName,
                                             command.AdditioanlValue,
                                             CharacterView.ThirdPerson);
                    addOutput(FsmOutput.Cache);

                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.HolsterHash,
                                             AnimatorParametersHash.Instance.HolsterName,
                                             AnimatorParametersHash.Instance.HolsterEnableValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    TurnOnUpperBodyOverlay(addOutput);

                    command.Handled = true;

                    return(true);
                }

                return(false);
            },
                null, (int)ActionStateId.Unarm, null, 0, new[] { FsmInput.Unarm });

            #endregion

            #region CommonNull to Draw

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.Draw))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.DrawStateHash,
                                             AnimatorParametersHash.Instance.DrawStateName,
                                             command.AdditioanlValue,
                                             CharacterView.ThirdPerson);
                    addOutput(FsmOutput.Cache);

                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.SelectHash,
                                             AnimatorParametersHash.Instance.SelectName,
                                             AnimatorParametersHash.Instance.SelectEnableValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    TurnOnUpperBodyOverlay(addOutput);

                    command.Handled = true;

                    return(true);
                }

                return(false);
            },
                null, (int)ActionStateId.Draw, null, 0, new[] { FsmInput.Draw });

            #endregion

            #region CommonNull to SwitchWeapon

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.SwitchWeapon))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.HolsterStateHash,
                                             AnimatorParametersHash.Instance.HolsterStateName,
                                             command.AdditioanlValue / 10,
                                             CharacterView.ThirdPerson);
                    addOutput(FsmOutput.Cache);

                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.DrawStateHash,
                                             AnimatorParametersHash.Instance.DrawStateName,
                                             command.AdditioanlValue % 10,
                                             CharacterView.ThirdPerson);
                    addOutput(FsmOutput.Cache);

                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.HolsterHash,
                                             AnimatorParametersHash.Instance.HolsterName,
                                             AnimatorParametersHash.Instance.HolsterEnableValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.SwitchWeaponHash,
                                             AnimatorParametersHash.Instance.SwitchWeaponName,
                                             AnimatorParametersHash.Instance.SwitchWeaponEnableValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    TurnOnUpperBodyOverlay(addOutput);

                    command.Handled = true;

                    return(true);
                }

                return(false);
            },
                null, (int)ActionStateId.SwitchWeapon, null, 0, new[] { FsmInput.SwitchWeapon });

            #endregion

            #region CommonNull to PickUp

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.PickUp))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.PickUpHash,
                                             AnimatorParametersHash.Instance.PickUpName,
                                             AnimatorParametersHash.Instance.PickUpEnable,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;

                    TurnOnUpperBodyOverlay(addOutput);

                    return(true);
                }

                return(false);
            },
                null, (int)ActionStateId.PickUp, null, 0, new[] { FsmInput.PickUp });

            #endregion

            #region CommonNull to OpenDoor

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.OpenDoor))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.OpenDoorHash,
                                             AnimatorParametersHash.Instance.OpenDoorName,
                                             AnimatorParametersHash.Instance.OpenDoorEnable,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;

                    TurnOnUpperBodyOverlay(addOutput);

                    return(true);
                }

                return(false);
            },
                null, (int)ActionStateId.OpenDoor, null, 0, new[] { FsmInput.OpenDoor });

            #endregion

            #region CommonNull to Props

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.Props))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.PropsHash,
                                             AnimatorParametersHash.Instance.PropsName,
                                             AnimatorParametersHash.Instance.PropsEnable,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.PropsStateHash,
                                             AnimatorParametersHash.Instance.PropsStateName,
                                             command.AdditioanlValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;

                    TurnOnUpperBodyOverlay(addOutput);

                    return(true);
                }

                return(false);
            },
                null, (int)ActionStateId.Props, null, 0, new[] { FsmInput.Props });

            #endregion

            #region CommonNull to Melee

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.LightMeleeAttackOne))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.MeleeStateHash,
                                             AnimatorParametersHash.Instance.MeleeStateName,
                                             AnimatorParametersHash.Instance.LightMeleeOne,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson);
                    addOutput(FsmOutput.Cache);
                }
                else
                {
                    return(false);
                }

                command.Handled = true;

                return(true);
            },
                null, (int)ActionStateId.MeleeAttackOne,
                (normalizedTime, addOutput) => { LerpOpenUpperBodyLayer(addOutput, normalizedTime); },
                (int)SingletonManager.Get <CharacterStateConfigManager>().AttackTransitionTime,
                new[] { FsmInput.LightMeleeAttackOne });

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.LightMeleeAttackTwo))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.MeleeStateHash,
                                             AnimatorParametersHash.Instance.MeleeStateName,
                                             AnimatorParametersHash.Instance.LightMeleeTwo,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson);
                    addOutput(FsmOutput.Cache);
                }
                else
                {
                    return(false);
                }

                command.Handled = true;

                return(true);
            },
                null, (int)ActionStateId.MeleeAttackTwo,
                (normalizedTime, addOutput) => { LerpOpenUpperBodyLayer(addOutput, normalizedTime); },
                (int)SingletonManager.Get <CharacterStateConfigManager>().AttackTransitionTime,
                new[] { FsmInput.LightMeleeAttackTwo });

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.MeleeSpecialAttack))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.MeleeStateHash,
                                             AnimatorParametersHash.Instance.MeleeStateName,
                                             AnimatorParametersHash.Instance.ForceMelee,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson);
                    addOutput(FsmOutput.Cache);
                }
                else
                {
                    return(false);
                }

                command.Handled = true;

                return(true);
            },
                null, (int)ActionStateId.MeleeAttackSpecial,
                (normalizedTime, addOutput) => { LerpOpenUpperBodyLayer(addOutput, normalizedTime); },
                (int)SingletonManager.Get <CharacterStateConfigManager>().AttackTransitionTime,
                new[] { FsmInput.MeleeSpecialAttack });

            #endregion

            #region CommonNull to Grenade

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.StartNearGrenade))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.NearThrowHash,
                                             AnimatorParametersHash.Instance.NearThrowName,
                                             AnimatorParametersHash.Instance.NearThrowEnable,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson);
                    addOutput(FsmOutput.Cache);
                }
                else if (command.IsMatch(FsmInput.StartFarGrenade))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.NearThrowHash,
                                             AnimatorParametersHash.Instance.NearThrowName,
                                             AnimatorParametersHash.Instance.NearThrowDisable,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson);
                    addOutput(FsmOutput.Cache);
                }
                else
                {
                    return(false);
                }

                FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.StartThrowHash,
                                         AnimatorParametersHash.Instance.StartThrowName,
                                         AnimatorParametersHash.Instance.StartThrowEnable,
                                         CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                addOutput(FsmOutput.Cache);

                command.Handled = true;

                TurnOnUpperBodyOverlay(addOutput);

                return(true);
            },
                null, (int)ActionStateId.Grenade, null, 0, new[] { FsmInput.StartNearGrenade, FsmInput.StartFarGrenade });

            #endregion

            #region CommonNull to SpecialReload

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.SpecialReload))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.SpecialReloadHash,
                                             AnimatorParametersHash.Instance.SpecialReloadName,
                                             AnimatorParametersHash.Instance.SpecialReloadEnableValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;

                    TurnOnUpperBodyOverlay(addOutput);

                    return(true);
                }

                return(false);
            },
                null, (int)ActionStateId.SpecialReload, null, 0, new[] { FsmInput.SpecialReload });

            #endregion

            #endregion

            #region FullBody Animation Layer

            #region CommonNull to Gliding

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.Gliding))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.GlidingHash,
                                             AnimatorParametersHash.Instance.GlidingName,
                                             AnimatorParametersHash.Instance.GlidingEnableValue,
                                             CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;

                    return(true);
                }

                return(false);
            },
                null, (int)ActionStateId.Gliding, null, 0, new[] { FsmInput.Gliding });

            #endregion

            #region CommonNull to BuriedBomb

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.BuriedBomb))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.UseHash,
                                             AnimatorParametersHash.Instance.UseName,
                                             AnimatorParametersHash.Instance.UseEnableValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;

                    return(true);
                }

                return(false);
            },
                null, (int)ActionStateId.BuriedBomb, null, 0, new[] { FsmInput.BuriedBomb });

            #endregion

            #region CommonNull to DismantleBomb

            state.AddTransition(
                (command, addOutput) =>
            {
                if (command.IsMatch(FsmInput.DismantleBomb))
                {
                    FsmOutput.Cache.SetValue(AnimatorParametersHash.Instance.DismantleHash,
                                             AnimatorParametersHash.Instance.DismantleName,
                                             AnimatorParametersHash.Instance.DismantleEnableValue,
                                             CharacterView.FirstPerson | CharacterView.ThirdPerson, false);
                    addOutput(FsmOutput.Cache);

                    command.Handled = true;

                    return(true);
                }

                return(false);
            },
                null, (int)ActionStateId.DismantleBomb, null, 0, new[] { FsmInput.DismantleBomb });

            #endregion

            #endregion

            return(state);
        }