Hello everyone, sorry it took a while to get this build ready, but it presents a major milestone in the develpment of the new desktop mode! You can now fully use Context Menus and Equippable items (Tools, Weapons, Gadgets...), making the mode fully usable for core interactions! With those in place, I'll start progress on making this the default desktop mode now. I'll keep the old one as legacy for a bit while it still gets more polish. Right now you still need to startup in VR and press F8 to activate it, but hopefully it'll prove very useful already!
There are some semi-major things that changed/expanded in this internally, the input handling has been restructures quite a bit, which reduced latency of some input handling by a frame (making things feel more responsive), but watch out for potential side effects. Thanks to the following danger testers for catching some game breaking bugs before this went live: @/home/JellyOsaurusPC, @Kulza, @Raith (CytraX), @Alex the pet peeve avali 🐦, @Epsilion, @Gawdl3y and @Shadow Panther [RU/EN, UTC+3]
This build has a whole bunch of tweaks, security improvements and fixes too, so hopefully that'll solve some of the pains and problems that you've been dealing with, sorry that those fixes got held up a while! I hope to have more ready soon, probably tomorrow. I'll probably have to release the weekly update tomorrow too instead of today, it took a bit longer than expected to get this ready and not sure how much longer I'll be able to stay up and focus.
But in the meanwhile, have fun! There's a lot more to come to desktop, but with this we should have all the necessary basics.
New Features:
-
Context Menus are now usable in the new desktop mode
-- Press the Middle mouse button or the "Y" button on gamepad to open/close them
-- They will also open when clicking on certain objects (e.g. Avatars or Tooltips/Equippable items)
-- When Context menu is open, the cursor will switch to a freeform one, allowing to easily select and click on the items without having to aim head at them -
Tools, Gadges and other equippable items are now usable in the new desktop mode
-- When equipped, the avatar's hand is positioned relative to the head so the item is visible in the first person mode
--- The positioning is based on the grip pose. If it's not setup properly, the item will be misaligned
-- The tool/item/gadget is automatically aimed at the point in world currently under the cursor reticle
--- For this to work correctly, the item needs to have a properly setup TipReference, that corresponds to the exact tip and direction that the tool should aim at (using Z axis as forward)
--- Existing RawDataTooltip items are auto-upgraded using heuristics, using sources of raycast or particles. You might need to adjust the TipReference on some manually if the detection doesn't work properly
-- Current bindings are (these are tentative and will likely change)
--- Primary - Left Mouse Button / Right Trigger (gamepad)
--- Secondary - R key / Mouse Button 4 (is present) / X button (gamepad) -
RawDataTooltip & StandardController now provide proper inputs in the desktop mode, making items that rely on those work
-- The values are fed through a VirtualController type from the current input bindings of corresponding actions -
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 -
Neos now renders its own cursor even in freeform cursor mode to provide visual consistency and contextual behavior and avoid the system cursor to be overlaid on top of the in-game reticle
-
InputDeviceStreamDriver now disables streams for input devices that are currently inactive, saving network bandwidth
-- E.g. VR controllers when Screen is active and VirtualControllers when VR is active -
You can now self-assign the hearing impaired, color blind, mute and potato badges
-- To assign or remove, simply send following commands to the Neos bot account in your Contact list:
-- /addHearingImpaired, /removeHearingImpaired, /addColorBlind, /removeColorBlind, /addMute, /removeMute, /addPotato, /removePotato
Tweaks:
-
Restructured update order of the input handling components, avatar posers, VRIK and CommonTool
-- This reduces latency of input response by a frame (e.g. making the laser/cursor respond in the same frame that the input happened, rather than lagging a frame later)
-- It also allows for automatic interactions based on a laser hit (e.g. based on a screen touch that happens instantly) -
Desktop mode grabbing now uses user's head forward direction as rotation reference instead of the hand
-- This reduces slight rotation of the grabbed object upon grabbing due to the hand being procedurally moved -
Cleaned up and tweaked several user related components for driving the root objects based on inputs, tracking compensation and so on
-- Many of the components now implicitly work based on the user they're initialized on, rather than explicitly assigned
-- Where possible, the components only register events for the user actually using them, rather than for everyone -
Improved parsing of URL's when classifying asset types to search the URL query for a file extension in addition to the main data path
-- This makes certain types of URL to get detected properly and imported directly from the clipboard (e.g. IPFS file URL's, as reported by @Komdog)
-- E.g. https://example.com/somepath?file=MyFile.mp4&someparam=42 will now properly import as a video -
Near head hand gestures/shortcuts are no longer triggered in the desktop mode
-
Saving world with Ctrl+S is now supressed when the new desktop mode is active (based on report by @Cyro)
-
Crouch is now on the Left Bumper on gamepad
-
Added new English MTC Avatar Lobby locale strings by @Ryuvi | Technical Artist and @Aegis_Wolf | Art Director
-
Merged Estonian locale additions and fixes by @Meron
-
Merged Russian locale addition & tweak by @Shadow Panther [RU/EN, UTC+3]
-
Merged Korean locale addition by @MirPASEC
-
Merged Japanese locale addition by @Aesc
-
Merged Esperanto and Chinese locale additions and tweaks by @Melnus
-
Merged Czech locale addition by @rampa_3 (UTC +1, DST UTC +2)
-
Merged English store page fixes by @rampa_3 (UTC +1, DST UTC +2) and Enverex (will take a bit before it's pushed to store)
-
Merged British English addition by Enverex
Security:
- Fixed SimpleAvatarProtection throwing an exception when checked against user who has been destroyed (based on report by @3x1t_5tyl3 and @marsmaantje)
- Fixed CommonAvatarBuilder not cleaning up user's default avatar if it fails to be equipped for any reason (based on report by @3x1t_5tyl3 and @marsmaantje)
- Improved security of touch sources (based on report & sample by @Psychpsyo and @Epsilion)
- Improved sanitization of held items being transferred through the userspace (based on report & sample by @Psychpsyo and @Epsilion)
- Reworked mechanism for cleaning up Userspace-only components, so placing them on protected Slots (e.g. Root slot) doesn't cause exceptions and failure to clean them up (based on report by @Psychpsyo)
- Fixed usernames not being sanitized in the World UI and on the world orbs, causing any RTF tags in the username to be parsed (based on report by @Kodey and @Psychpsyo)
Bugfixes:
- Fixed Neos locking the cursor when running in the VR mode (reported by @Hayden)
- Fixed headless running some actions that should only be ran by user under who is given behavior parented
- Fixed BeforeInputUpdate event being potentially executed twice on some components
- Fixed SmirkLeft and SmirkRight expressions breaking the AvatarExpressionDriver when activated (reported by @Alex the pet peeve avali 🐦)
- Fixed ContextMenu collider being enabled until it's first used
- Fixed some odd interactions when using the new desktop mode with the old one
- Fixed ScreenController update order being same as TrackedDevicePositioner, causing the simulated hand to freak out in some cases (where it ends up initialized after the TrackedDevicePositioner)
- Fixed ValueField<T> and other generic components that handle value types allowing certain non-value types (e.g. System.Type) and causing the session to crash (reported by @dfgHiatus, @Epsilion, @Psychpsyo and @Zyzyl)
- Fixed component exception handling misbehaving when placed on a destroy-protected slot (based on feedback by @Psychpsyo)
- Fixed Neos crashing when running on devices without a mouse present (e.g. Android) (based on report by @かず (kazu / GitHub: kazu0617))
- Fixed reliable user positioning breaking and throwing exception when the user is deleted in the middle of the process, causing other processes to break (based on report by @3x1t_5tyl3 and @marsmaantje)
- Added generic type validation to more components to prevent crashes when creating them with invalid argument (based on findings by @Zyzyl and @Banane9)
- Fixed some World event behaviors (e.g. focus change, on save, user join or leave) breaking due to not setting up proper update scope (e.g. when fields are driven)
- Added Type validation for setting SyncType and related operations, to avoid setting/processing of invalid types (e.g. type with invalid generic argument) and causing the session to crash (reported by @Psychpsyo)
- Fixed LipMoveLeftLower expression on AvatarExpressionDriver driving the target with movement to right, instead of left (reported by @umbran)
- Fixed nameplates using the IsPresentInHeadset state instead of IsPresent, causing them to become semi-transparent when the user switches to the desktop mode after existing their headset (reported by @Shifty | Quality Control Lead)
- Fixed Userspace having two instances of PointerInteractionController, resulting in cursor and touch interactions in userspace being processed twice
Known Issues: - When interacting with context menu on gamepad, the camera view will move if you don't let go before the menu disappears
- Some tooltips are hard to use without additional behaviors (e.g. LogiX tooltip)
- Currently key bindings are tenative and will likely be tweaked as more behaviors are added
Changed files in this update