Skip to main content

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!