Spent the day today and yesterday to improve the UI interaction and finally decided to re-write the laserpointer input functions. Been waiting to get help from a specific coder to get the UI interaction sorted, but I couldn’t wait longer (no patience) so I decided to use some of the old scripts & functions - but simply do it “my way” instead And it seems like its working great, as far as I can tell:
No more scrolling glitches or bugs when dragging pages/menus
Scrolling among game lists (gallery/list view) now works as expected and more “natural”
Scrolling inside drop-down menus now fully working (not only with scrollbars, but also by dragging with pointer)
Dragging game thumbnails or items doesnt result in accidentially clicking into game page (made my own new script with proper algorithms that determinates if a click should be made, or if user is scrolling/dragging only)
Dragging scrollbars doesnt jump around and behave glitchy anymore when pointer leaves the scrollbar
Clicking and dragging empty space on any page behaves normally, and scrolling by dragging empty space works properly
Scrolling speed corrected and now faster (will soon add an option for scroll speed adjustment).
If clicking an object/button, holding and dragging away and then releasing the trigger will now NOT result in improper click or abnormal behaviour
New UI interaction should now be easier to implement with upcoming hand-tracking+mouse interaction that Im already working on!
Please test the Beta 0.27 (just posted) and let me know what you think! If you find any glitches or have ideas for UI interaction improvements, please let me know!
And… Dont forget to read the ReadMeFirst.txt first!
There are tons of stuff to be added the upcoming days and weeks, but this was kind of a milestone to reach, having the UI interaction correctly done without paid or licensed assets, plugins, SDKs or libraries.
Im back in the afternoon today, a bit busy until then…
Thanks Neil, I added you a few days ago as I realised I totally forgot to do it from start. I thought you might be interested to try it
Heres the thing. In different categories you can see different profiles. Making changes will not instantly sync settings between categories, but Saving the profile or Apply the profile will instantly sync the settings everywhere. I think syncing before applying or saving will create confusion, as neither the json file nor PiTool itself is aware of the changes made unless these are saved or applied. Let me explain:
There is always one “active” profile which the HMD uses (has been applied to the HMD). Thats the one you see in Quick Settings menu. If you change and apply that specific profile (from any menu), then everything will be synced in all menus.
Every time you enter Settings or Profile Edit, that active profile is loaded automatically.
If you chose another profile in Settings or Edit Profile and just load it, you simply load the options to the screen to see them. Not until you apply or save the changes, then changes are actually made.
Apply = send values to HMD and make the profile active. Save = save to profile JSON only for later use. Load = only loads the profile settings to screen to be able to change-save-apply.
Initially, months ago, I had every single slider change automatically synced without applying or saving, but believe me it becomes very confusing as you will no longer know what settings are actually applied to the HMD and if the profile is saved or not. Next time u start PE u realised the profile was totally different from what you thought it was, because the profile was never saved or applied ans settings were just temporary changed on-screen. That was super confusing ans frustrating.
These are the reasons why I had to change it, and I think its way more logic now to understand and manage. As long as you know the difference between loading, applying and saving a profile
Also, as u probably have seen, when applying settings in PE, everything is synced to PiTool instantly. If applying settings in PiTool, everything is synced to PE instantly. Thats because the change was actually made and applied.
If you save a profile in PE, the changes will be seen when u load the same profile in PiTool. If you save a profile in PiTool, the changes will be seen once u load the profile in PE.
So everything is indeed synced
Im working on a solution to automatically and manually adjust this. Its a limitation of the SDK but I have a workaround.
The panels should not move when font is changed. The font change only changes the font by +1 or -1 in size and leaves everything untouched. This sounds weird. Can you please somehow record the behaviour? Ive never seen that happening.
They do, but only the options and not the labels. Its to prevent the label text to get improper size (too small to read or to large) as the text is already smaller on the right panel from start.
All settings (except some Advanced settings like IPD/Vertical offet) needs Apply button to be pressed to
apply changes to HMD.
But: since the Unity scene is loaded, render quality change wont be seen until you start a game or quit and start PE again. Thats a limitation in how Render Quality works on Pimax. The application running needs to restart to take effect. FoV and other values changes instantly, but render quality changes will only be seen when any game or SteamVR itself is started. To be able to see the RQ change in realtime, i would need to use a script that quits and restarts PE (restarts Unity player)
I didn’t request it, since I didn’t have any VR controllers at the time. I now have a pair of Index controllers, so I can play HL Alyx (and beta test your app).
Perhaps an Apply button which is always visible and flashes or highlights or changes color whenever a setting is changed would be helpful.
I’ll see if I can make a recording of the behavior. I only tried the app once and it was obvious, but it could have been due to some sort of rare side-effect.
My understanding is that it’s not particularly hard to do that and might be worth implementing at some point. Even if it’s not something you could do inside of Unity, you could probably work with the PiTool team to restart Pimax Experience, after your app exits.