2020.8.18.447 - Dynamic Variables, LogiX wire shaping, security fixes and more
Some more progress on the World UI! The WorldListManager is now pretty much complete, with full support for filtering, searching and sorting. Now I'm building things around it to actually provide UI for that functionality too, which led to a brand new system Dynamic Variable System!
First bits of the new Dynamic Variable System have been added, which allows you to automatically and efficiently link/sync values within the hierarchy based on their name and type. This is going to be used to dynamically link values between Facets in a Facet Container (e.g. for the new World UI), but it's a general system, so it can be used for anything! It will be extended to be easily usable with LogiX and add a lot of other behaviors on top.
WARNING: You can play with it, but I might still change some of the core things with it, so stuff you make can break. I'd recommend giving it about a week to stabilize, until then I don't guarantee compatibility. See #🎥devlog for more.
You can now easily shape LogiX wires with relays by simply pointing at them with the tooltip and holding grip! The FlatLitToon is now finally officially deprecated and removed, all existing instances will be autoconverted to Xiexe! This build also has a bunch of security improvements based on various independent reports and some other bugfixes.
[h2]New Features:[/h2]
- Added "DynamicVariableSpace" (under Data/Dynamic) which creates a shared space for named variables within the child hierarchy
-- Variables are identified both by their name and type. This means variable of type "int" named "MyVariable" and variable of type "float" also named "MyVariable" are separate independent variables
-- If you parent new dynamic variables under the DynamicVariableSpace, they will automatically sync to that space
-- The GridContainer on the Home screen is now a DynamicVariableSpace, making any dynamic variables within the grid sync up
- Added DynamicField (under Data/Dynamic) which links a target field to a named variable under DynamicVariableSpace
- Impelemented efficient mechanism for hierarchy changed events, which makes sure only parts of hierarchy that are subscribed will be updated (this is mostly internal right now, but will be used and exposed in various ways through other functions and systems)
- Added ability to quickly insert relays and shape LogiX wires by pointing the laser at them and holding grip (implemented by @Coffee | Programmer, requested by ykgamma on GitHub (sorry don't know your Discord handle!))
[h2]Work in progress Features:[/h2]
- World List Manager is mostly complete now for its initial functionality. It has full filtering/searching support and sorting support.
[h2]Tweaks:[/h2]
- Deprecrated FlatLitToon material, all existing instances are autoconverted to equivalent Xiexe Toon
-- Most references to fields should be auto-remapped as well to equivalents, so any LogiX animating them should still work
-- If conversion doesn't handle something correctly on your objects or worlds, DO NOT SAVE and report the issue. As long as the original is still saved, a tweaked autoconversion process can be re-run
- Several security improvements (based on report by @Earthmark, @Turk and others)
- The pick node and pack actions on the Logix tip now use the bendy lasers (fixed by @Coffee | Programmer)
- Categorized TextField under UIX/Interaction, which is necessary to setup editable text field with UIX
- Some last Metamovie-related additions to the headless
[h2]Bugfixes:[/h2]
- When syncing worlds/items, the cloud server will now return 429 error code when the sync ends up database throttled rather than BadRequest
-- This will trigger automatic retry logic on the client and hide random transient database spikes, rather than showing a Sync Error to the user (based on report by @Earthmark)
- Categorized "VirtualParent" under Transform/Drivers
- Fixed potential memory leak in VirtualParent component
- Fixed external assets on saved objects running their OnAttach behavior when they're loaded, potentially corrupting the state of the asset and causing loading errors

First bits of the new Dynamic Variable System have been added, which allows you to automatically and efficiently link/sync values within the hierarchy based on their name and type. This is going to be used to dynamically link values between Facets in a Facet Container (e.g. for the new World UI), but it's a general system, so it can be used for anything! It will be extended to be easily usable with LogiX and add a lot of other behaviors on top.
WARNING: You can play with it, but I might still change some of the core things with it, so stuff you make can break. I'd recommend giving it about a week to stabilize, until then I don't guarantee compatibility. See #🎥devlog for more.
You can now easily shape LogiX wires with relays by simply pointing at them with the tooltip and holding grip! The FlatLitToon is now finally officially deprecated and removed, all existing instances will be autoconverted to Xiexe! This build also has a bunch of security improvements based on various independent reports and some other bugfixes.
[h2]New Features:[/h2]
- Added "DynamicVariableSpace" (under Data/Dynamic) which creates a shared space for named variables within the child hierarchy
-- Variables are identified both by their name and type. This means variable of type "int" named "MyVariable" and variable of type "float" also named "MyVariable" are separate independent variables
-- If you parent new dynamic variables under the DynamicVariableSpace, they will automatically sync to that space
-- The GridContainer on the Home screen is now a DynamicVariableSpace, making any dynamic variables within the grid sync up
- Added DynamicField (under Data/Dynamic) which links a target field to a named variable under DynamicVariableSpace
- Impelemented efficient mechanism for hierarchy changed events, which makes sure only parts of hierarchy that are subscribed will be updated (this is mostly internal right now, but will be used and exposed in various ways through other functions and systems)
- Added ability to quickly insert relays and shape LogiX wires by pointing the laser at them and holding grip (implemented by @Coffee | Programmer, requested by ykgamma on GitHub (sorry don't know your Discord handle!))
[h2]Work in progress Features:[/h2]
- World List Manager is mostly complete now for its initial functionality. It has full filtering/searching support and sorting support.
[h2]Tweaks:[/h2]
- Deprecrated FlatLitToon material, all existing instances are autoconverted to equivalent Xiexe Toon
-- Most references to fields should be auto-remapped as well to equivalents, so any LogiX animating them should still work
-- If conversion doesn't handle something correctly on your objects or worlds, DO NOT SAVE and report the issue. As long as the original is still saved, a tweaked autoconversion process can be re-run
- Several security improvements (based on report by @Earthmark, @Turk and others)
- The pick node and pack actions on the Logix tip now use the bendy lasers (fixed by @Coffee | Programmer)
- Categorized TextField under UIX/Interaction, which is necessary to setup editable text field with UIX
- Some last Metamovie-related additions to the headless
[h2]Bugfixes:[/h2]
- When syncing worlds/items, the cloud server will now return 429 error code when the sync ends up database throttled rather than BadRequest
-- This will trigger automatic retry logic on the client and hide random transient database spikes, rather than showing a Sync Error to the user (based on report by @Earthmark)
- Categorized "VirtualParent" under Transform/Drivers
- Fixed potential memory leak in VirtualParent component
- Fixed external assets on saved objects running their OnAttach behavior when they're loaded, potentially corrupting the state of the asset and causing loading errors


