Neos-Metaverse / NeosPublic

A public issue/wiki only repository for the NeosVR project
197 stars 9 forks source link

Add screen area/touchscreen interaction options #3794

Open FlameSoulis opened 1 year ago

FlameSoulis commented 1 year ago

Is your feature request related to a problem? Please describe.

With the introduction of the SteamDeck, touchscreen options for the menu have given Neos a nice leg up on the shiny new device. However, in-world interactions with the touchscreen are not as graceful, as any attempts to use it will result in rapid spinning in place.

Relevant issues

No response

Describe the solution you'd like

A desirable solution would be to allow touchscreen world interactions while in screen/desktop mode. An example would be clicking on a video player in view but not in the center of the screen. Additionally, it might be worthwhile to allow an option for non-touchscreen devices to have this function (see alternatives for details).

Describe alternatives you've considered

You gain access to the above-listed solution if you press F6 to enter the freeform camera mode. However, you cannot move like in third-person mode, nor is it accessible on the SteamDeck (due to needing to hold additional keys to move and look around).

Additional context

Another observation is that while in first-person mode, you can see some interactable objects respond to the mouse cursor hovering over them if you have the menu open.

https://user-images.githubusercontent.com/6835457/205016809-e4770c38-f0c1-4094-a3a0-32918819c043.mp4

shiftyscales commented 1 year ago

There is basic touchscreen (and multi-touch) support already in Neos. It is probably that the Steam Deck screen just doesn't register as a touch screen, but rather just directly positions the cursor (hence the spinning).

Here is a clip of Frooxius touching stuff from when he implemented it in March of 2021.

https://youtu.be/jCzpFjvTrTI

  • Added initial multi-touch support - the new desktop mode now properly handles touch screen inputs and multiple pointers for interacting with the UI -- While touch inputs are active, the mouse input is supressed (this is to avoid double interactions due to Windows simulating mouse inputs from the primary touch) -- Note that it doesn't go through the laser interaction system yet, there's more work that needs to be done on this

https://discord.com/channels/402159838827905024/469131434628612116/821496485010866217

  • Pointer interaction system now routes the first and second pointer (mouse cursor and/or touch) through the hand interaction system -- This results in the intereractions posing the avatar's primary and secondary hand and being able to grab and scale with toushcreen

https://discord.com/channels/402159838827905024/469131434628612116/823765972879147008

FlameSoulis commented 1 year ago

Just ran some tests on both the Linux native and using Proton with no luck. There is a way to enable "TouchScreen Native Support" on the SteamDeck, which I did enable as described here.

In both cases, there was no response. However, it appears to be 'working' because menu interactions no longer function with the touchscreen, implying that it sends touchscreen signals, not mouse ones. Screenshot 2022-12-03 00-35-26 Screenshot 2022-12-03 00-35-32

badhaloninja commented 1 year ago

Repeating some of what I said in the modding discord for the sake of the github issue, FrooxEngine appears to be using Unity's EnhancedTouchSupport which does not support linux

According to the Steamworks doc faq the steamdeck currently supports both sdl and windows touch apis tho I assume one would need to install windows on the steamdeck to use windows touch