private void CalculateOrbit()
    {
        // clear lists and initialize position and velocity
        _positions.Clear();

        // temporary variables used to create positions
        Vector3 acceleration;
        Vector3 velocity;

        // init pos vel depending on if we're in the editor or not.
        _positions.Add(_this_body.position);
        if (Application.isPlaying)
        {
            velocity = _this_body.velocity;
        }
        else
        {
            velocity = _this_body.initialVelocity;
        }

        _initial_velocity = velocity;

        // iterate forward using the simulation system and future timesteps
        for (int i = 0; i < time_into_future; i++)
        {
            acceleration = SimulationSystem.CalculateAcceleration(_positions[i], _this_body); // get current acceleration
            velocity     = velocity + (acceleration * Universe.physicsTimeStep);              // update velocity
            _positions.Add(_positions[i] + (velocity * Universe.physicsTimeStep));            // add new position
        }
    }