From 0e5f8a8c7523a6b839ca0f6507480eb78d84b01d Mon Sep 17 00:00:00 2001 From: Nick Date: Tue, 8 Nov 2022 18:46:10 -0500 Subject: [PATCH 1/3] Make events earlier so theyre not null when QSB goes to use --- NewHorizons/Main.cs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/NewHorizons/Main.cs b/NewHorizons/Main.cs index 4f74a553..429646ff 100644 --- a/NewHorizons/Main.cs +++ b/NewHorizons/Main.cs @@ -74,9 +74,9 @@ namespace NewHorizons // API events public class StarSystemEvent : UnityEvent { } - public StarSystemEvent OnChangeStarSystem; - public StarSystemEvent OnStarSystemLoaded; - public StarSystemEvent OnPlanetLoaded; + public StarSystemEvent OnChangeStarSystem = new(); + public StarSystemEvent OnStarSystemLoaded = new(); + public StarSystemEvent OnPlanetLoaded = new(); public static bool HasDLC { get => EntitlementsManager.IsDlcOwned() == EntitlementsManager.AsyncOwnershipStatus.Owned; } @@ -185,10 +185,6 @@ namespace NewHorizons // Patches Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly()); - OnChangeStarSystem = new StarSystemEvent(); - OnStarSystemLoaded = new StarSystemEvent(); - OnPlanetLoaded = new StarSystemEvent(); - SceneManager.sceneLoaded += OnSceneLoaded; SceneManager.sceneUnloaded += OnSceneUnloaded; From 15cc907bec8e76275e6b9b33c257521b40071b27 Mon Sep 17 00:00:00 2001 From: Nick Date: Thu, 10 Nov 2022 18:01:32 -0500 Subject: [PATCH 2/3] Put the prefabs in dont destroy on load for QSBs sake --- NewHorizons/Builder/Props/DetailBuilder.cs | 7 ++++++- NewHorizons/Main.cs | 2 -- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index a3e3d4b4..86f65817 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -24,6 +24,10 @@ namespace NewHorizons.Builder.Props private static void SceneManager_sceneUnloaded(Scene scene) { + foreach (var prefab in _fixedPrefabCache.Values) + { + SceneManager.MoveGameObjectToScene(prefab.prefab, scene); + } _fixedPrefabCache.Clear(); _detailInfoToCorrespondingSpawnedGameObject.Clear(); } @@ -114,7 +118,8 @@ namespace NewHorizons.Builder.Props if (detail.path != null) { - _fixedPrefabCache.Add((sector, detail.path), (prop.InstantiateInactive(), isItem)); + // We put these in DontDestroyOnLoad so that QSB will ignore them and so they don't clutter up the scene. + _fixedPrefabCache.Add((sector, detail.path), (prop.InstantiateInactive().DontDestroyOnLoad(), isItem)); } } diff --git a/NewHorizons/Main.cs b/NewHorizons/Main.cs index 429646ff..5437feae 100644 --- a/NewHorizons/Main.cs +++ b/NewHorizons/Main.cs @@ -4,7 +4,6 @@ using NewHorizons.Builder.Body; using NewHorizons.Builder.General; using NewHorizons.Builder.Props; using NewHorizons.Components; -using NewHorizons.Components.Orbital; using NewHorizons.Components.Fixers; using NewHorizons.Components.SizeControllers; using NewHorizons.External; @@ -29,7 +28,6 @@ using UnityEngine; using UnityEngine.Events; using UnityEngine.SceneManagement; using Logger = NewHorizons.Utility.Logger; -using NewHorizons.Components.Stars; namespace NewHorizons { From c3f346a7fd618d564aa2749ed146f2ee6fb8c4b1 Mon Sep 17 00:00:00 2001 From: Nick Date: Thu, 10 Nov 2022 18:12:31 -0500 Subject: [PATCH 3/3] John was wrong --- NewHorizons/Builder/Props/DetailBuilder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index 86f65817..d04f6663 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -26,7 +26,7 @@ namespace NewHorizons.Builder.Props { foreach (var prefab in _fixedPrefabCache.Values) { - SceneManager.MoveGameObjectToScene(prefab.prefab, scene); + GameObject.Destroy(prefab.prefab); } _fixedPrefabCache.Clear(); _detailInfoToCorrespondingSpawnedGameObject.Clear();