mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Update HeavenlyBodyBuilder.cs
This commit is contained in:
parent
1d6aefefd4
commit
c76d4c0f39
@ -24,7 +24,7 @@ namespace NewHorizons.Builder.General
|
||||
public static void Make(GameObject body, IPlanetConfig config, float SOI, GravityVolume bodyGravity, InitialMotion initialMotion)
|
||||
{
|
||||
var size = new Position.Size(config.Base.SurfaceSize, SOI);
|
||||
var gravity = GetGravity(bodyGravity);
|
||||
var gravity = GetGravity(bodyGravity, config.Orbit.IsStatic);
|
||||
var parent = config.Orbit.PrimaryBody != null ? GetBody(config.Orbit.PrimaryBody) : HeavenlyBody.None;
|
||||
|
||||
if (config.Orbit.PrimaryBody != null && parent == HeavenlyBody.None)
|
||||
@ -44,7 +44,7 @@ namespace NewHorizons.Builder.General
|
||||
mapping[hb] = planetoid;
|
||||
|
||||
// Fix for binary focal points
|
||||
if(parent != HeavenlyBody.None)
|
||||
if (parent != HeavenlyBody.None)
|
||||
{
|
||||
var focalPoint = Position.AstroLookup[parent].Invoke()?.gameObject.GetComponent<BinaryFocalPoint>();
|
||||
if (focalPoint != null && mapping.ContainsKey(parent))
|
||||
@ -56,21 +56,21 @@ namespace NewHorizons.Builder.General
|
||||
Gravity secondaryGravity = null;
|
||||
|
||||
// One of them is null if it's the one being loaded
|
||||
if(config.Name.Equals(focalPoint.PrimaryName))
|
||||
if (config.Name.Equals(focalPoint.PrimaryName))
|
||||
{
|
||||
primary = body;
|
||||
primaryGravity = GetGravity(bodyGravity);
|
||||
primaryGravity = GetGravity(bodyGravity, false);
|
||||
secondary = Position.getBody(GetBody(focalPoint.SecondaryName))?.gameObject;
|
||||
var secondaryGV = Position.getBody(GetBody(focalPoint.SecondaryName))?.GetAttachedGravityVolume();
|
||||
if (secondaryGV != null) secondaryGravity = GetGravity(secondaryGV);
|
||||
if (secondaryGV != null) secondaryGravity = GetGravity(secondaryGV, false);
|
||||
}
|
||||
else if (config.Name.Equals(focalPoint.SecondaryName))
|
||||
{
|
||||
secondary = body;
|
||||
secondaryGravity = GetGravity(bodyGravity);
|
||||
secondaryGravity = GetGravity(bodyGravity, false);
|
||||
primary = Position.getBody(GetBody(focalPoint.PrimaryName))?.gameObject;
|
||||
var primaryGV = Position.getBody(GetBody(focalPoint.PrimaryName))?.GetAttachedGravityVolume();
|
||||
if (primaryGV != null) primaryGravity = GetGravity(primaryGV);
|
||||
if (primaryGV != null) primaryGravity = GetGravity(primaryGV, false);
|
||||
}
|
||||
|
||||
if (primaryGravity != null && secondaryGravity != null)
|
||||
@ -174,17 +174,17 @@ namespace NewHorizons.Builder.General
|
||||
Planet.mapping = mapping;
|
||||
}
|
||||
|
||||
private static Gravity GetGravity(GravityVolume volume)
|
||||
private static Gravity GetGravity(GravityVolume volume, bool isStatic)
|
||||
{
|
||||
if (volume == null)
|
||||
{
|
||||
return Gravity.of(2, 0);
|
||||
return Gravity.of(2, 0, isStatic);
|
||||
}
|
||||
|
||||
var exponent = volume._falloffType != GravityVolume.FalloffType.linear ? 2f : 1f;
|
||||
var mass = (volume._surfaceAcceleration * Mathf.Pow(volume._upperSurfaceRadius, exponent)) / GravityVolume.GRAVITATIONAL_CONSTANT;
|
||||
|
||||
return Gravity.of(exponent, mass);
|
||||
return Gravity.of(exponent, mass, isStatic);
|
||||
}
|
||||
|
||||
private static HeavenlyBody AddHeavenlyBody(string name, bool isFocalPoint)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user