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; } } } } }
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); } } }