Skip to content

List of All Nodes

Every node you can add to a verb, grouped the way the Add Node menu groups them. There are 148. Use the search box, or your browser’s find, to jump to one.

Nodes marked Runnable take a turn in an ActionVerb’s sequence, so they only appear in ActionVerbs. The rest supply or transform values and work in any verb. See Nodes for how ports and runnable nodes work.

Most used: Print Text, Offer Choices, Get Instances, Run Action Verb, Run Value Verb.

AddPropertiesNode

The AddPropertiesNode is used to add a property or properties to a noun instance. It can accept a list of properties and/or multiple property inputs.

AddRelationshipNode

The AddRelationshipNode is used to create relationships between instances. It takes two instances, a relationship, and a designation for which one is the source or destination.

GetPropertiesNode

The GetPropertiesNode returns all properties of a given instance.

GetPropertyModifierNode

The GetPropertyModifierNode is used to get the property modifier of a PropertyInstance object based on its type.

GetPropertyNamedValueNode

The GetPropertyNamedValueNode is used to access a Named Value on a PropertyInstance. Named Values are similar to variables, but they are assigned on a PropertyScriptableObject and cannot be changed during runtime.

GetPropertyNode

The GetPropertyNode is used to retrieve a property instance from a NounInstances in the Narramancer system.

GetRelationshipNode

The GetRelationshipNode is used to get a relationship between two instances.

GetRelationshipsNode

The GetRelationshipsNode returns a list of all relationships with the given type from a given instance.

GetStatNode

The GetStatNode is used to get a stat from a given NounInstance, providing outputs for whether the noun has that stat (boolean), the number value of the stat (float), and the number value of the stat as a percentage (for convenience, only applicable if the stat has set min and max values).

ModifyStatNode

The ModifyStatNode is used to modify a stat value for a given NounInstance. It allows you to increase, decrease, or set a specific stat’s value, with optional constraints.

RemovePropertiesNode

The RemovePropertiesNode is used to remove a property or properties from a NounInstance. It accepts a list of PropertyScriptableObject instances, which represent the properties to be removed.

RemoveRelationshipNode

The RemoveRelationshipNode is used to remove relationships between NounInstances.

GetFlagNode

The GetFlagNode is used to get the current value of a given flag.

IsFlagRaisedNode

The IsFlagRaisedNode returns true if the given flag is raised.

RaiseFlagNode

The RaiseFlagNode is used to raise the given flag.

RemoveFlagNode

The RemoveFlagNode is used to ‘remove’ a flag, meaning the flag is no longer raised.

SetFlagNode

The SetFlagNode set the given flag to the given value. Setting a flag to 1 or more is the same as ‘raising’ it, setting it to 0 is the same as ‘removing’ it.

ChoiceNode

A companion to the OfferChoicesNode, the ChoiceNode represents a single choice that can be offered to the player.

A screenshot of an OfferChoicesNode and two connected ChoiceNodes.

ChoosePrioritizedBranchNode

The ChoosePrioritizedBranchNode can be used to continuously consider conditional logic and run one of several runnable chains based on which one is highest priority. It depends on one or more PrioritizedBranchNodes being connected to it, which each have a boolean condition and a chain of RunnableNodes.

When running, the ChoosePrioritizedBranchNode will run an update after some amount of time (determined by the Refresh Delay value in milliseconds). During this update, each connected PrioritizedBranchNode will be evaluated, from top to bottom. The first one with a condition that evaluates to true will be run. If a branch was already running, and a higher branch becomes true, the running branch is stopped so the new branch can run.

Additional runnable connections are provided on the ChoosePrioritizedBranchNode which will run under their specific conditions:

ConditionalNode

The ConditionalNode is used to create a flow-based decision based on a boolean condition. This node has an input port for the condition and two output ports for actions depending on whether the condition is true or false.

ForLoopNode

The ForLoopNode is used to create a ‘for loop’, executing the connected RunnableNodes a number of times based on the starting and ending values.

OfferChoicesNode

The OfferChoicesNode displays any connected ChoiceNodes to the player as buttons and waits for them to select one.

A screenshot of an OfferChoicesNode and two connected ChoiceNodes.

OfferObjectsAsChoicesNode

The OfferObjectsAsChoicesNode is used to present a list of choices to the player, enabling them to select an object or value from the list. When the player selects a choice, the associated action is executed, and control is passed to the next node in the flow.

