Fix null stuff + NHAO

This commit is contained in:
Nick 2022-07-05 23:12:23 -04:00
parent 2fabfcb1a5
commit 0c420e61e7
3 changed files with 23 additions and 23 deletions

View File

@ -26,12 +26,12 @@ namespace NewHorizons.Builder.Body
// keys are all node names that have been referenced as an exit by at least one dimension but do not (yet) exist
// values are all dimensions' warp controllers that link to a given dimension
// unpairedNodes[name of node that doesn't exist yet] => List{warp controller for dimension that exits to that node, ...}
private static Dictionary<string, List<OuterFogWarpVolume>> _unpairedDimensions = new();
private static Dictionary<string, List<OuterFogWarpVolume>> _unpairedDimensions;
public static void Init()
{
// Just in case something went wrong and a dimension never got paired last time
_unpairedDimensions.Clear();
_unpairedDimensions = new();
}
public static GameObject Make(NewHorizonsBody body)
@ -42,19 +42,18 @@ namespace NewHorizons.Builder.Body
var dimensionPrefab = SearchUtilities.Find("DB_HubDimension_Body");
var dimension = dimensionPrefab.InstantiateInactive();
PlanetCreationHandler.UpdateBodyOrbit(body, dimension);
// Fix AO
var ao = dimension.GetComponent<AstroObject>();
var nhao = dimension.AddComponent<NHAstroObject>();
nhao.CopyPropertiesFrom(ao);
Component.Destroy(ao);
// fix name
var ao = dimension.GetComponent<NHAstroObject>();
ao.IsDimension = true;
nhao.IsDimension = true;
var name = body.Config.name ?? "Custom Bramble Dimension";
ao._customName = name;
ao._name = AstroObject.Name.CustomString;
nhao._customName = name;
nhao._name = AstroObject.Name.CustomString;
dimension.name = name.Replace(" ", "").Replace("'", "") + "_Body";
// set position
ao.transform.position = body.Config.Orbit.staticPosition;
// fix children's names and remove base game props (mostly just bramble nodes that are children to Interactibles) and set up the OuterWarp child
var dimensionSector = dimension.FindChild("Sector_HubDimension");
dimensionSector.name = "Sector";
@ -74,9 +73,9 @@ namespace NewHorizons.Builder.Body
intr.name = "Interactibles";
GameObject.Destroy(intr);
// set up warps
// Set up warps
var outerFogWarpVolume = exitWarps.GetComponent<OuterFogWarpVolume>();
outerFogWarpVolume._senderWarps.Clear();
outerFogWarpVolume._senderWarps = new List<InnerFogWarpVolume>();
outerFogWarpVolume._linkedInnerWarpVolume = null;
outerFogWarpVolume._name = OuterFogWarpVolume.Name.None;
@ -97,14 +96,14 @@ namespace NewHorizons.Builder.Body
public static void PairExit(string exitName, OuterFogWarpVolume warpController)
{
if (!BrambleNodeBuilder.namedNodes.ContainsKey(exitName))
if (!BrambleNodeBuilder.NamedNodes.ContainsKey(exitName))
{
if (!_unpairedDimensions.ContainsKey(exitName)) _unpairedDimensions[exitName] = new();
_unpairedDimensions[exitName].Add(warpController);
return;
}
warpController._linkedInnerWarpVolume = BrambleNodeBuilder.namedNodes[exitName];
warpController._linkedInnerWarpVolume = BrambleNodeBuilder.NamedNodes[exitName];
}
public static void FinishPairingDimensionsForExitNode(string nodeName)

View File

@ -23,15 +23,15 @@ namespace NewHorizons.Builder.Props
private static Dictionary<string, List<InnerFogWarpVolume>> _unpairedNodes = new();
private static Dictionary<string, List<SignalInfo>> _propogatedSignals = null;
public static readonly Dictionary<string, InnerFogWarpVolume> namedNodes = new();
public static readonly Dictionary<BrambleNodeInfo, GameObject> builtBrambleNodes = new();
public static Dictionary<string, InnerFogWarpVolume> NamedNodes { get; private set; }
public static Dictionary<BrambleNodeInfo, GameObject> BuiltBrambleNodes { get; private set; }
public static void Init()
{
_unpairedNodes.Clear();
_propogatedSignals.Clear();
namedNodes.Clear();
builtBrambleNodes.Clear();
_unpairedNodes = new();
_propogatedSignals = null;
NamedNodes = new();
BuiltBrambleNodes = new();
}
public static void FinishPairingNodesForDimension(string dimensionName, AstroObject dimensionAO = null)
@ -199,7 +199,7 @@ namespace NewHorizons.Builder.Props
//
if (config.name != null)
{
namedNodes[config.name] = warpController;
NamedNodes[config.name] = warpController;
BrambleDimensionBuilder.FinishPairingDimensionsForExitNode(config.name);
}

View File

@ -611,7 +611,8 @@ namespace NewHorizons.Handlers
newAO._primaryBody = primary;
// Since we destroyed the AO we have to replace links to it in other places
newAO.gameObject.GetComponentInChildren<ReferenceFrameVolume>()._referenceFrame._attachedAstroObject = newAO;
var referenceFrame = newAO.gameObject.GetComponentInChildren<ReferenceFrameVolume>()._referenceFrame;
if (referenceFrame != null) referenceFrame._attachedAstroObject = newAO;
// QM and stuff don't have orbit lines
var orbitLine = go.GetComponentInChildren<OrbitLine>()?.gameObject;