From a69a4b5480a0c0b12e542b8a35da9092a84d6b6f Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 9 Nov 2021 17:11:15 +0000 Subject: [PATCH 01/13] Update README.md --- README.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c3a6ab7b..c748325f 100644 --- a/README.md +++ b/README.md @@ -153,13 +153,12 @@ Note - _nebula has no idea how Hamachi works and has never used it, so don't ask - [Download the Outer Wilds Mod Manager](https://github.com/raicuparta/ow-mod-manager) and install it anywhere you like; - Install OWML using the Mod Manager - Clone QSB's source -- Open the file `QSB/QSB.csproj.user` in your favorite text editor +- Open the file `Director.Build.targets` in your favorite text editor - Edit the entry `` to point to the directory where Outer Wilds is installed - Edit the entry `` to point to your OWML directory (it is installed inside the Mod Manager directory) -- Do the same for `QuantumUNET/QuantumUNET.csproj.user` and `QSBTests/QSBTests.csproj.user` - Open the project solution file `QSB.sln` in Visual Studio - If needed, right click `References` in the Solution Explorer > Manage NuGet Packages > Update OWML to fix missing references -- Run this to stop tracking QSB.csproj.user: ```git update-index --skip-worktree QSB/QSB.csproj.user``` (and do the same for the other .user files) +- Run this to stop tracking Director.Build.targets: ```git update-index --skip-worktree Director.Build.targets``` To fix the references, right click "References" in the Solution Explorer > "Add Reference", and add all the missing DLLs (references with yellow warning icon). You can find these DLLs in the game's directory (`OuterWilds\OuterWilds_Data\Managed`); @@ -199,13 +198,22 @@ It is also recommended to lower all graphics settings to minimum, be in windowed ## Authors and Special Thanks +### Authors + - [\_nebula](https://github.com/misternebula) - Developer of v0.3 onwards - [AmazingAlek](https://github.com/amazingalek) - On-and-off developer and sometimes code tidy-er - [Raicuparta](https://github.com/Raicuparta) - Developer of v0.1 - v0.2 + +### Contributers + +- [ShoosGun](https://github.com/ShoosGun) +- [Chris Yeninas](https://github.com/PhantomGamers) + +### Special Thanks - Thanks to Logan Ver Hoef for help with the game code. - Thanks to all the people in the Outer Wilds Discord for helping in public tests. - Special thanks (and apologies) to all the people in the #modding channel, which I (_nebula) have been using as a virtual [rubber duck.](https://en.wikipedia.org/wiki/Rubber_duck_debugging) ## Help / Discuss development / Whatever -[Join the unofficial Outer Wilds Discord](https://discord.gg/Sftcc9Z), we have a nice `#modding` channel where you can discuss all types of things. +[Join the unofficial Outer Wilds Discord](https://discord.gg/Sftcc9Z), we have a nice `#modding-support` channel for any mod help, and a `#modding` channel to discuss modding! From 54d7ad27cd025960288302b07b9ffa0348fcd82e Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 9 Nov 2021 17:11:41 +0000 Subject: [PATCH 02/13] move existing translator stuff to new folder --- QSB/QSB.csproj | 2 +- QSB/Tools/{ => TranslatorTool}/Events/PlayerTranslatorEvent.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename QSB/Tools/{ => TranslatorTool}/Events/PlayerTranslatorEvent.cs (96%) diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 0f574dc3..df1dfe33 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -284,7 +284,7 @@ - + diff --git a/QSB/Tools/Events/PlayerTranslatorEvent.cs b/QSB/Tools/TranslatorTool/Events/PlayerTranslatorEvent.cs similarity index 96% rename from QSB/Tools/Events/PlayerTranslatorEvent.cs rename to QSB/Tools/TranslatorTool/Events/PlayerTranslatorEvent.cs index f5cd7235..82570126 100644 --- a/QSB/Tools/Events/PlayerTranslatorEvent.cs +++ b/QSB/Tools/TranslatorTool/Events/PlayerTranslatorEvent.cs @@ -2,7 +2,7 @@ using QSB.Messaging; using QSB.Player; -namespace QSB.Tools.Events +namespace QSB.Tools.TranslatorTool.Events { public class PlayerTranslatorEvent : QSBEvent { From 4c0b8c77b46588a6d555f04170612c15a25a41b4 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 9 Nov 2021 17:11:47 +0000 Subject: [PATCH 03/13] Update QSB.sln --- QSB.sln | 1 + 1 file changed, 1 insertion(+) diff --git a/QSB.sln b/QSB.sln index b7e39c4d..7473e240 100644 --- a/QSB.sln +++ b/QSB.sln @@ -17,6 +17,7 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2569F98D-F671-42AA-82DE-505B05CDCEF2}" ProjectSection(SolutionItems) = preProject .gitignore = .gitignore + Directory.Build.targets = Directory.Build.targets LICENSE = LICENSE README.md = README.md EndProjectSection From 0ee56305fd5a69829c12b9843604c92cb24064e7 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 9 Nov 2021 17:24:13 +0000 Subject: [PATCH 04/13] Update QSBEventManager.cs --- QSB/Events/QSBEventManager.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/QSB/Events/QSBEventManager.cs b/QSB/Events/QSBEventManager.cs index d6780875..2086a368 100644 --- a/QSB/Events/QSBEventManager.cs +++ b/QSB/Events/QSBEventManager.cs @@ -23,6 +23,7 @@ using QSB.StatueSync.Events; using QSB.TimeSync.Events; using QSB.Tools.Events; using QSB.Tools.ProbeLauncherTool.Events; +using QSB.Tools.TranslatorTool.Events; using QSB.TranslationSync.Events; using QSB.Utility; using QSB.Utility.Events; From 381df328267f460929a5e99eff730ed1b8ac2e51 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 9 Nov 2021 17:46:46 +0000 Subject: [PATCH 05/13] moved all tools into seperate folders, including probe (so removed QSB.ProbeSync) --- .../Patches/LightSensorPatches.cs | 1 + QSB/Events/QSBEventManager.cs | 5 +- QSB/Player/PlayerInfo.cs | 3 +- QSB/Player/QSBPlayerManager.cs | 1 + QSB/QSB.csproj | 29 +- QSB/QSBNetworkManager.cs | 2 +- .../Events/PlayerFlashlightEvent.cs | 2 +- QSB/Tools/FlashlightTool/FlashlightCreator.cs | 25 ++ .../{ => FlashlightTool}/QSBFlashlight.cs | 2 +- QSB/Tools/PlayerToolsManager.cs | 307 +----------------- .../ProbeLauncherTool/ProbeLauncherCreator.cs | 77 +++++ .../ProbeTool}/Events/PlayerProbeEvent.cs | 2 +- .../Events/ProbeStartRetrieveEvent.cs | 2 +- QSB/Tools/ProbeTool/ProbeCreator.cs | 134 ++++++++ .../ProbeTool}/ProbeEvent.cs | 2 +- .../ProbeTool}/ProbeListener.cs | 2 +- .../ProbeTool}/QSBProbe.cs | 2 +- .../ProbeTool}/QSBProbeEffects.cs | 2 +- .../ProbeTool}/QSBProbeLantern.cs | 2 +- .../ProbeTool}/QSBProbeSpotlight.cs | 2 +- .../TransformSync/PlayerProbeSync.cs | 5 +- .../Events/PlayerSignalscopeEvent.cs | 2 +- .../SignalscopeTool/SignalscopeCreator.cs | 40 +++ QSB/Tools/TranslatorTool/TranslatorCreator.cs | 50 +++ 24 files changed, 380 insertions(+), 321 deletions(-) rename QSB/Tools/{ => FlashlightTool}/Events/PlayerFlashlightEvent.cs (96%) create mode 100644 QSB/Tools/FlashlightTool/FlashlightCreator.cs rename QSB/Tools/{ => FlashlightTool}/QSBFlashlight.cs (98%) create mode 100644 QSB/Tools/ProbeLauncherTool/ProbeLauncherCreator.cs rename QSB/{ProbeSync => Tools/ProbeTool}/Events/PlayerProbeEvent.cs (96%) rename QSB/{ProbeSync => Tools/ProbeTool}/Events/ProbeStartRetrieveEvent.cs (96%) create mode 100644 QSB/Tools/ProbeTool/ProbeCreator.cs rename QSB/{ProbeSync => Tools/ProbeTool}/ProbeEvent.cs (78%) rename QSB/{ProbeSync => Tools/ProbeTool}/ProbeListener.cs (98%) rename QSB/{ProbeSync => Tools/ProbeTool}/QSBProbe.cs (99%) rename QSB/{ProbeSync => Tools/ProbeTool}/QSBProbeEffects.cs (98%) rename QSB/{ProbeSync => Tools/ProbeTool}/QSBProbeLantern.cs (98%) rename QSB/{ProbeSync => Tools/ProbeTool}/QSBProbeSpotlight.cs (98%) rename QSB/{ProbeSync => Tools/ProbeTool}/TransformSync/PlayerProbeSync.cs (96%) rename QSB/Tools/{ => SignalscopeTool}/Events/PlayerSignalscopeEvent.cs (96%) create mode 100644 QSB/Tools/SignalscopeTool/SignalscopeCreator.cs create mode 100644 QSB/Tools/TranslatorTool/TranslatorCreator.cs diff --git a/QSB/EchoesOfTheEye/LightSensorSync/Patches/LightSensorPatches.cs b/QSB/EchoesOfTheEye/LightSensorSync/Patches/LightSensorPatches.cs index bf0b1240..623d0d2a 100644 --- a/QSB/EchoesOfTheEye/LightSensorSync/Patches/LightSensorPatches.cs +++ b/QSB/EchoesOfTheEye/LightSensorSync/Patches/LightSensorPatches.cs @@ -2,6 +2,7 @@ using QSB.Patches; using QSB.Player; using QSB.Tools; +using QSB.Tools.FlashlightTool; using System; using System.Collections.Generic; using System.Linq; diff --git a/QSB/Events/QSBEventManager.cs b/QSB/Events/QSBEventManager.cs index 2086a368..7cccf4e2 100644 --- a/QSB/Events/QSBEventManager.cs +++ b/QSB/Events/QSBEventManager.cs @@ -12,7 +12,6 @@ using QSB.ItemSync.Events; using QSB.LogSync.Events; using QSB.OrbSync.Events; using QSB.Player.Events; -using QSB.ProbeSync.Events; using QSB.QuantumSync.Events; using QSB.RoastingSync.Events; using QSB.SatelliteSync.Events; @@ -21,8 +20,10 @@ using QSB.ShipSync.Events.Component; using QSB.ShipSync.Events.Hull; using QSB.StatueSync.Events; using QSB.TimeSync.Events; -using QSB.Tools.Events; +using QSB.Tools.FlashlightTool.Events; using QSB.Tools.ProbeLauncherTool.Events; +using QSB.Tools.ProbeTool.Events; +using QSB.Tools.SignalscopeTool.Events; using QSB.Tools.TranslatorTool.Events; using QSB.TranslationSync.Events; using QSB.Utility; diff --git a/QSB/Player/PlayerInfo.cs b/QSB/Player/PlayerInfo.cs index 55cd806a..70f75968 100644 --- a/QSB/Player/PlayerInfo.cs +++ b/QSB/Player/PlayerInfo.cs @@ -6,11 +6,12 @@ using QSB.ClientServerStateSync; using QSB.ItemSync.WorldObjects; using QSB.ItemSync.WorldObjects.Items; using QSB.Player.TransformSync; -using QSB.ProbeSync; using QSB.QuantumSync; using QSB.RoastingSync; using QSB.Tools; +using QSB.Tools.FlashlightTool; using QSB.Tools.ProbeLauncherTool; +using QSB.Tools.ProbeTool; using QSB.Utility; using System.Linq; using UnityEngine; diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index 67d8fbb4..f80b8be8 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -3,6 +3,7 @@ using QSB.ItemSync.WorldObjects.Items; using QSB.Player.Events; using QSB.Player.TransformSync; using QSB.Tools; +using QSB.Tools.FlashlightTool; using QSB.Utility; using System; using System.Collections.Generic; diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index df1dfe33..b2f1c2ce 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -169,13 +169,13 @@ - - - - - - - + + + + + + + @@ -239,15 +239,20 @@ + + + + + @@ -274,7 +279,7 @@ - + @@ -283,7 +288,7 @@ - + @@ -316,11 +321,11 @@ - - + + - + diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 65254a34..de674bc5 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -11,9 +11,9 @@ using QSB.Patches; using QSB.Player; using QSB.Player.TransformSync; using QSB.PoolSync; -using QSB.ProbeSync.TransformSync; using QSB.ShipSync.TransformSync; using QSB.TimeSync; +using QSB.Tools.ProbeTool.TransformSync; using QSB.Utility; using QSB.WorldSync; using QuantumUNET; diff --git a/QSB/Tools/Events/PlayerFlashlightEvent.cs b/QSB/Tools/FlashlightTool/Events/PlayerFlashlightEvent.cs similarity index 96% rename from QSB/Tools/Events/PlayerFlashlightEvent.cs rename to QSB/Tools/FlashlightTool/Events/PlayerFlashlightEvent.cs index 4c1c81d8..8865a744 100644 --- a/QSB/Tools/Events/PlayerFlashlightEvent.cs +++ b/QSB/Tools/FlashlightTool/Events/PlayerFlashlightEvent.cs @@ -2,7 +2,7 @@ using QSB.Messaging; using QSB.Player; -namespace QSB.Tools.Events +namespace QSB.Tools.FlashlightTool.Events { public class PlayerFlashlightEvent : QSBEvent { diff --git a/QSB/Tools/FlashlightTool/FlashlightCreator.cs b/QSB/Tools/FlashlightTool/FlashlightCreator.cs new file mode 100644 index 00000000..a262c6ab --- /dev/null +++ b/QSB/Tools/FlashlightTool/FlashlightCreator.cs @@ -0,0 +1,25 @@ +using UnityEngine; + +namespace QSB.Tools.FlashlightTool +{ + static class FlashlightCreator + { + private static readonly Vector3 FlashlightOffset = new Vector3(0.7196316f, -0.2697681f, 0.3769455f); + + internal static void CreateFlashlight(Transform cameraBody) + { + var flashlightRoot = Object.Instantiate(GameObject.Find("FlashlightRoot")); + flashlightRoot.name = "REMOTE_FlashlightRoot"; + flashlightRoot.SetActive(false); + var oldComponent = flashlightRoot.GetComponent(); + var component = flashlightRoot.AddComponent(); + + component.Init(oldComponent); + oldComponent.enabled = false; + + flashlightRoot.transform.parent = cameraBody; + flashlightRoot.transform.localPosition = FlashlightOffset; + flashlightRoot.SetActive(true); + } + } +} diff --git a/QSB/Tools/QSBFlashlight.cs b/QSB/Tools/FlashlightTool/QSBFlashlight.cs similarity index 98% rename from QSB/Tools/QSBFlashlight.cs rename to QSB/Tools/FlashlightTool/QSBFlashlight.cs index 21f49c71..cf36d2ac 100644 --- a/QSB/Tools/QSBFlashlight.cs +++ b/QSB/Tools/FlashlightTool/QSBFlashlight.cs @@ -1,7 +1,7 @@ using OWML.Utils; using UnityEngine; -namespace QSB.Tools +namespace QSB.Tools.FlashlightTool { public class QSBFlashlight : MonoBehaviour, ILightSource { diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index 3d42cbba..aa37933f 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -1,8 +1,9 @@ using OWML.Utils; using QSB.Player; -using QSB.ProbeSync; +using QSB.Tools.FlashlightTool; using QSB.Tools.ProbeLauncherTool; -using QSB.Utility; +using QSB.Tools.SignalscopeTool; +using QSB.Tools.TranslatorTool; using System.Linq; using UnityEngine; using UnityEngine.PostProcessing; @@ -11,16 +12,12 @@ namespace QSB.Tools { public class PlayerToolsManager { - private static Transform _toolStowTransform; - private static Transform _toolHoldTransform; - private static Material Props_HEA_PlayerTool_mat; - private static Material Props_HEA_Lightbulb_mat; - private static Material Props_HEA_Lightbulb_OFF_mat; + public static Transform StowTransform; + public static Transform HoldTransform; - private static readonly Vector3 FlashlightOffset = new Vector3(0.7196316f, -0.2697681f, 0.3769455f); - private static readonly Vector3 ProbeLauncherOffset = new Vector3(0.5745087f, -0.26f, 0.4453125f); - private static readonly Vector3 SignalscopeScale = new Vector3(1.5f, 1.5f, 1.5f); - private static readonly Vector3 TranslatorScale = new Vector3(0.75f, 0.75f, 0.75f); + public static Material Props_HEA_PlayerTool_mat; + public static Material Props_HEA_Lightbulb_mat; + public static Material Props_HEA_Lightbulb_OFF_mat; public static void Init(Transform playerCamera) { @@ -41,144 +38,22 @@ namespace QSB.Tools Props_HEA_Lightbulb_OFF_mat = null; } - CreateFlashlight(playerCamera); - CreateSignalscope(playerCamera); - CreateProbeLauncher(playerCamera); - CreateTranslator(playerCamera); - } - - public static void CreateProbe(Transform newProbe, PlayerInfo player) - { - var qsbProbe = newProbe.gameObject.AddComponent(); - player.Probe = qsbProbe; - qsbProbe.SetOwner(player); - - // Probe_Body - Object.Destroy(newProbe.GetComponent()); - Object.Destroy(newProbe.GetComponent()); - Object.Destroy(newProbe.GetComponent()); - Object.Destroy(newProbe.GetComponent()); - Object.Destroy(newProbe.GetComponent()); - Object.Destroy(newProbe.GetComponent()); - Object.Destroy(newProbe.GetComponent()); - Object.Destroy(newProbe.GetComponent()); - Object.Destroy(newProbe.GetComponent()); - Object.Destroy(newProbe.GetComponent()); - - // ProbeDetector - //Object.Destroy(newProbe.Find("ProbeDetector").gameObject); - var probeDetector = newProbe.Find("ProbeDetector").gameObject; - Object.Destroy(probeDetector.GetComponent()); - Object.Destroy(probeDetector.GetComponent()); - Object.Destroy(probeDetector.GetComponent()); - - // CameraPivot - var cameraPivot = newProbe.Find("CameraPivot"); - Object.Destroy(cameraPivot.GetComponent()); - - // TODO : Sync probe animations - - // CameraPivot/Geometry/Props_HEA_Probe_ANIM - var animRoot = cameraPivot.Find("Geometry").Find("Props_HEA_Probe_ANIM"); - Object.Destroy(animRoot.GetComponent()); - Object.Destroy(animRoot.GetComponent()); - - // TODO : Set up QSB cameras for these two cameras - that's why im not just destroying the GOs here - - // CameraPivot/ForwardCamera - var forwardCamera = cameraPivot.Find("ForwardCamera"); - Object.Destroy(forwardCamera.GetComponent()); - Object.Destroy(forwardCamera.GetComponent()); - Object.Destroy(forwardCamera.GetComponent()); - Object.Destroy(forwardCamera.GetComponent()); - Object.Destroy(forwardCamera.GetComponent()); - Object.Destroy(forwardCamera.GetComponent()); - var oldForwardSpotlight = forwardCamera.GetComponent(); - var newForwardSpotlight = forwardCamera.gameObject.AddComponent(); - newForwardSpotlight._id = oldForwardSpotlight.GetValue("_id"); - newForwardSpotlight._fadeInLength = oldForwardSpotlight.GetValue("_fadeInLength"); - newForwardSpotlight._intensity = 0.8f; - Object.Destroy(oldForwardSpotlight); - - // CameraPivot/RotatingCameraPivot/RotatingCamera - var rotatingCamera = cameraPivot.Find("RotatingCameraPivot").Find("RotatingCamera"); - Object.Destroy(rotatingCamera.GetComponent()); - Object.Destroy(rotatingCamera.GetComponent()); - Object.Destroy(rotatingCamera.GetComponent()); - Object.Destroy(rotatingCamera.GetComponent()); - Object.Destroy(rotatingCamera.GetComponent()); - Object.Destroy(rotatingCamera.GetComponent()); - - // ProbeEffects - var probeEffects = newProbe.Find("ProbeEffects"); - var oldEffects = probeEffects.GetComponent(); - var newEffects = probeEffects.gameObject.AddComponent(); - newEffects._flightLoopAudio = oldEffects.GetValue("_flightLoopAudio"); - newEffects._anchorAudio = oldEffects.GetValue("_anchorAudio"); - newEffects._anchorParticles = oldEffects.GetValue("_anchorParticles"); - Object.Destroy(oldEffects); - - Object.Destroy(probeEffects.Find("CloudsEffectBubble").gameObject); - Object.Destroy(probeEffects.Find("SandEffectBubble").gameObject); - Object.Destroy(probeEffects.Find("ProbeElectricityEffect").gameObject); - - // AmbientLight_Probe - var ambientLight = newProbe.Find("AmbientLight_Probe"); - var oldAmbLantern = ambientLight.GetComponent(); - var newAmbLantern = ambientLight.gameObject.AddComponent(); - newAmbLantern._fadeInDuration = oldAmbLantern.GetValue("_fadeInDuration"); - newAmbLantern._fadeInCurve = oldAmbLantern.GetValue("_fadeInCurve"); - newAmbLantern._fadeOutCurve = oldAmbLantern.GetValue("_fadeOutCurve"); - newAmbLantern._emissiveRenderer = oldAmbLantern.GetValue("_emissiveRenderer"); - newAmbLantern._originalRange = 60f; - Object.Destroy(oldAmbLantern); - - // Lantern - var lantern = newProbe.Find("Lantern"); - var oldLantern = lantern.GetComponent(); - var newLantern = lantern.gameObject.AddComponent(); - newLantern._fadeInDuration = oldLantern.GetValue("_fadeInDuration"); - newLantern._fadeInCurve = oldLantern.GetValue("_fadeInCurve"); - newLantern._fadeOutCurve = oldLantern.GetValue("_fadeOutCurve"); - newLantern._emissiveRenderer = oldLantern.GetValue("_emissiveRenderer"); - newLantern._originalRange = 35f; - Object.Destroy(oldLantern); - - // RearCamera - var rearCamera = newProbe.Find("RearCamera"); - Object.Destroy(rearCamera.GetComponent()); - Object.Destroy(rearCamera.GetComponent()); - Object.Destroy(rearCamera.GetComponent()); - Object.Destroy(rearCamera.GetComponent()); - Object.Destroy(rearCamera.GetComponent()); - Object.Destroy(rearCamera.GetComponent()); - var oldRearSpotlight = rearCamera.GetComponent(); - var newRearSpotlight = rearCamera.gameObject.AddComponent(); - newRearSpotlight._id = oldRearSpotlight.GetValue("_id"); - newRearSpotlight._fadeInLength = oldRearSpotlight.GetValue("_fadeInLength"); - newRearSpotlight._intensity = 0.8f; - Object.Destroy(oldRearSpotlight); - - // PlaneOffsetMarker_Probe - Object.Destroy(newProbe.Find("PlaneOffsetMarker_Probe").gameObject); - - newProbe.Find("RecallEffect").gameObject.GetComponent().enabled = true; - newProbe.Find("RecallEffect").gameObject.GetComponent().enabled = true; - newProbe.Find("RecallEffect").name = "RemoteProbeRecallEffect"; - - newProbe.gameObject.SetActive(true); + FlashlightCreator.CreateFlashlight(playerCamera); + SignalscopeCreator.CreateSignalscope(playerCamera); + ProbeLauncherCreator.CreateProbeLauncher(playerCamera); + TranslatorCreator.CreateTranslator(playerCamera); } private static void CreateStowTransforms(Transform cameraBody) { var stow = new GameObject("REMOTE_ToolStowTransform"); - _toolStowTransform = stow.transform; + StowTransform = stow.transform; stow.transform.parent = cameraBody; stow.transform.localPosition = Vector3.zero; stow.transform.localRotation = Quaternion.Euler(45f, 0f, 0f); var hold = new GameObject("REMOTE_ToolHoldTransform"); - _toolHoldTransform = hold.transform; + HoldTransform = hold.transform; hold.transform.parent = cameraBody; hold.transform.localPosition = Vector3.zero; hold.transform.localRotation = Quaternion.Euler(0f, 0f, 0f); @@ -238,159 +113,7 @@ namespace QSB.Tools visionTorch.transform.localScale = new Vector3(0.33f, 0.33f, 0.33f); } - private static void CreateFlashlight(Transform cameraBody) - { - var flashlightRoot = Object.Instantiate(GameObject.Find("FlashlightRoot")); - flashlightRoot.name = "REMOTE_FlashlightRoot"; - flashlightRoot.SetActive(false); - var oldComponent = flashlightRoot.GetComponent(); - var component = flashlightRoot.AddComponent(); - - component.Init(oldComponent); - oldComponent.enabled = false; - - flashlightRoot.transform.parent = cameraBody; - flashlightRoot.transform.localPosition = FlashlightOffset; - flashlightRoot.SetActive(true); - } - - private static void CreateSignalscope(Transform cameraBody) - { - var signalscopeRoot = Object.Instantiate(GameObject.Find("Signalscope")); - signalscopeRoot.name = "REMOTE_Signalscope"; - signalscopeRoot.SetActive(false); - - Object.Destroy(signalscopeRoot.GetComponent()); - Object.Destroy(signalscopeRoot.transform.Find("Props_HEA_Signalscope") - .Find("Props_HEA_Signalscope_Prepass").gameObject); - - var oldSignalscope = signalscopeRoot.GetComponent(); - var tool = signalscopeRoot.AddComponent(); - tool.MoveSpring = oldSignalscope.GetValue("_moveSpring"); - tool.StowTransform = _toolStowTransform; - tool.HoldTransform = _toolHoldTransform; - tool.ArrivalDegrees = 5f; - tool.Type = ToolType.Signalscope; - tool.ToolGameObject = signalscopeRoot.transform.Find("Props_HEA_Signalscope").gameObject; - oldSignalscope.enabled = false; - - GetRenderer(signalscopeRoot, "Props_HEA_Signalscope").material = Props_HEA_PlayerTool_mat; - - signalscopeRoot.transform.parent = cameraBody; - signalscopeRoot.transform.localPosition = Vector3.zero; - signalscopeRoot.transform.localScale = SignalscopeScale; - signalscopeRoot.SetActive(true); - } - - private static void CreateTranslator(Transform cameraBody) - { - var original = GameObject.Find("NomaiTranslatorProp"); - - var translatorRoot = original.InstantiateInactive(); - translatorRoot.name = "REMOTE_NomaiTranslatorProp"; - - var group = translatorRoot.transform.Find("TranslatorGroup"); - var model = group.Find("Props_HEA_Translator"); - - Object.Destroy(translatorRoot.GetComponent()); - Object.Destroy(group.Find("Canvas").gameObject); - Object.Destroy(group.Find("Lighting").gameObject); - Object.Destroy(group.Find("TranslatorBeams").gameObject); - Object.Destroy(model.Find("Props_HEA_Translator_Pivot_RotatingPart") - .Find("Props_HEA_Translator_RotatingPart") - .Find("Props_HEA_Translator_RotatingPart_Prepass").gameObject); - Object.Destroy(model.Find("Props_HEA_Translator_Prepass").gameObject); - - var oldTranslator = translatorRoot.GetComponent(); - var tool = translatorRoot.AddComponent(); - tool.MoveSpring = oldTranslator.GetValue("_moveSpring"); - tool.StowTransform = _toolStowTransform; - tool.HoldTransform = _toolHoldTransform; - tool.ArrivalDegrees = 5f; - tool.Type = ToolType.Translator; - tool.ToolGameObject = group.gameObject; - Object.Destroy(oldTranslator); - - GetRenderer(translatorRoot, "Props_HEA_Translator_Geo").material = Props_HEA_PlayerTool_mat; - GetRenderer(translatorRoot, "Props_HEA_Translator_RotatingPart").material = Props_HEA_PlayerTool_mat; - GetRenderer(translatorRoot, "Props_HEA_Translator_Button_L").material = Props_HEA_Lightbulb_mat; - GetRenderer(translatorRoot, "Props_HEA_Translator_Button_R").material = Props_HEA_Lightbulb_mat; - - translatorRoot.transform.parent = cameraBody; - translatorRoot.transform.localPosition = Vector3.zero; - translatorRoot.transform.localScale = TranslatorScale; - QSBCore.UnityEvents.FireOnNextUpdate(() => translatorRoot.SetActive(true)); - } - - private static void CreateProbeLauncher(Transform cameraBody) - { - var ProbeLauncher = GameObject.Find("PlayerCamera/ProbeLauncher"); - - // Create new ProbeLauncher - var REMOTE_ProbeLauncher = new GameObject("REMOTE_ProbeLauncher"); - REMOTE_ProbeLauncher.SetActive(false); - - // Copy children of ProbeLauncher - var Props_HEA_ProbeLauncher = ProbeLauncher.transform.Find("Props_HEA_ProbeLauncher"); - var REMOTE_Props_HEA_ProbeLauncher = Object.Instantiate(Props_HEA_ProbeLauncher, REMOTE_ProbeLauncher.transform, false); - - var LaunchParticleEffect_Underwater = ProbeLauncher.transform.Find("LaunchParticleEffect_Underwater"); - var REMOTE_LaunchParticleEffect_Underwater = Object.Instantiate(LaunchParticleEffect_Underwater, REMOTE_ProbeLauncher.transform, false); - - var LaunchParticleEffect = ProbeLauncher.transform.Find("LaunchParticleEffect"); - var REMOTE_LaunchParticleEffect = Object.Instantiate(LaunchParticleEffect, REMOTE_ProbeLauncher.transform, false); - - // Set up effects - var effects = REMOTE_ProbeLauncher.AddComponent(); - effects.SetValue("_launchParticles", REMOTE_LaunchParticleEffect.GetComponent()); - effects.SetValue("_underwaterLaunchParticles", REMOTE_LaunchParticleEffect_Underwater.GetComponent()); - effects.SetValue("_owAudioSource", ProbeLauncher.GetComponent().GetValue("_owAudioSource")); - - var recallEffect = REMOTE_Props_HEA_ProbeLauncher.Find("RecallEffect"); - - REMOTE_Props_HEA_ProbeLauncher.Find("PressureGauge_Arrow").GetComponent().material = Props_HEA_PlayerTool_mat; - REMOTE_Props_HEA_ProbeLauncher.Find("ProbeLauncherChassis").GetComponent().material = Props_HEA_PlayerTool_mat; - Object.Destroy(REMOTE_Props_HEA_ProbeLauncher.Find("Props_HEA_ProbeLauncher_Prepass").gameObject); - - var preLaunchProbe = REMOTE_Props_HEA_ProbeLauncher.Find("Props_HEA_Probe_Prelaunch"); - Object.Destroy(preLaunchProbe.Find("Props_HEA_Probe_Prelaunch_Prepass").gameObject); - - // fuck you unity - var materials = preLaunchProbe.GetComponent().materials; - materials[0] = Props_HEA_PlayerTool_mat; - materials[1] = Props_HEA_Lightbulb_OFF_mat; - preLaunchProbe.GetComponent().materials = materials; - - var tool = REMOTE_ProbeLauncher.AddComponent(); - var spring = new DampedSpringQuat - { - velocity = Vector4.zero, - settings = new DampedSpringSettings - { - springConstant = 50f, - dampingCoefficient = 8.485282f, - mass = 1 - } - }; - - tool.MoveSpring = spring; - tool.StowTransform = _toolStowTransform; - tool.HoldTransform = _toolHoldTransform; - tool.ArrivalDegrees = 5f; - tool.Type = ToolType.ProbeLauncher; - tool.ToolGameObject = REMOTE_Props_HEA_ProbeLauncher.gameObject; - tool.PreLaunchProbeProxy = preLaunchProbe.gameObject; - tool.ProbeRetrievalEffect = recallEffect.GetComponent(); - tool.Effects = effects; - - REMOTE_ProbeLauncher.transform.parent = cameraBody; - REMOTE_ProbeLauncher.transform.localPosition = ProbeLauncherOffset; - - //QSBCore.UnityEvents.FireInNUpdates(() => REMOTE_ProbeLauncher.SetActive(true), 5); - REMOTE_ProbeLauncher.SetActive(true); - } - - private static MeshRenderer GetRenderer(GameObject root, string gameObjectName) => + internal static MeshRenderer GetRenderer(GameObject root, string gameObjectName) => root.GetComponentsInChildren(true).First(x => x.name == gameObjectName); } } \ No newline at end of file diff --git a/QSB/Tools/ProbeLauncherTool/ProbeLauncherCreator.cs b/QSB/Tools/ProbeLauncherTool/ProbeLauncherCreator.cs new file mode 100644 index 00000000..9b908bcb --- /dev/null +++ b/QSB/Tools/ProbeLauncherTool/ProbeLauncherCreator.cs @@ -0,0 +1,77 @@ +using UnityEngine; + +namespace QSB.Tools.ProbeLauncherTool +{ + static class ProbeLauncherCreator + { + private static readonly Vector3 ProbeLauncherOffset = new Vector3(0.5745087f, -0.26f, 0.4453125f); + + internal static void CreateProbeLauncher(Transform cameraBody) + { + var ProbeLauncher = GameObject.Find("PlayerCamera/ProbeLauncher"); + + // Create new ProbeLauncher + var REMOTE_ProbeLauncher = new GameObject("REMOTE_ProbeLauncher"); + REMOTE_ProbeLauncher.SetActive(false); + + // Copy children of ProbeLauncher + var Props_HEA_ProbeLauncher = ProbeLauncher.transform.Find("Props_HEA_ProbeLauncher"); + var REMOTE_Props_HEA_ProbeLauncher = Object.Instantiate(Props_HEA_ProbeLauncher, REMOTE_ProbeLauncher.transform, false); + + var LaunchParticleEffect_Underwater = ProbeLauncher.transform.Find("LaunchParticleEffect_Underwater"); + var REMOTE_LaunchParticleEffect_Underwater = Object.Instantiate(LaunchParticleEffect_Underwater, REMOTE_ProbeLauncher.transform, false); + + var LaunchParticleEffect = ProbeLauncher.transform.Find("LaunchParticleEffect"); + var REMOTE_LaunchParticleEffect = Object.Instantiate(LaunchParticleEffect, REMOTE_ProbeLauncher.transform, false); + + // Set up effects + var effects = REMOTE_ProbeLauncher.AddComponent(); + effects._launchParticles = REMOTE_LaunchParticleEffect.GetComponent(); + effects._underwaterLaunchParticles = REMOTE_LaunchParticleEffect_Underwater.GetComponent(); + effects._owAudioSource = ProbeLauncher.GetComponent()._owAudioSource; + + var recallEffect = REMOTE_Props_HEA_ProbeLauncher.Find("RecallEffect"); + + REMOTE_Props_HEA_ProbeLauncher.Find("PressureGauge_Arrow").GetComponent().material = PlayerToolsManager.Props_HEA_PlayerTool_mat; + REMOTE_Props_HEA_ProbeLauncher.Find("ProbeLauncherChassis").GetComponent().material = PlayerToolsManager.Props_HEA_PlayerTool_mat; + Object.Destroy(REMOTE_Props_HEA_ProbeLauncher.Find("Props_HEA_ProbeLauncher_Prepass").gameObject); + + var preLaunchProbe = REMOTE_Props_HEA_ProbeLauncher.Find("Props_HEA_Probe_Prelaunch"); + Object.Destroy(preLaunchProbe.Find("Props_HEA_Probe_Prelaunch_Prepass").gameObject); + + // fuck you unity + var materials = preLaunchProbe.GetComponent().materials; + materials[0] = PlayerToolsManager.Props_HEA_PlayerTool_mat; + materials[1] = PlayerToolsManager.Props_HEA_Lightbulb_OFF_mat; + preLaunchProbe.GetComponent().materials = materials; + + var tool = REMOTE_ProbeLauncher.AddComponent(); + var spring = new DampedSpringQuat + { + velocity = Vector4.zero, + settings = new DampedSpringSettings + { + springConstant = 50f, + dampingCoefficient = 8.485282f, + mass = 1 + } + }; + + tool.MoveSpring = spring; + tool.StowTransform = PlayerToolsManager.StowTransform; + tool.HoldTransform = PlayerToolsManager.HoldTransform; + tool.ArrivalDegrees = 5f; + tool.Type = ToolType.ProbeLauncher; + tool.ToolGameObject = REMOTE_Props_HEA_ProbeLauncher.gameObject; + tool.PreLaunchProbeProxy = preLaunchProbe.gameObject; + tool.ProbeRetrievalEffect = recallEffect.GetComponent(); + tool.Effects = effects; + + REMOTE_ProbeLauncher.transform.parent = cameraBody; + REMOTE_ProbeLauncher.transform.localPosition = ProbeLauncherOffset; + + //QSBCore.UnityEvents.FireInNUpdates(() => REMOTE_ProbeLauncher.SetActive(true), 5); + REMOTE_ProbeLauncher.SetActive(true); + } + } +} diff --git a/QSB/ProbeSync/Events/PlayerProbeEvent.cs b/QSB/Tools/ProbeTool/Events/PlayerProbeEvent.cs similarity index 96% rename from QSB/ProbeSync/Events/PlayerProbeEvent.cs rename to QSB/Tools/ProbeTool/Events/PlayerProbeEvent.cs index 174645fa..c63f9dfc 100644 --- a/QSB/ProbeSync/Events/PlayerProbeEvent.cs +++ b/QSB/Tools/ProbeTool/Events/PlayerProbeEvent.cs @@ -2,7 +2,7 @@ using QSB.Messaging; using QSB.Player; -namespace QSB.ProbeSync.Events +namespace QSB.Tools.ProbeTool.Events { internal class PlayerProbeEvent : QSBEvent> { diff --git a/QSB/ProbeSync/Events/ProbeStartRetrieveEvent.cs b/QSB/Tools/ProbeTool/Events/ProbeStartRetrieveEvent.cs similarity index 96% rename from QSB/ProbeSync/Events/ProbeStartRetrieveEvent.cs rename to QSB/Tools/ProbeTool/Events/ProbeStartRetrieveEvent.cs index 8f3f73e7..b0c1cdf8 100644 --- a/QSB/ProbeSync/Events/ProbeStartRetrieveEvent.cs +++ b/QSB/Tools/ProbeTool/Events/ProbeStartRetrieveEvent.cs @@ -2,7 +2,7 @@ using QSB.Messaging; using QSB.Player; -namespace QSB.ProbeSync.Events +namespace QSB.Tools.ProbeTool.Events { internal class ProbeStartRetrieveEvent : QSBEvent { diff --git a/QSB/Tools/ProbeTool/ProbeCreator.cs b/QSB/Tools/ProbeTool/ProbeCreator.cs new file mode 100644 index 00000000..5c6e8cc1 --- /dev/null +++ b/QSB/Tools/ProbeTool/ProbeCreator.cs @@ -0,0 +1,134 @@ +using QSB.Player; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine.PostProcessing; +using UnityEngine; + +namespace QSB.Tools.ProbeTool +{ + static class ProbeCreator + { + public static void CreateProbe(Transform newProbe, PlayerInfo player) + { + var qsbProbe = newProbe.gameObject.AddComponent(); + player.Probe = qsbProbe; + qsbProbe.SetOwner(player); + + // Probe_Body + Object.Destroy(newProbe.GetComponent()); + Object.Destroy(newProbe.GetComponent()); + Object.Destroy(newProbe.GetComponent()); + Object.Destroy(newProbe.GetComponent()); + Object.Destroy(newProbe.GetComponent()); + Object.Destroy(newProbe.GetComponent()); + Object.Destroy(newProbe.GetComponent()); + Object.Destroy(newProbe.GetComponent()); + Object.Destroy(newProbe.GetComponent()); + Object.Destroy(newProbe.GetComponent()); + + // ProbeDetector + //Object.Destroy(newProbe.Find("ProbeDetector").gameObject); + var probeDetector = newProbe.Find("ProbeDetector").gameObject; + Object.Destroy(probeDetector.GetComponent()); + Object.Destroy(probeDetector.GetComponent()); + Object.Destroy(probeDetector.GetComponent()); + + // CameraPivot + var cameraPivot = newProbe.Find("CameraPivot"); + Object.Destroy(cameraPivot.GetComponent()); + + // TODO : Sync probe animations + + // CameraPivot/Geometry/Props_HEA_Probe_ANIM + var animRoot = cameraPivot.Find("Geometry").Find("Props_HEA_Probe_ANIM"); + Object.Destroy(animRoot.GetComponent()); + Object.Destroy(animRoot.GetComponent()); + + // TODO : Set up QSB cameras for these two cameras - that's why im not just destroying the GOs here + + // CameraPivot/ForwardCamera + var forwardCamera = cameraPivot.Find("ForwardCamera"); + Object.Destroy(forwardCamera.GetComponent()); + Object.Destroy(forwardCamera.GetComponent()); + Object.Destroy(forwardCamera.GetComponent()); + Object.Destroy(forwardCamera.GetComponent()); + Object.Destroy(forwardCamera.GetComponent()); + Object.Destroy(forwardCamera.GetComponent()); + var oldForwardSpotlight = forwardCamera.GetComponent(); + var newForwardSpotlight = forwardCamera.gameObject.AddComponent(); + newForwardSpotlight._id = oldForwardSpotlight._id; + newForwardSpotlight._fadeInLength = oldForwardSpotlight._fadeInLength; + newForwardSpotlight._intensity = 0.8f; + Object.Destroy(oldForwardSpotlight); + + // CameraPivot/RotatingCameraPivot/RotatingCamera + var rotatingCamera = cameraPivot.Find("RotatingCameraPivot").Find("RotatingCamera"); + Object.Destroy(rotatingCamera.GetComponent()); + Object.Destroy(rotatingCamera.GetComponent()); + Object.Destroy(rotatingCamera.GetComponent()); + Object.Destroy(rotatingCamera.GetComponent()); + Object.Destroy(rotatingCamera.GetComponent()); + Object.Destroy(rotatingCamera.GetComponent()); + + // ProbeEffects + var probeEffects = newProbe.Find("ProbeEffects"); + var oldEffects = probeEffects.GetComponent(); + var newEffects = probeEffects.gameObject.AddComponent(); + newEffects._flightLoopAudio = oldEffects._flightLoopAudio; + newEffects._anchorAudio = oldEffects._anchorAudio; + newEffects._anchorParticles = oldEffects._anchorParticles; + Object.Destroy(oldEffects); + + Object.Destroy(probeEffects.Find("CloudsEffectBubble").gameObject); + Object.Destroy(probeEffects.Find("SandEffectBubble").gameObject); + Object.Destroy(probeEffects.Find("ProbeElectricityEffect").gameObject); + + // AmbientLight_Probe + var ambientLight = newProbe.Find("AmbientLight_Probe"); + var oldAmbLantern = ambientLight.GetComponent(); + var newAmbLantern = ambientLight.gameObject.AddComponent(); + newAmbLantern._fadeInDuration = oldAmbLantern._fadeInDuration; + newAmbLantern._fadeInCurve = oldAmbLantern._fadeInCurve; + newAmbLantern._fadeOutCurve = oldAmbLantern._fadeOutCurve; + newAmbLantern._emissiveRenderer = oldAmbLantern._emissiveRenderer; + newAmbLantern._originalRange = 60f; + Object.Destroy(oldAmbLantern); + + // Lantern + var lantern = newProbe.Find("Lantern"); + var oldLantern = lantern.GetComponent(); + var newLantern = lantern.gameObject.AddComponent(); + newLantern._fadeInDuration = oldLantern._fadeInDuration; + newLantern._fadeInCurve = oldLantern._fadeInCurve; + newLantern._fadeOutCurve = oldLantern._fadeOutCurve; + newLantern._emissiveRenderer = oldLantern._emissiveRenderer; + newLantern._originalRange = 35f; + Object.Destroy(oldLantern); + + // RearCamera + var rearCamera = newProbe.Find("RearCamera"); + Object.Destroy(rearCamera.GetComponent()); + Object.Destroy(rearCamera.GetComponent()); + Object.Destroy(rearCamera.GetComponent()); + Object.Destroy(rearCamera.GetComponent()); + Object.Destroy(rearCamera.GetComponent()); + Object.Destroy(rearCamera.GetComponent()); + var oldRearSpotlight = rearCamera.GetComponent(); + var newRearSpotlight = rearCamera.gameObject.AddComponent(); + newRearSpotlight._id = oldRearSpotlight._id; + newRearSpotlight._fadeInLength = oldRearSpotlight._fadeInLength; + newRearSpotlight._intensity = 0.8f; + Object.Destroy(oldRearSpotlight); + + // PlaneOffsetMarker_Probe + Object.Destroy(newProbe.Find("PlaneOffsetMarker_Probe").gameObject); + + newProbe.Find("RecallEffect").gameObject.GetComponent().enabled = true; + newProbe.Find("RecallEffect").gameObject.GetComponent().enabled = true; + newProbe.Find("RecallEffect").name = "RemoteProbeRecallEffect"; + + newProbe.gameObject.SetActive(true); + } + } +} diff --git a/QSB/ProbeSync/ProbeEvent.cs b/QSB/Tools/ProbeTool/ProbeEvent.cs similarity index 78% rename from QSB/ProbeSync/ProbeEvent.cs rename to QSB/Tools/ProbeTool/ProbeEvent.cs index 42c02a53..9ba4833b 100644 --- a/QSB/ProbeSync/ProbeEvent.cs +++ b/QSB/Tools/ProbeTool/ProbeEvent.cs @@ -1,4 +1,4 @@ -namespace QSB.ProbeSync +namespace QSB.Tools.ProbeTool { public enum ProbeEvent { diff --git a/QSB/ProbeSync/ProbeListener.cs b/QSB/Tools/ProbeTool/ProbeListener.cs similarity index 98% rename from QSB/ProbeSync/ProbeListener.cs rename to QSB/Tools/ProbeTool/ProbeListener.cs index 003236b9..cca659dd 100644 --- a/QSB/ProbeSync/ProbeListener.cs +++ b/QSB/Tools/ProbeTool/ProbeListener.cs @@ -1,7 +1,7 @@ using QSB.Events; using UnityEngine; -namespace QSB.ProbeSync +namespace QSB.Tools.ProbeTool { internal class ProbeListener : MonoBehaviour { diff --git a/QSB/ProbeSync/QSBProbe.cs b/QSB/Tools/ProbeTool/QSBProbe.cs similarity index 99% rename from QSB/ProbeSync/QSBProbe.cs rename to QSB/Tools/ProbeTool/QSBProbe.cs index 198645fb..5ce1457b 100644 --- a/QSB/ProbeSync/QSBProbe.cs +++ b/QSB/Tools/ProbeTool/QSBProbe.cs @@ -2,7 +2,7 @@ using QSB.Utility; using UnityEngine; -namespace QSB.ProbeSync +namespace QSB.Tools.ProbeTool { public class QSBProbe : MonoBehaviour { diff --git a/QSB/ProbeSync/QSBProbeEffects.cs b/QSB/Tools/ProbeTool/QSBProbeEffects.cs similarity index 98% rename from QSB/ProbeSync/QSBProbeEffects.cs rename to QSB/Tools/ProbeTool/QSBProbeEffects.cs index 86fbdb1e..2992a17a 100644 --- a/QSB/ProbeSync/QSBProbeEffects.cs +++ b/QSB/Tools/ProbeTool/QSBProbeEffects.cs @@ -2,7 +2,7 @@ using System.Linq; using UnityEngine; -namespace QSB.ProbeSync +namespace QSB.Tools.ProbeTool { internal class QSBProbeEffects : MonoBehaviour { diff --git a/QSB/ProbeSync/QSBProbeLantern.cs b/QSB/Tools/ProbeTool/QSBProbeLantern.cs similarity index 98% rename from QSB/ProbeSync/QSBProbeLantern.cs rename to QSB/Tools/ProbeTool/QSBProbeLantern.cs index f17914e0..ec94ff2b 100644 --- a/QSB/ProbeSync/QSBProbeLantern.cs +++ b/QSB/Tools/ProbeTool/QSBProbeLantern.cs @@ -2,7 +2,7 @@ using System.Linq; using UnityEngine; -namespace QSB.ProbeSync +namespace QSB.Tools.ProbeTool { internal class QSBProbeLantern : MonoBehaviour { diff --git a/QSB/ProbeSync/QSBProbeSpotlight.cs b/QSB/Tools/ProbeTool/QSBProbeSpotlight.cs similarity index 98% rename from QSB/ProbeSync/QSBProbeSpotlight.cs rename to QSB/Tools/ProbeTool/QSBProbeSpotlight.cs index 1e1de58b..4e9a17cc 100644 --- a/QSB/ProbeSync/QSBProbeSpotlight.cs +++ b/QSB/Tools/ProbeTool/QSBProbeSpotlight.cs @@ -2,7 +2,7 @@ using System.Linq; using UnityEngine; -namespace QSB.ProbeSync +namespace QSB.Tools.ProbeTool { internal class QSBProbeSpotlight : MonoBehaviour { diff --git a/QSB/ProbeSync/TransformSync/PlayerProbeSync.cs b/QSB/Tools/ProbeTool/TransformSync/PlayerProbeSync.cs similarity index 96% rename from QSB/ProbeSync/TransformSync/PlayerProbeSync.cs rename to QSB/Tools/ProbeTool/TransformSync/PlayerProbeSync.cs index 96d95f0c..85cea596 100644 --- a/QSB/ProbeSync/TransformSync/PlayerProbeSync.cs +++ b/QSB/Tools/ProbeTool/TransformSync/PlayerProbeSync.cs @@ -4,11 +4,12 @@ using QSB.SectorSync; using QSB.Syncs.Sectored.Transforms; using QSB.Tools; using QSB.Tools.ProbeLauncherTool; +using QSB.Tools.ProbeTool; using QSB.Utility; using QSB.WorldSync; using UnityEngine; -namespace QSB.ProbeSync.TransformSync +namespace QSB.Tools.ProbeTool.TransformSync { public class PlayerProbeSync : SectoredTransformSync { @@ -58,7 +59,7 @@ namespace QSB.ProbeSync.TransformSync body.name = "RemoteProbeTransform"; - PlayerToolsManager.CreateProbe(body, Player); + ProbeCreator.CreateProbe(body, Player); Player.ProbeBody = body.gameObject; diff --git a/QSB/Tools/Events/PlayerSignalscopeEvent.cs b/QSB/Tools/SignalscopeTool/Events/PlayerSignalscopeEvent.cs similarity index 96% rename from QSB/Tools/Events/PlayerSignalscopeEvent.cs rename to QSB/Tools/SignalscopeTool/Events/PlayerSignalscopeEvent.cs index e1d08ee2..1463010f 100644 --- a/QSB/Tools/Events/PlayerSignalscopeEvent.cs +++ b/QSB/Tools/SignalscopeTool/Events/PlayerSignalscopeEvent.cs @@ -2,7 +2,7 @@ using QSB.Messaging; using QSB.Player; -namespace QSB.Tools.Events +namespace QSB.Tools.SignalscopeTool.Events { public class PlayerSignalscopeEvent : QSBEvent { diff --git a/QSB/Tools/SignalscopeTool/SignalscopeCreator.cs b/QSB/Tools/SignalscopeTool/SignalscopeCreator.cs new file mode 100644 index 00000000..d4c9f864 --- /dev/null +++ b/QSB/Tools/SignalscopeTool/SignalscopeCreator.cs @@ -0,0 +1,40 @@ +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; + +namespace QSB.Tools.SignalscopeTool +{ + static class SignalscopeCreator + { + private static readonly Vector3 SignalscopeScale = new Vector3(1.5f, 1.5f, 1.5f); + + internal static void CreateSignalscope(Transform cameraBody) + { + var signalscopeRoot = Object.Instantiate(GameObject.Find("Signalscope")); + signalscopeRoot.name = "REMOTE_Signalscope"; + signalscopeRoot.SetActive(false); + + Object.Destroy(signalscopeRoot.GetComponent()); + Object.Destroy(signalscopeRoot.transform.Find("Props_HEA_Signalscope") + .Find("Props_HEA_Signalscope_Prepass").gameObject); + + var oldSignalscope = signalscopeRoot.GetComponent(); + var tool = signalscopeRoot.AddComponent(); + tool.MoveSpring = oldSignalscope._moveSpring; + tool.StowTransform = PlayerToolsManager.StowTransform; + tool.HoldTransform = PlayerToolsManager.HoldTransform; + tool.ArrivalDegrees = 5f; + tool.Type = ToolType.Signalscope; + tool.ToolGameObject = signalscopeRoot.transform.Find("Props_HEA_Signalscope").gameObject; + oldSignalscope.enabled = false; + + PlayerToolsManager.GetRenderer(signalscopeRoot, "Props_HEA_Signalscope").material = PlayerToolsManager.Props_HEA_PlayerTool_mat; + + signalscopeRoot.transform.parent = cameraBody; + signalscopeRoot.transform.localPosition = Vector3.zero; + signalscopeRoot.transform.localScale = SignalscopeScale; + signalscopeRoot.SetActive(true); + } + } +} diff --git a/QSB/Tools/TranslatorTool/TranslatorCreator.cs b/QSB/Tools/TranslatorTool/TranslatorCreator.cs new file mode 100644 index 00000000..72e02c59 --- /dev/null +++ b/QSB/Tools/TranslatorTool/TranslatorCreator.cs @@ -0,0 +1,50 @@ +using QSB.Utility; +using UnityEngine; + +namespace QSB.Tools.TranslatorTool +{ + static class TranslatorCreator + { + private static readonly Vector3 TranslatorScale = new Vector3(0.75f, 0.75f, 0.75f); + + internal static void CreateTranslator(Transform cameraBody) + { + var original = GameObject.Find("NomaiTranslatorProp"); + + var translatorRoot = original.InstantiateInactive(); + translatorRoot.name = "REMOTE_NomaiTranslatorProp"; + + var group = translatorRoot.transform.Find("TranslatorGroup"); + var model = group.Find("Props_HEA_Translator"); + + Object.Destroy(translatorRoot.GetComponent()); + Object.Destroy(group.Find("Canvas").gameObject); + Object.Destroy(group.Find("Lighting").gameObject); + Object.Destroy(group.Find("TranslatorBeams").gameObject); + Object.Destroy(model.Find("Props_HEA_Translator_Pivot_RotatingPart") + .Find("Props_HEA_Translator_RotatingPart") + .Find("Props_HEA_Translator_RotatingPart_Prepass").gameObject); + Object.Destroy(model.Find("Props_HEA_Translator_Prepass").gameObject); + + var oldTranslator = translatorRoot.GetComponent(); + var tool = translatorRoot.AddComponent(); + tool.MoveSpring = oldTranslator._moveSpring; + tool.StowTransform = PlayerToolsManager.StowTransform; + tool.HoldTransform = PlayerToolsManager.HoldTransform; + tool.ArrivalDegrees = 5f; + tool.Type = ToolType.Translator; + tool.ToolGameObject = group.gameObject; + Object.Destroy(oldTranslator); + + PlayerToolsManager.GetRenderer(translatorRoot, "Props_HEA_Translator_Geo").material = PlayerToolsManager.Props_HEA_PlayerTool_mat; + PlayerToolsManager.GetRenderer(translatorRoot, "Props_HEA_Translator_RotatingPart").material = PlayerToolsManager.Props_HEA_PlayerTool_mat; + PlayerToolsManager.GetRenderer(translatorRoot, "Props_HEA_Translator_Button_L").material = PlayerToolsManager.Props_HEA_Lightbulb_mat; + PlayerToolsManager.GetRenderer(translatorRoot, "Props_HEA_Translator_Button_R").material = PlayerToolsManager.Props_HEA_Lightbulb_mat; + + translatorRoot.transform.parent = cameraBody; + translatorRoot.transform.localPosition = Vector3.zero; + translatorRoot.transform.localScale = TranslatorScale; + QSBCore.UnityEvents.FireOnNextUpdate(() => translatorRoot.SetActive(true)); + } + } +} From 0dd78feb27fca8d50282bd4afa41f97cf3792727 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 9 Nov 2021 19:39:56 +0000 Subject: [PATCH 06/13] cleanup --- QSB/Animation/NPC/Patches/SolanumPatches.cs | 3 --- QSB/EchoesOfTheEye/AirlockSync/AirlockManager.cs | 7 ++----- .../AirlockSync/WorldObjects/QSBGhostAirlock.cs | 6 +----- .../LightSensorSync/LightSensorManager.cs | 7 ++----- .../Patches/LightSensorPatches.cs | 6 +----- .../WorldObjects/QSBSingleLightSensor.cs | 2 +- QSB/ItemSync/Events/SocketItemEvent.cs | 1 - QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs | 3 +-- .../WorldObjects/Items/QSBSimpleLanternItem.cs | 2 +- .../WorldObjects/Items/QSBSlideReelItem.cs | 2 +- .../Sockets/QSBSlideProjectorSocket.cs | 7 +------ .../WorldObjects/Sockets/QSBSlideReelSocket.cs | 7 +------ QSB/Patches/QSBPatchManager.cs | 2 +- QSB/Player/PlayerInfo.cs | 1 - QSB/Player/QSBPlayerManager.cs | 1 - QSB/QSBCore.cs | 2 +- QSB/QuantumSync/QuantumManager.cs | 1 - .../Events/SatelliteProjectorEvent.cs | 2 +- .../Events/SatelliteProjectorSnapshotEvent.cs | 16 +++------------- .../Patches/SatelliteProjectorPatches.cs | 2 +- QSB/SatelliteSync/SatelliteProjectorManager.cs | 10 +++------- QSB/Tools/FlashlightTool/FlashlightCreator.cs | 2 +- QSB/Tools/FlashlightTool/QSBFlashlight.cs | 3 +-- QSB/Tools/PlayerToolsManager.cs | 5 +---- .../ProbeLauncherTool/ProbeLauncherCreator.cs | 2 +- QSB/Tools/ProbeTool/ProbeCreator.cs | 7 ++----- .../ProbeTool/TransformSync/PlayerProbeSync.cs | 2 -- QSB/Tools/SignalscopeTool/SignalscopeCreator.cs | 7 ++----- QSB/Tools/TranslatorTool/TranslatorCreator.cs | 2 +- QSB/WorldSync/QSBWorldSync.cs | 2 +- 30 files changed, 32 insertions(+), 90 deletions(-) diff --git a/QSB/Animation/NPC/Patches/SolanumPatches.cs b/QSB/Animation/NPC/Patches/SolanumPatches.cs index b35a968b..4f243906 100644 --- a/QSB/Animation/NPC/Patches/SolanumPatches.cs +++ b/QSB/Animation/NPC/Patches/SolanumPatches.cs @@ -5,10 +5,7 @@ using QSB.Patches; using QSB.Player; using QSB.Utility; using QSB.WorldSync; -using System; -using System.Collections.Generic; using System.Linq; -using System.Text; using UnityEngine; namespace QSB.Animation.NPC.Patches diff --git a/QSB/EchoesOfTheEye/AirlockSync/AirlockManager.cs b/QSB/EchoesOfTheEye/AirlockSync/AirlockManager.cs index 08fc7f50..a2fa5f5e 100644 --- a/QSB/EchoesOfTheEye/AirlockSync/AirlockManager.cs +++ b/QSB/EchoesOfTheEye/AirlockSync/AirlockManager.cs @@ -3,11 +3,8 @@ using QSB.WorldSync; namespace QSB.EchoesOfTheEye.AirlockSync { - class AirlockManager : WorldObjectManager + internal class AirlockManager : WorldObjectManager { - protected override void RebuildWorldObjects(OWScene scene) - { - QSBWorldSync.Init(); - } + protected override void RebuildWorldObjects(OWScene scene) => QSBWorldSync.Init(); } } diff --git a/QSB/EchoesOfTheEye/AirlockSync/WorldObjects/QSBGhostAirlock.cs b/QSB/EchoesOfTheEye/AirlockSync/WorldObjects/QSBGhostAirlock.cs index 270168ed..67b73576 100644 --- a/QSB/EchoesOfTheEye/AirlockSync/WorldObjects/QSBGhostAirlock.cs +++ b/QSB/EchoesOfTheEye/AirlockSync/WorldObjects/QSBGhostAirlock.cs @@ -1,12 +1,8 @@ using QSB.WorldSync; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; namespace QSB.EchoesOfTheEye.AirlockSync.WorldObjects { - class QSBGhostAirlock : WorldObject + internal class QSBGhostAirlock : WorldObject { public override void Init(GhostAirlock airlock, int id) { diff --git a/QSB/EchoesOfTheEye/LightSensorSync/LightSensorManager.cs b/QSB/EchoesOfTheEye/LightSensorSync/LightSensorManager.cs index b8fb2222..0ffd4f8a 100644 --- a/QSB/EchoesOfTheEye/LightSensorSync/LightSensorManager.cs +++ b/QSB/EchoesOfTheEye/LightSensorSync/LightSensorManager.cs @@ -3,11 +3,8 @@ using QSB.WorldSync; namespace QSB.EchoesOfTheEye.LightSensorSync { - class LightSensorManager : WorldObjectManager + internal class LightSensorManager : WorldObjectManager { - protected override void RebuildWorldObjects(OWScene scene) - { - QSBWorldSync.Init(); - } + protected override void RebuildWorldObjects(OWScene scene) => QSBWorldSync.Init(); } } diff --git a/QSB/EchoesOfTheEye/LightSensorSync/Patches/LightSensorPatches.cs b/QSB/EchoesOfTheEye/LightSensorSync/Patches/LightSensorPatches.cs index 623d0d2a..cd6ed8db 100644 --- a/QSB/EchoesOfTheEye/LightSensorSync/Patches/LightSensorPatches.cs +++ b/QSB/EchoesOfTheEye/LightSensorSync/Patches/LightSensorPatches.cs @@ -1,18 +1,14 @@ using HarmonyLib; using QSB.Patches; using QSB.Player; -using QSB.Tools; using QSB.Tools.FlashlightTool; -using System; -using System.Collections.Generic; using System.Linq; -using System.Text; using UnityEngine; namespace QSB.EchoesOfTheEye.LightSensorSync.Patches { [HarmonyPatch] - class LightSensorPatches : QSBPatch + internal class LightSensorPatches : QSBPatch { public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; diff --git a/QSB/EchoesOfTheEye/LightSensorSync/WorldObjects/QSBSingleLightSensor.cs b/QSB/EchoesOfTheEye/LightSensorSync/WorldObjects/QSBSingleLightSensor.cs index 4ec58964..089e67d3 100644 --- a/QSB/EchoesOfTheEye/LightSensorSync/WorldObjects/QSBSingleLightSensor.cs +++ b/QSB/EchoesOfTheEye/LightSensorSync/WorldObjects/QSBSingleLightSensor.cs @@ -2,7 +2,7 @@ namespace QSB.EchoesOfTheEye.LightSensorSync.WorldObjects { - class QSBSingleLightSensor : WorldObject + internal class QSBSingleLightSensor : WorldObject { public override void Init(SingleLightSensor sensor, int id) { diff --git a/QSB/ItemSync/Events/SocketItemEvent.cs b/QSB/ItemSync/Events/SocketItemEvent.cs index 75e31ffb..a36e139a 100644 --- a/QSB/ItemSync/Events/SocketItemEvent.cs +++ b/QSB/ItemSync/Events/SocketItemEvent.cs @@ -1,5 +1,4 @@ using QSB.Events; -using QSB.ItemSync.WorldObjects; using QSB.ItemSync.WorldObjects.Items; using QSB.ItemSync.WorldObjects.Sockets; using QSB.Player; diff --git a/QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs b/QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs index 30416680..9de0c8d8 100644 --- a/QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs +++ b/QSB/ItemSync/WorldObjects/Items/QSBOWItem.cs @@ -1,5 +1,4 @@ -using OWML.Utils; -using QSB.ItemSync.WorldObjects.Sockets; +using QSB.ItemSync.WorldObjects.Sockets; using QSB.Player; using QSB.SectorSync.WorldObjects; using QSB.Utility; diff --git a/QSB/ItemSync/WorldObjects/Items/QSBSimpleLanternItem.cs b/QSB/ItemSync/WorldObjects/Items/QSBSimpleLanternItem.cs index e226c753..12bf9c7b 100644 --- a/QSB/ItemSync/WorldObjects/Items/QSBSimpleLanternItem.cs +++ b/QSB/ItemSync/WorldObjects/Items/QSBSimpleLanternItem.cs @@ -1,6 +1,6 @@ namespace QSB.ItemSync.WorldObjects.Items { - class QSBSimpleLanternItem : QSBOWItem + internal class QSBSimpleLanternItem : QSBOWItem { public override void Init(SimpleLanternItem attachedObject, int id) { diff --git a/QSB/ItemSync/WorldObjects/Items/QSBSlideReelItem.cs b/QSB/ItemSync/WorldObjects/Items/QSBSlideReelItem.cs index dd49c7e0..41735ea0 100644 --- a/QSB/ItemSync/WorldObjects/Items/QSBSlideReelItem.cs +++ b/QSB/ItemSync/WorldObjects/Items/QSBSlideReelItem.cs @@ -1,6 +1,6 @@ namespace QSB.ItemSync.WorldObjects.Items { - class QSBSlideReelItem : QSBOWItem + internal class QSBSlideReelItem : QSBOWItem { public override void Init(SlideReelItem attachedObject, int id) { diff --git a/QSB/ItemSync/WorldObjects/Sockets/QSBSlideProjectorSocket.cs b/QSB/ItemSync/WorldObjects/Sockets/QSBSlideProjectorSocket.cs index 39f7c977..6d353c95 100644 --- a/QSB/ItemSync/WorldObjects/Sockets/QSBSlideProjectorSocket.cs +++ b/QSB/ItemSync/WorldObjects/Sockets/QSBSlideProjectorSocket.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace QSB.ItemSync.WorldObjects.Sockets +namespace QSB.ItemSync.WorldObjects.Sockets { internal class QSBSlideProjectorSocket : QSBOWItemDoubleSocket { diff --git a/QSB/ItemSync/WorldObjects/Sockets/QSBSlideReelSocket.cs b/QSB/ItemSync/WorldObjects/Sockets/QSBSlideReelSocket.cs index a7e8ec0e..72ed11e3 100644 --- a/QSB/ItemSync/WorldObjects/Sockets/QSBSlideReelSocket.cs +++ b/QSB/ItemSync/WorldObjects/Sockets/QSBSlideReelSocket.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace QSB.ItemSync.WorldObjects.Sockets +namespace QSB.ItemSync.WorldObjects.Sockets { internal class QSBSlideReelSocket : QSBOWItemSocket { diff --git a/QSB/Patches/QSBPatchManager.cs b/QSB/Patches/QSBPatchManager.cs index 4ccb787b..676da1f5 100644 --- a/QSB/Patches/QSBPatchManager.cs +++ b/QSB/Patches/QSBPatchManager.cs @@ -5,12 +5,12 @@ using QSB.Animation.Patches; using QSB.CampfireSync.Patches; using QSB.ConversationSync.Patches; using QSB.DeathSync.Patches; +using QSB.EchoesOfTheEye.LightSensorSync.Patches; using QSB.ElevatorSync.Patches; using QSB.FrequencySync.Patches; using QSB.GeyserSync.Patches; using QSB.Inputs.Patches; using QSB.ItemSync.Patches; -using QSB.EchoesOfTheEye.LightSensorSync.Patches; using QSB.LogSync.Patches; using QSB.OrbSync.Patches; using QSB.Player.Patches; diff --git a/QSB/Player/PlayerInfo.cs b/QSB/Player/PlayerInfo.cs index 70f75968..584cd0de 100644 --- a/QSB/Player/PlayerInfo.cs +++ b/QSB/Player/PlayerInfo.cs @@ -3,7 +3,6 @@ using QSB.Animation.Player; using QSB.Animation.Player.Thrusters; using QSB.CampfireSync.WorldObjects; using QSB.ClientServerStateSync; -using QSB.ItemSync.WorldObjects; using QSB.ItemSync.WorldObjects.Items; using QSB.Player.TransformSync; using QSB.QuantumSync; diff --git a/QSB/Player/QSBPlayerManager.cs b/QSB/Player/QSBPlayerManager.cs index f80b8be8..fc783ba0 100644 --- a/QSB/Player/QSBPlayerManager.cs +++ b/QSB/Player/QSBPlayerManager.cs @@ -2,7 +2,6 @@ using QSB.ItemSync.WorldObjects.Items; using QSB.Player.Events; using QSB.Player.TransformSync; -using QSB.Tools; using QSB.Tools.FlashlightTool; using QSB.Utility; using System; diff --git a/QSB/QSBCore.cs b/QSB/QSBCore.cs index 460540ec..d7dac496 100644 --- a/QSB/QSBCore.cs +++ b/QSB/QSBCore.cs @@ -6,11 +6,11 @@ using QSB.CampfireSync; using QSB.ConversationSync; using QSB.DeathSync; using QSB.EchoesOfTheEye.AirlockSync; +using QSB.EchoesOfTheEye.LightSensorSync; using QSB.ElevatorSync; using QSB.GeyserSync; using QSB.Inputs; using QSB.ItemSync; -using QSB.EchoesOfTheEye.LightSensorSync; using QSB.Menus; using QSB.OrbSync; using QSB.Patches; diff --git a/QSB/QuantumSync/QuantumManager.cs b/QSB/QuantumSync/QuantumManager.cs index d2584636..b8f5fcf4 100644 --- a/QSB/QuantumSync/QuantumManager.cs +++ b/QSB/QuantumSync/QuantumManager.cs @@ -2,7 +2,6 @@ using QSB.Events; using QSB.Player; using QSB.QuantumSync.WorldObjects; -using QSB.Syncs; using QSB.Utility; using QSB.WorldSync; using System; diff --git a/QSB/SatelliteSync/Events/SatelliteProjectorEvent.cs b/QSB/SatelliteSync/Events/SatelliteProjectorEvent.cs index b2d8356e..685912a2 100644 --- a/QSB/SatelliteSync/Events/SatelliteProjectorEvent.cs +++ b/QSB/SatelliteSync/Events/SatelliteProjectorEvent.cs @@ -3,7 +3,7 @@ using QSB.Messaging; namespace QSB.SatelliteSync.Events { - class SatelliteProjectorEvent : QSBEvent + internal class SatelliteProjectorEvent : QSBEvent { public override EventType Type => EventType.SatelliteProjector; diff --git a/QSB/SatelliteSync/Events/SatelliteProjectorSnapshotEvent.cs b/QSB/SatelliteSync/Events/SatelliteProjectorSnapshotEvent.cs index 5dbba575..144754a4 100644 --- a/QSB/SatelliteSync/Events/SatelliteProjectorSnapshotEvent.cs +++ b/QSB/SatelliteSync/Events/SatelliteProjectorSnapshotEvent.cs @@ -1,25 +1,15 @@ using QSB.Events; using QSB.Messaging; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; namespace QSB.SatelliteSync.Events { - class SatelliteProjectorSnapshotEvent : QSBEvent + internal class SatelliteProjectorSnapshotEvent : QSBEvent { public override EventType Type => EventType.SatelliteProjectorSnapshot; - public override void SetupListener() - { - GlobalMessenger.AddListener(EventNames.QSBSatelliteSnapshot, (bool forward) => Handler(forward)); - } + public override void SetupListener() => GlobalMessenger.AddListener(EventNames.QSBSatelliteSnapshot, (bool forward) => Handler(forward)); - public override void CloseListener() - { - GlobalMessenger.RemoveListener(EventNames.QSBSatelliteSnapshot, (bool forward) => Handler(forward)); - } + public override void CloseListener() => GlobalMessenger.RemoveListener(EventNames.QSBSatelliteSnapshot, (bool forward) => Handler(forward)); private void Handler(bool forward) => SendEvent(CreateMessage(forward)); diff --git a/QSB/SatelliteSync/Patches/SatelliteProjectorPatches.cs b/QSB/SatelliteSync/Patches/SatelliteProjectorPatches.cs index 5f8c9f14..68bd873e 100644 --- a/QSB/SatelliteSync/Patches/SatelliteProjectorPatches.cs +++ b/QSB/SatelliteSync/Patches/SatelliteProjectorPatches.cs @@ -6,7 +6,7 @@ using UnityEngine; namespace QSB.SatelliteSync.Patches { [HarmonyPatch] - class SatelliteProjectorPatches : QSBPatch + internal class SatelliteProjectorPatches : QSBPatch { public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect; diff --git a/QSB/SatelliteSync/SatelliteProjectorManager.cs b/QSB/SatelliteSync/SatelliteProjectorManager.cs index 2d49cf05..dd90d4ad 100644 --- a/QSB/SatelliteSync/SatelliteProjectorManager.cs +++ b/QSB/SatelliteSync/SatelliteProjectorManager.cs @@ -1,10 +1,9 @@ -using QSB.Utility; -using System.Linq; +using System.Linq; using UnityEngine; namespace QSB.SatelliteSync { - class SatelliteProjectorManager : MonoBehaviour + internal class SatelliteProjectorManager : MonoBehaviour { public static SatelliteProjectorManager Instance { get; private set; } @@ -16,10 +15,7 @@ namespace QSB.SatelliteSync QSBSceneManager.OnUniverseSceneLoaded += OnSceneLoaded; } - public void OnDestroy() - { - QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded; - } + public void OnDestroy() => QSBSceneManager.OnUniverseSceneLoaded -= OnSceneLoaded; private void OnSceneLoaded(OWScene oldScene, OWScene newScene) { diff --git a/QSB/Tools/FlashlightTool/FlashlightCreator.cs b/QSB/Tools/FlashlightTool/FlashlightCreator.cs index a262c6ab..05fa28ea 100644 --- a/QSB/Tools/FlashlightTool/FlashlightCreator.cs +++ b/QSB/Tools/FlashlightTool/FlashlightCreator.cs @@ -2,7 +2,7 @@ namespace QSB.Tools.FlashlightTool { - static class FlashlightCreator + internal static class FlashlightCreator { private static readonly Vector3 FlashlightOffset = new Vector3(0.7196316f, -0.2697681f, 0.3769455f); diff --git a/QSB/Tools/FlashlightTool/QSBFlashlight.cs b/QSB/Tools/FlashlightTool/QSBFlashlight.cs index cf36d2ac..b3d73b59 100644 --- a/QSB/Tools/FlashlightTool/QSBFlashlight.cs +++ b/QSB/Tools/FlashlightTool/QSBFlashlight.cs @@ -1,5 +1,4 @@ -using OWML.Utils; -using UnityEngine; +using UnityEngine; namespace QSB.Tools.FlashlightTool { diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index aa37933f..eab24ce1 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -1,12 +1,9 @@ -using OWML.Utils; -using QSB.Player; -using QSB.Tools.FlashlightTool; +using QSB.Tools.FlashlightTool; using QSB.Tools.ProbeLauncherTool; using QSB.Tools.SignalscopeTool; using QSB.Tools.TranslatorTool; using System.Linq; using UnityEngine; -using UnityEngine.PostProcessing; namespace QSB.Tools { diff --git a/QSB/Tools/ProbeLauncherTool/ProbeLauncherCreator.cs b/QSB/Tools/ProbeLauncherTool/ProbeLauncherCreator.cs index 9b908bcb..5f9e97db 100644 --- a/QSB/Tools/ProbeLauncherTool/ProbeLauncherCreator.cs +++ b/QSB/Tools/ProbeLauncherTool/ProbeLauncherCreator.cs @@ -2,7 +2,7 @@ namespace QSB.Tools.ProbeLauncherTool { - static class ProbeLauncherCreator + internal static class ProbeLauncherCreator { private static readonly Vector3 ProbeLauncherOffset = new Vector3(0.5745087f, -0.26f, 0.4453125f); diff --git a/QSB/Tools/ProbeTool/ProbeCreator.cs b/QSB/Tools/ProbeTool/ProbeCreator.cs index 5c6e8cc1..5ea7b9c9 100644 --- a/QSB/Tools/ProbeTool/ProbeCreator.cs +++ b/QSB/Tools/ProbeTool/ProbeCreator.cs @@ -1,13 +1,10 @@ using QSB.Player; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine.PostProcessing; using UnityEngine; +using UnityEngine.PostProcessing; namespace QSB.Tools.ProbeTool { - static class ProbeCreator + internal static class ProbeCreator { public static void CreateProbe(Transform newProbe, PlayerInfo player) { diff --git a/QSB/Tools/ProbeTool/TransformSync/PlayerProbeSync.cs b/QSB/Tools/ProbeTool/TransformSync/PlayerProbeSync.cs index 85cea596..58b7ba37 100644 --- a/QSB/Tools/ProbeTool/TransformSync/PlayerProbeSync.cs +++ b/QSB/Tools/ProbeTool/TransformSync/PlayerProbeSync.cs @@ -2,9 +2,7 @@ using OWML.Utils; using QSB.SectorSync; using QSB.Syncs.Sectored.Transforms; -using QSB.Tools; using QSB.Tools.ProbeLauncherTool; -using QSB.Tools.ProbeTool; using QSB.Utility; using QSB.WorldSync; using UnityEngine; diff --git a/QSB/Tools/SignalscopeTool/SignalscopeCreator.cs b/QSB/Tools/SignalscopeTool/SignalscopeCreator.cs index d4c9f864..a7771849 100644 --- a/QSB/Tools/SignalscopeTool/SignalscopeCreator.cs +++ b/QSB/Tools/SignalscopeTool/SignalscopeCreator.cs @@ -1,11 +1,8 @@ -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEngine; +using UnityEngine; namespace QSB.Tools.SignalscopeTool { - static class SignalscopeCreator + internal static class SignalscopeCreator { private static readonly Vector3 SignalscopeScale = new Vector3(1.5f, 1.5f, 1.5f); diff --git a/QSB/Tools/TranslatorTool/TranslatorCreator.cs b/QSB/Tools/TranslatorTool/TranslatorCreator.cs index 72e02c59..d46586cb 100644 --- a/QSB/Tools/TranslatorTool/TranslatorCreator.cs +++ b/QSB/Tools/TranslatorTool/TranslatorCreator.cs @@ -3,7 +3,7 @@ using UnityEngine; namespace QSB.Tools.TranslatorTool { - static class TranslatorCreator + internal static class TranslatorCreator { private static readonly Vector3 TranslatorScale = new Vector3(0.75f, 0.75f, 0.75f); diff --git a/QSB/WorldSync/QSBWorldSync.cs b/QSB/WorldSync/QSBWorldSync.cs index 982a4bb6..f7fbf92d 100644 --- a/QSB/WorldSync/QSBWorldSync.cs +++ b/QSB/WorldSync/QSBWorldSync.cs @@ -66,7 +66,7 @@ namespace QSB.WorldSync return default; } - return (IWorldObject)returnObject; + return returnObject; } public static TWorldObject GetWorldFromUnity(MonoBehaviour unityObject) From eadb232f7e102878397bdbb8a2fe6e8c1baf52d3 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Tue, 9 Nov 2021 22:37:53 +0000 Subject: [PATCH 07/13] fixed animation triggers --- QSB/Animation/Player/Events/AnimationTriggerEvent.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QSB/Animation/Player/Events/AnimationTriggerEvent.cs b/QSB/Animation/Player/Events/AnimationTriggerEvent.cs index 4a99cd32..c82942a0 100644 --- a/QSB/Animation/Player/Events/AnimationTriggerEvent.cs +++ b/QSB/Animation/Player/Events/AnimationTriggerEvent.cs @@ -22,7 +22,7 @@ namespace QSB.Animation.Player.Events public override void OnReceiveRemote(bool server, AnimationTriggerMessage message) { var animationSync = QSBPlayerManager.GetSyncObject(message.AttachedNetId); - if (!QSBCore.WorldObjectsReady || animationSync != null) + if (!QSBCore.WorldObjectsReady || animationSync == null) { return; } From 0d3fd1558542aeddac9dfba83eb08b958d718c5d Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 10 Nov 2021 09:12:05 +0000 Subject: [PATCH 08/13] add tools and stuffz --- QSB/QSB.csproj | 2 + QSB/Syncs/SyncBase.cs | 2 +- QSB/Tools/PlayerToolsManager.cs | 2 + QSB/Tools/QSBTool.cs | 4 +- .../TranslatorTool/QSBNomaiTranslator.cs | 172 ++++++++++++++++++ .../TranslatorTool/QSBNomaiTranslatorProp.cs | 149 +++++++++++++++ QSB/Tools/TranslatorTool/TranslatorCreator.cs | 50 ++--- 7 files changed, 356 insertions(+), 25 deletions(-) create mode 100644 QSB/Tools/TranslatorTool/QSBNomaiTranslator.cs create mode 100644 QSB/Tools/TranslatorTool/QSBNomaiTranslatorProp.cs diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index b2f1c2ce..23c6b54c 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -252,6 +252,8 @@ + + diff --git a/QSB/Syncs/SyncBase.cs b/QSB/Syncs/SyncBase.cs index 988231d3..9628d248 100644 --- a/QSB/Syncs/SyncBase.cs +++ b/QSB/Syncs/SyncBase.cs @@ -228,7 +228,7 @@ namespace QSB.Syncs ReparentAttachedObject(ReferenceTransform); } - UpdateTransform(); + oh rUpdateTransform(); base.Update(); } diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index eab24ce1..eb7fc62b 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -15,6 +15,7 @@ namespace QSB.Tools public static Material Props_HEA_PlayerTool_mat; public static Material Props_HEA_Lightbulb_mat; public static Material Props_HEA_Lightbulb_OFF_mat; + public static Material Structure_HEA_PlayerShip_Screens_mat; public static void Init(Transform playerCamera) { @@ -22,6 +23,7 @@ namespace QSB.Tools Props_HEA_PlayerTool_mat = GameObject.Find("Props_HEA_ProbeLauncher_ProbeCamera/ProbeLauncherChassis").GetComponent().materials[0]; Props_HEA_Lightbulb_OFF_mat = GameObject.Find("Props_HEA_Probe_Prelaunch").GetComponent().materials[1]; + if (QSBSceneManager.CurrentScene == OWScene.SolarSystem) { Props_HEA_Lightbulb_mat = GameObject.Find("Props_HEA_Lantern (10)/Lantern_Lamp").GetComponent().materials[0]; diff --git a/QSB/Tools/QSBTool.cs b/QSB/Tools/QSBTool.cs index 08d15018..1a001d99 100644 --- a/QSB/Tools/QSBTool.cs +++ b/QSB/Tools/QSBTool.cs @@ -31,8 +31,8 @@ namespace QSB.Tools set => _arrivalDegrees = value; } - public void OnEnable() => ToolGameObject?.SetActive(true); - public void OnDisable() => ToolGameObject?.SetActive(false); + public virtual void OnEnable() => ToolGameObject?.SetActive(true); + public virtual void OnDisable() => ToolGameObject?.SetActive(false); public void ChangeEquipState(bool equipState) { diff --git a/QSB/Tools/TranslatorTool/QSBNomaiTranslator.cs b/QSB/Tools/TranslatorTool/QSBNomaiTranslator.cs new file mode 100644 index 00000000..dfe58ff5 --- /dev/null +++ b/QSB/Tools/TranslatorTool/QSBNomaiTranslator.cs @@ -0,0 +1,172 @@ +using QSB.Utility; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; + +namespace QSB.Tools.TranslatorTool +{ + class QSBNomaiTranslator : QSBTool + { + public static float distToClosestTextCenter = 1f; + + public const float MAX_INTERACT_RANGE = 25f; + + public Transform RaycastTransform; + private Collider _lastHitCollider; + private QSBNomaiTranslatorProp _translatorProp; + private NomaiText _currentNomaiText; + private NomaiTextLine _lastHighlightedTextLine; + private bool _lastLineWasTranslated; + private bool _lastLineLocked; + private float _lastLineDist; + + private void Awake() + { + DebugLog.DebugWrite($"Awake."); + _lastHitCollider = null; + _translatorProp = this.GetRequiredComponentInChildren(); + _currentNomaiText = null; + } + + public override void OnDisable() + { + _translatorProp.OnFinishUnequipAnimation(); + } + + public override void EquipTool() + { + DebugLog.DebugWrite($"Equip."); + base.EquipTool(); + _translatorProp.OnEquipTool(); + } + + public override void UnequipTool() + { + DebugLog.DebugWrite($"Unequip."); + base.UnequipTool(); + _translatorProp.OnUnequipTool(); + } + + public override void Update() + { + base.Update(); + if (!_isEquipped) + { + return; + } + + distToClosestTextCenter = 1f; + var tooCloseToTarget = false; + var num = float.MaxValue; + if (Physics.Raycast(RaycastTransform.position, RaycastTransform.forward, out var raycastHit, 25f, OWLayerMask.blockableInteractMask)) + { + _lastHitCollider = raycastHit.collider; + _currentNomaiText = _lastHitCollider.GetComponent(); + if (_currentNomaiText != null) + { + DebugLog.DebugWrite($"Found Nomai text."); + } + + if (_currentNomaiText != null && !_currentNomaiText.CheckAllowFocus(raycastHit.distance, RaycastTransform.forward)) + { + DebugLog.DebugWrite($"This text doesn't allow focus."); + _currentNomaiText = null; + } + num = raycastHit.distance; + } + else + { + _lastHitCollider = null; + _currentNomaiText = null; + } + + if (_currentNomaiText != null) + { + tooCloseToTarget = (num < _currentNomaiText.GetMinimumReadableDistance()); + + if (_currentNomaiText is NomaiWallText) + { + DebugLog.DebugWrite($"Wall text."); + var nomaiTextLine = (_currentNomaiText as NomaiWallText).GetClosestTextLineByCenter(raycastHit.point); + if (_lastLineLocked) + { + var distToCenter = _lastHighlightedTextLine.GetDistToCenter(raycastHit.point); + if (distToCenter > _lastLineDist + 0.1f) + { + _lastHighlightedTextLine = nomaiTextLine; + _lastLineWasTranslated = (nomaiTextLine != null && nomaiTextLine.IsTranslated()); + _lastLineLocked = false; + } + else + { + nomaiTextLine = _lastHighlightedTextLine; + } + + if (distToCenter < _lastLineDist) + { + _lastLineDist = distToCenter; + } + } + else if (_lastHighlightedTextLine != null && _lastHighlightedTextLine.IsTranslated() && !_lastLineWasTranslated) + { + _lastLineWasTranslated = true; + _lastLineDist = _lastHighlightedTextLine.GetDistToCenter(raycastHit.point); + _lastLineLocked = true; + } + else + { + _lastHighlightedTextLine = nomaiTextLine; + _lastLineWasTranslated = (nomaiTextLine != null && nomaiTextLine.IsTranslated()); + } + + if (nomaiTextLine && !nomaiTextLine.IsHidden() && nomaiTextLine.IsActive()) + { + distToClosestTextCenter = Vector3.Distance(raycastHit.point, nomaiTextLine.GetWorldCenter()); + _translatorProp.SetNomaiTextLine(nomaiTextLine); + } + else + { + _translatorProp.ClearNomaiTextLine(); + _lastHighlightedTextLine = null; + _lastLineWasTranslated = false; + _lastLineLocked = false; + } + } + else if (_currentNomaiText is NomaiComputer) + { + DebugLog.DebugWrite($"Nomai Computer"); + var closestRing = (_currentNomaiText as NomaiComputer).GetClosestRing(raycastHit.point, out var num2); + if (closestRing) + { + distToClosestTextCenter = Mathf.Min(num2 * 2f, 1f); + _translatorProp.SetNomaiComputerRing(closestRing); + } + } + else if (_currentNomaiText is NomaiVesselComputer) + { + var closestRing2 = (_currentNomaiText as NomaiVesselComputer).GetClosestRing(raycastHit.point, out var num3); + if (closestRing2) + { + distToClosestTextCenter = Mathf.Min(num3 * 2f, 1f); + _translatorProp.SetNomaiVesselComputerRing(closestRing2); + } + } + else if (_currentNomaiText is GhostWallText) + { + var ghostWallText = _currentNomaiText as GhostWallText; + _translatorProp.SetNomaiTextLine(ghostWallText.GetTextLine()); + } + } + else + { + _translatorProp.ClearNomaiTextLine(); + _translatorProp.ClearNomaiComputerRing(); + _translatorProp.ClearNomaiVesselComputerRing(); + } + + _translatorProp.SetTooCloseToTarget(tooCloseToTarget); + } + } +} diff --git a/QSB/Tools/TranslatorTool/QSBNomaiTranslatorProp.cs b/QSB/Tools/TranslatorTool/QSBNomaiTranslatorProp.cs new file mode 100644 index 00000000..dee0c1f0 --- /dev/null +++ b/QSB/Tools/TranslatorTool/QSBNomaiTranslatorProp.cs @@ -0,0 +1,149 @@ +using QSB.Utility; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; +using UnityEngine.UI; + +namespace QSB.Tools.TranslatorTool +{ + class QSBNomaiTranslatorProp : MonoBehaviour + { + public GameObject TranslatorProp; + + private TranslatorTargetBeam _targetBeam; + private TranslatorScanBeam[] _scanBeams; + private bool _isTranslating; + + private void Awake() + { + DebugLog.DebugWrite($"Awake."); + _targetBeam = transform.GetComponentInChildren(); + _scanBeams = transform.GetComponentsInChildren(); + for (var i = 0; i < _scanBeams.Length; i++) + { + _scanBeams[i].enabled = false; + } + TranslatorProp.SetActive(false); + } + + private void Start() + { + DebugLog.DebugWrite($"Start."); + enabled = false; + } + + public void OnEquipTool() + { + DebugLog.DebugWrite($"OnEquipTool."); + enabled = true; + if (_targetBeam) + { + _targetBeam.Activate(); + } + for (var i = 0; i < _scanBeams.Length; i++) + { + _scanBeams[i].enabled = true; + } + TranslatorProp.SetActive(true); + } + + public void OnUnequipTool() + { + DebugLog.DebugWrite($"On unequip tool."); + enabled = false; + StopTranslating(); + } + + public void OnFinishUnequipAnimation() + { + DebugLog.DebugWrite($"On finish unequip animation."); + + if (_targetBeam) + { + _targetBeam.Deactivate(); + } + + for (var i = 0; i < _scanBeams.Length; i++) + { + _scanBeams[i].enabled = false; + } + TranslatorProp.SetActive(false); + } + + public void SetTooCloseToTarget(bool value) + { + for (var i = 0; i < _scanBeams.Length; i++) + { + _scanBeams[i].SetTooCloseToTarget(value); + } + } + + public void SetNomaiTextLine(NomaiTextLine line) + { + DebugLog.DebugWrite($"Set Nomai Text Line."); + + for (var i = 0; i < _scanBeams.Length; i++) + { + _scanBeams[i].SetNomaiTextLine(line); + _scanBeams[i].SetNomaiComputerRing(null); + _scanBeams[i].SetNomaiVesselComputerRing(null); + } + } + + public void ClearNomaiTextLine() + { + for (var i = 0; i < _scanBeams.Length; i++) + { + _scanBeams[i].SetNomaiTextLine(null); + } + } + + public void SetNomaiComputerRing(NomaiComputerRing ring) + { + DebugLog.DebugWrite($"Set nomai computer ring."); + for (var i = 0; i < _scanBeams.Length; i++) + { + _scanBeams[i].SetNomaiTextLine(null); + _scanBeams[i].SetNomaiComputerRing(ring); + _scanBeams[i].SetNomaiVesselComputerRing(null); + } + } + + public void ClearNomaiComputerRing() + { + for (var i = 0; i < _scanBeams.Length; i++) + { + _scanBeams[i].SetNomaiComputerRing(null); + } + } + + public void SetNomaiVesselComputerRing(NomaiVesselComputerRing ring) + { + for (var i = 0; i < _scanBeams.Length; i++) + { + _scanBeams[i].SetNomaiTextLine(null); + _scanBeams[i].SetNomaiComputerRing(null); + _scanBeams[i].SetNomaiVesselComputerRing(ring); + } + } + + public void ClearNomaiVesselComputerRing() + { + for (var i = 0; i < _scanBeams.Length; i++) + { + _scanBeams[i].SetNomaiVesselComputerRing(null); + } + } + + private void StopTranslating() + { + DebugLog.DebugWrite($"Stop Translating."); + if (_isTranslating) + { + _isTranslating = false; + } + } + } +} diff --git a/QSB/Tools/TranslatorTool/TranslatorCreator.cs b/QSB/Tools/TranslatorTool/TranslatorCreator.cs index d46586cb..94a27bb1 100644 --- a/QSB/Tools/TranslatorTool/TranslatorCreator.cs +++ b/QSB/Tools/TranslatorTool/TranslatorCreator.cs @@ -9,42 +9,48 @@ namespace QSB.Tools.TranslatorTool internal static void CreateTranslator(Transform cameraBody) { - var original = GameObject.Find("NomaiTranslatorProp"); + var NomaiTranslatorProp = GameObject.Find("NomaiTranslatorProp"); - var translatorRoot = original.InstantiateInactive(); - translatorRoot.name = "REMOTE_NomaiTranslatorProp"; + var REMOTE_NomaiTranslatorProp = NomaiTranslatorProp.InstantiateInactive(); + REMOTE_NomaiTranslatorProp.name = "REMOTE_NomaiTranslatorProp"; - var group = translatorRoot.transform.Find("TranslatorGroup"); - var model = group.Find("Props_HEA_Translator"); + var REMOTE_TranslatorGroup = REMOTE_NomaiTranslatorProp.transform.Find("TranslatorGroup"); + var REMOTE_Props_HEA_Translator = REMOTE_TranslatorGroup.Find("Props_HEA_Translator"); - Object.Destroy(translatorRoot.GetComponent()); - Object.Destroy(group.Find("Canvas").gameObject); - Object.Destroy(group.Find("Lighting").gameObject); - Object.Destroy(group.Find("TranslatorBeams").gameObject); - Object.Destroy(model.Find("Props_HEA_Translator_Pivot_RotatingPart") + var oldProp = REMOTE_NomaiTranslatorProp.GetComponent(); + var newProp = REMOTE_NomaiTranslatorProp.AddComponent(); + newProp.TranslatorProp = REMOTE_TranslatorGroup.gameObject; + + Object.Destroy(REMOTE_NomaiTranslatorProp.GetComponent()); + Object.Destroy(REMOTE_TranslatorGroup.Find("Canvas").gameObject); + //Object.Destroy(REMOTE_TranslatorGroup.Find("Lighting").gameObject); + //Object.Destroy(REMOTE_TranslatorGroup.Find("TranslatorBeams").gameObject); + Object.Destroy(REMOTE_Props_HEA_Translator.Find("Props_HEA_Translator_Pivot_RotatingPart") .Find("Props_HEA_Translator_RotatingPart") .Find("Props_HEA_Translator_RotatingPart_Prepass").gameObject); - Object.Destroy(model.Find("Props_HEA_Translator_Prepass").gameObject); + Object.Destroy(REMOTE_Props_HEA_Translator.Find("Props_HEA_Translator_Prepass").gameObject); - var oldTranslator = translatorRoot.GetComponent(); - var tool = translatorRoot.AddComponent(); + var oldTranslator = REMOTE_NomaiTranslatorProp.GetComponent(); + var tool = REMOTE_NomaiTranslatorProp.AddComponent(); tool.MoveSpring = oldTranslator._moveSpring; tool.StowTransform = PlayerToolsManager.StowTransform; tool.HoldTransform = PlayerToolsManager.HoldTransform; tool.ArrivalDegrees = 5f; tool.Type = ToolType.Translator; - tool.ToolGameObject = group.gameObject; + tool.ToolGameObject = REMOTE_TranslatorGroup.gameObject; + tool.RaycastTransform = cameraBody; Object.Destroy(oldTranslator); - PlayerToolsManager.GetRenderer(translatorRoot, "Props_HEA_Translator_Geo").material = PlayerToolsManager.Props_HEA_PlayerTool_mat; - PlayerToolsManager.GetRenderer(translatorRoot, "Props_HEA_Translator_RotatingPart").material = PlayerToolsManager.Props_HEA_PlayerTool_mat; - PlayerToolsManager.GetRenderer(translatorRoot, "Props_HEA_Translator_Button_L").material = PlayerToolsManager.Props_HEA_Lightbulb_mat; - PlayerToolsManager.GetRenderer(translatorRoot, "Props_HEA_Translator_Button_R").material = PlayerToolsManager.Props_HEA_Lightbulb_mat; + PlayerToolsManager.GetRenderer(REMOTE_NomaiTranslatorProp, "Props_HEA_Translator_Screen").material = PlayerToolsManager.Structure_HEA_PlayerShip_Screens_mat; + PlayerToolsManager.GetRenderer(REMOTE_NomaiTranslatorProp, "Props_HEA_Translator_Geo").material = PlayerToolsManager.Props_HEA_PlayerTool_mat; + PlayerToolsManager.GetRenderer(REMOTE_NomaiTranslatorProp, "Props_HEA_Translator_RotatingPart").material = PlayerToolsManager.Props_HEA_PlayerTool_mat; + PlayerToolsManager.GetRenderer(REMOTE_NomaiTranslatorProp, "Props_HEA_Translator_Button_L").material = PlayerToolsManager.Props_HEA_Lightbulb_mat; + PlayerToolsManager.GetRenderer(REMOTE_NomaiTranslatorProp, "Props_HEA_Translator_Button_R").material = PlayerToolsManager.Props_HEA_Lightbulb_mat; - translatorRoot.transform.parent = cameraBody; - translatorRoot.transform.localPosition = Vector3.zero; - translatorRoot.transform.localScale = TranslatorScale; - QSBCore.UnityEvents.FireOnNextUpdate(() => translatorRoot.SetActive(true)); + REMOTE_NomaiTranslatorProp.transform.parent = cameraBody; + REMOTE_NomaiTranslatorProp.transform.localPosition = Vector3.zero; + REMOTE_NomaiTranslatorProp.transform.localScale = TranslatorScale; + QSBCore.UnityEvents.FireOnNextUpdate(() => REMOTE_NomaiTranslatorProp.SetActive(true)); } } } From 0262e4f9c32a7d1a59f6160b784ad58a5bc8a05f Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Wed, 10 Nov 2021 20:21:54 +0000 Subject: [PATCH 09/13] fix random mistake --- QSB/Syncs/SyncBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/QSB/Syncs/SyncBase.cs b/QSB/Syncs/SyncBase.cs index 9628d248..988231d3 100644 --- a/QSB/Syncs/SyncBase.cs +++ b/QSB/Syncs/SyncBase.cs @@ -228,7 +228,7 @@ namespace QSB.Syncs ReparentAttachedObject(ReferenceTransform); } - oh rUpdateTransform(); + UpdateTransform(); base.Update(); } From 317dd6a22aa6894a472715667c498a255860e77f Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Thu, 11 Nov 2021 19:30:58 +0000 Subject: [PATCH 10/13] add scan beams --- QSB/QSB.csproj | 3 +- .../TranslatorTool/QSBNomaiTranslator.cs | 11 +- .../TranslatorTool/QSBNomaiTranslatorProp.cs | 23 +- .../TranslatorTool/QSBTranslatorScanBeam.cs | 233 ++++++++++++++++++ QSB/Tools/TranslatorTool/TranslatorCreator.cs | 24 +- 5 files changed, 261 insertions(+), 33 deletions(-) create mode 100644 QSB/Tools/TranslatorTool/QSBTranslatorScanBeam.cs diff --git a/QSB/QSB.csproj b/QSB/QSB.csproj index 132d0895..d56706d6 100644 --- a/QSB/QSB.csproj +++ b/QSB/QSB.csproj @@ -260,6 +260,7 @@ + @@ -474,4 +475,4 @@ xcopy /y "$(ProjectDir)\lib" "$(OwmlDir)\Mods\$(ProjectName)" - + \ No newline at end of file diff --git a/QSB/Tools/TranslatorTool/QSBNomaiTranslator.cs b/QSB/Tools/TranslatorTool/QSBNomaiTranslator.cs index dfe58ff5..98c0d67c 100644 --- a/QSB/Tools/TranslatorTool/QSBNomaiTranslator.cs +++ b/QSB/Tools/TranslatorTool/QSBNomaiTranslator.cs @@ -24,7 +24,6 @@ namespace QSB.Tools.TranslatorTool private void Awake() { - DebugLog.DebugWrite($"Awake."); _lastHitCollider = null; _translatorProp = this.GetRequiredComponentInChildren(); _currentNomaiText = null; @@ -37,14 +36,12 @@ namespace QSB.Tools.TranslatorTool public override void EquipTool() { - DebugLog.DebugWrite($"Equip."); base.EquipTool(); _translatorProp.OnEquipTool(); } public override void UnequipTool() { - DebugLog.DebugWrite($"Unequip."); base.UnequipTool(); _translatorProp.OnUnequipTool(); } @@ -64,16 +61,12 @@ namespace QSB.Tools.TranslatorTool { _lastHitCollider = raycastHit.collider; _currentNomaiText = _lastHitCollider.GetComponent(); - if (_currentNomaiText != null) - { - DebugLog.DebugWrite($"Found Nomai text."); - } if (_currentNomaiText != null && !_currentNomaiText.CheckAllowFocus(raycastHit.distance, RaycastTransform.forward)) { - DebugLog.DebugWrite($"This text doesn't allow focus."); _currentNomaiText = null; } + num = raycastHit.distance; } else @@ -88,7 +81,6 @@ namespace QSB.Tools.TranslatorTool if (_currentNomaiText is NomaiWallText) { - DebugLog.DebugWrite($"Wall text."); var nomaiTextLine = (_currentNomaiText as NomaiWallText).GetClosestTextLineByCenter(raycastHit.point); if (_lastLineLocked) { @@ -136,7 +128,6 @@ namespace QSB.Tools.TranslatorTool } else if (_currentNomaiText is NomaiComputer) { - DebugLog.DebugWrite($"Nomai Computer"); var closestRing = (_currentNomaiText as NomaiComputer).GetClosestRing(raycastHit.point, out var num2); if (closestRing) { diff --git a/QSB/Tools/TranslatorTool/QSBNomaiTranslatorProp.cs b/QSB/Tools/TranslatorTool/QSBNomaiTranslatorProp.cs index dee0c1f0..329a8cfc 100644 --- a/QSB/Tools/TranslatorTool/QSBNomaiTranslatorProp.cs +++ b/QSB/Tools/TranslatorTool/QSBNomaiTranslatorProp.cs @@ -13,30 +13,28 @@ namespace QSB.Tools.TranslatorTool public GameObject TranslatorProp; private TranslatorTargetBeam _targetBeam; - private TranslatorScanBeam[] _scanBeams; + private QSBTranslatorScanBeam[] _scanBeams; private bool _isTranslating; private void Awake() { - DebugLog.DebugWrite($"Awake."); _targetBeam = transform.GetComponentInChildren(); - _scanBeams = transform.GetComponentsInChildren(); - for (var i = 0; i < _scanBeams.Length; i++) - { - _scanBeams[i].enabled = false; - } TranslatorProp.SetActive(false); } private void Start() { - DebugLog.DebugWrite($"Start."); + _scanBeams = transform.GetComponentsInChildren(); + for (var i = 0; i < _scanBeams.Length; i++) + { + _scanBeams[i].enabled = false; + } + enabled = false; } public void OnEquipTool() { - DebugLog.DebugWrite($"OnEquipTool."); enabled = true; if (_targetBeam) { @@ -51,15 +49,12 @@ namespace QSB.Tools.TranslatorTool public void OnUnequipTool() { - DebugLog.DebugWrite($"On unequip tool."); enabled = false; StopTranslating(); } public void OnFinishUnequipAnimation() { - DebugLog.DebugWrite($"On finish unequip animation."); - if (_targetBeam) { _targetBeam.Deactivate(); @@ -82,8 +77,6 @@ namespace QSB.Tools.TranslatorTool public void SetNomaiTextLine(NomaiTextLine line) { - DebugLog.DebugWrite($"Set Nomai Text Line."); - for (var i = 0; i < _scanBeams.Length; i++) { _scanBeams[i].SetNomaiTextLine(line); @@ -102,7 +95,6 @@ namespace QSB.Tools.TranslatorTool public void SetNomaiComputerRing(NomaiComputerRing ring) { - DebugLog.DebugWrite($"Set nomai computer ring."); for (var i = 0; i < _scanBeams.Length; i++) { _scanBeams[i].SetNomaiTextLine(null); @@ -139,7 +131,6 @@ namespace QSB.Tools.TranslatorTool private void StopTranslating() { - DebugLog.DebugWrite($"Stop Translating."); if (_isTranslating) { _isTranslating = false; diff --git a/QSB/Tools/TranslatorTool/QSBTranslatorScanBeam.cs b/QSB/Tools/TranslatorTool/QSBTranslatorScanBeam.cs new file mode 100644 index 00000000..4ebc56c0 --- /dev/null +++ b/QSB/Tools/TranslatorTool/QSBTranslatorScanBeam.cs @@ -0,0 +1,233 @@ +using QSB.Utility; +using System; +using UnityEngine; + +namespace QSB.Tools.TranslatorTool +{ + class QSBTranslatorScanBeam : MonoBehaviour + { + public Renderer _projectorRenderer; + public Renderer _lightVolumeRenderer; + + const float _focusedBeamWidth = 0.25f; + const float _maxBeamWidth = 1f; + const float _maxBeamLength = 10f; + const float _scanOffset = 0f; + const float _switchLength = 0.33f; + const float _fadeLength = 0.66f; + + public float _scanSpeed = 1f; + public readonly Color _baseProjectorColor = new Color(0.3545942f, 2.206932f, 4.594794f, 1f); + public readonly Color _baseLightColor = new Color(0.1301365f, 0.2158605f, 0.6239606f, 1f); + public Quaternion _baseRotation; + + private bool _tooCloseToTarget; + private NomaiTextLine _nomaiTextLine; + private NomaiComputerRing _nomaiComputerRing; + private NomaiVesselComputerRing _nomaiVesselComputerRing; + private float _scanTime; + private float _switchTime; + private Quaternion _prevRotation; + private Vector3 _prevScale; + private float _fade; + + private void Awake() + { + _tooCloseToTarget = false; + _prevRotation = Quaternion.identity; + _prevScale = new Vector3(_maxBeamWidth, _maxBeamWidth, _maxBeamLength); + _fade = 0f; + + if (_projectorRenderer != null) + { + _projectorRenderer.material.SetAlpha(0f); + _projectorRenderer.enabled = false; + } + + if (_lightVolumeRenderer != null) + { + _lightVolumeRenderer.material.SetAlpha(0f); + _lightVolumeRenderer.enabled = false; + } + } + + private void OnDisable() + { + _tooCloseToTarget = false; + _nomaiTextLine = null; + _prevRotation = Quaternion.identity; + _prevScale = new Vector3(_maxBeamWidth, _maxBeamWidth, _maxBeamLength); + _fade = 0f; + if (_projectorRenderer != null) + { + _projectorRenderer.material.SetAlpha(0f); + _projectorRenderer.enabled = false; + } + + if (_lightVolumeRenderer != null) + { + _lightVolumeRenderer.material.SetAlpha(0f); + _lightVolumeRenderer.enabled = false; + } + + transform.localRotation = _baseRotation; + transform.localScale = _prevScale; + } + + public bool IsSwitching() + => _switchTime < 1f; + + private void OnRenderObject() + { + if (!QSBCore.WorldObjectsReady || !QSBCore.DebugMode || !QSBCore.ShowLinesInDebug) + { + return; + } + + Popcron.Gizmos.Line(transform.position, transform.position + transform.forward); + } + + private void Update() + { + if (_nomaiTextLine != null && !_tooCloseToTarget) + { + _switchTime = Mathf.MoveTowards(_switchTime, 1f, Time.deltaTime / _switchLength); + var smoothedSwitchTime = Mathf.SmoothStep(0f, 1f, _switchTime); + _scanTime += Time.deltaTime * _scanSpeed; + var num = Mathf.Cos(_scanTime + _scanOffset) * 0.5f + 0.5f; + var pointAlongLine = _nomaiTextLine.GetPointAlongLine(num); + var rhs = _nomaiTextLine.GetPointAlongLine(num + 0.1f) - _nomaiTextLine.GetPointAlongLine(num - 0.1f); + var vector = pointAlongLine - transform.position; + var upwards = Vector3.Cross(vector, rhs); + var distance = Vector3.Distance(transform.position, pointAlongLine); + var q = Quaternion.LookRotation(vector, upwards); + var scanningRotation = transform.parent.InverseTransformRotation(q); + transform.localRotation = Quaternion.Lerp(_prevRotation, scanningRotation, smoothedSwitchTime); + transform.localScale = Vector3.Lerp(_prevScale, new Vector3(_focusedBeamWidth, _focusedBeamWidth, 1f + distance), smoothedSwitchTime); + } + else if (_nomaiComputerRing != null && !_tooCloseToTarget) + { + _switchTime = Mathf.MoveTowards(_switchTime, 1f, Time.deltaTime / _switchLength); + var t2 = Mathf.SmoothStep(0f, 1f, _switchTime); + _scanTime += Time.deltaTime * _scanSpeed; + var t3 = Mathf.Cos(_scanTime + _scanOffset) * 0.5f + 0.5f; + t3 = Mathf.Lerp(0.25f, 0.75f, t3); + var pointOnRing = _nomaiComputerRing.GetPointOnRing(t3, transform.position); + var forward = pointOnRing - transform.position; + var up = _nomaiComputerRing.transform.up; + var num3 = Vector3.Distance(transform.position, pointOnRing); + var q2 = Quaternion.LookRotation(forward, up); + var b2 = transform.parent.InverseTransformRotation(q2); + transform.localRotation = Quaternion.Lerp(_prevRotation, b2, t2); + transform.localScale = Vector3.Lerp(_prevScale, new Vector3(_focusedBeamWidth, _focusedBeamWidth, 1f + num3), t2); + } + else if (_nomaiVesselComputerRing != null && !_tooCloseToTarget) + { + _switchTime = Mathf.MoveTowards(_switchTime, 1f, Time.deltaTime / _switchLength); + var smoothedSwitchTime = Mathf.SmoothStep(0f, 1f, _switchTime); + + _scanTime += Time.deltaTime * _scanSpeed; + var t5 = Mathf.Cos(_scanTime + _scanOffset) * 0.5f + 0.5f; + t5 = Mathf.Lerp(0.25f, 0.75f, t5); + var pointOnRing2 = _nomaiVesselComputerRing.GetPointOnRing(t5, transform.position); + var forward2 = pointOnRing2 - transform.position; + var up2 = _nomaiVesselComputerRing.transform.up; + var num4 = Vector3.Distance(transform.position, pointOnRing2); + var q3 = Quaternion.LookRotation(forward2, up2); + var b3 = transform.parent.InverseTransformRotation(q3); + transform.localRotation = Quaternion.Lerp(_prevRotation, b3, smoothedSwitchTime); + transform.localScale = Vector3.Lerp(_prevScale, new Vector3(_focusedBeamWidth, _focusedBeamWidth, 1f + num4), smoothedSwitchTime); + } + else + { + _switchTime = Mathf.MoveTowards(_switchTime, 1f, Time.deltaTime / _fadeLength); + var t6 = Mathf.SmoothStep(0f, 1f, _switchTime * (2f - _switchTime)); + transform.localRotation = Quaternion.Lerp(_prevRotation, _baseRotation, _switchTime); + transform.localScale = Vector3.Lerp(_prevScale, new Vector3(_maxBeamWidth, _maxBeamWidth, _maxBeamLength), t6); + } + + var flag = !_tooCloseToTarget && (_nomaiTextLine != null || _nomaiComputerRing != null || _nomaiVesselComputerRing != null); + + _fade = Mathf.MoveTowards( + _fade, + flag + ? 1f + : 0f, + Time.deltaTime / _fadeLength * (_tooCloseToTarget + ? 3f + : 1f)); + + if (_projectorRenderer != null) + { + var shouldBeOn = _fade > 0f; + if (_projectorRenderer.enabled != shouldBeOn) + { + _projectorRenderer.enabled = shouldBeOn; + } + + if (_projectorRenderer.enabled) + { + _projectorRenderer.material.SetAlpha(_fade * _fade * _baseProjectorColor.a); + } + } + + if (_lightVolumeRenderer != null) + { + var shouldBeOn = _fade > 0f; + if (_lightVolumeRenderer.enabled != shouldBeOn) + { + _lightVolumeRenderer.enabled = shouldBeOn; + } + + if (_lightVolumeRenderer.enabled) + { + _lightVolumeRenderer.material.SetAlpha(_fade * _fade * _baseLightColor.a); + } + } + } + + public void SetTooCloseToTarget(bool tooClose) + { + if (_tooCloseToTarget != tooClose) + { + _tooCloseToTarget = tooClose; + _switchTime = 0f; + _prevRotation = transform.localRotation; + _prevScale = transform.localScale; + } + } + + public void SetNomaiTextLine(NomaiTextLine line) + { + if (_nomaiTextLine != line) + { + _switchTime = 0f; + _nomaiTextLine = line; + _prevRotation = transform.localRotation; + _prevScale = transform.localScale; + } + } + + public void SetNomaiComputerRing(NomaiComputerRing ring) + { + if (_nomaiComputerRing != ring) + { + _switchTime = 0f; + _nomaiComputerRing = ring; + _prevRotation = transform.localRotation; + _prevScale = transform.localScale; + } + } + + public void SetNomaiVesselComputerRing(NomaiVesselComputerRing ring) + { + if (_nomaiVesselComputerRing != ring) + { + _switchTime = 0f; + _nomaiVesselComputerRing = ring; + _prevRotation = transform.localRotation; + _prevScale = transform.localScale; + } + } + } +} diff --git a/QSB/Tools/TranslatorTool/TranslatorCreator.cs b/QSB/Tools/TranslatorTool/TranslatorCreator.cs index 94a27bb1..ce34dd66 100644 --- a/QSB/Tools/TranslatorTool/TranslatorCreator.cs +++ b/QSB/Tools/TranslatorTool/TranslatorCreator.cs @@ -17,11 +17,7 @@ namespace QSB.Tools.TranslatorTool var REMOTE_TranslatorGroup = REMOTE_NomaiTranslatorProp.transform.Find("TranslatorGroup"); var REMOTE_Props_HEA_Translator = REMOTE_TranslatorGroup.Find("Props_HEA_Translator"); - var oldProp = REMOTE_NomaiTranslatorProp.GetComponent(); - var newProp = REMOTE_NomaiTranslatorProp.AddComponent(); - newProp.TranslatorProp = REMOTE_TranslatorGroup.gameObject; - - Object.Destroy(REMOTE_NomaiTranslatorProp.GetComponent()); + Object.Destroy(REMOTE_TranslatorGroup.Find("Canvas").gameObject); //Object.Destroy(REMOTE_TranslatorGroup.Find("Lighting").gameObject); //Object.Destroy(REMOTE_TranslatorGroup.Find("TranslatorBeams").gameObject); @@ -30,6 +26,22 @@ namespace QSB.Tools.TranslatorTool .Find("Props_HEA_Translator_RotatingPart_Prepass").gameObject); Object.Destroy(REMOTE_Props_HEA_Translator.Find("Props_HEA_Translator_Prepass").gameObject); + foreach (Transform scanBeam in REMOTE_TranslatorGroup.Find("TranslatorBeams")) + { + var oldBeam = scanBeam.GetComponent(); + var newBeam = scanBeam.gameObject.AddComponent(); + newBeam._projectorRenderer = oldBeam._projectorRenderer; + newBeam._lightVolumeRenderer = oldBeam._lightVolumeRenderer; + newBeam._scanSpeed = oldBeam._scanSpeed; + newBeam._baseRotation = oldBeam._baseRotation; + Object.Destroy(oldBeam); + } + + var oldProp = REMOTE_NomaiTranslatorProp.GetComponent(); + var newProp = REMOTE_NomaiTranslatorProp.AddComponent(); + newProp.TranslatorProp = REMOTE_TranslatorGroup.gameObject; + Object.Destroy(oldProp); + var oldTranslator = REMOTE_NomaiTranslatorProp.GetComponent(); var tool = REMOTE_NomaiTranslatorProp.AddComponent(); tool.MoveSpring = oldTranslator._moveSpring; @@ -50,7 +62,7 @@ namespace QSB.Tools.TranslatorTool REMOTE_NomaiTranslatorProp.transform.parent = cameraBody; REMOTE_NomaiTranslatorProp.transform.localPosition = Vector3.zero; REMOTE_NomaiTranslatorProp.transform.localScale = TranslatorScale; - QSBCore.UnityEvents.FireOnNextUpdate(() => REMOTE_NomaiTranslatorProp.SetActive(true)); + QSBCore.UnityEvents.FireInNUpdates(() => REMOTE_NomaiTranslatorProp.SetActive(true), 5); } } } From 383c0e2ae01abf0472b7643adba24738eeb0a867 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Thu, 11 Nov 2021 19:34:25 +0000 Subject: [PATCH 11/13] stop timesync on disconnect --- QSB/QSBNetworkManager.cs | 5 +++++ QSB/TimeSync/WakeUpSync.cs | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index ba892c33..4438416a 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -226,6 +226,11 @@ namespace QSB NomaiOrbTransformSync.OrbTransformSyncs.Clear(); QSBWorldSync.OldDialogueTrees.Clear(); + if (WakeUpSync.LocalInstance != null) + { + WakeUpSync.LocalInstance.OnDisconnect(); + } + if (_everConnected) { var specificType = QNetworkServer.active ? QSBPatchTypes.OnServerClientConnect : QSBPatchTypes.OnNonServerClientConnect; diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index e3a8d806..5b42b415 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -36,6 +36,22 @@ namespace QSB.TimeSync public override void OnStartLocalPlayer() => LocalInstance = this; + public void OnDisconnect() + { + OWTime.SetTimeScale(1f); + OWTime.SetMaxDeltaTime(0.06666667f); + OWTime.SetFixedTimestep(0.01666667f); + Locator.GetActiveCamera().enabled = true; + CurrentState = State.NotLoaded; + CurrentReason = null; + + Physics.SyncTransforms(); + SpinnerUI.Hide(); + TimeSyncUI.Stop(); + + QSBInputManager.Instance.SetInputsEnabled(true); + } + public void Start() { if (!IsLocalPlayer) From 660475e4cc71f70820aaa0fd8ff29d0beda3c9cc Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Thu, 11 Nov 2021 20:32:28 +0000 Subject: [PATCH 12/13] add material for translator screen --- QSB/Tools/PlayerToolsManager.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/QSB/Tools/PlayerToolsManager.cs b/QSB/Tools/PlayerToolsManager.cs index eb7fc62b..ab244066 100644 --- a/QSB/Tools/PlayerToolsManager.cs +++ b/QSB/Tools/PlayerToolsManager.cs @@ -26,6 +26,7 @@ namespace QSB.Tools if (QSBSceneManager.CurrentScene == OWScene.SolarSystem) { + Structure_HEA_PlayerShip_Screens_mat = GameObject.Find("ProbeScreen (1)/ProbeScreenPivot/ProbeScreen").GetComponent().materials[2]; Props_HEA_Lightbulb_mat = GameObject.Find("Props_HEA_Lantern (10)/Lantern_Lamp").GetComponent().materials[0]; Props_HEA_Lightbulb_OFF_mat = GameObject.Find("NomaiResearchExhibit/Props_HEA_Probe_STATIC").GetComponent().materials[1]; } @@ -35,6 +36,7 @@ namespace QSB.Tools // BUG : uhhhhh fuckin' uhhhhhhhh (find a material) Props_HEA_Lightbulb_OFF_mat = null; + Structure_HEA_PlayerShip_Screens_mat = null; } FlashlightCreator.CreateFlashlight(playerCamera); From ce4abdde2dd082912b69d38a3c4114e83d4fd18b Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Thu, 11 Nov 2021 23:09:30 +0000 Subject: [PATCH 13/13] turn off arrow emissions --- .../TranslatorTool/QSBNomaiTranslatorProp.cs | 41 +++++++++++++++++++ QSB/Tools/TranslatorTool/TranslatorCreator.cs | 3 ++ 2 files changed, 44 insertions(+) diff --git a/QSB/Tools/TranslatorTool/QSBNomaiTranslatorProp.cs b/QSB/Tools/TranslatorTool/QSBNomaiTranslatorProp.cs index 329a8cfc..61e3106a 100644 --- a/QSB/Tools/TranslatorTool/QSBNomaiTranslatorProp.cs +++ b/QSB/Tools/TranslatorTool/QSBNomaiTranslatorProp.cs @@ -10,15 +10,31 @@ namespace QSB.Tools.TranslatorTool { class QSBNomaiTranslatorProp : MonoBehaviour { + private static MaterialPropertyBlock s_matPropBlock; + private static int s_propID_EmissionColor; + public GameObject TranslatorProp; + public MeshRenderer _leftPageArrowRenderer; + public MeshRenderer _rightPageArrowRenderer; + public Color _baseEmissionColor; private TranslatorTargetBeam _targetBeam; private QSBTranslatorScanBeam[] _scanBeams; private bool _isTranslating; + private void Awake() { _targetBeam = transform.GetComponentInChildren(); + + if (s_matPropBlock == null) + { + s_matPropBlock = new MaterialPropertyBlock(); + s_propID_EmissionColor = Shader.PropertyToID("_EmissionColor"); + } + + TurnOffArrowEmission(); + TranslatorProp.SetActive(false); } @@ -33,6 +49,30 @@ namespace QSB.Tools.TranslatorTool enabled = false; } + private void TurnOffArrowEmission() + { + if (_leftPageArrowRenderer != null) + { + SetMaterialEmissionEnabled(_leftPageArrowRenderer, false); + } + if (_rightPageArrowRenderer != null) + { + SetMaterialEmissionEnabled(_rightPageArrowRenderer, false); + } + } + + private void SetMaterialEmissionEnabled(MeshRenderer emissiveRenderer, bool emissionEnabled) + { + if (emissionEnabled) + { + s_matPropBlock.SetColor(s_propID_EmissionColor, _baseEmissionColor * 1f); + emissiveRenderer.SetPropertyBlock(s_matPropBlock); + return; + } + s_matPropBlock.SetColor(s_propID_EmissionColor, _baseEmissionColor * 0f); + emissiveRenderer.SetPropertyBlock(s_matPropBlock); + } + public void OnEquipTool() { enabled = true; @@ -51,6 +91,7 @@ namespace QSB.Tools.TranslatorTool { enabled = false; StopTranslating(); + TurnOffArrowEmission(); } public void OnFinishUnequipAnimation() diff --git a/QSB/Tools/TranslatorTool/TranslatorCreator.cs b/QSB/Tools/TranslatorTool/TranslatorCreator.cs index ce34dd66..582c17bb 100644 --- a/QSB/Tools/TranslatorTool/TranslatorCreator.cs +++ b/QSB/Tools/TranslatorTool/TranslatorCreator.cs @@ -40,6 +40,9 @@ namespace QSB.Tools.TranslatorTool var oldProp = REMOTE_NomaiTranslatorProp.GetComponent(); var newProp = REMOTE_NomaiTranslatorProp.AddComponent(); newProp.TranslatorProp = REMOTE_TranslatorGroup.gameObject; + newProp._leftPageArrowRenderer = oldProp._leftPageArrowRenderer; + newProp._rightPageArrowRenderer = oldProp._rightPageArrowRenderer; + newProp._baseEmissionColor = oldProp._baseEmissionColor; Object.Destroy(oldProp); var oldTranslator = REMOTE_NomaiTranslatorProp.GetComponent();