コード例 #1
0
        VertexPos3Tex2[] BuildTerrain(TerrainMap map, ref int totalTriangles)
        {
            TileDrawInfo drawInfo = new TileDrawInfo();

            int lengthX = map.Width;
            int lengthY = map.Length;

            VertexPos3Tex2[] vertices = new VertexPos3Tex2[lengthX * lengthY * 4];
            int index = 0;

            for (int x = 0; x < lengthX; x++)
            {
                for (int y = 0; y < lengthY; y++)
                {
                    Tile tile = map[x, y];
                    drawInfo.CurrentTile = tile;

                    drawInfo.MapX = x;
                    drawInfo.MapY = y;
                    RenderTile(drawInfo, vertices, index);
                    index += 4;
                }
            }             // end for
            totalTriangles = drawInfo.TotalTriangles;
            return(vertices);
        }
コード例 #2
0
        void RenderTile(TileDrawInfo drawInfo, VertexPos3Tex2[] vertices, int index)
        {
            Tile tile = drawInfo.CurrentTile;

            X      = tile.X;
            Y      = tile.Y;
            height = tile.Height;

            RectangleF texRec = TerrainHelper.GetTexRec(tile.TerrainId);

            vertices[index]          = new VertexPos3Tex2(X, height, Y, texRec.Left, texRec.Top);
            vertices[index + 1]      = new VertexPos3Tex2(X + tileWidth, height, Y, texRec.Right, texRec.Top);
            vertices[index + 2]      = new VertexPos3Tex2(X + tileWidth, height, Y + tileWidth, texRec.Right, texRec.Bottom);
            vertices[index + 3]      = new VertexPos3Tex2(X, height, Y + tileWidth, texRec.Left, texRec.Bottom);
            drawInfo.TotalTriangles += 2;
        }