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)`.

object→NodeLibrary
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