Fix quantum planet NRE

This commit is contained in:
Noah Pilarski 2024-06-14 21:48:30 -04:00
parent e55818bfb8
commit 92634dade1

View File

@ -22,6 +22,16 @@ namespace NewHorizons.Components.Quantum
private OWRigidbody _rb; private OWRigidbody _rb;
private OrbitLine _orbitLine; private OrbitLine _orbitLine;
public NHAstroObject astroObject
{
get
{
if (_astroObject == null)
_astroObject = GetComponent<NHAstroObject>();
return _astroObject;
}
}
public int CurrentIndex { get; private set; } public int CurrentIndex { get; private set; }
public override void Awake() public override void Awake()
@ -97,7 +107,7 @@ namespace NewHorizons.Components.Quantum
primaryBody = AstroObjectLocator.GetAstroObject(newOrbit.primaryBody); primaryBody = AstroObjectLocator.GetAstroObject(newOrbit.primaryBody);
var primaryGravity = new Gravity(primaryBody.GetGravityVolume()); var primaryGravity = new Gravity(primaryBody.GetGravityVolume());
var secondaryGravity = new Gravity(_astroObject.GetGravityVolume()); var secondaryGravity = new Gravity(astroObject.GetGravityVolume());
orbitalParams = newOrbit.GetOrbitalParameters(primaryGravity, secondaryGravity); orbitalParams = newOrbit.GetOrbitalParameters(primaryGravity, secondaryGravity);
var pos = primaryBody.transform.position + orbitalParams.InitialPosition; var pos = primaryBody.transform.position + orbitalParams.InitialPosition;
@ -139,15 +149,15 @@ namespace NewHorizons.Components.Quantum
private void SetNewOrbit(AstroObject primaryBody, OrbitalParameters orbitalParameters) private void SetNewOrbit(AstroObject primaryBody, OrbitalParameters orbitalParameters)
{ {
_astroObject._primaryBody = primaryBody; astroObject._primaryBody = primaryBody;
DetectorBuilder.SetDetector(primaryBody, _astroObject, _detector); DetectorBuilder.SetDetector(primaryBody, astroObject, _detector);
_detector._activeInheritedDetector = primaryBody.GetComponentInChildren<ForceDetector>(); _detector._activeInheritedDetector = primaryBody.GetComponentInChildren<ForceDetector>();
_detector._activeVolumes = new List<EffectVolume>() { primaryBody.GetGravityVolume() }; _detector._activeVolumes = new List<EffectVolume>() { primaryBody.GetGravityVolume() };
if (_alignment != null) _alignment.SetTargetBody(primaryBody.GetComponent<OWRigidbody>()); if (_alignment != null) _alignment.SetTargetBody(primaryBody.GetComponent<OWRigidbody>());
_astroObject.SetOrbitalParametersFromTrueAnomaly(orbitalParameters.eccentricity, orbitalParameters.semiMajorAxis, orbitalParameters.inclination, orbitalParameters.argumentOfPeriapsis, orbitalParameters.longitudeOfAscendingNode, orbitalParameters.trueAnomaly); astroObject.SetOrbitalParametersFromTrueAnomaly(orbitalParameters.eccentricity, orbitalParameters.semiMajorAxis, orbitalParameters.inclination, orbitalParameters.argumentOfPeriapsis, orbitalParameters.longitudeOfAscendingNode, orbitalParameters.trueAnomaly);
PlanetCreationHandler.UpdatePosition(gameObject, orbitalParameters, primaryBody, _astroObject); PlanetCreationHandler.UpdatePosition(gameObject, orbitalParameters, primaryBody, astroObject);
if (!Physics.autoSyncTransforms) if (!Physics.autoSyncTransforms)
{ {