diff --git a/NewHorizons/External/Configs/PlanetConfig.cs b/NewHorizons/External/Configs/PlanetConfig.cs
index 6184ed36..ff973769 100644
--- a/NewHorizons/External/Configs/PlanetConfig.cs
+++ b/NewHorizons/External/Configs/PlanetConfig.cs
@@ -64,6 +64,11 @@ namespace NewHorizons.External.Configs
///
public string[] removeChildren;
+ ///
+ /// optimization. turn this off if you know you're generating a new body and aren't worried about other mods editing it.
+ ///
+ [DefaultValue(true)] public bool checkForExisting = true;
+
#endregion
#region Modules
@@ -530,7 +535,7 @@ namespace NewHorizons.External.Configs
Spawn.shipSpawnPoints = new SpawnModule.ShipSpawnPoint[] { Spawn.shipSpawn };
}
- // Because these guys put TWO spawn points
+ // Because these guys put TWO spawn points
if (starSystem == "2walker2.OogaBooga" && name == "The Campground")
{
Spawn.playerSpawnPoints[0].isDefault = true;
@@ -742,4 +747,4 @@ namespace NewHorizons.External.Configs
}
#endregion
}
-}
\ No newline at end of file
+}
diff --git a/NewHorizons/Handlers/PlanetCreationHandler.cs b/NewHorizons/Handlers/PlanetCreationHandler.cs
index 6898382f..4de7e6a2 100644
--- a/NewHorizons/Handlers/PlanetCreationHandler.cs
+++ b/NewHorizons/Handlers/PlanetCreationHandler.cs
@@ -168,26 +168,29 @@ namespace NewHorizons.Handlers
// I don't remember doing this why is it exceptions what am I doing
GameObject existingPlanet = null;
- try
+ if (body.Config.checkForExisting)
{
- existingPlanet = AstroObjectLocator.GetAstroObject(body.Config.name).gameObject;
- }
- catch (Exception)
- {
- if (body?.Config?.name == null)
+ try
{
- NHLogger.LogError($"How is there no name for {body}");
+ existingPlanet = AstroObjectLocator.GetAstroObject(body.Config.name).gameObject;
}
- else
+ catch (Exception)
{
- existingPlanet = SearchUtilities.Find(body.Config.name.Replace(" ", "") + "_Body", false);
+ if (body?.Config?.name == null)
+ {
+ NHLogger.LogError($"How is there no name for {body}");
+ }
+ else
+ {
+ existingPlanet = SearchUtilities.Find(body.Config.name.Replace(" ", "") + "_Body", false);
+ }
}
- }
- if (existingPlanet == null && body.Config.destroy)
- {
- NHLogger.LogError($"{body.Config.name} was meant to be destroyed, but was not found");
- return false;
+ if (existingPlanet == null && body.Config.destroy)
+ {
+ NHLogger.LogError($"{body.Config.name} was meant to be destroyed, but was not found");
+ return false;
+ }
}
if (existingPlanet != null)
@@ -287,9 +290,9 @@ namespace NewHorizons.Handlers
try
{
NHLogger.Log($"Creating [{body.Config.name}]");
- var planetObject = GenerateBody(body, defaultPrimaryToSun)
+ var planetObject = GenerateBody(body, defaultPrimaryToSun)
?? throw new NullReferenceException("Something went wrong when generating the body but no errors were logged.");
-
+
planetObject.SetActive(true);
var ao = planetObject.GetComponent();
@@ -316,7 +319,7 @@ namespace NewHorizons.Handlers
{
NHLogger.LogError($"Error in event handler for OnPlanetLoaded on body {body.Config.name}: {e}");
}
-
+
body.UnloadCache(true);
_loadedBodies.Add(body);
return true;
@@ -390,7 +393,7 @@ namespace NewHorizons.Handlers
body.Config.MapMarker.enabled = false;
const float sphereOfInfluence = 2000f;
-
+
var owRigidBody = RigidBodyBuilder.Make(go, sphereOfInfluence, body.Config);
var ao = AstroObjectBuilder.Make(go, null, body, false);
@@ -402,7 +405,7 @@ namespace NewHorizons.Handlers
BrambleDimensionBuilder.Make(body, go, ao, sector, body.Mod, owRigidBody);
go = SharedGenerateBody(body, go, sector, owRigidBody);
-
+
// Not included in SharedGenerate to not mess up gravity on base game planets
if (body.Config.Base.surfaceGravity != 0)
{
@@ -467,7 +470,7 @@ namespace NewHorizons.Handlers
}
var sphereOfInfluence = GetSphereOfInfluence(body);
-
+
var owRigidBody = RigidBodyBuilder.Make(go, sphereOfInfluence, body.Config);
var ao = AstroObjectBuilder.Make(go, primaryBody, body, false);
@@ -686,7 +689,7 @@ namespace NewHorizons.Handlers
SunOverrideBuilder.Make(go, sector, body.Config.Atmosphere, body.Config.Water, surfaceSize);
}
}
-
+
if (body.Config.Atmosphere.fogSize != 0)
{
fog = FogBuilder.Make(go, sector, body.Config.Atmosphere, body.Mod);