diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index a280a4a3..c1940709 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -119,7 +119,7 @@ namespace NewHorizons.Builder.Props { if (FixUnsectoredComponent(component)) continue; } - else FixSectoredComponent(component, sector, isTorch); + else FixSectoredComponent(component, sector, isTorch, detail.keepLoaded); FixComponent(component, go); } @@ -214,10 +214,7 @@ namespace NewHorizons.Builder.Props /// /// Fix components that have sectors. Has a specific fix if there is a VisionTorchItem on the object. /// - /// - /// - /// - private static void FixSectoredComponent(Component component, Sector sector, bool isTorch = false) + private static void FixSectoredComponent(Component component, Sector sector, bool isTorch, bool keepLoaded) { // fix Sector stuff, eg SectorCullGroup (without this, props that have a SectorCullGroup component will become invisible inappropriately) if (component is ISectorGroup sectorGroup) @@ -225,6 +222,14 @@ namespace NewHorizons.Builder.Props sectorGroup.SetSector(sector); } + // keepLoaded should remove existing groups + // renderers/colliders get enabled later so we dont have to do that here + if (keepLoaded && component is SectorCullGroup or SectorCollisionGroup or SectorLightsCullGroup) + { + Component.DestroyImmediate(component); + return; + } + // Not doing else if here because idk if any of the classes below implement ISectorGroup if (component is Sector s) @@ -235,6 +240,12 @@ namespace NewHorizons.Builder.Props else if (component is SectorCullGroup sectorCullGroup) { sectorCullGroup._controllingProxy = null; + + // fixes sector cull group deactivating renderers on map view enter and fast foward + // TODO: does this actually work? what? how? + sectorCullGroup._inMapView = false; + sectorCullGroup._isFastForwarding = false; + sectorCullGroup.SetVisible(sectorCullGroup.ShouldBeVisible(), true, false); } else if(component is SectoredMonoBehaviour behaviour) @@ -265,7 +276,7 @@ namespace NewHorizons.Builder.Props /// private static bool FixUnsectoredComponent(Component component) { - if (component is FogLight or SectoredMonoBehaviour) + if (component is FogLight or SectoredMonoBehaviour or ISectorGroup) { GameObject.DestroyImmediate(component); return true; @@ -340,15 +351,6 @@ namespace NewHorizons.Builder.Props else if (component is Renderer renderer && component.gameObject.GetComponent() == null) renderer.enabled = true; else if(component is Shape shape) shape.enabled = true; - // fixes sector cull group deactivating renderers on map view enter and fast foward - // TODO: does this actually work? what? how? - else if(component is SectorCullGroup sectorCullGroup) - { - sectorCullGroup._inMapView = false; - sectorCullGroup._isFastForwarding = false; - sectorCullGroup.SetVisible(sectorCullGroup.ShouldBeVisible(), true, false); - } - // If it's not a moving anglerfish make sure the anim controller is regular else if(component is AnglerfishAnimController && component.GetComponentInParent() == null) {