API ReferenceFacepunch.ActionGraphs

NodeLibraryclass

Contains a library of `Facepunch.ActionGraphs.NodeDefinition`s, each with a unique identifier. Custom node definitions can be added with `Facepunch.ActionGraphs.NodeLibrary.Add(Facepunch.ActionGraphs.NodeDefinition)`, or from methods marked with either `!:ActionNodeAttribute` or `!:ExpressionNodeAttribute` when using `Facepunch.ActionGraphs.NodeLibrary.AddAssembly(System.Reflection.Assembly)`.

objectNodeLibrary
Namespace
Facepunch.ActionGraphs
Assembly
Facepunch.ActionGraphs
Declaration
public sealed class Facepunch.ActionGraphs.NodeLibrary

Constructors1

Showing 1 constructors

public NodeLibrary(Facepunch.ActionGraphs.ITypeLoader typeLoader, Facepunch.ActionGraphs.IGraphLoader graphLoader = null)PUBLICCONSTRUCTOR

Contains a library of `Facepunch.ActionGraphs.NodeDefinition`s, each with a unique identifier. An `Facepunch.ActionGraphs.ITypeLoader` is required to wrap reflection methods. Use an `Facepunch.ActionGraphs.DefaultTypeLoader` if no access control is needed.

ParameterTypeDescription
typeLoaderITypeLoader
graphLoader = nullIGraphLoader

Methods17

Showing 17 methods

public void Add(Facepunch.ActionGraphs.NodeDefinition definition)PUBLIC

Add a custom node definition. The `Facepunch.ActionGraphs.NodeDefinition.Identifier` must be unique in this library. See also `Facepunch.ActionGraphs.NodeLibrary.AddAssembly(System.Reflection.Assembly)` for an easier way to implement custom nodes.

ParameterTypeDescription
definitionNodeDefinitionCustom node definition to add.
Returns:void

public Facepunch.ActionGraphs.AddAssemblyResult AddAssembly(System.Reflection.Assembly asm)PUBLIC

Adds a node definition for each method annotated with either `!:ActionNodeAttribute` or `Facepunch.ActionGraphs.ExpressionNodeDefinition` in the given assembly.

ParameterTypeDescription
asmAssembly

public bool CanCacheType(System.Type type)PUBLIC

ParameterTypeDescription
typeType
Returns:bool

public void ClearReflectionCache()PUBLIC

Returns:void

public void InvalidateDefaultBindings()PUBLIC

Returns:void

public bool IsProperty(System.Reflection.ParameterInfo parameter)PUBLIC

Returns true if the given parameter should be a property on a node, rather than an input or output.

ParameterTypeDescription
parameterParameterInfoParameter to test.
Returns:bool

public bool IsPure(System.Reflection.MethodBase method)PUBLIC

Returns true if the given method has been marked as pure. Pure methods have no (visible) side effects, and so can be turned into expression nodes.

ParameterTypeDescription
methodMethodBaseMethod to test.
Returns:bool

public bool IsTarget(System.Reflection.ParameterInfo parameter)PUBLIC

ParameterTypeDescription
parameterParameterInfo
Returns:bool

public bool RemoveAssembly(System.Reflection.Assembly assembly)PUBLIC

ParameterTypeDescription
assemblyAssembly
Returns:bool

public void Reset()PUBLIC

Removes all custom node definitions from this library.

Returns:void

Properties14

Showing 14 properties

