62 lines
1.3 KiB
C#
62 lines
1.3 KiB
C#
// (c) Copyright HutongGames, LLC 2010-2013. All rights reserved.
|
|
|
|
using UnityEngine;
|
|
|
|
namespace HutongGames.PlayMaker.Actions
|
|
{
|
|
[ActionCategory(ActionCategory.Time)]
|
|
[Tooltip("Scales time: 1 = normal, 0.5 = half speed, 2 = double speed.")]
|
|
public class ScaleTime : FsmStateAction
|
|
{
|
|
[RequiredField]
|
|
[HasFloatSlider(0,4)]
|
|
[Tooltip("Scales time: 1 = normal, 0.5 = half speed, 2 = double speed.")]
|
|
public FsmFloat timeScale;
|
|
|
|
[Tooltip("Adjust the fixed physics time step to match the time scale.")]
|
|
public FsmBool adjustFixedDeltaTime;
|
|
|
|
[Tooltip("Repeat every frame. Useful when animating the value.")]
|
|
public bool everyFrame;
|
|
|
|
public override void Reset()
|
|
{
|
|
timeScale = 1.0f;
|
|
adjustFixedDeltaTime = true;
|
|
everyFrame = false;
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
DoTimeScale();
|
|
|
|
if (!everyFrame)
|
|
{
|
|
Finish();
|
|
}
|
|
}
|
|
public override void OnUpdate()
|
|
{
|
|
DoTimeScale();
|
|
}
|
|
|
|
void DoTimeScale()
|
|
{
|
|
Time.timeScale = timeScale.Value;
|
|
|
|
if (adjustFixedDeltaTime.Value)
|
|
{
|
|
//TODO: how to get the user set default value?
|
|
Time.fixedDeltaTime = 0.02f * Time.timeScale;
|
|
}
|
|
}
|
|
|
|
#if UNITY_EDITOR
|
|
public override string AutoName()
|
|
{
|
|
return ActionHelpers.AutoName(this, timeScale);
|
|
}
|
|
#endif
|
|
|
|
}
|
|
} |