public void CreateIntersection(Node[] selectedNodes) { if (selectedNodes.Length == 4) { foreach (var n in selectedNodes) { IntersectionCentre i = n.gameObject.GetComponent <IntersectionCentre>(); if (i != null) { DestroyImmediate(i); } IntersectionEntrance ie = n.gameObject.GetComponent <IntersectionEntrance>(); if (ie != null) { DestroyImmediate(ie); } } IntersectionCentre ic = selectedNodes[0].gameObject.AddComponent <IntersectionCentre>(); foreach (var n in selectedNodes) { Node farestNode = null; float maxDistance = float.MinValue; foreach (var nn in selectedNodes) { if (n != nn) { float d = Vector3.Distance(n.transform.position, nn.transform.position); if (d > maxDistance) { maxDistance = d; farestNode = nn; } } } ic.AddPair(n, farestNode, ic); } } }
public void AddPair(Node a, Node b, IntersectionCentre ic) { if (!a.GetComponent <IntersectionEntrance>()) { IntersectionEntrance ie = a.gameObject.AddComponent <IntersectionEntrance>(); ie.centre = ic; } if (!b.GetComponent <IntersectionEntrance>()) { IntersectionEntrance ie = b.gameObject.AddComponent <IntersectionEntrance>(); ie.centre = ic; } EntrancesPair p = new EntrancesPair(a, b); if (!ExistPair(p)) { pairs.Add(p); } }