From d8f83afc031d8b780db1e9fb5d434e3d89a1bd99 Mon Sep 17 00:00:00 2001 From: Nick Date: Sat, 9 Jul 2022 23:48:04 -0400 Subject: [PATCH] Fix bramble node collisions --- .../Builder/Props/BrambleNodeBuilder.cs | 39 +++++++++++-------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/NewHorizons/Builder/Props/BrambleNodeBuilder.cs b/NewHorizons/Builder/Props/BrambleNodeBuilder.cs index e49a8640..e6aefa7b 100644 --- a/NewHorizons/Builder/Props/BrambleNodeBuilder.cs +++ b/NewHorizons/Builder/Props/BrambleNodeBuilder.cs @@ -27,6 +27,9 @@ namespace NewHorizons.Builder.Props public static Dictionary NamedNodes { get; private set; } public static Dictionary BuiltBrambleNodes { get; private set; } + private static string _brambleSeedPrefabPath = "DB_PioneerDimension_Body/Sector_PioneerDimension/Interactables_PioneerDimension/SeedWarp_ToPioneer (1)"; + private static string _brambleNodePrefabPath = "DB_HubDimension_Body/Sector_HubDimension/Interactables_HubDimension/InnerWarp_ToCluster"; + public static void Init() { _unpairedNodes = new(); @@ -180,30 +183,32 @@ namespace NewHorizons.Builder.Props public static GameObject Make(GameObject go, Sector sector, BrambleNodeInfo config, IModBehaviour mod) { + var prefab = SearchUtilities.Find(config.isSeed ? _brambleSeedPrefabPath : _brambleNodePrefabPath); + // Spawn the bramble node - var brambleSeedPrefabPath = "DB_PioneerDimension_Body/Sector_PioneerDimension/Interactables_PioneerDimension/SeedWarp_ToPioneer (1)"; - var brambleNodePrefabPath = "DB_HubDimension_Body/Sector_HubDimension/Interactables_HubDimension/InnerWarp_ToCluster"; + var brambleNode = prefab.InstantiateInactive(); + foreach (var component in brambleNode.GetComponentsInChildren(true)) + { + if (component is Collider collider) collider.enabled = true; + } - var path = config.isSeed ? brambleSeedPrefabPath : brambleNodePrefabPath; - var brambleNode = SearchUtilities.Find(path).InstantiateInactive(); - - StreamingHandler.SetUpStreaming(brambleNode, sector); + var innerFogWarpVolume = brambleNode.GetComponent(); + //brambleNode.AddComponent(); + var fogLight = brambleNode.GetComponent(); brambleNode.transform.parent = sector.transform; brambleNode.transform.position = go.transform.TransformPoint(config.position); brambleNode.transform.rotation = go.transform.TransformRotation(Quaternion.Euler(config.rotation)); brambleNode.name = "Bramble Node to " + config.linksTo; - var warpController = brambleNode.GetComponent(); // This node comes with Feldspar's signal, we don't want that though GameObject.Destroy(brambleNode.FindChild("Signal_Harmonica")); // Fix some components - var fogLight = brambleNode.GetComponent(); fogLight._parentBody = go.GetComponent(); fogLight._sector = sector; fogLight._linkedSector = null; - fogLight._innerWarp = warpController; + fogLight._innerWarp = innerFogWarpVolume; fogLight._linkedFogLights = new List(); fogLight._linkedLightData = new List(); @@ -211,8 +216,8 @@ namespace NewHorizons.Builder.Props // Set the scale brambleNode.transform.localScale = Vector3.one * config.scale; - warpController._warpRadius *= config.scale; - warpController._exitRadius *= config.scale; + innerFogWarpVolume._warpRadius *= config.scale; + innerFogWarpVolume._exitRadius *= config.scale; // Seed fog works differently, so it doesn't need to be fixed (it's also located on a different child path, so the below FindChild calls wouldn't work) if (!config.isSeed) @@ -244,16 +249,16 @@ namespace NewHorizons.Builder.Props else SetNodeColors(brambleNode, config.fogTint?.ToColor(), config.lightTint?.ToColor()); // Set up warps - warpController._sector = sector; - warpController._attachedBody = go.GetComponent(); // I don't think this is necessary, it seems to be set correctly on its own - warpController._containerWarpVolume = GetOuterFogWarpVolumeFromAstroObject(go); // the OuterFogWarpVolume of the dimension this node is inside of (null if this node is not inside of a bramble dimension (eg it's sitting on a planet or something)) - var success = PairEntrance(warpController, config.linksTo); - if (!success) RecordUnpairedNode(warpController, config.linksTo); + innerFogWarpVolume._sector = sector; + innerFogWarpVolume._attachedBody = go.GetComponent(); // I don't think this is necessary, it seems to be set correctly on its own + innerFogWarpVolume._containerWarpVolume = GetOuterFogWarpVolumeFromAstroObject(go); // the OuterFogWarpVolume of the dimension this node is inside of (null if this node is not inside of a bramble dimension (eg it's sitting on a planet or something)) + var success = PairEntrance(innerFogWarpVolume, config.linksTo); + if (!success) RecordUnpairedNode(innerFogWarpVolume, config.linksTo); // Cleanup for dimension exits if (config.name != null) { - NamedNodes[config.name] = warpController; + NamedNodes[config.name] = innerFogWarpVolume; BrambleDimensionBuilder.FinishPairingDimensionsForExitNode(config.name); }