SerializableTreeBase< T > Class Template Reference

Base class for SerializedTrees. Stored data in both serializable lists, and non-serializable linked-nodes for runtime use. Class does not require unity to be used, but does require manually calling the serialization/deserialization functions.
(Use the SerilizedTree descendant of this class for automatic serialization in Unity.)

Detailed Description

Template Parameters
TThis is the type of object that will be stored in the tree.

Classes

class  Node
 The Node class, is the runtime Node used by the tree that has references to children and parent. This class is declared INSIDE the Serializable tree because it references T. It contains reference to it's parent and data, as well as Enumerators to iterate though descendants. This class is NOT serializable.
 

Public Member Functions

 SerializableTreeBase ()
 Constructor. Creates a new instance with the root Node set to null.
 
bool AddChild (Node parent, T data)
 called by both the UI and runtime users of the tree. This function will instantiate a new node, and add the provided data to it.
The new node will be added as a child of the provided parent node, making it part of the run-time tree. If null is provided for the parent, and a root node does not already exist, it will be stored as the root node. If a root node exists, specifying null for the parent will fail, and return false.
 
bool AddChild (Node parent, T data, out Node newNode)
 called by both the UI and runtime users of the tree. This function will instantiate a new node, and add the provided data to it.
The new node will be added as a child of the provided parent node, making it part of the run-time tree. If null is provided for the parent, and a root node does not already exist, it will be stored as the root node. If a root node exists, specifying null for the parent will fail, and return false.
 
bool AddChildren (Node parent, T[] data)
 Convenience function used to store an array of data as new nodes. The new nodes will be added as children of the provided parent node.
 
bool CopyNode (Node sourceNode, Node destinationParent)
 recursive function used to copy the data contained in the provided sourceNode, and its descendants, as new Nodes that are children of the provided destinationParent.
 
virtual T DefaultNodeData ()
 This virtual function should be overridden by descendants, to provide a default value for data objects of type T.
 
void Deserialize ()
 this function is used to read the two serialized lists; serializedNodes and dataList, and generate a runtime tree of nodes, based on the data therein.
 
virtual IEnumerator< T > GetEnumerator ()
 default generic enumerator
 
bool RemoveNode (Node nodeToRemove)
 Remove this node from tree, by removing it from it's parent's children list. Does not destroy the Node, nor the Data it references.
 
void ReSerialize ()
 This function will take the runtime tree nodes, and their data, and store them into the two serialized lists; serializedNodes and dataList. These two lists, being serializable, can then be stored and eventually DEserialzied, back into the runtime tree.
 
override string ToString ()
 general ToString override- useful for debugging
 
int TotalLeafCount ()
 Counts the total number of leaves (childless-nodes) it the entire tree.
 
int TotalNodeCount ()
 Counts the total number of nodes it the entire tree.
 

Public Attributes

List< T > dataList
 This list is serialized and stores the data of each node, an object of type T.
 
Node root
 the root of the runtime tree. not serialized.
 
List< SerializableTreeNodeserializedNodes
 this List is serialized and stores the relationships between nodes, which defines the shape of the tree
 
+ Inheritance diagram for SerializableTreeBase< T >:
+ Collaboration diagram for SerializableTreeBase< T >: