first commit
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user