From 64efe3651198b7851fd865367166b2d6bd4decda Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 18 Jul 2023 01:08:59 -0400 Subject: [PATCH] Initial planet rotation. Fixes #360 --- NewHorizons/Builder/Orbital/InitialMotionBuilder.cs | 4 +++- NewHorizons/External/Modules/OrbitModule.cs | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) 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? ///