public System.Collections.Generic.IReadOnlyDictionary`2<string,Facepunch.ActionGraphs.NodeDefinition> Facepunch.ActionGraphs.NodeLibrary.All { get; set; }PUBLICGETSET

Dictionary of all added definitions, indexed by their `Facepunch.ActionGraphs.NodeDefinition.Identifier`s.

Returns:IReadOnlyDictionary<string,NodeDefinition>

public Facepunch.ActionGraphs.NodeDefinition Facepunch.ActionGraphs.NodeLibrary.Comment { get; set; }PUBLICGETSET

A node with no inputs or outputs, only metadata. Useful for holding documentation.

Returns:NodeDefinition

public Facepunch.ActionGraphs.NodeDefinition Facepunch.ActionGraphs.NodeLibrary.Input { get; set; }PUBLICGETSETINGEST

Node definition for the entry point of the graph. Each graph can only have one such entry point.

Returns:NodeDefinition

public Facepunch.ActionGraphs.NodeDefinition Facepunch.ActionGraphs.NodeLibrary.InputValue { get; set; }PUBLICGETSETINGEST

Helper node for accessing a graph input parameter.

Returns:NodeDefinition

public Facepunch.ActionGraphs.NodeDefinition Facepunch.ActionGraphs.NodeLibrary.NewInstance { get; set; }PUBLICGETSET

Node definition for calling a constructor to create an instance.

Returns:NodeDefinition

public Facepunch.ActionGraphs.NodeDefinition Facepunch.ActionGraphs.NodeLibrary.NoOperation { get; set; }PUBLICGETSET

A node that does nothing, just forwards an input to its output.

Returns:NodeDefinition

public Facepunch.ActionGraphs.NodeDefinition Facepunch.ActionGraphs.NodeLibrary.Output { get; set; }PUBLICGETSET

Node definition for output signals of the graph. Each graph can have at most one primary output.

Returns:NodeDefinition

On this page

Constructorspublic NodeLibrary(Facepunch.ActionGraphs.ITypeLoader typeLoader, Facepunch.ActionGraphs.IGraphLoader graphLoader = null)Methodspublic System.Void Add(Facepunch.ActionGraphs.NodeDefinition definition)public Facepunch.ActionGraphs.AddAssemblyResult AddAssembly(System.Reflection.Assembly asm)public System.Boolean CanCacheType(System.Type type)public System.Void ClearReflectionCache()public Facepunch.ActionGraphs.NodeDefinition Get(System.Linq.Expressions.ExpressionType expressionType)public Facepunch.ActionGraphs.NodeDefinition Get(System.Reflection.MethodInfo method)public Facepunch.ActionGraphs.NodeDefinition Get(System.String identifier)public Facepunch.ActionGraphs.NodeDefinition Get(System.Type declaringType, System.String methodName)public Facepunch.ActionGraphs.NodeDefinition Get(T func)public System.Collections.Generic.IEnumerable`1<Facepunch.ActionGraphs.ActionGraph> GetGraphs()public System.Collections.Generic.IEnumerable`1<Facepunch.ActionGraphs.ActionGraph> GetGraphs(System.Guid guid)public System.Void InvalidateDefaultBindings()public System.Boolean IsProperty(System.Reflection.ParameterInfo parameter)public System.Boolean IsPure(System.Reflection.MethodBase method)public System.Boolean IsTarget(System.Reflection.ParameterInfo parameter)public System.Boolean RemoveAssembly(System.Reflection.Assembly assembly)public System.Void Reset()Propertiespublic System.Collections.Generic.IReadOnlyDictionary`2<System.String,Facepunch.ActionGraphs.NodeDefinition> Facepunch.ActionGraphs.NodeLibrary.All { get; set; }public Facepunch.ActionGraphs.NodeDefinition Facepunch.ActionGraphs.NodeLibrary.CallMethod { get; set; }public Facepunch.ActionGraphs.NodeDefinition Facepunch.ActionGraphs.NodeLibrary.Comment { get; set; }public Facepunch.ActionGraphs.NodeDefinition Facepunch.ActionGraphs.NodeLibrary.Constant { get; set; }public Facepunch.ActionGraphs.NodeDefinition Facepunch.ActionGraphs.NodeLibrary.Graph { get; set; }public Facepunch.ActionGraphs.IGraphLoader Facepunch.ActionGraphs.NodeLibrary.GraphLoader { get; set; }public Facepunch.ActionGraphs.NodeDefinition Facepunch.ActionGraphs.NodeLibrary.Input { get; set; }public Facepunch.ActionGraphs.NodeDefinition Facepunch.ActionGraphs.NodeLibrary.InputValue { get; set; }public Facepunch.ActionGraphs.NodeDefinition Facepunch.ActionGraphs.NodeLibrary.NewInstance { get; set; }public Facepunch.ActionGraphs.NodeDefinition Facepunch.ActionGraphs.NodeLibrary.NoOperation { get; set; }public Facepunch.ActionGraphs.NodeDefinition Facepunch.ActionGraphs.NodeLibrary.Output { get; set; }public Facepunch.ActionGraphs.NodeDefinition Facepunch.ActionGraphs.NodeLibrary.Property { get; set; }public Facepunch.ActionGraphs.ITypeLoader Facepunch.ActionGraphs.NodeLibrary.TypeLoader { get; set; }public Facepunch.ActionGraphs.NodeDefinition Facepunch.ActionGraphs.NodeLibrary.Variable { get; set; }Metadata