private void TriangulateMesh(Square square, int configuration, params Node[] nodes) { if (nodes.Length < 3) { Debug.LogError("TriangulateMesh: need at least 3 nodes!"); return; } List <Vector2> edgeColliders = new List <Vector2> (); for (int i = 0; i < nodes.Length; i++) { Vector2 uv = new Vector2(nodes [i].GetPosition().x - square.BottomLeft.GetPosition().x, nodes [i].GetPosition().y - square.BottomLeft.GetPosition().y); Vector4 tilingAndOffset = TileMapData.GetTilingAndOffsetFromConfiguration(configuration); uv.x = uv.x * tilingAndOffset.x + tilingAndOffset.z; uv.y = uv.y * tilingAndOffset.y + tilingAndOffset.w; CreateVertex(nodes [i]); CreateUvs(uv); // edge collider if (!checkedVertices.Contains(nodes [i].GetPosition())) { edgeColliders.Add(new Vector2(nodes [i].GetPosition().x, nodes [i].GetPosition().y)); } } for (int i = 0; i < nodes.Length - 2; i++) { CreateTriangle(nodes [0].vertexIndex, nodes [i + 1].vertexIndex, nodes [i + 2].vertexIndex); } if (edgeColliders.Count >= 2) { edgeColliderPoints.Add(edgeColliders); } }