first commit
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using NodeCanvas.Framework;
|
||||
using ParadoxNotion.Design;
|
||||
using UnityEngine;
|
||||
|
||||
|
||||
namespace NodeCanvas.BehaviourTrees
|
||||
{
|
||||
|
||||
[System.Obsolete]
|
||||
[Category("Mutators (beta)")]
|
||||
[Name("Node Toggler")]
|
||||
[Description("Enable, Disable or Toggle one or more nodes with provided tag. In practise their incomming connections are disabled\nBeta Feature!")]
|
||||
public class NodeToggler : BTNode
|
||||
{
|
||||
|
||||
public enum ToggleMode
|
||||
{
|
||||
Enable,
|
||||
Disable,
|
||||
Toggle
|
||||
}
|
||||
|
||||
public ToggleMode toggleMode = ToggleMode.Toggle;
|
||||
public string targetNodeTag;
|
||||
|
||||
private List<Node> targetNodes;
|
||||
|
||||
public override void OnGraphStarted() {
|
||||
targetNodes = graph.GetNodesWithTag<Node>(targetNodeTag).ToList();
|
||||
}
|
||||
|
||||
protected override Status OnExecute(Component agent, IBlackboard blackboard) {
|
||||
|
||||
if ( string.IsNullOrEmpty(targetNodeTag) )
|
||||
return Status.Failure;
|
||||
|
||||
if ( targetNodes.Count == 0 ) return Status.Failure;
|
||||
|
||||
if ( toggleMode == ToggleMode.Enable ) {
|
||||
foreach ( var node in targetNodes )
|
||||
node.inConnections[0].isActive = true;
|
||||
}
|
||||
|
||||
if ( toggleMode == ToggleMode.Disable ) {
|
||||
foreach ( var node in targetNodes )
|
||||
node.inConnections[0].isActive = false;
|
||||
}
|
||||
|
||||
if ( toggleMode == ToggleMode.Toggle ) {
|
||||
foreach ( var node in targetNodes )
|
||||
node.inConnections[0].isActive = !node.inConnections[0].isActive;
|
||||
}
|
||||
|
||||
return Status.Success;
|
||||
}
|
||||
|
||||
///----------------------------------------------------------------------------------------------
|
||||
///---------------------------------------UNITY EDITOR-------------------------------------------
|
||||
#if UNITY_EDITOR
|
||||
|
||||
protected override void OnNodeGUI() {
|
||||
GUILayout.Label(string.Format("{0} '{1}'", toggleMode.ToString(), targetNodeTag));
|
||||
}
|
||||
|
||||
protected override void OnNodeInspectorGUI() {
|
||||
targetNodeTag = EditorUtils.Popup<string>("Node Tag", targetNodeTag, graph.GetAllTagedNodes<Node>().Select(n => n.tag));
|
||||
toggleMode = (ToggleMode)UnityEditor.EditorGUILayout.EnumPopup("Toggle Mode", toggleMode);
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user