diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs
index 69171274..55406e64 100644
--- a/NewHorizons/Builder/Props/DetailBuilder.cs
+++ b/NewHorizons/Builder/Props/DetailBuilder.cs
@@ -253,39 +253,41 @@ namespace NewHorizons.Builder.Props
///
private static void FixSectoredComponent(Component component, Sector sector, bool isTorch = false)
{
- if (component is Sector s)
- {
- s.SetParentSector(sector);
- }
-
- if (component is SectorCullGroup sectorCullGroup)
- {
- sectorCullGroup._controllingProxy = null;
- }
-
// fix Sector stuff, eg SectorCullGroup (without this, props that have a SectorCullGroup component will become invisible inappropriately)
if (component is ISectorGroup sectorGroup)
{
sectorGroup.SetSector(sector);
}
- if (component is SectoredMonoBehaviour behaviour)
+ // Not doing else if here because idk if any of the classes below implement ISectorGroup
+
+ if (component is Sector s)
+ {
+ s.SetParentSector(sector);
+ }
+
+ else if (component is SectorCullGroup sectorCullGroup)
+ {
+ sectorCullGroup._controllingProxy = null;
+ }
+
+ else if(component is SectoredMonoBehaviour behaviour)
{
behaviour.SetSector(sector);
}
- if (component is OWItemSocket socket)
+ else if(component is OWItemSocket socket)
{
socket._sector = sector;
}
// Fix slide reel - Softlocks if this object is a vision torch
- if (!isTorch && component is SlideCollectionContainer container)
+ else if(!isTorch && component is SlideCollectionContainer container)
{
sector.OnOccupantEnterSector.AddListener(_ => container.LoadStreamingTextures());
}
- if (component is NomaiRemoteCameraPlatform remoteCameraPlatform)
+ else if(component is NomaiRemoteCameraPlatform remoteCameraPlatform)
{
remoteCameraPlatform._visualSector = sector;
}
@@ -314,22 +316,19 @@ namespace NewHorizons.Builder.Props
Component.DestroyImmediate(component);
return;
}
-
- if (component is DarkMatterVolume)
+ else if (component is DarkMatterVolume)
{
var probeVisuals = component.gameObject.transform.Find("ProbeVisuals");
if (probeVisuals != null) probeVisuals.gameObject.SetActive(true);
}
-
- if (component is DarkMatterSubmergeController submergeController)
+ else if (component is DarkMatterSubmergeController submergeController)
{
var water = planetGO.GetComponentsInChildren().FirstOrDefault(x => x._fluidType == FluidVolume.Type.WATER);
if (submergeController._fluidDetector)
submergeController._fluidDetector._onlyDetectableFluid = water;
}
-
// Fix anglerfish speed on orbiting planets
- if (component is AnglerfishController angler)
+ else if (component is AnglerfishController angler)
{
try
{
@@ -342,50 +341,48 @@ namespace NewHorizons.Builder.Props
}
// fix campfires
- if (component is InteractVolume interactVolume)
+ else if (component is InteractVolume)
{
- Delay.FireOnNextUpdate(() => interactVolume._playerCam = Locator.GetPlayerCamera());
+ component.gameObject.AddComponent();
}
- if (component is PlayerAttachPoint playerAttachPoint)
+ else if (component is PlayerAttachPoint)
{
- var playerBody = GameObject.Find("Player_Body");
- playerAttachPoint._playerController = playerBody.GetComponent();
- playerAttachPoint._playerOWRigidbody = playerBody.GetComponent();
- playerAttachPoint._playerTransform = playerBody.transform;
- Delay.FireOnNextUpdate(() => playerAttachPoint._fpsCamController = Locator.GetPlayerCameraController());
+ component.gameObject.AddComponent();
}
- if (component is NomaiInterfaceOrb orb)
+ else if (component is NomaiInterfaceOrb orb)
{
orb._parentAstroObject = planetGO.GetComponent();
orb._parentBody = planetGO.GetComponent();
}
- if (component is VisionTorchItem torchItem)
+ else if (component is VisionTorchItem torchItem)
{
torchItem.enabled = true;
torchItem.mindProjectorTrigger.enabled = true;
- Delay.FireOnNextUpdate(() => torchItem.mindSlideProjector._mindProjectorImageEffect = Locator.GetPlayerCamera().GetComponent());
+ torchItem.gameObject.AddComponent();
}
- if (component is Animator animator) animator.enabled = true;
- if (component is Collider collider) collider.enabled = true;
+ else if (component is Animator animator) animator.enabled = true;
+ else if(component is Collider collider) collider.enabled = true;
// Bug 533 - Don't show the electricity effect renderers
- if (component is Renderer renderer && component.gameObject.GetComponent() == null) renderer.enabled = true;
- if (component is Shape shape) shape.enabled = true;
+ 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?
- if (component is SectorCullGroup sectorCullGroup)
+ 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
- if (component is AnglerfishAnimController && component.GetComponentInParent() == null)
+ else if(component is AnglerfishAnimController && component.GetComponentInParent() == null)
+ {
component.gameObject.AddComponent();
+ }
}
///
@@ -416,5 +413,53 @@ namespace NewHorizons.Builder.Props
Destroy(this);
}
}
+
+ ///
+ /// Has to happen after 1 frame to work with VR
+ ///
+ [RequireComponent(typeof(InteractVolume))]
+ private class InteractVolumeFixer : MonoBehaviour
+ {
+ public void Start()
+ {
+ var interactVolume = GetComponent();
+ interactVolume._playerCam = Locator.GetPlayerCamera();
+
+ Destroy(this);
+ }
+ }
+
+ ///
+ /// Has to happen after 1 frame to work with VR
+ ///
+ [RequireComponent(typeof(PlayerAttachPoint))]
+ private class PlayerAttachPointFixer : MonoBehaviour
+ {
+ public void Start()
+ {
+ var playerAttachPoint = GetComponent();
+ playerAttachPoint._playerController = Locator.GetPlayerController();
+ playerAttachPoint._playerOWRigidbody = Locator.GetPlayerBody();
+ playerAttachPoint._playerTransform = Locator.GetPlayerTransform();
+ playerAttachPoint._fpsCamController = Locator.GetPlayerCameraController();
+
+ Destroy(this);
+ }
+ }
+
+ ///
+ /// Has to happen after 1 frame to work with VR
+ ///
+ [RequireComponent(typeof(VisionTorchItem))]
+ private class VisionTorchItemFixer : MonoBehaviour
+ {
+ public void Start()
+ {
+ var torchItem = GetComponent();
+ torchItem.mindSlideProjector._mindProjectorImageEffect = Locator.GetPlayerCamera().GetComponent();
+
+ Destroy(this);
+ }
+ }
}
}
\ No newline at end of file