IndieGame/client/Assets/ParadoxNotion/NodeCanvas/_DeprecatedFiles/Legacy_EnterExitState.cs
DOBEST\zhaoyingjie f242607587 初始化工程
2024-10-11 10:12:15 +08:00

90 lines
3.3 KiB
C#

using NodeCanvas.Framework;
using ParadoxNotion.Design;
using UnityEngine;
namespace NodeCanvas.StateMachines
{
[Name("Enter | Exit")]
[Description("Execute a number of Actions when the FSM enters/starts and when it exits/stops. This is not a state.")]
[Color("ff64cb")]
[ParadoxNotion.Design.Icon("MacroIn")]
[System.Obsolete("Use On FSM Enter and On FSM Exit nodes")]
public class EnterExitState : FSMNode, IUpdatable
{
[SerializeField] private ActionList _actionListEnter;
[SerializeField] private ActionList _actionListExit;
public ActionList actionListEnter {
get { return _actionListEnter; }
set { _actionListEnter = value; }
}
public ActionList actionListExit {
get { return _actionListExit; }
set { _actionListExit = value; }
}
public override string name => base.name.ToUpper();
public override int maxInConnections => 0;
public override int maxOutConnections => 0;
public override bool allowAsPrime => false;
///----------------------------------------------------------------------------------------------
public override void OnValidate(Graph assignedGraph) {
if ( actionListEnter == null ) {
actionListEnter = (ActionList)Task.Create(typeof(ActionList), assignedGraph);
actionListEnter.executionMode = ActionList.ActionsExecutionMode.ActionsRunInParallel;
}
if ( actionListExit == null ) {
actionListExit = (ActionList)Task.Create(typeof(ActionList), assignedGraph);
actionListExit.executionMode = ActionList.ActionsExecutionMode.ActionsRunInParallel;
}
}
public override void OnGraphStarted() {
status = actionListEnter.Execute(graphAgent, graphBlackboard);
}
public override void OnGraphStoped() {
actionListExit.Execute(graphAgent, graphBlackboard);
actionListExit.EndAction(null);
actionListEnter.EndAction(null);
}
void IUpdatable.Update() {
if ( status == Status.Running ) {
status = actionListEnter.Execute(graphAgent, graphBlackboard);
}
}
///----------------------------------------------------------------------------------------------
///---------------------------------------UNITY EDITOR-------------------------------------------
#if UNITY_EDITOR
protected override void OnNodeGUI() {
GUILayout.BeginVertical(Styles.roundedBox);
GUILayout.Label(actionListEnter.summaryInfo);
GUILayout.EndVertical();
GUILayout.BeginVertical(Styles.roundedBox);
GUILayout.Label(actionListExit.summaryInfo);
GUILayout.EndVertical();
base.OnNodeGUI();
}
protected override void OnNodeInspectorGUI() {
EditorUtils.CoolLabel("FSM Enter Actions");
actionListEnter.ShowListGUI();
actionListEnter.ShowNestedActionsGUI();
EditorUtils.BoldSeparator();
EditorUtils.CoolLabel("FSM Exit Actions");
actionListExit.ShowListGUI();
actionListExit.ShowNestedActionsGUI();
}
#endif
}
}