1. Neos VR
  2. News
  3. 2020.5.4.1227 - New Radiant UI smooth (wiggly!) laser system

2020.5.4.1227 - New Radiant UI smooth (wiggly!) laser system

It's wiggle time! Another piece of Radiant UI is out! :smile: The laser system has been redesigned and reworked to allow for better and smoother control, more intuitive and immersive interactions and allow for more extensibility into the future! This is only the first release version, there's still a fair bit more to come!

Special thanks to our @Danger Tester group for providing crucial feedback and bug reports before this went live, to ensure smoother roll out. Thanks to @PeterTheThinker, @Coffee, @Turk, @.bat, @Hayden (PolyLogiX - ZyroDesign), @Railu The Avali, @DeliriousJax, @Shifty, @Alex from Alaska, @H3BO3, @Kal, @Zane, @Cyro, @Abysmal, @ohzee, @alex derpy avali 🐦 and @Lewi-bean (I hope I didn't miss anyone ^^; )

There's a bunch of other tweaks and bugfixes as well for other things as usual, I got a bunch more in the queue so they'll likely get included in the next build! If you're waiting on a bugfix, addition or tweak that I confirmed, don't worry it should come soon!

[h2]New Features:[/h2]
- Added new Radiant UI interactive system, replacing the old lasers!
-- They're wiggly! The lasers use variable smoothing to provide more precision and control when interacting with UI and grabbing objects
-- They will stick to the last interacted object up to certain distance, making it easier to interact with small or thin objects
-- They render through objects and pass through when necessary, fixing cases where the context menu could not be interacted with because it's blocked (the context menu rendering through to follow)
-- They are now explicitly activated by pressing trigger, allowing to bring them up anytime. Pressing trigger again when there's no interactive object will immediatelly hide them again. This allows for better immersion in worlds
-- The system has been redesigned to be more flexible and performant, avoiding certain expensive hierarchy lookups every frame or on certain interactions
-- It also uses streams to synchronize user's laser positions now, preventing each user performing local raycasts for each laser of every user in the world. The raycasts are also skipped locally when lasers are off
-- Userspace laser now takes precedence and is independent of the world-laser, fixing issue where a big collider or corrupted avatar prevents interacting with private UI
--- If the position and direction are close enough to the world laser, they will match, otherwise it will use the default laser position/direction for userspace

- User Scaling is now disabled by default and can be toggled via the context menu when at normal scale (will later be moved into a Facet)

- Added "StartPointColor" and "EndPointColor" properties to BentTubeMesh
- Added "AcceptExistingTouch" to canvas, which lets control whether it accepts already active touch (e.g. pressed trigger) that has been originally activated outside of it

[h2]Tweaks:[/h2]
- Renamed properties on RawDataTooltip - _isTipPointing -> USesLaser, _touchBlocksTip -> BlockPrimaryWhenTouching, _usesSecondary -> UseSecondary, _canUseWithoutEquip -> AllowUseWhenHolding
- Added more reference/event cleanup for CommonTool and UndoManager to avoid potential memory leaks
- Added mechanism for immediate mesh update scheduling, improving latency of some mesh updates and reducing a bit of overhead (new lasers & UIX canvases)
- Some optimizations in segment-based procedural mesh generation
- Performance a reliability improvements for cloud MIME type detection for various assets
- Added support for AVI for the MIME type detection
- Security improvements on the cloud
- Disabled instances of SearchBlock are now ignored
- Disabled following Http Redirects for GET/POST string nodes to improve security (reported by @Earthmark)
- When holding objects in userspace, the joystick/touchpad will not be used for locomotion in the world now (@Abysmal)
- Removed old Physical Mode (this will be replaced by new system, the new scaling toggle is meant to cover in the meanwhile)

[h2]Breaking Changes:[/h2]
- AvatarEquipBlock now must always be attached on the root of the avatar to work

[h2]Bugfixes:[/h2]
- Fixed incorrectly calculated sweep bounding boxes when performing convex sweep against mesh colliders in BEPU Physics
-- This potentially fixes passing through the environment mesh colliders when falling or moving too fast
- Fixed some WAV files not getting correctly recognized as audio file and consequently not playing as a result (reported by @Medra, investigated by @Shifty)
- Fixed some image assets not getting correctly classified in the cloud, causing asset variants to not be generated for them, costing more bandwidth, memory and performance (reported by @Enverex)
- Removed deprecated TouchType for tooltips
- Fixed RawDataTooltip sometimes incorrectly triggering, when the trigger is blocked due to an update order
- Fixed the center circle on the context menu not updating the color/icon immediatelly (reported by @Hayden (PolyLogiX - ZyroDesign))