qsb-dev / quantum-space-buddies

Quantum Space Buddies ( QSB ) is a multiplayer mod for Outer Wilds.
https://outerwildsmods.com/mods/quantumspacebuddies
GNU Affero General Public License v3.0
92 stars 22 forks source link

NomaiVR Space Suit Pressing B Glitch #690

Open Jasonhallowell opened 4 months ago

Jasonhallowell commented 4 months ago

When I enter the spaceship I put on the space suit and then press B on my quest 3 controller all objects disappear and I am just left in the stars with a keyboard in front of me with no way to get back without exiting the game entirely.

To Reproduce Use the NomaiVR, Menu Framework, QSB and Vanilla Fix mods. Enter the space ship, put on the space suit and press B.

Expected behavior I expect to be able to exit the ship or for nothing to happen.

Screenshots Screenshot does not show keyboard but in the headset there is a keyboard in front of me.

image

Please complete the following information:

thorio commented 1 month ago

You are likely opening the chat by mistake, try turning this setting OFF: image

shaynehawke commented 3 weeks ago

Sadly this doesn't fully fix the issue. It DOES stop everything from disappearing and the chat window from coming up, but the character is completely frozen until you quit out of the game.

nico0145 commented 1 week ago

I can reproduce this every time, got this from the logs, please let me know if you need any other info:

Error - Exception handling message QSB.HUD.Messages.PlanetMessage : System.NullReferenceException at (wrapper managed-to-native) UnityEngine.Behaviour.get_isActiveAndEnabled(UnityEngine.Behaviour) at UnityEngine.EventSystems.UIBehaviour.IsActive () [0x00000] in :0 at UnityEngine.UI.Graphic.SetLayoutDirty () [0x00000] in :0 at UnityEngine.UI.Graphic.SetAllDirty () [0x00011] in :0 at UnityEngine.UI.Image.set_sprite (UnityEngine.Sprite value) [0x0008e] in :0 at QSB.HUD.PlayerBox.UpdateIcon (QSB.HUD.HUDIcon icon) [0x00021] in <2a8370b63578439c892c0c51995fb4ce>:0 at QSB.HUD.Messages.PlanetMessage.OnReceiveRemote () [0x00021] in <2a8370b63578439c892c0c51995fb4ce>:0 at QSB.HUD.Messages.PlanetMessage.OnReceiveLocal () [0x00000] in <2a8370b63578439c892c0c51995fb4ce>:0 at QSB.Messaging.QSBMessageManager.OnClientReceive (QSB.Messaging.QSBMessage msg) [0x000e9] in <2a8370b63578439c892c0c51995fb4ce>:0

nico0145 commented 1 week ago

Not familiar with unity and wouldn"t know how to begin to debug this, but this seems to be happening here:

https://github.com/qsb-dev/quantum-space-buddies/blob/b2e55d61e97b2e9c05b8b6e69cb349c57b59aa93/QSB/HUD/PlayerBox.cs#L95

Maybe try a null check over there?

nico0145 commented 1 week ago

tried the nullcheck myself, it still happens, here's some steps to reproduce since I can't see any relevant warnings/errors and it seems like it's triggering something on the nomaivr side.

https://streamable.com/3cefa2

nico0145 commented 1 week ago

enabled debug for nomaivr as well, found lots of null point reference errors on update functions due to what I assume is the lack of keyboard, so I temporarily commented all keyboard related code to avoid hundreds of exceptions:

11/18/2024 9:03:12 PM: [OWML]: Error: NullReferenceException: Object reference not set to an instance of an object
Stacktrace: QSB.HUD.MultiplayerHUDManager.Update () (at <74e845533fb649759ae73f7ffd346903>:0)
11/18/2024 9:03:12 PM: [Quantum Space Buddies]: Error: [Debug] NullReferenceException: Object reference not set to an instance of an object
Stacktrace: QSB.HUD.MultiplayerHUDManager.Update () (at <74e845533fb649759ae73f7ffd346903>:0)

11/18/2024 9:03:12 PM: [OWML]: Error: NullReferenceException: Object reference not set to an instance of an object
Stacktrace: QSB.Utility.DebugActions.Update () (at <74e845533fb649759ae73f7ffd346903>:0)
11/18/2024 9:03:12 PM: [Quantum Space Buddies]: Error: [Debug] NullReferenceException: Object reference not set to an instance of an object
Stacktrace: QSB.Utility.DebugActions.Update () (at <74e845533fb649759ae73f7ffd346903>:0)

11/18/2024 9:03:12 PM: [OWML]: Error: NullReferenceException: Object reference not set to an instance of an object
Stacktrace: QSB.QSBCore.Update () (at <74e845533fb649759ae73f7ffd346903>:0)
11/18/2024 9:03:12 PM: [Quantum Space Buddies]: Error: [Debug] NullReferenceException: Object reference not set to an instance of an object
Stacktrace: QSB.QSBCore.Update () (at <74e845533fb649759ae73f7ffd346903>:0)

afterwards the only exception I still see it has to do with player not having a camera:

11/18/2024 10:33:04 PM: [NomaiVR]: Info: Texture for TOOL_PRIMARY is 'Right/button_b', action is 'StationaryUse'
11/18/2024 10:33:04 PM: [Quantum Space Buddies]: Info: Built MeteorManager
11/18/2024 10:33:04 PM: [Quantum Space Buddies]: Info: Built MiscManager
11/18/2024 10:33:04 PM: [Quantum Space Buddies]: Info: Built SpiralManager
11/18/2024 10:33:04 PM: [Quantum Space Buddies]: Success: World Objects added.
11/18/2024 10:33:04 PM: [Quantum Space Buddies]: Success: World Objects ready.
11/18/2024 10:33:04 PM: [Quantum Space Buddies]: Error: Error - LocalPlayer.Camera is null.
11/18/2024 10:33:04 PM: [Quantum Space Buddies]: Warning: Warning - Could not find any players with cameras!
11/18/2024 10:33:07 PM: [Quantum Space Buddies]: Warning: [Debug] Parent of RectTransform is being set with parent property. Consider using the SetParent method instead, with the worldPositionStays argument set to false. This will retain local orientation and scale rather than world orientation and scale, which can prevent common UI scaling issues.
11/18/2024 10:33:07 PM: [Quantum Space Buddies]: Info: OnWakeUp
11/18/2024 10:33:07 PM: [Quantum Space Buddies]: Message: INIT

But all this happens before wake up, I don't get any exceptions during this behavior

Here's some extra data: image