Example #1
0
        private static void AddTriangle(HexMeshData meshData, Vector3 center, Vector3 uv, float neighborElevation, float previousElevation, float nextElevation, HexDirection direction, Color color)
        {
            var v1 = center;
            var v2 = center + meshData.GetFirstSolidCorner(direction);
            var v3 = center + meshData.GetSecondSolidCorner(direction);

            //Add inner solid triangle
            AddTriangle(meshData, v1, v2, v3, color, uv);

            //Add Quad To Fill Border Gap
            var v4 = v2 + meshData.GetBridge(direction);

            v4.y = neighborElevation;
            var v5 = v3 + meshData.GetBridge(direction);

            v5.y = neighborElevation;
            AddQuad(meshData, v2, v3, v4, v5, color, uv);

            //Add Triangles to fill gap on sides of quad
            var v6 = center + meshData.GetFirstCorner(direction);

            v6.y = Mathf.Min(neighborElevation, previousElevation);
            AddTriangle(meshData, v2, v6, v4, color, uv);

            var v7 = center + meshData.GetSecondCorner(direction);

            v7.y = Mathf.Min(neighborElevation, nextElevation);
            AddTriangle(meshData, v3, v5, v7, color, uv);
        }