Types in this module implement various helper functionality to deal with FUSEE scene graphs (made out of the building blocks found in Fusee.Serialization.
The core of this module is the SceneVisitor class implementing a visitor pattern to traverse scene graphs for various use cases such as
The actual use cases are implemented in Fusee.Engine.Core as most of them require knowledge about 3D rendering.
An IStateStack implementation behaving better in situations where many subsequent Push (and Pop) operations occur without actually altering the Tos contents.
Static quick-hack helpers to access components within nodes and get local and global transformation matrices.
Dummy implementation of the IStateStack interface. Nothing can be stored within instance of this type. There's no Top of Stack object. Only the stack Depth is correctly tracked according to the number of Push() and Pop() operations already performed on the EmptyStack.
Base class serving for various searches over scene graphs. See the list of derived classes.
Various extensions methods to find nodes or components within trees of scene nodes.
This class tries to serve three goals
Static class containing helper methods around the SceneVisitor
A standard state for typical traversals mimicking rendering activities. Keeps track of the main matrices as well as selected render states.
A Viserator is a scene visitor which returns an enumerator of a user defined type. Serves as a base class for use-cases where traversing a node-component-graph should yield a list (enumerator) of results.
Extract of the final Viserator without everything State related. This class is necessary to be able to define extension methods on node lists. Do not use this class directly.
Contains extensions methods to perform ViseratorTItem, TState actions on trees of scene nodes.
Use this attribute to identify visitor methods. Visitor methods are called during traversal on nodes or components with the specified type. WARNING: Currently no component or node type inheritance matching is done: A Visitor method is only called if it exaclty matches the type - TODO: fix this...
Use this as a base class for defining your own state for arbitrary SceneVisitors.
Defines the minimum set of operations on any data structure to be used as a stack during traversal. The main difference between StateStacks and "normal" stacks (StackT) is that the Push operation here doesn't take an argument but simply replicates the current state (or rather - memorizes the current state for restoring it later with Push).