Switch to planetGO and sector for GeneralPropBuilder

This commit is contained in:
Joshua Thome 2023-03-18 16:53:48 -05:00
parent 3523bd3cab
commit ace2c78985
23 changed files with 61 additions and 48 deletions

View File

@ -149,7 +149,7 @@ namespace NewHorizons.Builder.Body
rename = rename, rename = rename,
}; };
var singularity = GeneralPropBuilder.MakeNew(polarity ? "BlackHole" : "WhiteHole", sector?.transform ?? planetGO.transform, info); var singularity = GeneralPropBuilder.MakeNew(polarity ? "BlackHole" : "WhiteHole", planetGO, sector, info);
var singularityRenderer = MakeSingularityGraphics(singularity, polarity, horizon, distort, renderQueue); var singularityRenderer = MakeSingularityGraphics(singularity, polarity, horizon, distort, renderQueue);

View File

@ -17,7 +17,7 @@ namespace NewHorizons.Builder.General
if (!Main.Instance.IsWarpingFromVessel && !Main.Instance.IsWarpingFromShip && module.playerSpawn != null) if (!Main.Instance.IsWarpingFromVessel && !Main.Instance.IsWarpingFromShip && module.playerSpawn != null)
{ {
bool alignToBody = module.playerSpawn.rotation == null; bool alignToBody = module.playerSpawn.rotation == null;
GameObject spawnGO = GeneralPropBuilder.MakeNew("PlayerSpawnPoint", planetGO.transform, module.playerSpawn, alignToBody); GameObject spawnGO = GeneralPropBuilder.MakeNew("PlayerSpawnPoint", planetGO, null, module.playerSpawn, alignToBody: alignToBody);
spawnGO.layer = 8; spawnGO.layer = 8;
playerSpawn = spawnGO.AddComponent<SpawnPoint>(); playerSpawn = spawnGO.AddComponent<SpawnPoint>();
@ -28,7 +28,7 @@ namespace NewHorizons.Builder.General
if (module.shipSpawn != null) if (module.shipSpawn != null)
{ {
bool alignToBody = module.shipSpawn.rotation == null; bool alignToBody = module.shipSpawn.rotation == null;
GameObject spawnGO = GeneralPropBuilder.MakeNew("ShipSpawnPoint", planetGO.transform, module.shipSpawn, alignToBody); GameObject spawnGO = GeneralPropBuilder.MakeNew("ShipSpawnPoint", planetGO, null, module.shipSpawn, alignToBody: alignToBody);
spawnGO.layer = 8; spawnGO.layer = 8;
var spawnPoint = spawnGO.AddComponent<SpawnPoint>(); var spawnPoint = spawnGO.AddComponent<SpawnPoint>();

View File

@ -182,7 +182,7 @@ namespace NewHorizons.Builder.Props
var prefab = config.isSeed ? _brambleSeedPrefab : _brambleNodePrefab; var prefab = config.isSeed ? _brambleSeedPrefab : _brambleNodePrefab;
// Spawn the bramble node // Spawn the bramble node
var brambleNode = GeneralPropBuilder.MakeFromPrefab(prefab, config.name ?? "Bramble Node to " + config.linksTo, sector?.transform ?? go.transform, config); var brambleNode = GeneralPropBuilder.MakeFromPrefab(prefab, config.name ?? "Bramble Node to " + config.linksTo, go, sector, config);
foreach (var collider in brambleNode.GetComponentsInChildren<Collider>(true)) foreach (var collider in brambleNode.GetComponentsInChildren<Collider>(true))
{ {
collider.enabled = true; collider.enabled = true;

View File

@ -90,12 +90,12 @@ namespace NewHorizons.Builder.Props
// We save copies with all their components fixed, good if the user is placing the same detail more than once // We save copies with all their components fixed, good if the user is placing the same detail more than once
if (detail?.path != null && _fixedPrefabCache.TryGetValue((sector, detail.path), out var storedPrefab)) if (detail?.path != null && _fixedPrefabCache.TryGetValue((sector, detail.path), out var storedPrefab))
{ {
prop = GeneralPropBuilder.MakeFromPrefab(storedPrefab.prefab, prefab.name, sector?.transform ?? go.transform, detail, detail.alignToNormal); prop = GeneralPropBuilder.MakeFromPrefab(storedPrefab.prefab, prefab.name, go, sector, detail, alignToBody: detail.alignToNormal);
isItem = storedPrefab.isItem; isItem = storedPrefab.isItem;
} }
else else
{ {
prop = GeneralPropBuilder.MakeFromPrefab(prefab, prefab.name, sector?.transform ?? go.transform, detail, detail.alignToNormal); prop = GeneralPropBuilder.MakeFromPrefab(prefab, prefab.name, go, sector, detail, alignToBody: detail.alignToNormal);
StreamingHandler.SetUpStreaming(prop, sector); StreamingHandler.SetUpStreaming(prop, sector);

View File

@ -40,7 +40,7 @@ namespace NewHorizons.Builder.Props
private static RemoteDialogueTrigger MakeRemoteDialogueTrigger(GameObject planetGO, Sector sector, PropModule.DialogueInfo info, CharacterDialogueTree dialogue) private static RemoteDialogueTrigger MakeRemoteDialogueTrigger(GameObject planetGO, Sector sector, PropModule.DialogueInfo info, CharacterDialogueTree dialogue)
{ {
var conversationTrigger = GeneralPropBuilder.MakeNew("ConversationTrigger", sector?.transform ?? planetGO.transform, info.remoteTrigger, defaultPosition: info.position, defaultParentPath: info.pathToAnimController); var conversationTrigger = GeneralPropBuilder.MakeNew("ConversationTrigger", planetGO, sector, info.remoteTrigger, defaultPosition: info.position, defaultParentPath: info.pathToAnimController);
var remoteDialogueTrigger = conversationTrigger.AddComponent<RemoteDialogueTrigger>(); var remoteDialogueTrigger = conversationTrigger.AddComponent<RemoteDialogueTrigger>();
var sphereCollider = conversationTrigger.AddComponent<SphereCollider>(); var sphereCollider = conversationTrigger.AddComponent<SphereCollider>();
@ -71,7 +71,7 @@ namespace NewHorizons.Builder.Props
private static CharacterDialogueTree MakeConversationZone(GameObject planetGO, Sector sector, PropModule.DialogueInfo info, IModHelper mod) private static CharacterDialogueTree MakeConversationZone(GameObject planetGO, Sector sector, PropModule.DialogueInfo info, IModHelper mod)
{ {
var conversationZone = GeneralPropBuilder.MakeNew("ConversationZone", sector?.transform ?? planetGO.transform, info, defaultParentPath: info.pathToAnimController); var conversationZone = GeneralPropBuilder.MakeNew("ConversationZone", planetGO, sector, info, defaultParentPath: info.pathToAnimController);
conversationZone.layer = LayerMask.NameToLayer("Interactible"); conversationZone.layer = LayerMask.NameToLayer("Interactible");

View File

@ -12,17 +12,21 @@ namespace NewHorizons.Builder.Props
{ {
public static class GeneralPropBuilder public static class GeneralPropBuilder
{ {
public static GameObject MakeFromExisting(GameObject go, Transform parent, GeneralPointPropInfo info, bool alignToBody = false, MVector3 normal = null, MVector3 defaultPosition = null, string defaultParentPath = null) public static GameObject MakeFromExisting(GameObject go, GameObject planetGO, Sector sector, GeneralPointPropInfo info, bool alignToBody = false, MVector3 normal = null, MVector3 defaultPosition = null, string defaultParentPath = null, Transform defaultParent = null)
{ {
if (info == null) return go; if (info == null) return go;
go.transform.parent = defaultParent ?? sector?.transform ?? planetGO?.transform;
if (info is GeneralSolarSystemPropInfo solarSystemInfo && !string.IsNullOrEmpty(solarSystemInfo.parentBody)) if (info is GeneralSolarSystemPropInfo solarSystemInfo && !string.IsNullOrEmpty(solarSystemInfo.parentBody))
{ {
// This can fail if the prop is built before the target planet. Only use it for SolarSystem module props // This can fail if the prop is built before the target planet. Only use it for SolarSystem module props
var targetPlanet = AstroObjectLocator.GetAstroObject(solarSystemInfo.parentBody); var targetPlanet = AstroObjectLocator.GetAstroObject(solarSystemInfo.parentBody);
if (targetPlanet != null) if (targetPlanet != null)
{ {
parent = targetPlanet._rootSector?.transform ?? targetPlanet.transform; planetGO = targetPlanet.gameObject;
sector = targetPlanet.GetRootSector() ?? targetPlanet.GetComponentInChildren<Sector>();
go.transform.parent = sector?.transform ?? planetGO?.transform ?? go.transform.parent;
} else } else
{ {
Logger.LogError($"Cannot find parent body named {solarSystemInfo.parentBody}"); Logger.LogError($"Cannot find parent body named {solarSystemInfo.parentBody}");
@ -34,20 +38,19 @@ namespace NewHorizons.Builder.Props
go.name = info.rename; go.name = info.rename;
} }
go.transform.parent = parent;
var parentPath = info.parentPath ?? defaultParentPath; var parentPath = info.parentPath ?? defaultParentPath;
if (parent && !string.IsNullOrEmpty(parentPath)) if (planetGO && !string.IsNullOrEmpty(parentPath))
{ {
var newParent = parent.root.transform.Find(parentPath); var newParent = planetGO.transform.Find(parentPath);
if (newParent != null) if (newParent != null)
{ {
go.transform.parent = newParent.transform; go.transform.parent = newParent;
sector = newParent.GetComponentInParent<Sector>();
} }
else else
{ {
Logger.LogError($"Cannot find parent object at path: {parent.name}/{parentPath}"); Logger.LogError($"Cannot find parent object at path: {planetGO.name}/{parentPath}");
} }
} }
@ -61,10 +64,10 @@ namespace NewHorizons.Builder.Props
{ {
go.transform.localPosition = pos; go.transform.localPosition = pos;
go.transform.localRotation = rot; go.transform.localRotation = rot;
} else if (parent) } else if (planetGO)
{ {
go.transform.position = parent.root.transform.TransformPoint(pos); go.transform.position = planetGO.transform.TransformPoint(pos);
go.transform.rotation = parent.root.transform.TransformRotation(rot); go.transform.rotation = planetGO.transform.TransformRotation(rot);
} else } else
{ {
go.transform.position = pos; go.transform.position = pos;
@ -72,25 +75,35 @@ namespace NewHorizons.Builder.Props
} }
if (alignToBody) if (alignToBody)
{ {
var up = (go.transform.position - parent.root.position).normalized; var up = (go.transform.position - planetGO.transform.position).normalized;
if (normal != null) up = parent.TransformDirection(normal); if (normal != null)
{
if (info.isRelativeToParent)
{
up = go.transform.parent.TransformDirection(normal);
}
else
{
up = planetGO.transform.TransformDirection(normal);
}
}
go.transform.rotation = Quaternion.FromToRotation(go.transform.up, up) * rot; go.transform.rotation = Quaternion.FromToRotation(go.transform.up, up) * rot;
} }
return go; return go;
} }
public static GameObject MakeNew(string defaultName, Transform parent, GeneralPointPropInfo info, bool alignToBody = false, MVector3 normal = null, MVector3 defaultPosition = null, string defaultParentPath = null) public static GameObject MakeNew(string defaultName, GameObject planetGO, Sector sector, GeneralPointPropInfo info, bool alignToBody = false, MVector3 normal = null, MVector3 defaultPosition = null, string defaultParentPath = null, Transform defaultParent = null)
{ {
var go = new GameObject(defaultName); var go = new GameObject(defaultName);
go.SetActive(false); go.SetActive(false);
return MakeFromExisting(go, parent, info, alignToBody, normal, defaultPosition, defaultParentPath); return MakeFromExisting(go, planetGO, sector, info, alignToBody, normal, defaultPosition, defaultParentPath, defaultParent);
} }
public static GameObject MakeFromPrefab(GameObject prefab, string defaultName, Transform parent, GeneralPointPropInfo info, bool alignToBody = false, MVector3 normal = null, MVector3 defaultPosition = null, string defaultParentPath = null) public static GameObject MakeFromPrefab(GameObject prefab, string defaultName, GameObject planetGO, Sector sector, GeneralPointPropInfo info, bool alignToBody = false, MVector3 normal = null, MVector3 defaultPosition = null, string defaultParentPath = null, Transform defaultParent = null)
{ {
var go = prefab.InstantiateInactive(); var go = prefab.InstantiateInactive();
go.name = defaultName; go.name = defaultName;
return MakeFromExisting(go, parent, info, alignToBody, normal, defaultPosition, defaultParentPath); return MakeFromExisting(go, planetGO, sector, info, alignToBody, normal, defaultPosition, defaultParentPath, defaultParent);
} }
} }
} }

View File

@ -18,7 +18,7 @@ namespace NewHorizons.Builder.Props
{ {
InitPrefab(); InitPrefab();
var geyserGO = GeneralPropBuilder.MakeFromPrefab(_geyserPrefab, "Geyser", sector?.transform ?? planetGO.transform, info); var geyserGO = GeneralPropBuilder.MakeFromPrefab(_geyserPrefab, "Geyser", planetGO, sector, info);
var pos = planetGO.transform.InverseTransformPoint(geyserGO.transform.position); var pos = planetGO.transform.InverseTransformPoint(geyserGO.transform.position);

View File

@ -93,7 +93,7 @@ namespace NewHorizons.Builder.Props
if (_slideReelPrefab == null) return null; if (_slideReelPrefab == null) return null;
var slideReelObj = GeneralPropBuilder.MakeFromPrefab(_slideReelPrefab, $"Prefab_IP_Reel_{mod.ModHelper.Manifest.Name}", sector?.transform ?? planetGO.transform, info); var slideReelObj = GeneralPropBuilder.MakeFromPrefab(_slideReelPrefab, $"Prefab_IP_Reel_{mod.ModHelper.Manifest.Name}", planetGO, sector, info);
var slideReel = slideReelObj.GetComponent<SlideReelItem>(); var slideReel = slideReelObj.GetComponent<SlideReelItem>();
slideReel.SetSector(sector); slideReel.SetSector(sector);
@ -166,7 +166,7 @@ namespace NewHorizons.Builder.Props
if (_autoPrefab == null) return null; if (_autoPrefab == null) return null;
var projectorObj = GeneralPropBuilder.MakeFromPrefab(_autoPrefab, $"Prefab_IP_AutoProjector_{mod.ModHelper.Manifest.Name}", sector?.transform ?? planetGO.transform, info); var projectorObj = GeneralPropBuilder.MakeFromPrefab(_autoPrefab, $"Prefab_IP_AutoProjector_{mod.ModHelper.Manifest.Name}", planetGO, sector, info);
var autoProjector = projectorObj.GetComponent<AutoSlideProjector>(); var autoProjector = projectorObj.GetComponent<AutoSlideProjector>();
autoProjector._sector = sector; autoProjector._sector = sector;

View File

@ -50,7 +50,7 @@ namespace NewHorizons.Builder.Props
{ {
var socketInfo = quantumGroup.sockets[i]; var socketInfo = quantumGroup.sockets[i];
var socket = GeneralPropBuilder.MakeNew("Socket " + i, groupRoot.transform, socketInfo); var socket = GeneralPropBuilder.MakeNew("Socket " + i, go, sector, socketInfo, defaultParent: groupRoot.transform);
sockets[i] = socket.AddComponent<QuantumSocket>(); sockets[i] = socket.AddComponent<QuantumSocket>();
sockets[i]._lightSources = new Light[0]; sockets[i]._lightSources = new Light[0];

View File

@ -52,7 +52,7 @@ namespace NewHorizons.Builder.Props
if (_prefab == null || sector == null) return null; if (_prefab == null || sector == null) return null;
GameObject raftObject = GeneralPropBuilder.MakeFromPrefab(_prefab, "Raft_Body", sector?.transform ?? planetGO.transform, info); GameObject raftObject = GeneralPropBuilder.MakeFromPrefab(_prefab, "Raft_Body", planetGO, sector, info);
StreamingHandler.SetUpStreaming(raftObject, sector); StreamingHandler.SetUpStreaming(raftObject, sector);

View File

@ -251,7 +251,7 @@ namespace NewHorizons.Builder.Props
public static void MakeStone(GameObject go, Sector sector, NomaiRemoteCameraPlatform.ID id, Texture2D decal, PropModule.RemoteInfo.StoneInfo info, IModBehaviour mod) public static void MakeStone(GameObject go, Sector sector, NomaiRemoteCameraPlatform.ID id, Texture2D decal, PropModule.RemoteInfo.StoneInfo info, IModBehaviour mod)
{ {
var shareStone = GeneralPropBuilder.MakeFromPrefab(_shareStonePrefab, "ShareStone_" + id.ToString(), sector?.transform ?? go.transform, info); var shareStone = GeneralPropBuilder.MakeFromPrefab(_shareStonePrefab, "ShareStone_" + id.ToString(), go, sector, info);
shareStone.GetComponent<SharedStone>()._connectedPlatform = id; shareStone.GetComponent<SharedStone>()._connectedPlatform = id;

View File

@ -109,7 +109,7 @@ namespace NewHorizons.Builder.Props
public static GameObject Make(GameObject planetGO, Sector sector, SignalModule.SignalInfo info, IModBehaviour mod) public static GameObject Make(GameObject planetGO, Sector sector, SignalModule.SignalInfo info, IModBehaviour mod)
{ {
var signalGO = GeneralPropBuilder.MakeNew($"Signal_{info.name}", sector?.transform ?? planetGO.transform, info); var signalGO = GeneralPropBuilder.MakeNew($"Signal_{info.name}", planetGO, sector, info);
signalGO.layer = LayerMask.NameToLayer("AdvancedEffectVolume"); signalGO.layer = LayerMask.NameToLayer("AdvancedEffectVolume");
var source = signalGO.AddComponent<AudioSource>(); var source = signalGO.AddComponent<AudioSource>();

View File

@ -99,7 +99,7 @@ namespace NewHorizons.Builder.Props
private static void MakeTornado(GameObject planetGO, Sector sector, PropModule.TornadoInfo info, Vector3 position, bool downwards) private static void MakeTornado(GameObject planetGO, Sector sector, PropModule.TornadoInfo info, Vector3 position, bool downwards)
{ {
var prefab = downwards ? _downPrefab.InstantiateInactive() : _upPrefab.InstantiateInactive(); var prefab = downwards ? _downPrefab.InstantiateInactive() : _upPrefab.InstantiateInactive();
var tornadoGO = GeneralPropBuilder.MakeFromPrefab(prefab, downwards ? "Tornado_Down" : "Tornado_Up", sector?.transform ?? planetGO.transform, info, true, defaultPosition: position); var tornadoGO = GeneralPropBuilder.MakeFromPrefab(prefab, downwards ? "Tornado_Down" : "Tornado_Up", planetGO, sector, info, true, defaultPosition: position);
// Add the sound thing before changing the scale // Add the sound thing before changing the scale
var soundGO = _soundPrefab.InstantiateInactive(); var soundGO = _soundPrefab.InstantiateInactive();

View File

@ -161,7 +161,7 @@ namespace NewHorizons.Builder.Props
} }
case PropModule.NomaiTextInfo.NomaiTextType.Scroll: case PropModule.NomaiTextInfo.NomaiTextType.Scroll:
{ {
var customScroll = GeneralPropBuilder.MakeFromPrefab(_scrollPrefab, _scrollPrefab.name, sector?.transform ?? planetGO.transform, info); var customScroll = GeneralPropBuilder.MakeFromPrefab(_scrollPrefab, _scrollPrefab.name, planetGO, sector, info);
var nomaiWallText = MakeWallText(planetGO, sector, info, xmlPath, nhBody); var nomaiWallText = MakeWallText(planetGO, sector, info, xmlPath, nhBody);
nomaiWallText.transform.parent = customScroll.transform; nomaiWallText.transform.parent = customScroll.transform;
@ -213,7 +213,7 @@ namespace NewHorizons.Builder.Props
} }
case PropModule.NomaiTextInfo.NomaiTextType.Computer: case PropModule.NomaiTextInfo.NomaiTextType.Computer:
{ {
var computerObject = GeneralPropBuilder.MakeFromPrefab(_computerPrefab, _computerPrefab.name, sector?.transform ?? planetGO.transform, info, true, info.normal); var computerObject = GeneralPropBuilder.MakeFromPrefab(_computerPrefab, _computerPrefab.name, planetGO, sector, info, alignToBody: true, normal: info.normal);
var computer = computerObject.GetComponent<NomaiComputer>(); var computer = computerObject.GetComponent<NomaiComputer>();
computer.SetSector(sector); computer.SetSector(sector);
@ -286,7 +286,7 @@ namespace NewHorizons.Builder.Props
case PropModule.NomaiTextInfo.NomaiTextType.CairnVariant: case PropModule.NomaiTextInfo.NomaiTextType.CairnVariant:
{ {
var cairnPrefab = info.type == PropModule.NomaiTextInfo.NomaiTextType.CairnVariant ? _cairnVariantPrefab : _cairnPrefab; var cairnPrefab = info.type == PropModule.NomaiTextInfo.NomaiTextType.CairnVariant ? _cairnVariantPrefab : _cairnPrefab;
var cairnObject = GeneralPropBuilder.MakeFromPrefab(cairnPrefab, _cairnPrefab.name, sector?.transform ?? planetGO.transform, info, info.rotation == null); var cairnObject = GeneralPropBuilder.MakeFromPrefab(cairnPrefab, _cairnPrefab.name, planetGO, sector, info, alignToBody: info.rotation == null);
// Idk do we have to set it active before finding things? // Idk do we have to set it active before finding things?
cairnObject.SetActive(true); cairnObject.SetActive(true);
@ -349,7 +349,7 @@ namespace NewHorizons.Builder.Props
} }
case PropModule.NomaiTextInfo.NomaiTextType.Trailmarker: case PropModule.NomaiTextInfo.NomaiTextType.Trailmarker:
{ {
var trailmarkerObject = GeneralPropBuilder.MakeFromPrefab(_trailmarkerPrefab, _trailmarkerPrefab.name, sector?.transform ?? planetGO.transform, info, info.rotation == null); var trailmarkerObject = GeneralPropBuilder.MakeFromPrefab(_trailmarkerPrefab, _trailmarkerPrefab.name, planetGO, sector, info, alignToBody: info.rotation == null);
// shrink because that is what mobius does on all trailmarkers or else they are the size of the player // shrink because that is what mobius does on all trailmarkers or else they are the size of the player
trailmarkerObject.transform.localScale = Vector3.one * 0.75f; trailmarkerObject.transform.localScale = Vector3.one * 0.75f;
@ -380,7 +380,7 @@ namespace NewHorizons.Builder.Props
private static NomaiWallText MakeWallText(GameObject go, Sector sector, PropModule.NomaiTextInfo info, string xmlPath, NewHorizonsBody nhBody) private static NomaiWallText MakeWallText(GameObject go, Sector sector, PropModule.NomaiTextInfo info, string xmlPath, NewHorizonsBody nhBody)
{ {
GameObject nomaiWallTextObj = GeneralPropBuilder.MakeNew("NomaiWallText", sector?.transform ?? go.transform, info); GameObject nomaiWallTextObj = GeneralPropBuilder.MakeNew("NomaiWallText", go, sector, info);
var box = nomaiWallTextObj.AddComponent<BoxCollider>(); var box = nomaiWallTextObj.AddComponent<BoxCollider>();
box.center = new Vector3(-0.0643f, 1.1254f, 0f); box.center = new Vector3(-0.0643f, 1.1254f, 0f);

View File

@ -45,7 +45,7 @@ namespace NewHorizons.Builder.Props
{ {
InitPrefab(); InitPrefab();
var launcherGO = GeneralPropBuilder.MakeFromPrefab(_meteorLauncherPrefab, "MeteorLauncher", sector?.transform ?? planetGO.transform, info, true); var launcherGO = GeneralPropBuilder.MakeFromPrefab(_meteorLauncherPrefab, "MeteorLauncher", planetGO, sector, info, alignToBody: true);
var meteorLauncher = launcherGO.GetComponent<MeteorLauncher>(); var meteorLauncher = launcherGO.GetComponent<MeteorLauncher>();
meteorLauncher._audioSector = sector; meteorLauncher._audioSector = sector;

View File

@ -12,7 +12,7 @@ namespace NewHorizons.Builder.ShipLog
private static readonly List<ShipLogEntryLocation> _locationsToInitialize = new List<ShipLogEntryLocation>(); private static readonly List<ShipLogEntryLocation> _locationsToInitialize = new List<ShipLogEntryLocation>();
public static void Make(GameObject go, Sector sector, PropModule.EntryLocationInfo info, IModBehaviour mod) public static void Make(GameObject go, Sector sector, PropModule.EntryLocationInfo info, IModBehaviour mod)
{ {
GameObject entryLocationGameObject = GeneralPropBuilder.MakeNew("Entry Location (" + info.id + ")", sector?.transform ?? go.transform, info); GameObject entryLocationGameObject = GeneralPropBuilder.MakeNew("Entry Location (" + info.id + ")", go, sector, info);
ShipLogEntryLocation newLocation = entryLocationGameObject.AddComponent<ShipLogEntryLocation>(); ShipLogEntryLocation newLocation = entryLocationGameObject.AddComponent<ShipLogEntryLocation>();
newLocation._entryID = info.id; newLocation._entryID = info.id;

View File

@ -10,7 +10,7 @@ namespace NewHorizons.Builder.ShipLog
{ {
public static void Make(GameObject go, Sector sector, VolumesModule.RevealVolumeInfo info, IModBehaviour mod) public static void Make(GameObject go, Sector sector, VolumesModule.RevealVolumeInfo info, IModBehaviour mod)
{ {
var newRevealGO = GeneralPropBuilder.MakeNew("Reveal Volume (" + info.revealOn + ")", sector?.transform ?? go.transform, info); var newRevealGO = GeneralPropBuilder.MakeNew("Reveal Volume (" + info.revealOn + ")", go, sector, info);
switch (info.revealOn) switch (info.revealOn)
{ {
case VolumesModule.RevealVolumeInfo.RevealVolumeType.Enter: case VolumesModule.RevealVolumeInfo.RevealVolumeType.Enter:

View File

@ -17,7 +17,7 @@ namespace NewHorizons.Builder.Volumes
{ {
public static AudioVolume Make(GameObject planetGO, Sector sector, VolumesModule.AudioVolumeInfo info, IModBehaviour mod) public static AudioVolume Make(GameObject planetGO, Sector sector, VolumesModule.AudioVolumeInfo info, IModBehaviour mod)
{ {
var go = GeneralPropBuilder.MakeNew("AudioVolume", sector?.transform ?? planetGO.transform, info); var go = GeneralPropBuilder.MakeNew("AudioVolume", planetGO, sector, info);
go.layer = LayerMask.NameToLayer("AdvancedEffectVolume"); go.layer = LayerMask.NameToLayer("AdvancedEffectVolume");
var audioSource = go.AddComponent<AudioSource>(); var audioSource = go.AddComponent<AudioSource>();

View File

@ -14,7 +14,7 @@ namespace NewHorizons.Builder.Volumes
{ {
public static HazardVolume Make(GameObject planetGO, Sector sector, OWRigidbody owrb, VolumesModule.HazardVolumeInfo info, IModBehaviour mod) public static HazardVolume Make(GameObject planetGO, Sector sector, OWRigidbody owrb, VolumesModule.HazardVolumeInfo info, IModBehaviour mod)
{ {
var go = GeneralPropBuilder.MakeNew("HazardVolume", sector?.transform ?? planetGO.transform, info); var go = GeneralPropBuilder.MakeNew("HazardVolume", planetGO, sector, info);
go.layer = LayerMask.NameToLayer("BasicEffectVolume"); go.layer = LayerMask.NameToLayer("BasicEffectVolume");
var shape = go.AddComponent<SphereShape>(); var shape = go.AddComponent<SphereShape>();

View File

@ -17,7 +17,7 @@ namespace NewHorizons.Builder.Volumes
{ {
public static NHNotificationVolume Make(GameObject planetGO, Sector sector, VolumesModule.NotificationVolumeInfo info, IModBehaviour mod) public static NHNotificationVolume Make(GameObject planetGO, Sector sector, VolumesModule.NotificationVolumeInfo info, IModBehaviour mod)
{ {
var go = GeneralPropBuilder.MakeNew("NotificationVolume", sector?.transform ?? planetGO.transform, info); var go = GeneralPropBuilder.MakeNew("NotificationVolume", planetGO, sector, info);
go.layer = LayerMask.NameToLayer("BasicEffectVolume"); go.layer = LayerMask.NameToLayer("BasicEffectVolume");
var shape = go.AddComponent<SphereShape>(); var shape = go.AddComponent<SphereShape>();

View File

@ -10,7 +10,7 @@ namespace NewHorizons.Builder.Volumes
{ {
public static TVolume Make<TVolume>(GameObject planetGO, Sector sector, VolumesModule.VanishVolumeInfo info) where TVolume : VanishVolume public static TVolume Make<TVolume>(GameObject planetGO, Sector sector, VolumesModule.VanishVolumeInfo info) where TVolume : VanishVolume
{ {
var go = GeneralPropBuilder.MakeNew(typeof(TVolume).Name, sector?.transform ?? planetGO.transform, info); var go = GeneralPropBuilder.MakeNew(typeof(TVolume).Name, planetGO, sector, info);
go.layer = LayerMask.NameToLayer("BasicEffectVolume"); go.layer = LayerMask.NameToLayer("BasicEffectVolume");
var collider = go.AddComponent<SphereCollider>(); var collider = go.AddComponent<SphereCollider>();

View File

@ -10,7 +10,7 @@ namespace NewHorizons.Builder.Volumes
{ {
public static TVolume Make<TVolume>(GameObject planetGO, Sector sector, VolumesModule.VolumeInfo info) where TVolume : MonoBehaviour //Could be BaseVolume but I need to create vanilla volumes too. public static TVolume Make<TVolume>(GameObject planetGO, Sector sector, VolumesModule.VolumeInfo info) where TVolume : MonoBehaviour //Could be BaseVolume but I need to create vanilla volumes too.
{ {
var go = GeneralPropBuilder.MakeNew(typeof(TVolume).Name, sector?.transform ?? planetGO.transform, info); var go = GeneralPropBuilder.MakeNew(typeof(TVolume).Name, planetGO, sector, info);
go.layer = LayerMask.NameToLayer("BasicEffectVolume"); go.layer = LayerMask.NameToLayer("BasicEffectVolume");
var shape = go.AddComponent<SphereShape>(); var shape = go.AddComponent<SphereShape>();

View File

@ -85,7 +85,7 @@ namespace NewHorizons.Handlers
if (VesselPrefab == null) return null; if (VesselPrefab == null) return null;
Logger.LogVerbose("Creating Vessel"); Logger.LogVerbose("Creating Vessel");
var vesselObject = GeneralPropBuilder.MakeFromPrefab(VesselPrefab, VesselPrefab.name, null, system.Config.Vessel?.vesselSpawn); var vesselObject = GeneralPropBuilder.MakeFromPrefab(VesselPrefab, VesselPrefab.name, null, null, system.Config.Vessel?.vesselSpawn);
VesselObject = vesselObject; VesselObject = vesselObject;
var vesselAO = vesselObject.AddComponent<EyeAstroObject>(); var vesselAO = vesselObject.AddComponent<EyeAstroObject>();
@ -146,7 +146,7 @@ namespace NewHorizons.Handlers
var attachWarpExitToVessel = system.Config.Vessel?.warpExit?.attachToVessel ?? false; var attachWarpExitToVessel = system.Config.Vessel?.warpExit?.attachToVessel ?? false;
var warpExitParent = vesselWarpController._targetWarpPlatform.transform.parent; var warpExitParent = vesselWarpController._targetWarpPlatform.transform.parent;
var warpExit = GeneralPropBuilder.MakeFromExisting(vesselWarpController._targetWarpPlatform.gameObject, attachWarpExitToVessel ? warpExitParent : null, system.Config.Vessel?.warpExit); var warpExit = GeneralPropBuilder.MakeFromExisting(vesselWarpController._targetWarpPlatform.gameObject, null, null, system.Config.Vessel?.warpExit, defaultParent: attachWarpExitToVessel ? warpExitParent : null);
if (attachWarpExitToVessel) if (attachWarpExitToVessel)
{ {
warpExit.transform.parent = warpExitParent; warpExit.transform.parent = warpExitParent;