Example #1
0
    public void AddFixedBody(GravityEngine.FixedBody fixedBody)
    {
        // Need to maintain order by kepler depth
        int insertAt = fixedBodies.Count;

        for (int i = 0; i < fixedBodies.Count; i++)
        {
            if (fixedBody.kepler_depth < fixedBodies[i].kepler_depth)
            {
                insertAt = i;
                break;
            }
        }
        fixedBodies.Insert(insertAt, fixedBody);
    }
Example #2
0
 public void RemoveFixedBody(NBody nbody)
 {
     // find object in FixedBodies list and remove
     GravityEngine.FixedBody fbRemove = null;
     foreach (GravityEngine.FixedBody fb in fixedBodies)
     {
         if (fb.nbody == nbody)
         {
             fbRemove = fb;
             break;
         }
     }
     if (fbRemove != null)
     {
         fixedBodies.Remove(fbRemove);
         fixedBodiesInIntegrator -= 1;
     }
 }
Example #3
0
    /// <summary>
    /// Recompute and update the kepler depth of a fixed body.
    /// </summary>
    /// <param name="nbody"></param>
    public void UpdateKeplerDepth(NBody nbody, OrbitUniversal orbitU)
    {
        if (nbody.engineRef == null)
        {
            return;
        }
        GravityEngine.FixedBody fixedBody = nbody.engineRef.fixedBody;
        if (fixedBody == null)
        {
            return;
        }
        int depth    = nbody.GetOrbitDepth();
        int newDepth = OrbitUtils.CalcKeplerDepth(orbitU);

        if (newDepth != depth)
        {
            fixedBody.kepler_depth = newDepth;
            keplerDepthChanged.Add(fixedBody);
        }
    }