diff --git a/NewHorizons/Builder/Props/NomaiTextBuilder.cs b/NewHorizons/Builder/Props/NomaiTextBuilder.cs index 81ec285f..b090f5e3 100644 --- a/NewHorizons/Builder/Props/NomaiTextBuilder.cs +++ b/NewHorizons/Builder/Props/NomaiTextBuilder.cs @@ -18,6 +18,7 @@ namespace NewHorizons.Builder.Props private static List _ghostArcPrefabs; private static GameObject _scrollPrefab; private static GameObject _computerPrefab; + private static GameObject _preCrashComputerPrefab; private static GameObject _cairnPrefab; private static GameObject _recorderPrefab; private static GameObject _preCrashRecorderPrefab; @@ -80,6 +81,10 @@ namespace NewHorizons.Builder.Props _computerPrefab.name = "Prefab_NOM_Computer"; _computerPrefab.transform.rotation = Quaternion.identity; + _preCrashComputerPrefab = SearchUtilities.Find("BrittleHollow_Body/Sector_BH/Sector_EscapePodCrashSite/Sector_CrashFragment/EscapePod_Socket/Interactibles_EscapePod/Prefab_NOM_Vessel_Computer").InstantiateInactive(); + _preCrashComputerPrefab.name = "Prefab_NOM_Vessel_Computer"; + _preCrashComputerPrefab.transform.rotation = Quaternion.identity; + _cairnPrefab = SearchUtilities.Find("BrittleHollow_Body/Sector_BH/Sector_Crossroads/Interactables_Crossroads/Trailmarkers/Prefab_NOM_BH_Cairn_Arc (1)").InstantiateInactive(); _cairnPrefab.name = "Prefab_NOM_Cairn"; _cairnPrefab.transform.rotation = Quaternion.identity; @@ -203,6 +208,35 @@ namespace NewHorizons.Builder.Props // Make sure the computer model is loaded StreamingHandler.SetUpStreaming(computerObject, sector); + computerObject.SetActive(true); + conversationInfoToCorrespondingSpawnedGameObject[info] = computerObject; + break; + } + case PropModule.NomaiTextInfo.NomaiTextType.PreCrashComputer: + { + var computerObject = _preCrashComputerPrefab.InstantiateInactive(); + + computerObject.transform.parent = sector?.transform ?? planetGO.transform; + computerObject.transform.position = planetGO.transform.TransformPoint(info?.position ?? Vector3.zero); + + var up = computerObject.transform.position - planetGO.transform.position; + if (info.normal != null) up = planetGO.transform.TransformDirection(info.normal); + computerObject.transform.rotation = Quaternion.FromToRotation(Vector3.up, up) * computerObject.transform.rotation; + + // Move it slightly up more + computerObject.transform.position += up.normalized * 0.1f; + + var computer = computerObject.GetComponent(); + computer.SetSector(sector); + + computer._dictNomaiTextData = MakeNomaiTextDict(xmlPath); + computer._nomaiTextAsset = new TextAsset(xmlPath); + computer._nomaiTextAsset.name = Path.GetFileNameWithoutExtension(info.xmlFile); + AddTranslation(xmlPath); + + // Make sure the computer model is loaded + StreamingHandler.SetUpStreaming(computerObject, sector); + computerObject.SetActive(true); conversationInfoToCorrespondingSpawnedGameObject[info] = computerObject; break; diff --git a/NewHorizons/External/Modules/PropModule.cs b/NewHorizons/External/Modules/PropModule.cs index 1724b3e0..674480d2 100644 --- a/NewHorizons/External/Modules/PropModule.cs +++ b/NewHorizons/External/Modules/PropModule.cs @@ -462,7 +462,9 @@ namespace NewHorizons.External.Modules [EnumMember(Value = @"recorder")] Recorder = 4, - [EnumMember(Value = @"preCrashRecorder")] PreCrashRecorder = 5 + [EnumMember(Value = @"preCrashRecorder")] PreCrashRecorder = 5, + + [EnumMember(Value = @"preCrashComputer")] PreCrashComputer = 6 } ///