81 lines
1.4 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
} |