1. Neos VR
  2. News
  3. 2020.9.2.10 - World UI additions and improvements, WebSocket support and more

2020.9.2.10 - World UI additions and improvements, WebSocket support and more

A bunch of new things and improvements for the new World UI! I don't think I can cram more into this build today, other things will have to wait for tomorrow sorry!

The World UI now has more intelligent sorting when searching, ability to quickly close opened worlds without switching to them, the items shouldn't be jumping back and forth when interacting with them and you can now browse worlds saved locally on your machine too!

This build also introduces WebSocket client support, based on request by many, including a Canadian Metacreation group for their research! This should open up new possibilities for interfacing Neos with external program, it has very simple interface to send and receive Text websocket messages.

Also a bunch of other tweaks and bugfixes!

[h2]New Features:[/h2]
- Added a search/filter scoring system and sorting parameter to WorldListManager, which will score and sort items based on how many search terms they match
-- This way, if you search "creator jam game", it will show items that contain all three terms at the top, with items containing either two below and items that only contain one term last
-- In the future this will also plug into more advanced scoring system by search services like Azure Cognitive Search
-- Existing facets are auto-upgraded to use this as the top sorting parameter
- Added a way to quickly close worlds from the world list by pressing the red X button in the upper right corner (it will show appropriate confirmation prompt before closing)
- Added ButtonHoverRelay which relays the button hover events (under Common UI/Events)
- WorldListManager now has "IdleSortDelay" (default 5 seconds) and "InteractingSortDelay" (default 20 seconds) parameters which will delay any updates that would change the order of listed element by that time since the last change
-- This fixes world items in the list jumping around too quickly (reported by @Enverex and @Nammi)
-- If any of the search/filter parameters are changed, the list is updated immediatelly
-- The "InteractingSortDelay" is used when any of the world items are being pointed at by the laser
- Added "Local Worlds" as data source for the new WorldListManager, allowing you to browse any worlds saved locally on the machine using the same UI (previously requested by many people, sorry I didn't keep a list but I think @SHFR_H was one of them)
-- The "My Worlds" preset now includes locally saved worlds as well in the list
- Added WebsocketClient component (under Network) which is responsible for handling connection to a websocket server at given URL
-- This follows the same host access rules as the HTTP nodes and will require user to approve connection to a particular host
- Added LogiX nodes to interface with the WebsocketClient component (under Network/Websocket) (requested by @ontodistro, @cashmoney, TylorShine (GitHub), @qdot, @Earthmark and others):
-- Websocket Connection Events - fires event when connection opens/closes
-- Websocket Text Message Receiver - fires when a text message is received on a given client
-- Websocket Text Message Sender - allows sending a text message through a WebsocketClient instance (must be connected!)
-- Websocket Connect - allows to set the URL and Handling user of WebsocketClient, which will make given user connect to particular URL
--- If URL is omitted, the current one is kept, if user is omitted local user is used
- Added IsLocalUser node (implemented by @Coffee | Programmer)

[h2]Tweaks:[/h2]
- World items now show a featured icon in the name for featured worlds (the current icon is temporary, will be updated later)
- Worlds that you have currently open will also have yellow border in the new World UI, rather than just worlds you're hosting
- WorldListManager will no longer keep updating when it's disabled or inactive (e.g. when a different dash screen is picked or it's closed)
- The Description and Details text in the World Detail (both compact and expanded view) is no longer autosized
- Changed world close dash screen (with options to save changes or discard) to a modal dialog instead
-- This fixes descriptions that include long unbroken text (e.g. a URL) having really small font (reported by @Shifty | Quality Control Lead)
- Renamed "Private Worlds" custom filter setting to more accurate "My Worlds" (based on feedback by @ArkGullwing)
- The "Friend Sessions" preset for World filtering now shows all sessions which have at least one of your friends in them, rather than sessions that are set to "Friends only" (based on feedback by @Nexulan | Community Manager)
- Added cleanup for button pressing/hovering events, to prevent potential memory leaks
- Added clamp to the VRIkAvatar HeightCompensation (0.25 to 2) to prevent the IK from getting corrupted with extreme values (reported by @Turk)
- LogiX Node selector is now aligned to the top left, rather than top center (requested by @Shifty | Quality Control Lead, @A Monsoon of Babies and others)
- Some more tweaks for the Metamovie at the Venice Festival

[h2]Bugfixes:[/h2]
- Fixed 3D model badges being rotated 180 degrees (reported by @Robyn (QueenHidi))
- Fixed RGB to HSL producing incorrect results with some values (reported by @Azavit and @Alex from Alaska)
- Fixed method mismatch when removing variables from DynamicVariableSpace, causing the system to break (found in log from @Shifty | Quality Control Lead)
-- This should also fix crashes when adding dynamic variable space to the root or over other existing dynamic variables (reported by @ProbablePrime and @Earthmark)
- Fixed exceptions in DynamicVariableSpace trying to reset variables to default state when they have already been disposed (found in log from @Shifty | Quality Control Lead)
- Fixed FacetPreset upgrade process resetting the Facet's size
- Fixed Cloud API incorrectly always reporting that it has more available results on invalid searches
-- This fixes the search getting stuck in cases where "Private Worlds" is checked and another user is selected as "By Owner" (reported by @Cyro)
- Fixed FacetPreset upgrades conflicting with old component upgrades after load, causing some things to get stuck in strange state (e.g. dynamic variables not getting properly reset)
- Fixed null reference causing users to respawn when trying to insert a relay on a drive wire (reported by @Gunnar0, fixed by @Coffee | Programmer)
- Added invalid value guards for CharacterController LinearVelocity, MoveDirection and Gravity, preventing world crashes
-- This fixes SetCharacterGravity/Velocity with NaN/Infinity inputs causing crashes (reported by @Vigilabo)