Exemplo n.º 1
0
        private static List <int> GetBackToFrontElements(BspTreeNode node, BspTreeNode.Orientation orientation, List <Vector3> allPoints, Vector3 eye)
        {
            List <int> list = new List <int>();

            for (int i = 0; i < node.getNumberOfElements(orientation); i++)
            {
                list.Add(node.getElement(orientation, i));
            }
            list.AddRange(GetBackToFront(node.GetChild(orientation), allPoints, eye));
            return(list);
        }
Exemplo n.º 2
0
        /**
         * Create VBO render vertices for the elements in a node (front and back).
         */
        private List <RenderVertex> CreateVBOElements(BspTreeNode node)
        {
            List <RenderVertex> renderVertices = new List <RenderVertex>();

            if (node == null)
            {
                return(renderVertices);
            }
            for (int orientation = 0; orientation < 2; orientation++)
            {
                Color4 color = (orientation == 0) ? Color4.Magenta : Color4.Orange;
                for (int i = 0; i < node.getNumberOfElements((BspTreeNode.Orientation)orientation); i++)
                {
                    int index = node.getElement((BspTreeNode.Orientation)orientation, i);
                    renderVertices.Add(new RenderVertex(node.P, normal, color));
                    renderVertices.Add(new RenderVertex(points[index], normal, color));
                }
            }
            renderVertices.AddRange(CreateVBOElements(node.GetChild(BspTreeNode.Orientation.POSITIVE)));
            renderVertices.AddRange(CreateVBOElements(node.GetChild(BspTreeNode.Orientation.NEGATIVE)));
            return(renderVertices);
        }