Beispiel #1
0
 private static void AddQuad(
     RawPrimitive Into,
     ExtendedVertex[] Verticies,
     short[] Indicies)
 {
     Into.AddOffsetIndicies(Indicies, Into.VertexCount, 6);
     for (var vertex = 0; vertex < 4; ++vertex)
     {
         Into.AddVertex(Verticies[vertex]);
     }
 }
Beispiel #2
0
        private void AddScaffoldGeometry(Matrix transform, Vector4 sideBounds, Vector2[] sideUvs, float HeightOffset, bool FlipTexture)
        {
            var uvDelta = sideUvs[1].X - sideUvs[0].X;

            if (Library.GetRailPiece(Piece.RailPiece).HasValue(out var rawPiece))
            {
                foreach (var railSpline in rawPiece.RailSplines)
                {
                    var uvStep = 1.0f / (railSpline.Count - 1);

                    for (var i = 1; i < railSpline.Count; ++i)
                    {
                        var baseIndex = Primitive.VertexCount;

                        Primitive.AddVertex(new ExtendedVertex(Vector3.Transform(new Vector3(railSpline[i - 1].X, HeightOffset + 1.0f, railSpline[i - 1].Y), transform), Color.White, Color.White,
                                                               FlipTexture ? new Vector2(sideUvs[0].X + uvDelta - uvDelta * (uvStep * (i - 1)), sideUvs[0].Y) :
                                                               new Vector2(sideUvs[0].X + uvDelta * (uvStep * (i - 1)), sideUvs[0].Y),
                                                               sideBounds));

                        Primitive.AddVertex(new ExtendedVertex(Vector3.Transform(new Vector3(railSpline[i].X, HeightOffset + 1.0f, railSpline[i].Y), transform), Color.White, Color.White,
                                                               FlipTexture ? new Vector2(sideUvs[0].X + uvDelta - uvDelta * (uvStep * i), sideUvs[0].Y) :
                                                               new Vector2(sideUvs[0].X + uvDelta * (uvStep * i), sideUvs[0].Y),
                                                               sideBounds));

                        Primitive.AddVertex(new ExtendedVertex(Vector3.Transform(new Vector3(railSpline[i].X, HeightOffset, railSpline[i].Y), transform), Color.White, Color.White,
                                                               FlipTexture ? new Vector2(sideUvs[0].X + uvDelta - uvDelta * (uvStep * i), sideUvs[2].Y) :
                                                               new Vector2(sideUvs[0].X + uvDelta * (uvStep * i), sideUvs[2].Y),
                                                               sideBounds));

                        Primitive.AddVertex(new ExtendedVertex(Vector3.Transform(new Vector3(railSpline[i - 1].X, HeightOffset, railSpline[i - 1].Y), transform), Color.White, Color.White,
                                                               FlipTexture ? new Vector2(sideUvs[0].X + uvDelta - uvDelta * (uvStep * (i - 1)), sideUvs[2].Y) :
                                                               new Vector2(sideUvs[0].X + uvDelta * (uvStep * (i - 1)), sideUvs[2].Y),
                                                               sideBounds));

                        Primitive.AddOffsetIndicies(new short[] { 0, 1, 3, 1, 2, 3 }, baseIndex);
                    }
                }
            }
        }