ParallelNode

The ParallelNode is used to create parallel execution flow by running all connected RunnableNodes simultaneously.

PrioritizedBranchNode

Used by the ChoosePrioritizedBranchNode, the PrioritizedBranchNode represents a possible prioritized branch that can be chosen if it’s input condition is true.

RandomNextNode

The RandomNextNode randomly selects and runs one of its connected RunnableNodes.

RollNode

The RollNode is used randomly run one of the two connected RunnableNodes. A ‘roll’ is performed, choosing a random float value between 0.0 and 1.0. If the value is higher than the given threshold than the top chain is taken, otherwise the bottom.

RouteNode

The RouteNodes are provided for organization. They simply consolidate or reroute RunnableNode connections.

SequenceOfNodesNode

The SequenceOfNodesNode allows you to define a series of RunnableNodes that should be executed one after another in the order they are positioned vertically.

StopNodeRunnerNode

The StopNodeRunnerNode is used to stop and reset the execution of a node runner.

SwitchOnIntNode

The SwitchOnIntNode selects a connected RunnableNode based on an input int value.

WaitNode

The WaitNode creates a pause for the given duration.

WaitUntilNode

The WaitUntilNode waits until a specific condition is met before continuing the execution of other nodes. The refresh delay determines (in milliseconds) how often the condition should be checked for changes. When the condition becomes true, the node will resume the execution of the following nodes in the flow.

FindChildTransformNode

The FindChildTransformNode is used to find a child transform given a GameObject based on the specified name. It also provides that child’s game object and world position for convenience.

FindGameObjectWithNameNode

The FindGameObjectWithNameNode is used to find and return a GameObject with a specific name in the scene during gameplay.

FindGameObjectWithTagNode

The FindGameObjectWithTagNode is used to find and return a GameObject with a specific tag in the Unity scene during runtime.

GetCameraNode

The GetCameraNode is used to obtain the camera. Its transform and world position are also provided for convenience.

GetComponentNode

The GetComponentNode is used to obtain a component from a given GameObject in Unity, either direct or by including all descendants. The type of the component must be given.

GetInstanceSpriteNode

The GetInstanceSpriteNode is used retrieve a Sprite value from a given NounInstance (specifically the instances Blackboard).

MoveNavMeshAgentNode

The MoveNavMeshAgentNode walks a NavMeshAgent to a target position, or after a moving Transform. With Wait on, the verb carries on only once the agent arrives. A save made mid-walk resumes the walk after a load. The agent’s GameObject needs a Saveable. Requires the built-in AI module.

SetGameObjectActiveNode

The SetGameObjectActiveNode sets whether a given GameObject is active or not.

SetImageSpriteNode

The SetImageSpriteNode takes in a Unity.Image and assigns the given sprite to it.

SetTextNode

The SetTextNode assigns the text value of a Unity Text component.

TranslateGameObjectNode

The TranslateGameObjectNode moves a GameObject, over a duration, at a speed, or immediately. A save made mid-move resumes the move after a load, and a verb waiting for it carries on when it arrives. The GameObject needs a Saveable; without one, Narramancer logs a warning when the move starts.

TweenGameObjectRotationNode

The TweenGameObjectRotationNode rotates a GameObject over time. A save made mid-turn resumes the turn after a load. The GameObject needs a Saveable; without one, Narramancer logs a warning when the tween starts.

UnityObjectNode

The UnityObjectNode allows you to reference a UnityObject, such as a ScriptableObject, within a Verb.

ListAnyNode

The ListAnyNode returns true if the given list has one or more elements in it. The type of elements must be assigned.

ListAverageNode

The ListAverageNode is used to calculate the average value of elements within a list. The node takes an input list, processes each element using a predicate (ValueVerb), and calculates the average value of these elements.

Choose One Random Element from List Runnable

Section titled “Choose One Random Element from List Runnable”

ListChooseOneNode

The ListChooseOneNode randomly selects a single element from a list. The type of elements must be assigned.

ListContainsNode

The ListContainsNode returns true if the given element is contained in the given list, and false otherwise.

ListCountNode

The ListCountNode is used to count the number of elements in a list. The type of elements must be assigned.

ListFilterNode

The ListFilterNode is used to filter elements in a list based on a predicate. A ValueVerb must be assigned as the predicate with the appropriate inputs and output (one boolean). The resulting list will be all elements from the input list that passed the predicate. The type of elements must be assigned.

