// --- public void UpdateInformation() { SitelinkReporting sitelink0 = sitelinkPair.pair[0]; SitelinkReporting sitelink1 = sitelinkPair.pair[1]; _information = "Sitelink pair:\n" + $"Sites: {sitelink0.local_site}\n<-> {sitelink0.remote_site}\n" + //$"Sitelink IDs: {sitelink0.id}/{sitelink1.id}\n" + $"States: {sitelink0.state}/{sitelink1.state}\n" + //$"Statuses: {sitelink0.status}/{sitelink1.status}\n" + $"In use: {sitelink0.inuse}/{sitelink1.inuse}\n" + $"Sitelink 0 throughput in/out: {sitelink0.throughput_in}/{sitelink0.throughput_out}\n" + $"Sitelink 1 throughput in/out: {sitelink1.throughput_in}/{sitelink1.throughput_out}\n"; }
public SitelinkMarker placeSitelinkMarker(SitelinkPair sitelinkPair, Dictionary <SiteId, SiteMarker> siteMarkers) { SitelinkReporting sitelink0 = sitelinkPair.pair[0]; SiteMarker fromSite = siteMarkers[sitelink0.local_site]; SiteMarker toSite = siteMarkers[sitelink0.remote_site]; Debug.Log($"Drawing sitelink from {fromSite.site.name} to {toSite.site.name}"); GameObject sitelinkMarkerObject = Instantiate(sitelinkMarkerPrefab, Vector3.zero, Quaternion.identity, transform); SitelinkMarker sitelinkMarker = sitelinkMarkerObject.GetComponent <SitelinkMarker>(); sitelinkMarker.Set(fromSite, toSite, sitelinkPair, transform.position, globeRadius * 1.03f); return(sitelinkMarker); }
public void Set(SiteMarker fromSiteMarker, SiteMarker toSiteMarker, SitelinkPair sitelinkPair, Vector3 globePosition, float globeRadius = 0.0f) { this.fromSiteMarker = fromSiteMarker; this.toSiteMarker = toSiteMarker; this.sitelinkPair = sitelinkPair; _stateManager = GameObject.Find("State Manager").GetComponent <StateManager>(); _lineRenderer = GetComponent <LineRenderer>(); // TODO: Get these values in a better way, eg. link the globe object here with a public member variable. this._globePosition = globePosition; this._globeRadius = globeRadius; // --- SitelinkReporting sitelink0 = sitelinkPair.pair[0]; _lineColor = Color.green; _lineWidth = 0.1f; _blinkPeriodSeconds = 0.0f; if (sitelink0.state == "up") { _lineColor = Color.green; _lineWidth = 0.05f + sitelink0.throughput_out * 0.01f; } else { _lineColor = Color.red; _blinkPeriodSeconds = 2.0f; } // --- Draw(); UpdateCollider(); UpdateInformation(); }
public void UpdateEntities(bool forceRefresh) { ClearSiteMarkers(); ClearSiteLinks(); _wanManager.DestroyWans(); var siteMarkersPromise = _dataManager.GetSites(forceRefresh) .Then(sites => { foreach (Site site in sites) { if (site.coordinates.isValid) { if (earthSphere.activeSelf) { currentSiteMarkers.Add(site.id, earthSphere.GetComponent <GlobeSiteCreation>().placeSiteMarker(site, site.coordinates)); } else { currentSiteMarkers.Add(site.id, flatMap.GetComponent <FlatSiteCreation>().placeSiteMarker(site, site.coordinates)); } } else { Debug.LogWarning($"Coordinates for site {site.id} are not valid, not adding site marker"); } } return(currentSiteMarkers); }); var sitelinkMarkersPromise = PromiseHelpers.All(siteMarkersPromise, _dataManager.GetSitelinkPairs(forceRefresh)) .Then(tup => { Dictionary <SiteId, SiteMarker> siteMarkers = tup.Item1; List <SitelinkPair> sitelinkPairs = tup.Item2; foreach (SitelinkPair sitelinkPair in sitelinkPairs) { Debug.Log($"Sitelink pair has {sitelinkPair.pair.Count} sitelinks"); if (sitelinkPair.IsValid()) { SitelinkReporting sitelink0 = sitelinkPair.pair[0]; SitelinkReporting sitelink1 = sitelinkPair.pair[1]; Debug.Log($"Sitelink pair {sitelink0.id}/{sitelink1.id} between {sitelink0.local_site} and {sitelink0.remote_site}: first element of pair has status({sitelink0.status}) state({sitelink0.state})"); // For now, just use sitelink0 as "the" sitelink. The problem with this is, the order of sitelinks // in a pair is probably not deterministic, so they may swap between refreshes. // TODO: Deal with this somehow, eg. sitelink markers have SitelinkPairs attached, not just a single sitelink. if (siteMarkers.ContainsKey(sitelink0.local_site) && siteMarkers.ContainsKey(sitelink0.remote_site)) { if (earthSphere.activeSelf) { _currentSitelinkMarkers.Add(earthSphere.GetComponent <GlobeSiteCreation>().placeSitelinkMarker(sitelinkPair, currentSiteMarkers)); } else { _currentSitelinkMarkers.Add(flatMap.GetComponent <FlatSiteCreation>().placeSitelinkMarker(sitelinkPair, currentSiteMarkers)); } } else { Debug.LogWarning($"Sitelink between {sitelink0.local_site} and {sitelink0.remote_site} can't be drawn because one or both sitemarkers are missing"); } } else { Debug.LogError("A sitelink pair is invalid!"); } } }) .Then(() => { _wanManager.UpdateWans(forceRefresh); }) .Catch(err => Debug.LogError($"Error updating entities: {err.Message}\n{err.StackTrace}")); }