Axiom.SceneManagers.Octree.OctreeSceneManager.UpdateOctreeNode C# (CSharp) Метод

UpdateOctreeNode() публичный Метод

public UpdateOctreeNode ( OctreeNode node ) : void
node OctreeNode
Результат void
		public void UpdateOctreeNode( OctreeNode node )
		{
			AxisAlignedBox box = node.WorldAABB;

			if ( box.IsNull )
			{
				return;
			}

			if ( node.Octant == null )
			{
				//if outside the octree, force into the root node.
				if ( !node.IsInBox( octree.Box ) )
				{
					octree.AddNode( node );
				}
				else
				{
					AddOctreeNode( node, octree );
				}
				return;
			}

			if ( !node.IsInBox( node.Octant.Box ) )
			{
				RemoveOctreeNode( node );

				//if outside the octree, force into the root node.
				if ( !node.IsInBox( octree.Box ) )
				{
					octree.AddNode( node );
				}
				else
				{
					AddOctreeNode( node, octree );
				}
			}
		}

Usage Example

Пример #1
0
        /// <summary>
        ///     Same as SceneNode, only it doesn't care about children...
        /// </summary>
        protected override void UpdateBounds()
        {
            //update bounds from attached objects
            foreach (MovableObject obj in objectList.Values)
            {
                localAABB.Merge(obj.BoundingBox);

                worldAABB = obj.GetWorldBoundingBox(true);
            }

            if (!worldAABB.IsNull)
            {
                OctreeSceneManager oManager = (OctreeSceneManager)this.creator;
                oManager.UpdateOctreeNode(this);
            }
        }