Exemple #1
0
        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;
        }
Exemple #2
0
        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);
        }