ListFirstNode

The ListFirstNode returns the first element out of the given list.

ListForEachNode

The ListForEachNode iterates over a given list and runs the connected RunnableNode for each one.

ListOrderNode

The ListOrderNode is used to sort a list based on a predicate and returns the sorted list as output.

ListSelectNode

The ListSelectNode is used to select or transfrom elements from a a given list based on a predicate.

ListSubtractNode

The ListSubtractNode is used to subtract elements from one given list from another list.

ListSumNode

The ListSumNode is used to calculate the sum of a list of elements. The value of each element is determined by the given predicate (ValueVerb).

ListUnionNode

The ListUnionNode performs a union on the two given lists. Additional elements can also be attached individually to the ‘elements’ port that will also be added to the resulting list. The operation is specifically a union, meaning that each unique element will only appear at most once in the output list.

AndNode

The purpose of the AndNode is to perform a logical AND operation on its input ports. When all connected input ports return true, the output result will also be true. If any connected input port returns false, the output result will be false.

AreEqualNode

The AreEqualNode is used to compare two objects for equality. The values can be of any type, that type just needs to be chosen using the dropdown menu.

BoolNode

The BoolNode is used to create a literal bool value.

IsNotNullNode

The IsNotNullNode is used to check if an object is not null.

NotNode

The NotNode is used to invert the value of its input, returning the ‘not’ value.

OrNode

The OrNode is used to perform an OR logic operation in a flow-based system for game flow and logic called Narramancer. Any number of values can be connected to the node’s input port and the result is true if any of the inputs are true, or false if all inputs are false.

ArithmeticNode

The ArithmeticNode is used to perform basic arithmetic operations on two floating-point numbers, such as addition, subtraction, multiplication, and division.

ChooseFloatNode

The ChooseFloatNode takes in two float values and chooses between them based on a boolean condition, returning the appropriate one.

ChooseIntNode

The ChooseIntNode takes in two int values and chooses between them based on a boolean condition, returning the appropriate one.

ClampFloatNode

The ClampFloatNode is used to limit the value of a float within a specified range, using Mathf.Clamp().

CompareFloatNode

The CompareFloatNode is used to compare two float values and return a boolean result based on the specified comparison type.

FloatLiteralNode

The FloatLiteralNode creates a literal float value.

FloatToIntNode

The FloatToIntNode is used to convert a float value into an integer value. The value is rounded.

GameObjectDistanceCheckNode

The GameObjectDistanceCheckNode is used to compare the distance between two GameObjects, comparing them based on LessThan, GreaterThan, or Approximately.

InequalityNode

The InequalityNode compares two float values and outputs a bool. Choose the comparison: Approximately Equal To, Greater Than Or Equal To, Less Than Or Equal To, Greater Than, or Less Than.

In 0.5 the options labelled Greater Than and Less Than actually tested ≥ and ≤. 1.0 relabels them as Greater Than Or Equal To and Less Than Or Equal To, so existing graphs behave exactly as before, and adds strict Greater Than and Less Than.

IntArithmeticNode

The IntArithmeticNode is used to perform arithmetic operations on two integer values, ither addition, subtraction, multiplication, or division.

IntInequalityNode

The IntInequalityNode performs an inequality comparison between two int values, either ApproximatelyEqualTo, GreaterThan, GreaterThanOrEqualTo, LessThan, or LessThanOrEqualTo.

IntLiteralNode

The IntLiteralNode is used to create an integer literal.

IntToFloatNode

The IntToFloatNode is used to convert an integer value into a float value.

MapTo2DTableNode

The MapTo2DTableNode maps two input float values (x and y) to a corresponding float value on a 2D table. The min and max values of the table can be manipulated to create a gradient or vector field.

MapToCurveNode

The MapToCurveNode takes an input float value and maps it to an output value using the provided AnimationCurve.

MultiplyFloatsNode

The MultiplyFloatsNode is used to multiply multiple float values together and output the resulting product. Any number of values can be connected to the node’s input port.

RandomFloatNode

The RandomFloatNode generates a random float value within a specified range.

SumFloatsNode

The SumFloatsNode is used to sum multiple float values. Any number of values can be connected to the node’s input port.

AnyInstancePassesPredicateNode

