From a339c1c9494a8dfd5082286db9730c9a96d85448 Mon Sep 17 00:00:00 2001 From: Nick Date: Fri, 17 Jun 2022 22:12:19 -0400 Subject: [PATCH 1/8] Update feature_request.yml --- .github/ISSUE_TEMPLATE/feature_request.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index 4a970251..c0639498 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -1,6 +1,6 @@ name: Feature Request description: Request a feature you'd like to see in a later release -labels: ["enhancement"] +labels: ["feature"] body: - type: textarea id: feature @@ -11,4 +11,4 @@ body: id: context attributes: label: Context - description: Provide any additional context such as screenshots or diagrams here. \ No newline at end of file + description: Provide any additional context such as screenshots or diagrams here. From c4fa1d9167cab713f9ddd4bb9c629066a2050358 Mon Sep 17 00:00:00 2001 From: Ben C Date: Sun, 19 Jun 2022 12:42:28 -0700 Subject: [PATCH 2/8] Mention that the probe can trigger reveal volumes --- docs/content/pages/tutorials/ship_log.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/content/pages/tutorials/ship_log.md b/docs/content/pages/tutorials/ship_log.md index 3b3e7bad..18fdd2b7 100644 --- a/docs/content/pages/tutorials/ship_log.md +++ b/docs/content/pages/tutorials/ship_log.md @@ -491,7 +491,7 @@ Can be any of the following: #### Enter -When the player enters the trigger, reveal the facts +When the player or probe enters the trigger, reveal the facts #### Observe From 7f786cbbb2d8eddef1dd5d10bb98b67f51547f4a Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Sun, 19 Jun 2022 18:46:10 -0400 Subject: [PATCH 3/8] Move more things over to VesselWarpHandler --- NewHorizons/Handlers/VesselWarpHandler.cs | 56 +++++++++++++++++++++-- NewHorizons/Main.cs | 16 ++----- 2 files changed, 56 insertions(+), 16 deletions(-) diff --git a/NewHorizons/Handlers/VesselWarpHandler.cs b/NewHorizons/Handlers/VesselWarpHandler.cs index fcbd45c6..140b05f7 100644 --- a/NewHorizons/Handlers/VesselWarpHandler.cs +++ b/NewHorizons/Handlers/VesselWarpHandler.cs @@ -12,13 +12,26 @@ namespace NewHorizons.Handlers { public static AssetBundle VesselBundle { get; private set; } public static GameObject VesselPrefab { get; private set; } + public static GameObject VesselObject { get; private set; } + public static VesselWarpController WarpController { get; private set; } - internal static void Initialize() + private static SpawnPoint _vesselSpawnPoint; + public static SpawnPoint VesselSpawnPoint => _vesselSpawnPoint; + + public static void Initialize() { - VesselBundle = Main.Instance.ModHelper.Assets.LoadBundle("Assets/vessel.newhorizons"); + VesselBundle = Instance.ModHelper.Assets.LoadBundle("Assets/vessel.newhorizons"); VesselPrefab = VesselBundle.LoadAsset("Vessel_Body"); } + public static void LoadVessel() + { + if (Instance.IsWarpingFromVessel) + _vesselSpawnPoint = Instance.CurrentStarSystem == "SolarSystem" ? UpdateVessel() : CreateVessel(); + else + _vesselSpawnPoint = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension").GetComponentInChildren(); + } + public static void OnReceiveWarpedBody(OWRigidbody warpedBody, NomaiWarpPlatform startPlatform, NomaiWarpPlatform targetPlatform) { bool isPlayer = warpedBody.CompareTag("Player"); @@ -36,41 +49,62 @@ namespace NewHorizons.Handlers } } + public static void TeleportToVessel() + { + var playerSpawner = GameObject.FindObjectOfType(); + playerSpawner.DebugWarp(_vesselSpawnPoint); + Builder.General.SpawnPointBuilder.SuitUp(); + } + public static EyeSpawnPoint CreateVessel() { var system = SystemDict[Instance.CurrentStarSystem]; + Logger.Log("Checking for Vessel Prefab"); if (VesselPrefab == null) return null; + Logger.Log("Creating Vessel"); var vesselObject = GameObject.Instantiate(VesselPrefab); + VesselObject = vesselObject; vesselObject.name = VesselPrefab.name; vesselObject.transform.parent = null; + if (system.Config.vesselPosition != null) vesselObject.transform.position += system.Config.vesselPosition; + if (system.Config.vesselRotation != null) vesselObject.transform.eulerAngles = system.Config.vesselRotation; VesselWarpController vesselWarpController = vesselObject.GetComponentInChildren(true); + WarpController = vesselWarpController; + vesselWarpController._sourceWarpPlatform.transform.DestroyAllChildren(); vesselWarpController._targetWarpPlatform.transform.DestroyAllChildren(); GameObject.Destroy(vesselWarpController._blackHole.transform.parent.gameObject); GameObject.Destroy(vesselWarpController._whiteHole.transform.parent.gameObject); + GameObject WarpPlatform = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_VesselBridge/Interactibles_VesselBridge/WarpController/Prefab_NOM_WarpPlatform"); GameObject warpBH = WarpPlatform.transform.Find("BlackHole").gameObject; GameObject warpWH = WarpPlatform.transform.Find("WhiteHole").gameObject; + GameObject sourceBH = GameObject.Instantiate(warpBH, vesselWarpController._sourceWarpPlatform.transform, false); vesselWarpController._sourceWarpPlatform._blackHole = sourceBH.GetComponentInChildren(); + GameObject sourceWH = GameObject.Instantiate(warpWH, vesselWarpController._sourceWarpPlatform.transform, false); vesselWarpController._sourceWarpPlatform._whiteHole = sourceWH.GetComponentInChildren(); + GameObject targetBH = GameObject.Instantiate(warpBH, vesselWarpController._targetWarpPlatform.transform, false); vesselWarpController._targetWarpPlatform._blackHole = targetBH.GetComponentInChildren(); + GameObject targetWH = GameObject.Instantiate(warpWH, vesselWarpController._targetWarpPlatform.transform, false); vesselWarpController._targetWarpPlatform._whiteHole = targetWH.GetComponentInChildren(); + GameObject blackHole = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_VesselBridge/Interactibles_VesselBridge/BlackHole"); GameObject newBlackHole = GameObject.Instantiate(blackHole, vesselWarpController.transform.parent, false); newBlackHole.name = "BlackHole"; vesselWarpController._blackHole = newBlackHole.GetComponentInChildren(); vesselWarpController._blackHoleOneShot = vesselWarpController._blackHole.transform.parent.Find("BlackHoleAudio_OneShot").GetComponent(); + GameObject whiteHole = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_VesselBridge/Interactibles_VesselBridge/WhiteHole"); GameObject newWhiteHole = GameObject.Instantiate(whiteHole, vesselWarpController.transform.parent, false); newWhiteHole.name = "WhiteHole"; @@ -78,28 +112,44 @@ namespace NewHorizons.Handlers vesselWarpController._whiteHoleOneShot = vesselWarpController._whiteHole.transform.parent.Find("WhiteHoleAudio_OneShot").GetComponent(); vesselObject.SetActive(true); + vesselWarpController._targetWarpPlatform.OnReceiveWarpedBody += OnReceiveWarpedBody; + if (system.Config.warpExitPosition != null) vesselWarpController._targetWarpPlatform.transform.localPosition = system.Config.warpExitPosition; + if (system.Config.warpExitRotation != null) vesselObject.transform.localEulerAngles = system.Config.warpExitRotation; - vesselObject.GetComponent()._labelID = (UITextType)TranslationHandler.AddUI("Vessel"); + + vesselObject.GetComponent()._labelID = (UITextType)TranslationHandler.AddUI("VESSEL"); + EyeSpawnPoint eyeSpawnPoint = vesselObject.GetComponentInChildren(true); system.SpawnPoint = eyeSpawnPoint; + Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => SetupWarpController(vesselWarpController)); + return eyeSpawnPoint; } public static SpawnPoint UpdateVessel() { var system = SystemDict[Instance.CurrentStarSystem]; + + Logger.Log("Updating DB Vessel"); var vectorSector = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension"); + VesselObject = vectorSector; + var spawnPoint = vectorSector.GetComponentInChildren(); system.SpawnPoint = spawnPoint; + VesselWarpController vesselWarpController = vectorSector.GetComponentInChildren(true); + WarpController = vesselWarpController; + if (vesselWarpController._targetWarpPlatform != null) vesselWarpController._targetWarpPlatform.OnReceiveWarpedBody += OnReceiveWarpedBody; + Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => SetupWarpController(vesselWarpController, true)); + return spawnPoint; } diff --git a/NewHorizons/Main.cs b/NewHorizons/Main.cs index 31769f43..a42c7397 100644 --- a/NewHorizons/Main.cs +++ b/NewHorizons/Main.cs @@ -57,9 +57,6 @@ namespace NewHorizons private bool _firstLoad = true; private ShipWarpController _shipWarpController; - // Vessel - private SpawnPoint _vesselSpawnPoint; - // API events public class StarSystemEvent : UnityEvent { } public StarSystemEvent OnChangeStarSystem; @@ -272,10 +269,7 @@ namespace NewHorizons AstroObjectLocator.Init(); OWAssetHandler.Init(); PlanetCreationHandler.Init(BodyDict[CurrentStarSystem]); - if (IsWarpingFromVessel) - _vesselSpawnPoint = CurrentStarSystem == "SolarSystem" ? VesselWarpHandler.UpdateVessel() : VesselWarpHandler.CreateVessel(); - else - _vesselSpawnPoint = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension").GetComponentInChildren(); + VesselWarpHandler.LoadVessel(); SystemCreationHandler.LoadSystem(SystemDict[CurrentStarSystem]); LoadTranslations(ModHelper.Manifest.ModFolderPath + "Assets/", this); @@ -287,7 +281,7 @@ namespace NewHorizons if (HasWarpDrive == true) EnableWarpDrive(); var shouldWarpInFromShip = IsWarpingFromShip && _shipWarpController != null; - var shouldWarpInFromVessel = IsWarpingFromVessel && _vesselSpawnPoint != null; + var shouldWarpInFromVessel = IsWarpingFromVessel && VesselWarpHandler.VesselSpawnPoint != null; Instance.ModHelper.Events.Unity.RunWhen(() => IsSystemReady, () => OnSystemReady(shouldWarpInFromShip, shouldWarpInFromVessel)); IsWarpingFromShip = false; @@ -325,11 +319,7 @@ namespace NewHorizons // DebugArrow.CreateArrow(Locator.GetPlayerBody().gameObject); // This is for NH devs mostly. It shouldn't be active in debug mode for now. Someone should make a dev tools submenu for it though. if (shouldWarpInFromShip) _shipWarpController.WarpIn(WearingSuit); - else if (shouldWarpInFromVessel) - { - FindObjectOfType().DebugWarp(_vesselSpawnPoint); - Builder.General.SpawnPointBuilder.SuitUp(); - } + else if (shouldWarpInFromVessel) VesselWarpHandler.TeleportToVessel(); else FindObjectOfType().DebugWarp(SystemDict[_currentStarSystem].SpawnPoint); } From 3c8eab8b9387a4d46a5e8ed6b7332f0ab0fe228c Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Sun, 19 Jun 2022 18:46:24 -0400 Subject: [PATCH 4/8] Set white hole in DB vessel --- NewHorizons/Handlers/VesselWarpHandler.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/NewHorizons/Handlers/VesselWarpHandler.cs b/NewHorizons/Handlers/VesselWarpHandler.cs index 140b05f7..78352a8c 100644 --- a/NewHorizons/Handlers/VesselWarpHandler.cs +++ b/NewHorizons/Handlers/VesselWarpHandler.cs @@ -148,6 +148,13 @@ namespace NewHorizons.Handlers if (vesselWarpController._targetWarpPlatform != null) vesselWarpController._targetWarpPlatform.OnReceiveWarpedBody += OnReceiveWarpedBody; + if (vesselWarpController._whiteHole == null) + { + GameObject whiteHole = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_VesselBridge/Interactibles_VesselBridge/WhiteHole"); + vesselWarpController._whiteHole = whiteHole.GetComponentInChildren(); + vesselWarpController._whiteHoleOneShot = vesselWarpController._whiteHole.transform.parent.Find("WhiteHoleAudio_OneShot").GetComponent(); + } + Instance.ModHelper.Events.Unity.FireOnNextUpdate(() => SetupWarpController(vesselWarpController, true)); return spawnPoint; From e2983071aa91d02e1b49d0d4a914a8fe99d1aebd Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 19 Jun 2022 20:09:49 -0400 Subject: [PATCH 5/8] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index c090f7db..8ed0a3a9 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,6 @@ New Horizons was made with help from: - [Trifid](https://github.com/TerrificTrifid) - [Raicuparta](https://github.com/Raicuparta) - [jtsalomo](https://github.com/jtsalomo) - - And the Outer Wilds modding server. Translation credits: From 63ecd1dc945ec0fc9fec8a3a0b70750279b455d4 Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Sun, 19 Jun 2022 19:24:24 -0400 Subject: [PATCH 6/8] Fix vessel not loading properly --- NewHorizons/Handlers/VesselWarpHandler.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/NewHorizons/Handlers/VesselWarpHandler.cs b/NewHorizons/Handlers/VesselWarpHandler.cs index 78352a8c..64f9653f 100644 --- a/NewHorizons/Handlers/VesselWarpHandler.cs +++ b/NewHorizons/Handlers/VesselWarpHandler.cs @@ -54,6 +54,17 @@ namespace NewHorizons.Handlers var playerSpawner = GameObject.FindObjectOfType(); playerSpawner.DebugWarp(_vesselSpawnPoint); Builder.General.SpawnPointBuilder.SuitUp(); + + if (Instance.CurrentStarSystem == "SolarSystem") + { + // Loads it manually so the player doesn't start falling and then vessel loads in on them. + SectorStreaming ss = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_Streaming").GetComponent(); + ss.enabled = true; + ss._streamingGroup.LoadRequiredAssets(); + ss._streamingGroup.LoadRequiredColliders(); + ss._streamingGroup.LoadGeneralAssets(); + StreamingManager.loadingPriority = StreamingManager.LoadingPriority.High; + } } public static EyeSpawnPoint CreateVessel() From f0888c2edf97537fc0fa6456e4c6de71da74fb0c Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Sun, 19 Jun 2022 19:30:27 -0400 Subject: [PATCH 7/8] Remove spawn for db vessel --- NewHorizons/Handlers/VesselWarpHandler.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/NewHorizons/Handlers/VesselWarpHandler.cs b/NewHorizons/Handlers/VesselWarpHandler.cs index 64f9653f..724de965 100644 --- a/NewHorizons/Handlers/VesselWarpHandler.cs +++ b/NewHorizons/Handlers/VesselWarpHandler.cs @@ -151,7 +151,6 @@ namespace NewHorizons.Handlers VesselObject = vectorSector; var spawnPoint = vectorSector.GetComponentInChildren(); - system.SpawnPoint = spawnPoint; VesselWarpController vesselWarpController = vectorSector.GetComponentInChildren(true); WarpController = vesselWarpController; From 4acd5b269f9c14b1d1232346e3312c53b125db09 Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Sun, 19 Jun 2022 20:04:37 -0400 Subject: [PATCH 8/8] Deactivate village music --- NewHorizons/Handlers/VesselWarpHandler.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/NewHorizons/Handlers/VesselWarpHandler.cs b/NewHorizons/Handlers/VesselWarpHandler.cs index 724de965..619bf1a0 100644 --- a/NewHorizons/Handlers/VesselWarpHandler.cs +++ b/NewHorizons/Handlers/VesselWarpHandler.cs @@ -57,6 +57,9 @@ namespace NewHorizons.Handlers if (Instance.CurrentStarSystem == "SolarSystem") { + // Deactivate village music because for some reason it still plays. + SearchUtilities.Find("TimberHearth_Body/Sector_TH/Sector_Village/Volumes_Village/MusicVolume_Village").GetComponent().Deactivate(); + // Loads it manually so the player doesn't start falling and then vessel loads in on them. SectorStreaming ss = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension/Sector_Streaming").GetComponent(); ss.enabled = true;