// Use this for initialization
    void Start()
    {
        ge     = GravityEngine.Instance();
        x_axis = new Vector3d(1, 0, 0);

        // mass scaling will cancel in this ratio
        soiRadius = OrbitUtils.SoiRadius(planet, moonBody);

        // TODO: allow moon to be OrbitUniversal as well.
        OrbitUniversal moonOrbit = moonBody.gameObject.GetComponent <OrbitUniversal>();

        if (moonOrbit == null)
        {
            Debug.LogError("Moon is required to have OrbitUniversal");
        }
        moonRadius = moonOrbit.GetMajorAxis();

        shipOrbit = spaceship.GetComponent <OrbitUniversal>();
        if (shipOrbit == null)
        {
            Debug.LogError("Require that the ship have an OrbitU");
        }
        if (shipOrbit.evolveMode != OrbitUniversal.EvolveMode.KEPLERS_EQN)
        {
            Debug.LogError("Controller requires ship on-rails but spaceship is off-rails");
        }

        // assuming circular orbit for ship
        shipRadius = shipOrbit.GetApogee();

        shipOrbitPredictor = spaceship.GetComponentInChildren <OrbitPredictor>();
    }
Example #2
0
 /// <summary>
 /// Construct an orbit data routine from an existing orbit universal by copying the orbital elements
 /// </summary>
 /// <param name="orbitU"></param>
 public OrbitData(OrbitUniversal orbitU)
 {
     a           = (float)orbitU.GetMajorAxis();
     omega_lc    = (float)orbitU.omega_lc;
     omega_uc    = (float)orbitU.omega_uc;
     inclination = (float)orbitU.inclination;
     ecc         = (float)orbitU.eccentricity;
     phase       = (float)orbitU.phase;
     nbody       = orbitU.GetNBody();
     centralMass = orbitU.centerNbody;
     mu          = GravityEngine.Instance().GetPhysicsMass(centralMass);
     period      = CalcPeriod();
 }