TurnBasedStrategyCourse/Library/PackageCache/com.unity.probuilder@5.1.0/Editor/StateMachines/ShapeState.cs

62 lines
1.5 KiB
C#

using System;
using UnityEngine;
namespace UnityEditor.ProBuilder
{
[Serializable]
abstract class ShapeState
{
public static ShapeState s_defaultState;
public ShapeState m_nextState = null;
public static DrawShapeTool tool;
public static ShapeState StartStateMachine()
{
if(tool == null)
{
Debug.LogError("Cannot start FSM, no tool associated to the FSM");
return null;
}
else if(s_defaultState == null)
{
Debug.LogError("Cannot start FSM, default state has not be set");
return null;
}
s_defaultState.InitState();
return s_defaultState;
}
protected virtual void InitState()
{
}
public abstract ShapeState DoState(Event evt);
protected virtual void EndState()
{
}
protected virtual ShapeState NextState()
{
EndState();
if(m_nextState == null)
return ResetState();
m_nextState.InitState();
SceneView.RepaintAll();
return m_nextState;
}
public static ShapeState ResetState()
{
if (tool.m_ProBuilderShape != null)
UnityEngine.Object.DestroyImmediate(tool.m_ProBuilderShape.gameObject);
s_defaultState.InitState();
SceneView.RepaintAll();
return s_defaultState;
}
}
}