mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Fix NREs concerning sectors with proxy body details
This commit is contained in:
parent
cb020151dd
commit
f918e4bfc8
@ -84,7 +84,8 @@ namespace NewHorizons.Builder.Props
|
|||||||
{
|
{
|
||||||
if (prefab == null) return null;
|
if (prefab == null) return null;
|
||||||
|
|
||||||
GameObject prop = GameObject.Instantiate(prefab, sector.transform);
|
GameObject prop = prefab.InstantiateInactive();
|
||||||
|
prop.transform.parent = sector?.transform ?? planetGO.transform;
|
||||||
prop.SetActive(false);
|
prop.SetActive(false);
|
||||||
|
|
||||||
if (sector != null) sector.OnOccupantEnterSector += (SectorDetector sd) => OWAssetHandler.OnOccupantEnterSector(prop, sd, sector);
|
if (sector != null) sector.OnOccupantEnterSector += (SectorDetector sd) => OWAssetHandler.OnOccupantEnterSector(prop, sd, sector);
|
||||||
@ -147,29 +148,46 @@ namespace NewHorizons.Builder.Props
|
|||||||
(component as OWItemSocket)._sector = sector;
|
(component as OWItemSocket)._sector = sector;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Remove things that require sectors. Will just keep extending this as things pop up
|
||||||
|
|
||||||
|
if (component is FogLight || component is SectoredMonoBehaviour)
|
||||||
|
{
|
||||||
|
GameObject.DestroyImmediate(component);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Fix a bunch of stuff when done loading
|
// Fix a bunch of stuff when done loading
|
||||||
Main.Instance.ModHelper.Events.Unity.RunWhen(() => Main.IsSystemReady, () =>
|
Main.Instance.ModHelper.Events.Unity.RunWhen(() => Main.IsSystemReady, () =>
|
||||||
{
|
{
|
||||||
if (component is Animator) (component as Animator).enabled = true;
|
try
|
||||||
else if (component is Collider) (component as Collider).enabled = true;
|
|
||||||
else if (component is Renderer) (component as Renderer).enabled = true;
|
|
||||||
else if (component is Shape) (component as Shape).enabled = true;
|
|
||||||
// If it's not a moving anglerfish make sure the anim controller is regular
|
|
||||||
else if (component is AnglerfishAnimController && component.GetComponentInParent<AnglerfishController>() == null)
|
|
||||||
{
|
{
|
||||||
Logger.Log("Enabling anglerfish animation");
|
if (component is Animator) (component as Animator).enabled = true;
|
||||||
var angler = (component as AnglerfishAnimController);
|
else if (component is Collider) (component as Collider).enabled = true;
|
||||||
// Remove any reference to its angler
|
else if (component is Renderer) (component as Renderer).enabled = true;
|
||||||
if (angler._anglerfishController)
|
else if (component is Shape) (component as Shape).enabled = true;
|
||||||
|
// If it's not a moving anglerfish make sure the anim controller is regular
|
||||||
|
else if (component is AnglerfishAnimController && component.GetComponentInParent<AnglerfishController>() == null)
|
||||||
{
|
{
|
||||||
angler._anglerfishController.OnChangeAnglerState -= angler.OnChangeAnglerState;
|
Logger.Log("Enabling anglerfish animation");
|
||||||
angler._anglerfishController.OnAnglerTurn -= angler.OnAnglerTurn;
|
var angler = (component as AnglerfishAnimController);
|
||||||
angler._anglerfishController.OnAnglerSuspended -= angler.OnAnglerSuspended;
|
// Remove any reference to its angler
|
||||||
angler._anglerfishController.OnAnglerUnsuspended -= angler.OnAnglerUnsuspended;
|
if (angler._anglerfishController)
|
||||||
|
{
|
||||||
|
angler._anglerfishController.OnChangeAnglerState -= angler.OnChangeAnglerState;
|
||||||
|
angler._anglerfishController.OnAnglerTurn -= angler.OnAnglerTurn;
|
||||||
|
angler._anglerfishController.OnAnglerSuspended -= angler.OnAnglerSuspended;
|
||||||
|
angler._anglerfishController.OnAnglerUnsuspended -= angler.OnAnglerUnsuspended;
|
||||||
|
}
|
||||||
|
angler.enabled = true;
|
||||||
|
angler.OnChangeAnglerState(AnglerfishController.AnglerState.Lurking);
|
||||||
}
|
}
|
||||||
angler.enabled = true;
|
}
|
||||||
angler.OnChangeAnglerState(AnglerfishController.AnglerState.Lurking);
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
Logger.LogWarning($"Exception when modifying component [{component.GetType().Name}] on [{planetGO.name}] : {e.Message}, {e.StackTrace}");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user