diff --git a/NewHorizons/Builder/Orbital/InitialMotionBuilder.cs b/NewHorizons/Builder/Orbital/InitialMotionBuilder.cs index 68a905df..e89e5401 100644 --- a/NewHorizons/Builder/Orbital/InitialMotionBuilder.cs +++ b/NewHorizons/Builder/Orbital/InitialMotionBuilder.cs @@ -45,8 +45,7 @@ namespace NewHorizons.Builder.Orbital var secondaryGravity = new Gravity(secondaryBody.GetGravityVolume()); var velocity = orbit.GetOrbitalParameters(primaryGravity, secondaryGravity).InitialVelocity; - // For some stupid reason the InitialMotion awake method transforms the perfectly fine direction vector you give it so we preemptively do the inverse so it all cancels out - initialMotion._initLinearDirection = body.transform.InverseTransformDirection(velocity.normalized); + initialMotion._initLinearDirection = velocity.normalized; initialMotion._initLinearSpeed = velocity.magnitude; } } diff --git a/NewHorizons/Components/Orbital/OrbitalParameters.cs b/NewHorizons/Components/Orbital/OrbitalParameters.cs index a62677c0..448f3756 100644 --- a/NewHorizons/Components/Orbital/OrbitalParameters.cs +++ b/NewHorizons/Components/Orbital/OrbitalParameters.cs @@ -63,13 +63,13 @@ namespace NewHorizons.Components.Orbital var x = r * (Mathf.Cos(la) * Mathf.Cos(ap + f) - Mathf.Sin(la) * Mathf.Sin(ap + f) * Mathf.Cos(i)); var y = r * (Mathf.Sin(la) * Mathf.Cos(ap + f) - Mathf.Cos(la) * Mathf.Sin(ap + f) * Mathf.Cos(i)); var z = r * (Mathf.Sin(i) * Mathf.Sin(ap + f)); - orbitalParameters.InitialPosition = new Vector3(x, z, y); + orbitalParameters.InitialPosition = new Vector3(x, y, z); var coefficient = h * eccentricity * Mathf.Sin(f) / (r * p); var vx = x * coefficient - (h / r) * (Mathf.Cos(la) * Mathf.Sin(ap + f) + Mathf.Sin(la) * Mathf.Cos(ap + f) * Mathf.Cos(i)); var vy = y * coefficient - (h / r) * (Mathf.Sin(la) * Mathf.Sin(ap + f) - Mathf.Cos(la) * Mathf.Cos(ap + f) * Mathf.Cos(i)); var vz = z * coefficient + (h / r) * (Mathf.Sin(i) * Mathf.Cos(ap + f)); - orbitalParameters.InitialVelocity = new Vector3(vx, vz, vy); + orbitalParameters.InitialVelocity = new Vector3(vx, vy, vz); return orbitalParameters; } diff --git a/NewHorizons/Handlers/PlanetCreationHandler.cs b/NewHorizons/Handlers/PlanetCreationHandler.cs index ad25f6c1..7312c037 100644 --- a/NewHorizons/Handlers/PlanetCreationHandler.cs +++ b/NewHorizons/Handlers/PlanetCreationHandler.cs @@ -364,7 +364,10 @@ namespace NewHorizons.Handlers { var primaryGravity = new Gravity(primaryBody.GetGravityVolume()); var secondaryGravity = new Gravity(secondaryBody.GetGravityVolume()); - go.transform.position = body.Config.Orbit.GetOrbitalParameters(primaryGravity, secondaryGravity).InitialPosition + primaryBody.transform.position; + + var relativePosition = body.Config.Orbit.GetOrbitalParameters(primaryGravity, secondaryGravity).InitialPosition; + // Rotate it 90 degrees bc reasons + go.transform.position = Quaternion.AngleAxis(90, Vector3.left) * relativePosition + primaryBody.transform.position; } else {