Ejemplo n.º 1
0
        /// <summary>
        /// Ermittelt ein Kürzel für diese Gruppe.
        /// </summary>
        /// <returns>Das gewünschte Kürzel.</returns>
        public override int GetHashCode()
        {
            // Core
            int hash = (null == OrbitalPosition) ? 0 : OrbitalPosition.GetHashCode();

            // Merge all
            return(hash ^ Frequency.GetHashCode() ^ SymbolRate.GetHashCode() ^ Polarization.GetHashCode() ^ InnerFEC.GetHashCode() ^ UsesS2Modulation.GetHashCode() ^ Modulation.GetHashCode() ^ RollOff.GetHashCode() ^ IsWestPosition.GetHashCode());
        }
    private float timer;                                                      // timer for counting to refresh

    // Start
    private void Start()
    {
        roadsterOrbitalPosition = new OrbitalPosition(); // init new orbital position storage
        CSVdataRead             = false;                 // reset flag
        WebDataRead             = false;                 // reset flag
        ReadCSVtoDictionary();                           // read from csv to dictionary
        StartCoroutine(RefreshAllData());                // download data from spacex
        timer = 0;                                       // reset timer
    }
Ejemplo n.º 3
0
    private void Rotate()
    {
        rotationRate = Mathf.Clamp(rotationRate, -rotationRateCap, rotationRateCap);

        if (!StabilityAssistEnabled)
        {
            // Rotate freely
            transform.Rotate(Vector3.forward, rotationRate);
            return;
        }

        // Stability assist
        if (StabilityAssistMode == ShipSystems.StabilityAssistMode.Hold)
        {
            // Hold position
            rotationRate = Mathf.SmoothDamp(rotationRate, 0f, ref rotationDampVel, rotationDampTime);
            transform.Rotate(Vector3.forward, rotationRate);
            return;
        }
        else if (StabilityAssistMode == ShipSystems.StabilityAssistMode.Prograde)
        {
            // Rotate to prograde
            float sign = Mathf.Sign(Vector2.SignedAngle(transform.up, OrbitalDirectionToWorld));
            rotationRate += (sign * stabilityAssistAccel);
        }
        else if (StabilityAssistMode == ShipSystems.StabilityAssistMode.Retrograde)
        {
            // Rotate to retrograde
            float sign = Mathf.Sign(Vector2.SignedAngle(transform.up, OrbitalDirectionToWorld));
            rotationRate -= (sign * stabilityAssistAccel);
        }
        else if (StabilityAssistMode == ShipSystems.StabilityAssistMode.RadialIn)
        {
            // Rotate to radial in
            Vector2 dir  = OrbitalPosition.RotateVector(Trajectory.ArgumentOfPeriapsis).normalized;
            float   sign = Vector2.SignedAngle(transform.up, -dir);
            rotationRate += (sign * stabilityAssistAccel);
        }
        else
        {
            // Rotate to radial out
            Vector2 dir  = OrbitalPosition.RotateVector(Trajectory.ArgumentOfPeriapsis).normalized;
            float   sign = Vector2.SignedAngle(transform.up, dir);
            rotationRate += (sign * stabilityAssistAccel);
        }
        rotationRate = Mathf.Clamp(rotationRate, -rotationRateCap, rotationRateCap);
        transform.Rotate(Vector3.forward, rotationRate);
    }
Ejemplo n.º 4
0
        /// <summary>
        /// Meldet eine Zeichenkette für die orbitale Position des Ursprungs zu
        /// dieser Quelle.
        /// </summary>
        /// <returns>Eine Zeichenkette zur orbitalen Position.</returns>
        public string GetOrbitalPosition()
        {
            // Get the orbital position
            string pos;

            if ((null != OrbitalPosition) && (4 == OrbitalPosition.Length))
            {
                pos = string.Format("{0}.{1}°", OrbitalPosition.Substring(0, 3).TrimStart('0'), OrbitalPosition[3]);
            }
            else
            {
                pos = OrbitalPosition;
            }

            // Merge
            return(string.Format("{0}{1}", pos, IsWestPosition ? "W" : "E"));
        }
Ejemplo n.º 5
0
    protected override void OnDrawGizmos()
    {
        base.OnDrawGizmos();
        if (body == null)
        {
            return;
        }

        Gizmos.color = Color.green;
        Gizmos.DrawRay(Position, 5f * transform.up);


        Gizmos.color = Color.red;
        Gizmos.DrawRay(Position, 5f * OrbitalDirectionToWorld);

        Gizmos.color = Color.blue;
        Gizmos.DrawRay(Position, 5f * OrbitalPosition.RotateVector(Trajectory.ArgumentOfPeriapsis).normalized);
    }
    // get data from internet and parse it
    private IEnumerator GetTeslaRequest(string uri)
    {
        UnityWebRequest webRequest = UnityWebRequest.Get(uri); // set GET url

        yield return(webRequest.SendWebRequest());             // request and wait for the desired page

        string[] pages = uri.Split('/');                       // split url
        int      page  = pages.Length - 1;                     // get url length

        if (webRequest.isNetworkError)
        {
            Debug.LogError(pages[page] + ": Error: " + webRequest.error);                            // an error occured
        }
        else // an error did not occured
        {
            roadsterOrbitalPosition = JsonUtility.FromJson <OrbitalPosition>(webRequest.downloadHandler.text); // parse roadster orbital position data to object
            WebDataRead             = true;                                                                    // set flag to indicate done reading from web
        }
    }