示例#1
0
    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);
            }
        }
    }
示例#2
0
    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);
        }
    }