2025.1216.0
This update brings initial Twitch event and action support, camera control, Pulse additions and fixes, and some app fixes!
App
- Fixed audio engine initialisation errors
- Added support for user camera control
- Fixed PiShockProvider throwing an error when multiple shockers had the same sharecodes
- Added TriggerModuleNode to the Module SDK
- Allows for triggering any IModuleNodeEventHandler node with some data from a module
Pulse
- Added nodes to receive and control user camera values
- Added ContextStoreWrite and ContextStoreSource
- This is useful for when you want to store some data for later in a flow without needing giant connections
- Added Gamepad support
- Any Gamepad (xbox, ps, etc..) that Windows supports is now available through the Gamepad nodes
- This is addressable by index, of which should always be 0 if you have a single Gamepad plugged in
- Added Toggle Parameter node
- A very common flow is to toggle a parameter. This node is a shortcut to toggle between values
- The default on values are the maximum values that VRChat's syncing allows. (true, 255, and 1.0)
- The default off values are the default values of the types. (false, 0, 0.0)
- Added EmptyList and EmptyDictionary nodes
- Added Content value input to HTTP POST node
- Added FireOnChangeEnumerable node
- This will fire when any value inside an enumerable changes, or if the length of the enumerable changes
- Added NodeNoCancel attribute for trigger nodes
- This disallows the trigger node to be cancelled when being triggered again
- This is useful for trigger nodes that are for API events and should be fire and forget
- Added active update node order offset
- This should resolve issues with flashing values due to order inconsistency
- The order is ParameterSource -> VariableSource -> All other active update nodes -> DriveVariable -> DriveParameter
- Removed FloatingPointToNumber node
- It still exists for compatibility, but is no longer needed as casting works correctly now
- Removed JsonChildValue, JsonChildObject, and JsonChildArray
- They still exist for compatibility, but have been replaced with JsonObjectGetValue
- Fixed a bunch of flow calculations
- FireWhileTrue, FireWhileFalse, and FireOnInterval should be much more stable
- FireWhileTrue and FireWhileFalse will now respect flow cancellation correctly
- Cancelling a flow source now cancels sub-flows
- Fixed active update nodes not starting a flow task resulting in the fixed update loop being blocked
- Fixed some stack overflows when nodes are connected to each other
- Fixed cast node generation
- Fixed dictionary element add and key remove not continuing when the dictionary input was null
- Fixed nullable value inputs breaking user input node creation
- Fixed JsonObjectToDictionary node failing when converting to types JsonArray or JsonObject
- Fixed JsonArrayToEnumerable node failing when converting to type JsonObject
- Changed the Node attribute definition to allow module nodes to have sub-paths
- Changed Parameter source nodes to update on the fixed update loop
- This should resolve issues with flashing values due to timing inconsistencies
Modules
- Added Twitch module
- This is a purely Pulse module
- Not everything from the API has been added, just the events and actions that seem useful
- More can be added in the future!