diff --git a/NewHorizons/Handlers/StreamingHandler.cs b/NewHorizons/Handlers/StreamingHandler.cs index 9aed55ef..7cb6abf5 100644 --- a/NewHorizons/Handlers/StreamingHandler.cs +++ b/NewHorizons/Handlers/StreamingHandler.cs @@ -24,16 +24,23 @@ namespace NewHorizons.Handlers { var group = GetStreamingGroup(name); - sector.OnOccupantEnterSector += _ => + if (sector) { - if (sector.ContainsAnyOccupants(DynamicOccupant.Player | DynamicOccupant.Probe)) - group.RequestGeneralAssets(); - }; - sector.OnOccupantExitSector += _ => + sector.OnOccupantEnterSector += _ => + { + if (sector.ContainsAnyOccupants(DynamicOccupant.Player | DynamicOccupant.Probe)) + group.RequestGeneralAssets(); + }; + sector.OnOccupantExitSector += _ => + { + if (!sector.ContainsAnyOccupants(DynamicOccupant.Player | DynamicOccupant.Probe)) + group.ReleaseGeneralAssets(); + }; + } + else { - if (!sector.ContainsAnyOccupants(DynamicOccupant.Player | DynamicOccupant.Probe)) - group.ReleaseGeneralAssets(); - }; + group.RequestGeneralAssets(); + } } /// @@ -87,8 +94,6 @@ namespace NewHorizons.Handlers foreach (var assetBundle in assetBundles) { - StreamingManager.LoadStreamingAssets(assetBundle); - // Track the sector even if its null. null means stay loaded forever if (!_sectorCache.TryGetValue(assetBundle, out var sectors)) { @@ -113,6 +118,11 @@ namespace NewHorizons.Handlers StreamingManager.UnloadStreamingAssets(assetBundle); }; } + else + { + foreach (var assetBundle in assetBundles) + StreamingManager.LoadStreamingAssets(assetBundle); + } } public static bool IsBundleInUse(string assetBundle) @@ -133,7 +143,7 @@ namespace NewHorizons.Handlers } else { - return Locator.GetAstroObject(name)?.GetComponentInChildren(); + return Locator.GetAstroObject(name).GetComponentInChildren(); } } }