IndieGame/client/Assets/ParadoxNotion/NodeCanvas/_DeprecatedFiles/Legacy_RootSwitcher.cs

52 lines
1.5 KiB
C#
Raw Permalink Normal View History

2024-10-11 10:12:15 +08:00
using System.Linq;
using NodeCanvas.Framework;
using ParadoxNotion.Design;
using UnityEngine;
namespace NodeCanvas.BehaviourTrees
{
[System.Obsolete]
[Category("Mutators (beta)")]
[Name("Root Switcher")]
[Description("Switch the root node of the behaviour tree to a new one defined by tag\nBeta Feature!")]
public class RootSwitcher : BTNode
{
public string targetNodeTag;
private Node targetNode;
public override void OnGraphStarted() {
targetNode = graph.GetNodeWithTag<Node>(targetNodeTag);
}
protected override Status OnExecute(Component agent, IBlackboard blackboard) {
if ( string.IsNullOrEmpty(targetNodeTag) )
return Status.Failure;
if ( targetNode == null ) return Status.Failure;
if ( graph.primeNode != targetNode )
graph.primeNode = targetNode;
return Status.Success;
}
///----------------------------------------------------------------------------------------------
///---------------------------------------UNITY EDITOR-------------------------------------------
#if UNITY_EDITOR
protected override void OnNodeGUI() {
GUILayout.Label("Switch To '" + targetNodeTag + "'");
}
protected override void OnNodeInspectorGUI() {
targetNodeTag = EditorUtils.Popup<string>("Node Tag", targetNodeTag, graph.GetAllTagedNodes<Node>().Select(n => n.tag));
}
#endif
}
}