The AnyInstancePassesPredicateNode is used to process a list of NounInstances and check if any instance passes a specified ‘predicate’, which is a ValueVerb. The ValueVerb must have the appropriate inputs and outputs. The node has two output ports, one bool which is true if the predicate evaluates to true on any instance in the list and false otherwise, and another for the first instance if there is one.

ChooseRankedWeightedActionNode

The ChooseRankedWeightedActionNode is used to select a random action from a list of actions based on their weights, and execute the chosen action in the game flow. The node takes in a NounInstance, which is conceptually the thing taking the action.

The ChooseRankedWeightedActionNode is an implementation of a Game AI concept we going to call Ranked Decision Utility Theory. Each action in the list is a possible action the noun can take. At the time when we choose an action, each one is evaluated and given a ‘rank’ (int value) and a ‘weight’ (float value). These values can be static or determined by a ValueVerb. Once all actions have had their rank and weight calculated, one is chosen based on the following steps:

Each action must have an ActionVerb which is the Effect that that action has when run. The Effect ActionVerb of the chosen action (if there is one) is run.

CreateInstanceNode

The CreateInstanceNode is used to create a new instance of a Noun. It can also optionally spawn a new GameObject using a spawner, if provided.

DestroyInstanceNode

The DestroyInstanceNode is used to destroy a NounInstance, removing it from the list of instances and deleting its associated GameObject.

FilterInstancesByPredicateNode

The FilterInstancesByPredicateNode is used to filter a list of noun instances in a flow-based based on a predicate. The predicate is a ValueVerb appropriate inputs and outputs. The output is a list of the NounInstances that pass the given predicate, if there are any.

GetDisplayNameNode

The GetDisplayNameNode returns a NounInstance’s display name, which defaults to the name given to the asset if a display name has not been assigned.

GetInstanceNode

The GetInstanceNode is used to retrieve the corresponding NounInstance from a given NounScriptableObject. If (for some reason) there are multiple NounInstances created from the NounScriptableObject, only the first one is returned.

GetInstancesNode

The GetInstancesNode is used to retrieve all NounInstances and provide them as a list. If there are any elements in the list of ‘Must Have Properties’ then the NounInstances returned will be limited to those have each have all of the given properties.

GetNounIngredientNode

The GetNounIngredientNode takes a noun instance and a chosen ingredient type, and outputs that instance’s ingredient of that type, along with whether it has one. Once a type is chosen, the ingredient’s public fields and methods also appear as outputs.

SelectInstancesByPredicateNode

The SelectInstancesByPredicateNode is used to select NounInstances based on a predicate (ValueVerb).

GetBlackboardVariableNode

The GetBlackboardVariableNode is used to retrieve a value from a Blackboard based on a string key. The type of the value must be specified. The blackboard used is the one attached to the current Verb. To get a blackboard value from a NounInstance, see GetInstanceBlackboardVariableNode.

GetInstanceBlackboardVariableNode

The GetInstanceBlackboardVariableNode is used to retrieve a value from a NounInstance’s Blackboard based on a string key. The type of the value must be specified. To get a blackboard value from the Verb see GetBlackboardVariableNode.

GetVariableNode

The GetVariableNode is used to get the value of a given variable. Variables can come from three scopes: either the Global scope, the Scene scope, or the Verb scope.

See also the SetVariableNode.

SetBlackboardVariableNode

The SetBlackboardVariableNode is used to set a variable in the Blackboard based on a string key.

SetInstanceBlackboardVariableNode

The SetInstanceBlackboardVariableNode is used to assign a value to a NounInstance’s blackboard.

SetVariableNode

The SetVariableNode is used to assign the value of a given variable. Variables can come from three scopes: either the Global scope, the Scene scope, or the Verb scope.

See also the GetVariableNode.

OutputNode

The OutputNode is only applicable to ValueVerbs and is used to assign the verb’s output values.

RootNode

The RootNode is the starting point for ActionVerbs.

RunActionVerbForDurationNode

The RunActionVerbForDurationNode is similar to RunActionVerbNode, but will cancel/interrupt the ActionVerb after the given duration.

RunActionVerbNode

The RunActionVerbNode is used to run an ActionVerb.

RunActionVerbWhileConditionIsTrueNode

The RunActionVerbForDurationNode is similar to RunActionVerbNode, but only if the given condition evaluates to true and will cancel/interrupt the ActionVerb if the condition becomes false.

RunNounIngredientActionVerbNode

