Files
beyond/Assets/ThirdParty/PlayMaker/Actions/BaseUpdateAction.cs
2024-11-20 15:21:28 +01:00

81 lines
1.4 KiB
C#

// (c) Copyright HutongGames, LLC. All rights reserved.
namespace HutongGames.PlayMaker.Actions
{
// Base class for actions that need to select Update, LateUpdate, or FixedUpdate
public abstract class BaseUpdateAction : FsmStateAction
{
public enum UpdateType
{
OnUpdate,
OnLateUpdate,
OnFixedUpdate
}
[ActionSection("Update type")]
[Tooltip("Repeat every frame.")]
public bool everyFrame;
public UpdateType updateType;
public abstract void OnActionUpdate();
public override void Reset()
{
everyFrame = false;
updateType = UpdateType.OnUpdate;
}
public override void OnPreprocess()
{
if (updateType == UpdateType.OnFixedUpdate)
{
Fsm.HandleFixedUpdate = true;
}
else if (updateType == UpdateType.OnLateUpdate)
{
Fsm.HandleLateUpdate = true;
}
}
public override void OnUpdate()
{
if (updateType == UpdateType.OnUpdate)
{
OnActionUpdate();
}
if (!everyFrame)
{
Finish();
}
}
public override void OnLateUpdate()
{
if (updateType == UpdateType.OnLateUpdate)
{
OnActionUpdate();
}
if (!everyFrame)
{
Finish();
}
}
public override void OnFixedUpdate()
{
if (updateType == UpdateType.OnFixedUpdate)
{
OnActionUpdate();
}
if (!everyFrame)
{
Finish();
}
}
}
}