Esempio n. 1
0
 /// <summary>
 /// Constructor of SceneTree class
 /// </summary>
 /// <param name="name">Name of the scene tree</param>
 /// <param name="renderer">Renderer</param>
 /// <param name="assetEngine">AssetEngine</param>
 internal SceneTree(string name, Renderer renderer, AssetEngine assetEngine)
 {
     Name = name;
     _renderer = renderer;
     AssetEngine = assetEngine;
     _camManager = new CameraManager(this);
     _root = CreateNode();
 }
Esempio n. 2
0
 /// <summary>
 /// Detaches parent node
 /// </summary>
 void IMovable.DetachParent()
 {
     _parentNode = null;
 }
Esempio n. 3
0
        /// <summary>
        /// Attaches a parent node
        /// </summary>
        /// <param name="parent">Parent node</param>
        void IMovable.AttachParent(SceneNode parent)
        {
            if(parent == null)
                throw new ArgumentNullException("parent");

            _parentNode = parent;
        }
Esempio n. 4
0
        /// <summary>
        /// Attaches the camera to a scene node<br />
        /// <remarks>(Used internally)</remarks>
        /// </summary>
        /// <param name="parent">Parent scene node</param>
        void IMovable.AttachParent(SceneNode parent)
        {
            if(parent == null)
                throw new ArgumentNullException("parent");

            ParentTransform = parent;
            RequireUpdate();
        }
Esempio n. 5
0
        /// <summary>
        /// Destroys a node in this graph
        /// </summary>
        /// <param name="node">Node to destroy</param>
        public void DestroyNode(SceneNode node)
        {
            if(node.Scene != this)
                throw new ArgumentException("Already attached to another tree", "node");

            if(node == _root)
                throw new ArgumentException("Cannot destroy root node", "node");

            Node parent = node.ParentNode;
            if (parent != null)
                parent.RemoveChild(node);

            node.DestroyAllChild();
            _nodes.Remove(node);
        }
Esempio n. 6
0
        /// <summary>
        /// Creates a new node in this graph
        /// </summary>
        /// <returns>Returns a new node</returns>
        public SceneNode CreateNode()
        {
            SceneNode node = new SceneNode(this);
            _nodes.Add(node);

            return node;
        }