Initial planet rotation. Fixes #360

This commit is contained in:
Nick 2023-07-18 01:08:59 -04:00
parent f05e2be30a
commit 64efe36511
2 changed files with 9 additions and 1 deletions

View File

@ -24,10 +24,12 @@ namespace NewHorizons.Builder.Orbital
initialMotion._initAngularSpeed = orbit.siderealPeriod == 0 ? 0f : 2f * Mathf.PI / (orbit.siderealPeriod * 60f); initialMotion._initAngularSpeed = orbit.siderealPeriod == 0 ? 0f : 2f * Mathf.PI / (orbit.siderealPeriod * 60f);
var rotationAxis = Quaternion.AngleAxis(orbit.axialTilt, Vector3.right) * Vector3.up; 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) if (AstroObjectLocator.GetChildren(secondaryBody).Length == 0)
{ {
secondaryBody.transform.rotation = Quaternion.FromToRotation(Vector3.up, rotationAxis); secondaryBody.transform.rotation = Quaternion.FromToRotation(Vector3.up, rotationAxis);
secondaryBody.transform.Rotate(rotationAxis, orbit.initialRotation);
} }
if (!orbit.isStatic && primaryBody != null) if (!orbit.isStatic && primaryBody != null)

View File

@ -34,6 +34,12 @@ namespace NewHorizons.External.Modules
/// </summary> /// </summary>
public float siderealPeriod; public float siderealPeriod;
/// <summary>
/// Offsets the planet's starting sidereal rotation. In degrees.
/// </summary>
[Range(0f, 360f)]
public float initialRotation;
/// <summary> /// <summary>
/// Should the body always have one side facing its primary? /// Should the body always have one side facing its primary?
/// </summary> /// </summary>