Пример #1
0
    void SetViePointElement(string id, SectorElement sec, GeoLocation geo)
    {
        creationViewPoint.id        = id + "VP";
        creationViewPoint.name      = id + "VP";
        creationViewPoint.Point     = new PointElement();
        creationViewPoint.Point.pos = geo.latitude.ToString() + " " + geo.longitude.ToString();

        creationViewPoint.SectorLinks = new List <SectorLink>();
        SectorLink sectorLink = new SectorLink();

        sectorLink.href = "#" + sec.id;
        creationViewPoint.SectorLinks.Add(sectorLink);
    }
 private void createLinksBtwSectors()
 {
     for (int i = 0; i < sectors.Count; i++)
     {
         for (int j = 0; j < sectors.Count; j++)
         {
             if (sectors[i] != sectors[j] && Vector2.Distance(sectors[i].transform.position, sectors[j].transform.position) < maxDistanceBtwSectorsLink)
             {
                 SectorLink sectorLinkGO = sectors[i].createLink(sectors[j]);
                 if (sectorLinkGO != null)
                 {
                     sectorLinkGO.transform.parent = transform;
                 }
             }
         }
     }
 }
Пример #3
0
    public SectorLink createLink(Sector sector)
    {
        //Check if a link is already present or not
        if (!linkAlreadyPresent(sector) && sector.transform.position.y > transform.position.y)
        {
            Vector3    linkPosition = new Vector3(Mathf.Abs(sector.transform.position.x - transform.position.x), Mathf.Abs(sector.transform.position.y - transform.position.y), 0);
            SectorLink linkGO       = Instantiate(linkPrefab, linkPosition, Quaternion.identity);
            linkGO.initiateLink(this, sector.GetComponent <Sector>());
            //Add in associated objects of this sector
            outputLinks.Add(linkGO);
            linkedSectors.Add(sector);
            //Add in associated objects of the other sector
            sector.outputLinks.Add(linkGO);
            sector.linkedSectors.Add(this);

            return(linkGO);
        }
        return(null);
    }
    public void generateSectorRecursively(Sector startingSector, int compteur)
    {
        List <Sector> closesrSectors = sectors[1].findClosestSectors(false);

        //if not close enought to the end sector
        if (!closesrSectors.Contains(startingSector))
        {
            int nbSectorGenerated = Random.Range(1, 1);
            for (int i = 0; i < nbSectorGenerated; i++) //number of sectors generated from the starting sector
            {
                if (compteur < sectorNumber)
                {
                    //First iteration
                    if (startingSector == startSector)
                    {
                    }


                    Collider2D[] closestSectors = Physics2D.OverlapCircleAll(startingSector.transform.position, minDistanceBtwSectorsLink - 0.4f, whatIsSector);

                    //if no sectors too close
                    if (closestSectors.Length <= 1)
                    {
                        int   randomAngleDegree = Random.Range(60, 120);
                        float randomDistance    = Random.Range(minDistanceBtwSectorsLink, maxDistanceBtwSectorsLink);
                        float newSectorX        = startingSector.transform.position.x + randomDistance * Mathf.Cos(randomAngleDegree * Mathf.Deg2Rad);
                        float newSectorY        = startingSector.transform.position.y + randomDistance * Mathf.Sin(randomAngleDegree * Mathf.Deg2Rad);


                        Vector3 newSectorPosition = new Vector3(newSectorX, newSectorY, 0);
                        Sector  newSectorGO       = Instantiate(sectorPrefab, newSectorPosition, Quaternion.identity);
                        //newSectorGO.transform.parent = gameObject.transform;
                        SectorLink linkGO = startingSector.createLink(newSectorGO);
                        //linkGO.transform.parent = gameObject.transform;

                        //Attribute waves to this new Sector
                        attributeEventToSector(newSectorGO);

                        //Fill lists of sector and links
                        if (!newSectorGO.linkedSectors.Contains(startingSector))
                        {
                            newSectorGO.linkedSectors.Add(startingSector);
                        }
                        if (!newSectorGO.inputLinks.Contains(linkGO))
                        {
                            newSectorGO.inputLinks.Add(linkGO);
                        }
                        if (!startingSector.linkedSectors.Contains(newSectorGO))
                        {
                            startingSector.linkedSectors.Add(newSectorGO);
                        }
                        if (!startingSector.inputLinks.Contains(linkGO))
                        {
                            startingSector.inputLinks.Add(linkGO);
                        }

                        compteur++;
                        generateSectorRecursively(newSectorGO, compteur);
                    }
                }
            }
        }
        else
        {
            SectorLink lastLinkGO = startingSector.createLink(endSector);
            //Fill lists of sector and links for the two lasts sectors
            if (!endSector.linkedSectors.Contains(startingSector))
            {
                endSector.linkedSectors.Add(startingSector);
            }
            if (!endSector.inputLinks.Contains(lastLinkGO))
            {
                endSector.inputLinks.Add(lastLinkGO);
            }
            if (!startingSector.linkedSectors.Contains(endSector))
            {
                startingSector.linkedSectors.Add(endSector);
            }
            if (!startingSector.inputLinks.Contains(lastLinkGO))
            {
                startingSector.inputLinks.Add(lastLinkGO);
            }
        }
    }