protected static void AddTriangle(Vector3 vertexA, Vector3 vertexB, Vector3 vertexC, ref List <Vector3> vertices, ref List <Vector3> normals, ref List <Vector2> UV, ref List <int> triangles, TriangleUVTweak tweakUVs) { int verticeNum = vertices.Count; vertices.Add(vertexA); vertices.Add(vertexB); vertices.Add(vertexC); normals.Add(new Vector3(0, 1, 0)); normals.Add(new Vector3(0, 1, 0)); normals.Add(new Vector3(0, 1, 0)); const float v = 0.5f; switch (tweakUVs) { case TriangleUVTweak.NoTweak: { UV.Add(new Vector2(0, 1)); UV.Add(new Vector2(0, 1)); UV.Add(new Vector2(0, v)); break; } case TriangleUVTweak.TweakLeft: { UV.Add(new Vector2(0, v)); UV.Add(new Vector2(0, 1)); UV.Add(new Vector2(0, v)); break; } case TriangleUVTweak.TweakRight: { UV.Add(new Vector2(0, 1)); UV.Add(new Vector2(0, v)); UV.Add(new Vector2(0, v)); break; } } triangles.Add(verticeNum); triangles.Add(verticeNum + 2); triangles.Add(verticeNum + 1); }
protected static void AddBorderToTerritory(HexTile tile, RelativeTilePosition relPos, float radius, float territoryBorderYPos, float halfWidth, ref List <Vector3> vertices, ref List <Vector3> normals, ref List <Vector2> UV, ref List <int> triangles, TriangleUVTweak tweakUVs = TriangleUVTweak.NoTweak) { Vector3 worldPos = tile.Grid.ToPixel(tile.Pos); Vector3 botRight = new Vector3(worldPos.x + (radius / 2), territoryBorderYPos, worldPos.z - halfWidth); // botRight Vector3 right = new Vector3(worldPos.x + radius, territoryBorderYPos, worldPos.z); // right Vector3 topRight = new Vector3(worldPos.x + (radius / 2), territoryBorderYPos, worldPos.z + halfWidth); // topRight Vector3 topLeft = new Vector3(worldPos.x + (-radius / 2), territoryBorderYPos, worldPos.z + halfWidth); // topLeft Vector3 left = new Vector3(worldPos.x + (-radius), territoryBorderYPos, worldPos.z); // left Vector3 botLeft = new Vector3(worldPos.x + (-radius / 2), territoryBorderYPos, worldPos.z - halfWidth); // botLeft Vector3 center = new Vector3(worldPos.x, territoryBorderYPos, worldPos.z); // center Vector3 v1 = new Vector3(); Vector3 v2 = new Vector3(); Vector3 v3 = center; switch (relPos) { case RelativeTilePosition.Bot: v1 = botLeft; v2 = botRight; break; case RelativeTilePosition.BotRight: v1 = botRight; v2 = right; break; case RelativeTilePosition.TopRight: v1 = right; v2 = topRight; break; case RelativeTilePosition.Top: v1 = topRight; v2 = topLeft; break; case RelativeTilePosition.TopLeft: v1 = topLeft; v2 = left; break; case RelativeTilePosition.BotLeft: v1 = left; v2 = botLeft; break; } AddTriangle(v1, v2, v3, ref vertices, ref normals, ref UV, ref triangles, tweakUVs); }