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); }
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; } }
/// <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); } }