diff --git a/NewHorizons/Builder/Orbital/InitialMotionBuilder.cs b/NewHorizons/Builder/Orbital/InitialMotionBuilder.cs index c6405bd9..420fa2bf 100644 --- a/NewHorizons/Builder/Orbital/InitialMotionBuilder.cs +++ b/NewHorizons/Builder/Orbital/InitialMotionBuilder.cs @@ -24,10 +24,12 @@ namespace NewHorizons.Builder.Orbital initialMotion._initAngularSpeed = orbit.siderealPeriod == 0 ? 0f : 2f * Mathf.PI / (orbit.siderealPeriod * 60f); var rotationAxis = Quaternion.AngleAxis(orbit.axialTilt, Vector3.right) * Vector3.up; - // For things with children this is broken + // For stock planets with unsuspended rigidbody children this is broken + // For planets with rafts this is broken if (AstroObjectLocator.GetChildren(secondaryBody).Length == 0) { secondaryBody.transform.rotation = Quaternion.FromToRotation(Vector3.up, rotationAxis); + secondaryBody.transform.Rotate(rotationAxis, orbit.initialRotation); } if (!orbit.isStatic && primaryBody != null) diff --git a/NewHorizons/External/Modules/OrbitModule.cs b/NewHorizons/External/Modules/OrbitModule.cs index 84fa1d89..e3a6a566 100644 --- a/NewHorizons/External/Modules/OrbitModule.cs +++ b/NewHorizons/External/Modules/OrbitModule.cs @@ -34,6 +34,12 @@ namespace NewHorizons.External.Modules /// public float siderealPeriod; + /// + /// Offsets the planet's starting sidereal rotation. In degrees. + /// + [Range(0f, 360f)] + public float initialRotation; + /// /// Should the body always have one side facing its primary? ///