2020.7.9.1241 - RadiantUI dash customization support, custom facets and more
I was planning on pushing this tomorrow, but the SteamVR issue kinda speeded it up, so here it is! Customizable RadiantUI dash and ability to bring in your own Facets! :smile: This is another important milestone of the UI overhaul, giving you the ability to customize and extend Neos' UI and build your own favorite layout.
There's a lot more to come still, like placing facets on your avatar, having multiple workspaces (loadouts) and more so stay tuned! This build has lots of other additions, improvements and bugfixes as well as usual.
Also thanks to our @Danger Tester's for helping to polish the facet customization system and catch the early bugs before release! Thanks to: @Blaze, @GalexY, @sirkitree, @Zyzyl, @Abysmal, @Dante, @H3BO3, @Rukio, @Zane, @Alex from Alaska, @GearBell, @ohzee, @Shifty | Quality Control Lead and @Turk !
[h2]New Features:[/h2]
- Finished implementation of Dash customization - you can now enable UI editing mode and customize the layout of your dash, or even add your own pieces of UI!
-- All changes you make are automatically saved to your cloud profile either 1 minute after last change or on exit/logout (whichever is sooner)
-- You can move facets between the main screen and the top bar at the moment. As more of the old UI's are reworked into Facets, you'll be able to customize them as well
-- This system also has layered upgrade mechanisms, which will allow us to insert new facets into your modified setups. If you don't modify your layout, it will auto-upgrade to the latest official layout
[h2]How to activate/deactivate UI editing mode:[/h2]
- In VR with Index/Oculus, hold one of the dedicated userspace buttons (that opens/closes dash or world switcher) and double tap the other.
- In VR with Vive/Windows MR, hold the menu button until the circle fills and then double tap the other menu button.
- In Screen mode press the F6 key. To pick facets off the dash, you need to hold Shift while grabbing them.
- Added ability to bring custom Facets into userspace through the inventory
-- First, save a Facet into your inventory and then click on it once and use the new magenta colored button to spawn it out in the userspace
-- IMPORTANT!!! Only spawn out Facets you trust, they have access to your private UI and data. The mechanism will be more robust in the future, this is meant for early experimentation.
- Added "Workspace" component, which auto-loads and saves workspaces - arbitrary child hierarchies to the cloud at given path
-- This serves as a building block for the Dash customization, but is general and can be used for anything
-- Only works in Userspace at the moment for security reasons
- Added "Reset Dash" to Neos launcher, which allows resetting the dash to default if it becomes messed up
- Added "UserInterfaceEditModeSync" (under Utilities) which indicates of the UI edit mode is active or not and can be used to change the active state (only in Userspace)
- Added "BlockAllInteractions" to Canvas, which allows blocking all interactions with the canvas (can be used to temporarily supress interacting with it - e.g. Facets used this when they're grabbed)
- Added visual placement cursor to GridContainer to provide better feedback about the placement
- Added "GrabTooltipSnapper" which will automatically snap the grabbed object in front of the tooltip/laser location of the grabbing hand
[h2]Tweaks:[/h2]
- Tweaked the Facet placement logic for GridContainer to provide more precision
- Changed Home Icon (changed by @Coffee | Programmer)
- Changed voice mode icons on the dash menu (changed by @Coffee | Programmer)
- Added new Neos logo to the Neos Launcher
- Reduced the size of the Neos Launcher and rearranged a bit to be more compact (based on feedback by @Ardes and others before)
- Removed deprecated texture size ratio from the Neos Launcher
- You can now set worlds owned by groups that you are a member of as your home (requested by @rhenium_75)
-- IMPORTANT!!! Make sure that multiple users don't save this world in parallel, otherwise you end up with sync conflicts
- String GET and POST nodes will now fill the Content output with the exception when OnError is fired (based on feedback by @Alex from Alaska)
- When placing facets to the GridContainer, they will now prefer their last placed size first (suggested by @Shifty | Quality Control Lead)
- Facets now don't accept physical touch by default (if you have existing facets, you'll have to re-enable it if you want this preserved)
- Facets now cannot be placed when edit mode is off (reported by @Turk)
- Facets can now be placed by simply dropping them (suggested by @Rukio)
- Tweaked the RadiantUI dash grid container sizes so they perfectly fit the size of the dash, without partial cells
- Upgraded to Unity 2019.4.3f1 (from 2019.4.2f1)
[h2]Bugfixes:[/h2]
- Fixed race condition in UIX generation, where a sprite/raw-image texture that's not fully loaded (or becomes unloaded) during UIX graphic generation causes UIX to break (reported by @Shifty | Quality Control Lead on behalf of @Aegis_Wolf | Art Director)
- Fixed Facet Container Facet pick visual (the cyan one) getting stuck when Edit mode is turned off while the visual is still active
- Fixed String POST node throwing an exception when trying to send request with body that's null
- Fixed invalid implementation of ForeachComponentInParents, causing certain events not to propagate correctly
- Fixed interaction elements (Buttons, Sliders...) getting their IsHovering or IsPressed status saved and get stuck upon it on load until they're interacted with
- Fixed default facet size growing to take all the available space on each axis none of the preferred sizes fit (the calculated size will only grow to the largest preffered size on each axis)
- Fixed flashing visuals for Facet placement on the GridContainer
- Fixed UIX canvas breaking due to a race condition when a NestedCanvas is removed while an UIX update is still running (reported by @Alex from Alaska)
- Fixed Facets created with "Create New" having two backgrounds with Z-write on, making the second one not render
- Fixed being able to place two facets at the same time (reported by @ohzee)
- Fixed dropping or hovering of laser-held items not working through raycast portals
- Fixed material property blocks on MeshRenderer not updating properly when the number of materials is decreased and then increased again
-- This fixes some visual glitches with UIX (reported by @Abysmal)
- Fixed the cursor and facets being placed out of valid bounds on GridContainer (reported by @Shifty | Quality Control Lead)
- Fixed action.json SteamVR input manifest, newly causing parsing error with the latest SteamVR 1.13 (big thanks to Joe from Valve for getting in touch and identifying the issue for us!)

