| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 | 
							- using System.Collections;
 
- using System.Collections.Generic;
 
- using UnityEngine;
 
- using System;
 
- namespace GraphProcessor
 
- {
 
- 	/// <summary>
 
- 	/// Tell that this field is will generate an input port
 
- 	/// </summary>
 
- 	[AttributeUsage(AttributeTargets.Field, AllowMultiple = false)]
 
- 	public class InputAttribute : Attribute
 
- 	{
 
- 		public string		name;
 
- 		public bool			allowMultiple = false;
 
- 		/// <summary>
 
- 		/// Mark the field as an input port
 
- 		/// </summary>
 
- 		/// <param name="name">display name</param>
 
- 		/// <param name="allowMultiple">is connecting multiple edges allowed</param>
 
- 		public InputAttribute(string name = null, bool allowMultiple = false)
 
- 		{
 
- 			this.name = name;
 
- 			this.allowMultiple = allowMultiple;
 
- 		}
 
- 	}
 
- 	/// <summary>
 
- 	/// Tell that this field is will generate an output port
 
- 	/// </summary>
 
- 	[AttributeUsage(AttributeTargets.Field, AllowMultiple = false)]
 
- 	public class OutputAttribute : Attribute
 
- 	{
 
- 		public string		name;
 
- 		public bool			allowMultiple = true;
 
- 		/// <summary>
 
- 		/// Mark the field as an output port
 
- 		/// </summary>
 
- 		/// <param name="name">display name</param>
 
- 		/// <param name="allowMultiple">is connecting multiple edges allowed</param>
 
- 		public OutputAttribute(string name = null, bool allowMultiple = true)
 
- 		{
 
- 			this.name = name;
 
- 			this.allowMultiple = allowMultiple;
 
- 		}
 
- 	}
 
- 	/// <summary>
 
- 	/// Creates a vertical port instead of the default horizontal one
 
- 	/// </summary>
 
- 	[AttributeUsage(AttributeTargets.Field, AllowMultiple = false)]
 
- 	public class VerticalAttribute : Attribute
 
- 	{
 
- 	}
 
- 	/// <summary>
 
- 	/// Register the node in the NodeProvider class. The node will also be available in the node creation window.
 
- 	/// </summary>
 
- 	[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
 
- 	public class NodeMenuItemAttribute : Attribute
 
- 	{
 
- 		public string	menuTitle;
 
- 		public Type		onlyCompatibleWithGraph;
 
- 		/// <summary>
 
- 		/// Register the node in the NodeProvider class. The node will also be available in the node creation window.
 
- 		/// </summary>
 
- 		/// <param name="menuTitle">Path in the menu, use / as folder separators</param>
 
- 		public NodeMenuItemAttribute(string menuTitle = null, Type onlyCompatibleWithGraph = null)
 
- 		{
 
- 			this.menuTitle = menuTitle;
 
- 			this.onlyCompatibleWithGraph = onlyCompatibleWithGraph;
 
- 		}
 
- 	}
 
- 	/// <summary>
 
- 	/// Set a custom drawer for a field. It can then be created using the FieldFactory
 
- 	/// </summary>
 
- 	[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
 
- 	[Obsolete("You can use the standard Unity CustomPropertyDrawer instead.")]
 
- 	public class FieldDrawerAttribute : Attribute
 
- 	{
 
- 		public Type		fieldType;
 
- 		/// <summary>
 
- 		/// Register a custom view for a type in the FieldFactory class
 
- 		/// </summary>
 
- 		/// <param name="fieldType"></param>
 
- 		public FieldDrawerAttribute(Type fieldType)
 
- 		{
 
- 			this.fieldType = fieldType;
 
- 		}
 
- 	}
 
- 	/// <summary>
 
- 	/// Allow you to customize the input function of a port
 
- 	/// </summary>
 
- 	[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
 
- 	public class CustomPortInputAttribute : Attribute
 
- 	{
 
- 		public string	fieldName;
 
- 		public Type		inputType;
 
- 		public bool		allowCast;
 
- 		/// <summary>
 
- 		/// Allow you to customize the input function of a port.
 
- 		/// See CustomPortsNode example in Samples.
 
- 		/// </summary>
 
- 		/// <param name="fieldName">local field of the node</param>
 
- 		/// <param name="inputType">type of input of the port</param>
 
- 		/// <param name="allowCast">if cast is allowed when connecting an edge</param>
 
- 		public CustomPortInputAttribute(string fieldName, Type inputType, bool allowCast = true)
 
- 		{
 
- 			this.fieldName = fieldName;
 
- 			this.inputType = inputType;
 
- 			this.allowCast = allowCast;
 
- 		}
 
- 	}
 
- 	/// <summary>
 
- 	/// Allow you to customize the input function of a port
 
- 	/// </summary>
 
- 	[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
 
- 	public class CustomPortOutputAttribute : Attribute
 
- 	{
 
- 		public string	fieldName;
 
- 		public Type		outputType;
 
- 		public bool		allowCast;
 
- 		/// <summary>
 
- 		/// Allow you to customize the output function of a port.
 
- 		/// See CustomPortsNode example in Samples.
 
- 		/// </summary>
 
- 		/// <param name="fieldName">local field of the node</param>
 
- 		/// <param name="inputType">type of input of the port</param>
 
- 		/// <param name="allowCast">if cast is allowed when connecting an edge</param>
 
- 		public CustomPortOutputAttribute(string fieldName, Type outputType, bool allowCast = true)
 
- 		{
 
- 			this.fieldName = fieldName;
 
- 			this.outputType = outputType;
 
- 			this.allowCast = allowCast;
 
- 		}
 
- 	}
 
- 	/// <summary>
 
- 	/// Allow you to modify the generated port view from a field. Can be used to generate multiple ports from one field.
 
- 	/// </summary>
 
- 	[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
 
- 	public class CustomPortBehaviorAttribute : Attribute
 
- 	{
 
- 		public string		fieldName;
 
- 		/// <summary>
 
- 		/// Allow you to modify the generated port view from a field. Can be used to generate multiple ports from one field.
 
- 		/// You must add this attribute on a function of this signature
 
- 		/// <code>
 
- 		/// IEnumerable<PortData> MyCustomPortFunction(List<SerializableEdge> edges);
 
- 		/// </code>
 
- 		/// </summary>
 
- 		/// <param name="fieldName">local node field name</param>
 
- 		public CustomPortBehaviorAttribute(string fieldName)
 
- 		{
 
- 			this.fieldName = fieldName;
 
- 		}
 
- 	}
 
- 	/// <summary>
 
- 	/// Allow to bind a method to generate a specific set of ports based on a field type in a node
 
- 	/// </summary>
 
- 	[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
 
- 	public class CustomPortTypeBehavior : Attribute
 
- 	{
 
- 		/// <summary>
 
- 		/// Target type
 
- 		/// </summary>
 
- 		public Type type;
 
- 		public CustomPortTypeBehavior(Type type)
 
- 		{
 
- 			this.type = type;
 
- 		}
 
- 	}
 
- 	/// <summary>
 
- 	/// Allow you to have a custom view for your stack nodes
 
- 	/// </summary>
 
- 	[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
 
- 	public class CustomStackNodeView : Attribute
 
- 	{
 
- 		public Type	stackNodeType;
 
- 		/// <summary>
 
- 		/// Allow you to have a custom view for your stack nodes
 
- 		/// </summary>
 
- 		/// <param name="stackNodeType">The type of the stack node you target</param>
 
- 		public CustomStackNodeView(Type stackNodeType)
 
- 		{
 
- 			this.stackNodeType = stackNodeType;
 
- 		}
 
- 	}
 
- 	[AttributeUsage(AttributeTargets.Field, AllowMultiple = false)]
 
- 	public class VisibleIf : Attribute
 
- 	{
 
- 		public string fieldName;
 
- 		public object value;
 
- 		public VisibleIf(string fieldName, object value)
 
- 		{
 
- 			this.fieldName = fieldName;
 
- 			this.value = value;
 
- 		}
 
- 	}
 
- 	[AttributeUsage(AttributeTargets.Field, AllowMultiple = false)]
 
- 	public class ShowInInspector : Attribute
 
- 	{
 
- 		public bool showInNode;
 
- 		public ShowInInspector(bool showInNode = false)
 
- 		{
 
- 			this.showInNode = showInNode;
 
- 		}
 
- 	}
 
- 	
 
- 	[AttributeUsage(AttributeTargets.Field, AllowMultiple = false)]
 
- 	public class ShowAsDrawer : Attribute
 
- 	{
 
- 	}
 
- 	
 
- 	[AttributeUsage(AttributeTargets.Field)]
 
- 	public class SettingAttribute : Attribute
 
- 	{
 
- 		public string name;
 
- 		public SettingAttribute(string name = null)
 
- 		{
 
- 			this.name = name;
 
- 		}
 
- 	}
 
- 	[AttributeUsage(AttributeTargets.Method)]
 
- 	public class IsCompatibleWithGraph : Attribute {}
 
- }
 
 
  |