Show / Hide Table of Contents

Namespace Fusee.Xirkit

Classes

Animation

The Animation Class is capable of storing and handling different types of Channels.

ChainedMemberAccessor<TPin, TObj>

Class used inside Xirkit to access (read and write) nested members that are referenced by a chain of properties/fields separated by the object-access operator '.' (dot).

Channel<TValue>

Generic Channel implementation capable of storing keyframes of the given Type.

ChannelBase

Base class containing functionality common to all Channel types, no matter of the type of the values of the containing key frames.

Circuit

A Circuit contains arbitrary objects. Connections between the objects' members (fields and properties) automatically handle value propagation - if a source value changes, all the connected members will be set to the updated value.

This is the main object of the Xirkit package. Compare a Circuit to a real electronic circuit with the electronic components being instances of objects, their pins welded to the board being instances of IInPin and IOutPin connected to each others by conductive paths. Instead of electricity floating along the connections, a Circuit instance transmits values of certain types from node to node. If you are familiar with CINEMA 4D's XPresso, you know what a Circuit is. You can also compare Xirkit to WPF's Dependency Properties.

To build up a Circuit in code, create a new Circuit. For each arbitrary object that should be connected in the Circuit, create a hosting Node instance, passing the participating object to the Node's constructor. Use AddNode(Node) to add each new node (with the hosted object). Then use Attach(String, Node, String) to connect members (fields and properties) of objects contained in two different nodes to each others.

Technically a Circuit is a container filled with Node instances that are related to each others by connected (in- and out-) pins. A number of these nodes are specified as root nodes. Whenever a circuit is executed by calling its Execute() method, the values of all out-pins at the root nodes are propagated (and possibly converted) the their connected in-pins, which in turn might trigger subsequent propagation along the graph. Nodes exposing the ICalculationPerformer interface are triggered to perform their calculation before the values at their out-pins are further propagated.

ConvertingFieldAccessor<TPin, TObj>

Member Accessor implementation specialized on accessing fields where the type of the pin and the actual type of the field are different. The accessor performs the conversion operation specified when performing its set or get operations.

ConvertingPropertyAccessor<TPin, TObj>

Member Accessor implementation specialized on accessing properties (using set and get) where the type of the pin and the actual type of the field are different. The accessor performs the conversion operation specified when performing its set or get operations.

FieldAccesssor<T>

Member Accessor implementation specialized on accessing fields.

InPin<T>

Class representing incoming pins to nodes.

Keyframe<TValue>

This Class represents a Keyframe it has a time and a Value.

Lerp

provides different LerpFunctions that can be used in a channel. A Lerp Function represents a linear interpolation between 2 points in a timeline.

ListSort<TValue>

This is needed to sort the List in the Channel Class.

Node

Major building block of the Xirkit library. Each Circuit contains Node instances.

A single object instance of any type can be hosted inside a node. This way any arbitrary object can participate in a Circuit. Node instances within a Circuit are interconnected using in-pins and out-pins. The internal connection from pins to actual members (properties and fields) of the contained object are done using IMemberAccessor<T>s.

OutPin<T>

Class representing outgoing pins to nodes.

Pin

A pin is a connection point where Node instances can be connected to each others. Pin connections carry values of certain types. There are InPin<T>s and OutPin<T>s. One out-pin can be connected to one or more in-pins but each in-pin can only be connected to one out-pin.

PropertyAccessor<T>

Member Accessor implementation specialized on accessing properties (using set and get).

Interfaces

ICalculationPerformer

Users should implement this interface on objects if a custom calculation is to be performed whenever the object is used within the node of a circuit.

IInPin

Interface used to handle incoming pins to nodes. This interface contains all relevant parts of an in-pin implementation not actually bound to the type of the pin.

IMemberAccessor<T>

Base interface for all accessors. An accessor implements the connections between the Pin (IInPin or IOutPin) of a Node and a member (such as a Field or a Property) of the object "hosted" by the Node.

IOutPin

Interface used to handle incoming pins to nodes. This interface contains all relevant parts of an out-pin implementation not actually bound to the type of the pin

Delegates

Channel<TValue>.LerpFunc

A function that returns a generic Type. The Functions can be seen in Lerp.cs

Channel<TValue>.SetChanelValue

A delegate function for setting a value.

ReceivedValueHandler

Event handler type. Methods with this signature can be registered on the ReceivedValue event.

Generated by DocFX
GitHub Repo
Back to top