コード例 #1
0
    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);
    }
コード例 #2
0
    public IPromise <List <SitelinkPair> > GetSitelinkPairs(bool forceRefresh)
    {
        if (forceRefresh || _sitelinkPairsPromise == null)
        {
            _sitelinkPairsPromise = _sitesPromise
                                    .ThenAll(sites => sites.Select(site => _steelConnect.GetSitelinks(site.id)))
                                    .Then(sitelinks => {
                List <SitelinkPair> sitelinkPairs = new List <SitelinkPair>();

                foreach (SitelinkReportingItems sitelinkContainer in sitelinks)
                {
                    foreach (SitelinkReporting sitelink in sitelinkContainer.items)
                    {
                        // Check if there is a matching sitelink already.
                        // This is somewhat inefficient, but I couldn't think of a better way at the time I wrote this.
                        SitelinkPair matchedPair = sitelinkPairs.Find(sitelinkPair => sitelinkPair.pair.Count == 1 &&
                                                                      sitelinkPair.pair[0].remote_site == sitelink.local_site &&
                                                                      sitelinkPair.pair[0].local_site == sitelink.remote_site);

                        if (matchedPair != null)
                        {
                            // Complete this pair.
                            matchedPair.pair.Add(sitelink);
                        }
                        else
                        {
                            // New pair!
                            SitelinkPair newPair = new SitelinkPair();
                            newPair.pair.Add(sitelink);
                            sitelinkPairs.Add(newPair);
                        }
                    }
                }

                _sitelinkPairs = sitelinkPairs;
                return(sitelinkPairs);
            });
        }

        return(_sitelinkPairsPromise);
    }
コード例 #3
0
    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();
    }