There's a lot more to come still, like placing facets on your avatar, having multiple workspaces (loadouts) and more so stay tuned! This build has lots of other additions, improvements and bugfixes as well as usual.
Also thanks to our @Danger Tester's for helping to polish the facet customization system and catch the early bugs before release! Thanks to: @Blaze, @GalexY, @sirkitree, @Zyzyl, @Abysmal, @Dante, @H3BO3, @Rukio, @Zane, @Alex from Alaska, @GearBell, @ohzee, @Shifty | Quality Control Lead and @Turk !
[h2]New Features:[/h2]
- Finished implementation of Dash customization - you can now enable UI editing mode and customize the layout of your dash, or even add your own pieces of UI!
-- All changes you make are automatically saved to your cloud profile either 1 minute after last change or on exit/logout (whichever is sooner)
-- You can move facets between the main screen and the top bar at the moment. As more of the old UI's are reworked into Facets, you'll be able to customize them as well
-- This system also has layered upgrade mechanisms, which will allow us to insert new facets into your modified setups. If you don't modify your layout, it will auto-upgrade to the latest official layout
[h2]How to activate/deactivate UI editing mode:[/h2]
- In VR with Index/Oculus, hold one of the dedicated userspace buttons (that opens/closes dash or world switcher) and double tap the other.
- In VR with Vive/Windows MR, hold the menu button until the circle fills and then double tap the other menu button.
- In Screen mode press the F6 key. To pick facets off the dash, you need to hold Shift while grabbing them.
- Added ability to bring custom Facets into userspace through the inventory
-- First, save a Facet into your inventory and then click on it once and use the new magenta colored button to spawn it out in the userspace
-- IMPORTANT!!! Only spawn out Facets you trust, they have access to your private UI and data. The mechanism will be more robust in the future, this is meant for early experimentation.
- Added "Workspace" component, which auto-loads and saves workspaces - arbitrary child hierarchies to the cloud at given path
-- This serves as a building block for the Dash customization, but is general and can be used for anything
-- Only works in Userspace at the moment for security reasons
- Added "Reset Dash" to Neos launcher, which allows resetting the dash to default if it becomes messed up
- Added "UserInterfaceEditModeSync" (under Utilities) which indicates of the UI edit mode is active or not and can be used to change the active state (only in Userspace)
- Added "BlockAllInteractions" to Canvas, which allows blocking all interactions with the canvas (can be used to temporarily supress interacting with it - e.g. Facets used this when they're grabbed)
- Added visual placement cursor to GridContainer to provide better feedback about the placement
- Added "GrabTooltipSnapper" which will automatically snap the grabbed object in front of the tooltip/laser location of the grabbing hand
[h2]Tweaks:[/h2]
- Tweaked the Facet placement logic for GridContainer to provide more precision
- Changed Home Icon (changed by @Coffee | Programmer)
- Changed voice mode icons on the dash menu (changed by @Coffee | Programmer)
- Added new Neos logo to the Neos Launcher
- Reduced the size of the Neos Launcher and rearranged a bit to be more compact (based on feedback by @Ardes and others before)
- Removed deprecated texture size ratio from the Neos Launcher
- You can now set worlds owned by groups that you are a member of as your home (requested by @rhenium_75)
-- IMPORTANT!!! Make sure that multiple users don't save this world in parallel, otherwise you end up with sync conflicts
- String GET and POST nodes will now fill the Content output with the exception when OnError is fired (based on feedback by @Alex from Alaska)
- When placing facets to the GridContainer, they will now prefer their last placed size first (suggested by @Shifty | Quality Control Lead)
- Facets now don't accept physical touch by default (if you have existing facets, you'll have to re-enable it if you want this preserved)
- Facets now cannot be placed when edit mode is off (reported by @Turk)
- Facets can now be placed by simply dropping them (suggested by @Rukio)
- Tweaked the RadiantUI dash grid container sizes so they perfectly fit the size of the dash, without partial cells
- Upgraded to Unity 2019.4.3f1 (from 2019.4.2f1)
[h2]Bugfixes:[/h2]
- Fixed race condition in UIX generation, where a sprite/raw-image texture that's not fully loaded (or becomes unloaded) during UIX graphic generation causes UIX to break (reported by @Shifty | Quality Control Lead on behalf of @Aegis_Wolf | Art Director)
- Fixed Facet Container Facet pick visual (the cyan one) getting stuck when Edit mode is turned off while the visual is still active
- Fixed String POST node throwing an exception when trying to send request with body that's null
- Fixed invalid implementation of ForeachComponentInParents, causing certain events not to propagate correctly
- Fixed interaction elements (Buttons, Sliders...) getting their IsHovering or IsPressed status saved and get stuck upon it on load until they're interacted with
- Fixed default facet size growing to take all the available space on each axis none of the preferred sizes fit (the calculated size will only grow to the largest preffered size on each axis)
- Fixed flashing visuals for Facet placement on the GridContainer
- Fixed UIX canvas breaking due to a race condition when a NestedCanvas is removed while an UIX update is still running (reported by @Alex from Alaska)
- Fixed Facets created with "Create New" having two backgrounds with Z-write on, making the second one not render
- Fixed being able to place two facets at the same time (reported by @ohzee)
- Fixed dropping or hovering of laser-held items not working through raycast portals
- Fixed material property blocks on MeshRenderer not updating properly when the number of materials is decreased and then increased again
-- This fixes some visual glitches with UIX (reported by @Abysmal)
- Fixed the cursor and facets being placed out of valid bounds on GridContainer (reported by @Shifty | Quality Control Lead)
- Fixed action.json SteamVR input manifest, newly causing parsing error with the latest SteamVR 1.13 (big thanks to Joe from Valve for getting in touch and identifying the issue for us!)


