/// <summary> /// Clear the nodes of the mask and set the provided ones. /// </summary> /// <param name="mask"></param> /// <param name="nodes"></param> private void SetMaskNodes(BiomeMaskArea mask, List <Vector3> nodes) { mask.ClearNodes(); foreach (Vector3 node in nodes) { mask.AddNodeToEnd(node); } mask.PositionNodes(); }
/// <summary> /// Transform the mask and convert it into its convex hull. /// </summary> /// <param name="mask"></param> public static void ConvexHull(BiomeMaskArea mask) { Vector3 maskPosition = mask.transform.position; List <Vector2> positionsXY = mask.Nodes.ConvertAll <Vector2>(item => new Vector2(item.Position.x, item.Position.z)); List <Vector2> convexHull = PolygonUtility.GetConvexHull(positionsXY); mask.Nodes.Clear(); foreach (Vector2 nodePosition in convexHull) { mask.AddNodeToEnd(new Vector3(maskPosition.x + nodePosition.x, 0, maskPosition.z + nodePosition.y)); } // center main handle, implicitly updates the mask CenterMainHandle(mask); }