The RunNounIngredientActionVerbNode runs an ActionVerb stored on a noun instance’s ingredient. Choose the ingredient type and the verb field; the verb’s required inputs and outputs then appear as ports.

RunNounIngredientValueVerbNode

The RunNounIngredientValueVerbNode runs a ValueVerb stored on a noun instance’s ingredient and outputs its results, along with whether the instance has that ingredient. Choose the ingredient type and the verb field; the verb’s required inputs and outputs then appear as ports.

RunValueVerbNode

The RunValueVerbNode executes the given ValueVerb.

CallMethodOnAnyTypeRunnableNode

The CallMethodOnAnyTypeRunnableNode can call (almost) any method on any type of object. This flavor of the ‘CallMethod’ nodes is Runnable, meaning it will execute the method when its turn in the chain comes up. Use this node to use methods that ‘set’ a value or perform logic.

CallMethodOnAnyTypeValueNode

The CallMethodOnAnyTypeValueNode can call (almost) any method on any type of object. This flavor of the ‘CallMethod’ nodes is a ValueNode, meaning the method will execute when any of its output values are requested. Use this node for ‘getter’ methods. There are other flavors of this node that handle specific types offered for convenience.

CallMethodOnInstanceRunnableNode

The CallMethodOnInstanceRunnableNode can call (almost) any method on a given NounInstance. This node is Runnable, meaning it will execute the method when its turn in the chain comes up. Use this node to use methods that ‘set’ a value or perform logic. There are other flavors of this node that handle specific types offered for convenience.

CallMethodOnInstanceValueNode

The CallMethodOnInstanceValueNode can call (almost) any method on a given NounInstance. This nodes is a ValueNode, meaning the method will execute when any of its output values are requested. Use this node for ‘getter’ methods.

CallMethodOnPropertyRunnableNode

The CallMethodOnPropertyRunnableNode can call (almost) any method on a given PropertyInstance. This node is Runnable, meaning it will execute the method when its turn in the chain comes up. Use this node to use methods that ‘set’ a value or perform logic.

CallMethodOnPropertyValueNode

The CallMethodOnPropertyValueNode can call (almost) any method on a given PropertyInstance. This nodes is a ValueNode, meaning the method will execute when any of its output values are requested. Use this node for ‘getter’ methods.

Call Method On Relationship Runnable Runnable

Section titled “Call Method On Relationship Runnable Runnable”

CallMethodOnRelationshipRunnableNode

The CallMethodOnRelationshipRunnableNode can call (almost) any method on a given RelationshipInstance. This node is Runnable, meaning it will execute the method when its turn in the chain comes up. Use this node to use methods that ‘set’ a value or perform logic.

CallMethodOnRelationshipValueNode

The CallMethodOnRelationshipValueNode can call (almost) any method on a given RelationshipInstance. This nodes is a ValueNode, meaning the method will execute when any of its output values are requested. Use this node for ‘getter’ methods.

Call Method On Scriptable Object Runnable Runnable

Section titled “Call Method On Scriptable Object Runnable Runnable”

CallMethodOnScriptableObjectRunnableNode

The CallMethodOnScriptableObjectRunnableNode can call (almost) any method on a given ScriptableObject. This node is Runnable, meaning it will execute the method when its turn in the chain comes up. Use this node to use methods that ‘set’ a value or perform logic.

CallMethodOnScriptableObjectValueNode

The CallMethodOnScriptableObjectValueNode can call (almost) any method on a given ScriptableObject. This nodes is a ValueNode, meaning the method will execute when any of its output values are requested. Use this node for ‘getter’ methods.

CallMethodOnStatRunnableNode

The CallMethodOnStatRunnableNode can call (almost) any method on a given StatInstance. This node is Runnable, meaning it will execute the method when its turn in the chain comes up. Use this node to use methods that ‘set’ a value or perform logic.

CallMethodOnStatValueNode

The CallMethodOnStatValueNode can call (almost) any method on a given StatInstance. This nodes is a ValueNode, meaning the method will execute when any of its output values are requested. Use this node for ‘getter’ methods.

CallStaticMethodRunnableNode

The CallStaticMethodRunnableNode can call (almost) any static method. This node is Runnable, meaning it will execute the method when its turn in the chain comes up. Use this node to use methods that ‘set’ a value or perform logic.

ChooseObjectNode

The ChooseObjectNode takes in two values of any type and chooses between them based on a boolean condition, returning the appropriate one.

