public void ChangeSystem(GravitySystem newSystem) { // Same System if (gravitySystem == newSystem) { return; } if (!newSystem) { return; } OrbitPrediction newSystemPrediction = newSystem.GetPrediction(time); // From World Space if (!gravitySystem) { if (!newSystem.parentSystem) { //Sun gravitySystem = newSystem; return; } else { // localPosition -= newSystemPrediction.localPosition; localVelocity -= newSystemPrediction.localVelocity; gravitySystem = newSystem; return; } } // From ParentSystem if (gravitySystem == newSystem.parentSystem) { localPosition -= newSystemPrediction.localPosition; localVelocity -= newSystemPrediction.localVelocity; gravitySystem = newSystem; return; } // From Child System if (gravitySystem.parentSystem = newSystem) { OrbitMath.OrbitPrediction childPrediction = gravitySystem.GetPrediction(time); localPosition += childPrediction.localPosition; localVelocity += childPrediction.localVelocity; gravitySystem = newSystem; return; } gravitySystem = newSystem; }
public OrbitPrediction Clone() { OrbitPrediction clone = new OrbitPrediction(time, localPosition, localVelocity); clone.time = time; clone.localPosition = localPosition; clone.localVelocity = localVelocity; clone.localGravity = localGravity; clone.gravitySystem = gravitySystem; return(clone); }