From d759f1843bfde2105dc02656fa63c10169652c35 Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Sat, 15 Mar 2025 02:14:56 -0400 Subject: [PATCH 1/2] Allow comet tails on vanilla bodies --- NewHorizons/Builder/Body/CometTailBuilder.cs | 18 ++++++++++++------ NewHorizons/Builder/Body/ProxyBuilder.cs | 2 +- NewHorizons/Handlers/PlanetCreationHandler.cs | 2 +- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/NewHorizons/Builder/Body/CometTailBuilder.cs b/NewHorizons/Builder/Body/CometTailBuilder.cs index 9633b316..781c44bc 100644 --- a/NewHorizons/Builder/Body/CometTailBuilder.cs +++ b/NewHorizons/Builder/Body/CometTailBuilder.cs @@ -60,14 +60,22 @@ namespace NewHorizons.Builder.Body } } - public static void Make(GameObject planetGO, Sector sector, CometTailModule cometTailModule, PlanetConfig config) + public static void Make(GameObject planetGO, Sector sector, CometTailModule cometTailModule, PlanetConfig config, AstroObject ao) { - if (config.Orbit.primaryBody == null) + var primaryBody = ao.GetPrimaryBody(); + + if (!string.IsNullOrEmpty(config.Orbit.primaryBody)) primaryBody = AstroObjectLocator.GetAstroObject(config.Orbit.primaryBody); + + if (primaryBody == null) { NHLogger.LogError($"Comet {planetGO.name} does not orbit anything. That makes no sense"); return; } + if (string.IsNullOrEmpty(cometTailModule.primaryBody)) + cometTailModule.primaryBody = !string.IsNullOrEmpty(config.Orbit.primaryBody) ? config.Orbit.primaryBody + : (primaryBody._name == AstroObject.Name.CustomString ? primaryBody.GetCustomName() : primaryBody._name.ToString()); + var rootObj = new GameObject("CometRoot"); rootObj.SetActive(false); rootObj.transform.parent = sector?.transform ?? planetGO.transform; @@ -79,13 +87,11 @@ namespace NewHorizons.Builder.Body if (cometTailModule.rotationOverride != null) controller.SetRotationOverride(cometTailModule.rotationOverride); - if (string.IsNullOrEmpty(cometTailModule.primaryBody)) cometTailModule.primaryBody = config.Orbit.primaryBody; - Delay.FireOnNextUpdate(() => { controller.SetPrimaryBody( - AstroObjectLocator.GetAstroObject(cometTailModule.primaryBody).transform, - AstroObjectLocator.GetAstroObject(config.Orbit.primaryBody).GetAttachedOWRigidbody() + AstroObjectLocator.GetAstroObject(cometTailModule.primaryBody).transform, + primaryBody.GetAttachedOWRigidbody() ); }); diff --git a/NewHorizons/Builder/Body/ProxyBuilder.cs b/NewHorizons/Builder/Body/ProxyBuilder.cs index 0b4cafc3..943726eb 100644 --- a/NewHorizons/Builder/Body/ProxyBuilder.cs +++ b/NewHorizons/Builder/Body/ProxyBuilder.cs @@ -203,7 +203,7 @@ namespace NewHorizons.Builder.Body if (body.Config.CometTail != null) { - CometTailBuilder.Make(proxy, null, body.Config.CometTail, body.Config); + CometTailBuilder.Make(proxy, null, body.Config.CometTail, body.Config, planetGO.GetComponent()); } if (body.Config.Props?.proxyDetails != null) diff --git a/NewHorizons/Handlers/PlanetCreationHandler.cs b/NewHorizons/Handlers/PlanetCreationHandler.cs index 858131e9..8b0c01f2 100644 --- a/NewHorizons/Handlers/PlanetCreationHandler.cs +++ b/NewHorizons/Handlers/PlanetCreationHandler.cs @@ -657,7 +657,7 @@ namespace NewHorizons.Handlers if (body.Config.CometTail != null) { - CometTailBuilder.Make(go, sector, body.Config.CometTail, body.Config); + CometTailBuilder.Make(go, sector, body.Config.CometTail, body.Config, go.GetComponent()); } if (body.Config.Lava != null) From 4519d2f25727b1078954858a31f70b27072639f3 Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Sat, 15 Mar 2025 02:58:34 -0400 Subject: [PATCH 2/2] Move to an extension --- NewHorizons/Builder/Body/CometTailBuilder.cs | 2 +- NewHorizons/Utility/NewHorizonExtensions.cs | 5 +++++ NewHorizons/Utility/OuterWilds/AstroObjectLocator.cs | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/NewHorizons/Builder/Body/CometTailBuilder.cs b/NewHorizons/Builder/Body/CometTailBuilder.cs index 781c44bc..2af94def 100644 --- a/NewHorizons/Builder/Body/CometTailBuilder.cs +++ b/NewHorizons/Builder/Body/CometTailBuilder.cs @@ -74,7 +74,7 @@ namespace NewHorizons.Builder.Body if (string.IsNullOrEmpty(cometTailModule.primaryBody)) cometTailModule.primaryBody = !string.IsNullOrEmpty(config.Orbit.primaryBody) ? config.Orbit.primaryBody - : (primaryBody._name == AstroObject.Name.CustomString ? primaryBody.GetCustomName() : primaryBody._name.ToString()); + : primaryBody.GetKey(); var rootObj = new GameObject("CometRoot"); rootObj.SetActive(false); diff --git a/NewHorizons/Utility/NewHorizonExtensions.cs b/NewHorizons/Utility/NewHorizonExtensions.cs index 9f4da941..216ea14a 100644 --- a/NewHorizons/Utility/NewHorizonExtensions.cs +++ b/NewHorizons/Utility/NewHorizonExtensions.cs @@ -445,6 +445,11 @@ namespace NewHorizons.Utility return globalMusicController._endTimesSource.clip.length; } + public static string GetKey(this AstroObject ao) + { + return ao._name == AstroObject.Name.CustomString ? ao.GetCustomName() : ao._name.ToString(); + } + public static CodeMatcher LogInstructions(this CodeMatcher matcher, string prefix) { matcher.InstructionEnumeration().LogInstructions(prefix); diff --git a/NewHorizons/Utility/OuterWilds/AstroObjectLocator.cs b/NewHorizons/Utility/OuterWilds/AstroObjectLocator.cs index 9e3a8a01..dd3c9564 100644 --- a/NewHorizons/Utility/OuterWilds/AstroObjectLocator.cs +++ b/NewHorizons/Utility/OuterWilds/AstroObjectLocator.cs @@ -65,7 +65,7 @@ namespace NewHorizons.Utility.OuterWilds public static void RegisterCustomAstroObject(AstroObject ao) { - var key = ao._name == AstroObject.Name.CustomString ? ao.GetCustomName() : ao._name.ToString(); + var key = ao.GetKey(); if (_customAstroObjectDictionary.ContainsKey(key)) { @@ -81,7 +81,7 @@ namespace NewHorizons.Utility.OuterWilds public static void DeregisterCustomAstroObject(AstroObject ao) { - var key = ao._name == AstroObject.Name.CustomString ? ao.GetCustomName() : ao._name.ToString(); + var key = ao.GetKey(); _customAstroObjectDictionary.Remove(key); }