/// <summary>
        /// Draws the given range of faces
        /// </summary>
        public override void Draw(Vector2 size, Vector2 origin, Vector2I faceRange, MatrixD[] matrixRef)
        {
            if (_sides > 2 && drawVertices.Count > 5)
            {
                if (updateVertices)
                {
                    GeneratePolygon();
                }

                if (updateMatFit)
                {
                    polyMat.texBounds = matFrame.GetMaterialAlignment(size.X / size.Y);
                    GenerateTextureCoordinates();
                    updateMatFit = false;
                }

                faceRange.Y++;
                faceRange *= 2;
                // Outer vertex indices are even
                faceRange.X -= faceRange.X % 2;
                faceRange.Y -= faceRange.Y % 2;

                // Generate final vertices for drawing from unscaled vertices
                for (int i = faceRange.X; i <= faceRange.Y + 1; i++)
                {
                    drawVertices[i % drawVertices.Count] = origin + size * vertices[i % drawVertices.Count];
                }

                faceRange *= 3;
                BillBoardUtils.AddTriangleRange(faceRange, triangles, drawVertices, ref polyMat, matrixRef);
            }
        }
Пример #2
0
        /// <summary>
        /// Draws the given range of faces
        /// </summary>
        public virtual void Draw(Vector2 size, Vector2 origin, Vector2I faceRange, MatrixD[] matrixRef)
        {
            if (_sides > 2 && drawVertices.Count > 2)
            {
                if (updateVertices)
                {
                    GeneratePolygon();
                }

                if (updateMatFit)
                {
                    polyMat.texBounds = matFrame.GetMaterialAlignment(size.X / size.Y);
                    GenerateTextureCoordinates();
                    updateMatFit = false;
                }

                // Generate final vertices for drawing from unscaled vertices
                int max = drawVertices.Count - 1;
                drawVertices[max] = origin + size * vertices[max];

                for (int i = 0; i < drawVertices.Count; i++)
                {
                    drawVertices[i] = origin + size * vertices[i];
                }

                faceRange *= 3;
                BillBoardUtils.AddTriangleRange(faceRange, triangles, drawVertices, ref polyMat, matrixRef);
            }
        }