Apparently, it's safe to use Unity objects as keys in HashMaps, and doing
so actually fixes some edge cases where assets are recreated as a new C# object.
* fix: menu item with float value incorrectly generates bool parameter
* fix: reactive components generate transitions with overlapping condition ranges
* chore: add tests for menu item parameter type
* fix: incorrect parameter type detemination for float values
* chore: add more tests for menu item parameter type
* refactor: unify logic to determine parameter type and rename confusing variable
* fix: init menu item settings only when added manually from inspector
* fix: init menu item settings when added from some shortcuts
* fix: init menu item settings when reset from context menu
* fix: init merge animator settings only when added manually from inspector
* feat: add material switcher
Also refactor everything...
* refactor: simplify object curve handling
* refactor: additional refactoring and bugfixes
* feat: inverse mode
* feat: add material setter inspector UI
* chore: set material setter icon
* chore: fix error on build
* chore: adjust order of inverted element
* refactor: generalize support for arbitrary parameters as conditions
* feat: automatically assign Menu Item parameters
* feat: ReactiveComponents respond to MenuItems
* feat: AvatarObjectReference tracks both paths and direct object references
* feat: set isSaved/isSynced/default values from MenuItem
* feat: Object Toggle preview supports menu items and manipulating parent objects
* feat: reactive previews respond to menu item default value states
* chore: update NDMF dependency
Zero-length allocations could result in multiple entries with the same offset in the segment map. This would then break subsequent lookups.
Fixed by increasing these allocations to a minimum length of one.
* opti: fix perf regressions in new armature lock system
... by avoiding reinitializing everything whenever any target bone moves.
* chore: fixing unity 2019 issues
This new implementation avoids creating any internal objects within the avatar
itself, instead creating them as hidden scene root objects. We also move all update
processing to be driven by camera callbacks as well. These changes help improve
compatibility with tools such as FaceEmo, as well as being less likely to break when
other tools manipulate the avatar's hierarchy directly.