ChooseSpriteBasedOnFloatNode

The ChooseSpriteBasedOnFloatNode can be used to select from a given set of sprites based on a float value. Each sprite is assigned a range (min and max). This node can be used to choose which sprite to display based on a character’s stat.

ChooseSpriteBasedOnPropertyNode

The ChooseSpriteBasedOnPropertyNode can be used to select from a given set of sprites based on a NounInstance’s properties. Each sprite is associated with a property. The first pairing where the given NounInstance has the property is selected and its sprite is returned.

CommentNode

The CommentNode is used to add comments or other information to a graph. It does not have inputs or outputs and does not run. It is simply a box where you can add text. It supports resizing.

ConcatStringsNode

The ConcatStringsNode is used to concatenate multiple input strings into a single string output.

ConstructObjectNode

The ConstructObjectNode is used to create an object of any given type. If the type has primitive values, this node exposes them for assignment.

DebugLogNode

The DebugLogNode is used to print the given message using Unity.Debug.Log().

DebugLogObjectNode

The DebugLogObjectNode is used to log the value of an input object to the console using Unity.Debug.Log().

DestroyGameObjectNode

The DestroyGameObjectNode destroys a given GameObject. It will also unassign the GameObject from its NounInstance, if there is one.

ExposeObjectNode

The ExposeObjectNode is used to expose an object’s properties and fields, allowing you to access their values and use them as inputs for other nodes.

FormatStringNode

The FormatStringNode is used to create a formatted text string. It takes the input text and replaces any placeholders (enclosed in curly braces) with the corresponding values from other nodes connected as inputs based on the input’s name. That is, if there is an input with the name ‘foo’, any occurance of the term ‘{foo}’ in the text value will be replaced with the value of the foo input.

GetInstanceFromGameObjectNode

The GetInstanceFromGameObjectNode is used to retrieve the corresponding NounInstance from a given GameObject (if there is one). In order to get the GameObject from a NounInstance see GetInstanceGameObjectNode.

GetInstanceGameObjectNode

The GetInstanceGameObjectNode is used to retrieve the corresponding GameObject from a given NounInstance (if there is one). In order to get the GameObject from a NounInstance see GetInstanceFromGameObjectNode.

GetNextLocationInPathNode

The GetNextLocationInPathNode can be used to traverse a given set of Nouns that are connected by a given relationship, find a path from a starting noun to a destination noun, and return the next step in the path.

GetTransformNode

The GetTransformNode is used to get the Transform of a given GameObject.

LoadAssetFromResourcesNode

The LoadAssetFromResourcesNode is used to load assets from the Unity Resources using a string value path.

MakeColorListNode

The MakeColorListNode is used to create and output a list of colors.

MakeListNode

The MakeListNode is used to create and output a list of ScriptableObjects. The type of the elements in the output list must be assigned (and that type must extend from ScriptableObject).

PlayAnimationNode

The PlayAnimationNode is used to trigger a Unity AnimationClip on a Unity Animation component.

PlayAudioNode

The PlayAudioNode plays an AudioClip on the given AudioSource. If no AudioSource is connected, it creates one.

PlaySoundNode

The PlaySoundNode is used to play an audio clip using a provided AudioSource or finding one if it’s not available.

PrintTextNode

The Print Text Node is a RunnableNode that will display narrative text to the player.

A screenshot of a PrintTextNode.

SetInstanceGameObjectNode

The SetInstanceGameObjectNode is used to assign the given GameObject to the given NounInstance, creating a two way connection.

SpawnNode

The SpawnNode is used to spawn a GameObject using a SerializableSpawner.

StartTimerNode

The StartTimerNode starts a timer for the given number of seconds. It does not halt, and immediately allows the next RunnableNode to execute. Other nodes can then use the bool outputs of the StartTimerNode to determine if the timer is completed or not.

StringLiteralNode

The StringLiteralNode is used to create a string.

SwitchOnPrimitiveNode

The SwitchOnPrimitiveNode is used to choose one element (of a given primitive type) when given a corresponding element (of a separate primitive type). It does this using a predefined list of ‘pairings’.

ToStringNode

The ToStringNode is used to convert any object into a string representation.

Narramancer is source-available. It's free for noncommercial use underPolyForm Noncommercial 1.0.0, and commercial use needs an Asset Store license.Source on GitHub.