Some minor fixes

This commit is contained in:
JoJo 2021-12-30 12:57:54 -08:00
parent cf64019dca
commit e7087fa602
3 changed files with 18 additions and 8 deletions

View File

@ -38,18 +38,18 @@ namespace NewHorizons.Builder.General
hb = AddHeavenlyBody(config.Name); hb = AddHeavenlyBody(config.Name);
} }
if(!config.Orbit.IsStatic) var mapping = Planet.defaultMapping;
if (!config.Orbit.IsStatic)
{ {
var planetoid = new Planet.Plantoid(size, gravity, body.transform.rotation, initialMotion._initAngularSpeed, parent, orbit); var planetoid = new Planet.Plantoid(size, gravity, body.transform.rotation, initialMotion._initAngularSpeed, parent, orbit);
var mapping = Planet.defaultMapping;
mapping[hb] = planetoid; mapping[hb] = planetoid;
Planet.defaultMapping = mapping; Planet.defaultMapping = mapping;
} }
// Fix for binary focal points // Fix for binary focal points
var focalPoint = Position.AstroLookup[parent].Invoke()?.gameObject.GetComponent<BinaryFocalPoint>(); var focalPoint = Position.AstroLookup[parent].Invoke()?.gameObject.GetComponent<BinaryFocalPoint>();
if (focalPoint != null && Planet.defaultMapping.ContainsKey(parent)) if (focalPoint != null && mapping.ContainsKey(parent))
{ {
var primary = Position.getBody(GetBody(focalPoint.PrimaryName)); var primary = Position.getBody(GetBody(focalPoint.PrimaryName));
var secondary = Position.getBody(GetBody(focalPoint.SecondaryName)); var secondary = Position.getBody(GetBody(focalPoint.SecondaryName));
@ -63,13 +63,21 @@ namespace NewHorizons.Builder.General
var exponent = (primaryGravity.exponent + secondaryGravity.exponent) / 2f; var exponent = (primaryGravity.exponent + secondaryGravity.exponent) / 2f;
var mass = (primaryGravity.mass + secondaryGravity.mass) / 4f; var mass = (primaryGravity.mass + secondaryGravity.mass) / 4f;
var currentValue = Planet.mapping[parent]; mapping[parent] = new Planet.Plantoid(mapping[parent].size, Gravity.of(exponent, mass), mapping[parent].state);
var newValue = new Planet.Plantoid(currentValue.size, Gravity.of(exponent, mass), currentValue.state); Planet.defaultMapping = mapping;
Planet.defaultMapping[parent] = newValue;
} }
} }
} }
public static void Remove(AstroObject obj)
{
var astro = Position.find(obj);
var mapping = Planet.defaultMapping;
mapping.Remove(astro);
Planet.defaultMapping = mapping;
}
private static Gravity getGravity(GravityVolume volume) private static Gravity getGravity(GravityVolume volume)
{ {
if (volume == null) if (volume == null)
@ -115,7 +123,7 @@ namespace NewHorizons.Builder.General
return hb; return hb;
} }
public static void OnDestroy() public static void Reset()
{ {
Planet.defaultMapping = Planet.standardMapping; Planet.defaultMapping = Planet.standardMapping;
} }

View File

@ -102,6 +102,8 @@ namespace NewHorizons.Builder.General
Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => RemoveProxy(ao.name.Replace("_Body", ""))); Main.Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => RemoveProxy(ao.name.Replace("_Body", "")));
ao.transform.root.gameObject.SetActive(false); ao.transform.root.gameObject.SetActive(false);
HeavenlyBodyBuilder.Remove(ao);
} }
public static void RemoveDistantProxyClones() public static void RemoveDistantProxyClones()

View File

@ -70,7 +70,7 @@ namespace NewHorizons
void OnSceneLoaded(Scene scene, LoadSceneMode mode) void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{ {
Logger.Log($"Scene Loaded: {scene.name} {mode}"); Logger.Log($"Scene Loaded: {scene.name} {mode}");
HeavenlyBodyBuilder.OnDestroy(); HeavenlyBodyBuilder.Reset();
if (scene.name != "SolarSystem") { return; } if (scene.name != "SolarSystem") { return; }
Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => Locator.GetPlayerBody().gameObject.AddComponent<DebugRaycaster>()); Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => Locator.GetPlayerBody().gameObject.AddComponent<DebugRaycaster>());