75 lines
1.7 KiB
C#
75 lines
1.7 KiB
C#
using UnityEngine;
|
|
|
|
namespace Unity.VisualScripting
|
|
{
|
|
[AddComponentMenu("Visual Scripting/State Machine")]
|
|
[RequireComponent(typeof(Variables))]
|
|
[DisableAnnotation]
|
|
[VisualScriptingHelpURL(typeof(StateMachine))]
|
|
public sealed class StateMachine : EventMachine<StateGraph, StateGraphAsset>
|
|
{
|
|
protected override void OnEnable()
|
|
{
|
|
if (hasGraph)
|
|
{
|
|
using (var flow = Flow.New(reference))
|
|
{
|
|
graph.Start(flow);
|
|
}
|
|
}
|
|
|
|
base.OnEnable();
|
|
}
|
|
|
|
protected override void OnInstantiateWhileEnabled()
|
|
{
|
|
if (hasGraph)
|
|
{
|
|
using (var flow = Flow.New(reference))
|
|
{
|
|
graph.Start(flow);
|
|
}
|
|
}
|
|
|
|
base.OnInstantiateWhileEnabled();
|
|
}
|
|
|
|
protected override void OnUninstantiateWhileEnabled()
|
|
{
|
|
base.OnUninstantiateWhileEnabled();
|
|
|
|
if (hasGraph)
|
|
{
|
|
using (var flow = Flow.New(reference))
|
|
{
|
|
graph.Stop(flow);
|
|
}
|
|
}
|
|
}
|
|
|
|
protected override void OnDisable()
|
|
{
|
|
base.OnDisable();
|
|
|
|
if (hasGraph)
|
|
{
|
|
using (var flow = Flow.New(reference))
|
|
{
|
|
graph.Stop(flow);
|
|
}
|
|
}
|
|
}
|
|
|
|
[ContextMenu("Show Data...")]
|
|
protected override void ShowData()
|
|
{
|
|
base.ShowData();
|
|
}
|
|
|
|
public override StateGraph DefaultGraph()
|
|
{
|
|
return StateGraph.WithStart();
|
|
}
|
|
}
|
|
}
|