ChatBox V2 (Deprecated) - VolcanicArts/VRCOSC GitHub Wiki

This page is now deprecated. ChatBoxV3 has been released

ChatBox Logic

VRCOSC uses custom ChatBox logic to display all your enabled modules (that have ChatBox functionality) in VRChat's ChatBox. Below is the logic for how they work so you can gain some understanding and take advantage of its features to get the ChatBox displaying what you want, when you want.

TL;DR

Timed modules will show every X seconds for Y seconds. They have priority over Always modules. Always modules will show constantly but only if they have valid text. Non valid Always modules will be skipped. Always modules' priorities are taken into account to decide which module to show.

Explanation

The ChatBox logic allows you to set whether you want a module to always show or show on a timer. These will be referred to as Always modules or Timed modules.

Always

The Always module will continuously show in the ChatBox. If the Always module is sending no value (I.E, when Media isn't playing anything and Media's PausedBehaviour is set to Empty) the ChatBox will then show the details of an Always module that is a lower priority.

For example. If we enable Media and Clock and set them both to Always, the Media module will always show the details of the song that is playing unless the media is paused. When it is paused, it stops sending values and defaults back to the Clock module which is always sending the time.

Currently the priorities are in the following order: Media -> Heartrate (HypeRate and Pulsoid) -> Clock or HardwareStats.

If there are no Always modules that are sending valid text the ChatBox will clear once and wait for valid values.

Timed

The Timed module allows users to set, for example, the Clock module to show the time every 60 seconds for 10 seconds.

If you have multiple Timed modules, they will queue to show their details. I.E:

  • Clock wants to show every 60 seconds for 10 seconds
  • HardwareStats wants to show every 60 seconds for 10 seconds
  • Clock will send first, elapse 10 seconds, then HardwareStats will send, elapse 10 seconds
  • 40 seconds later (since Clock and HardwareStats both had 10 seconds, 60 - 10 - 10 = 40) the cycle will repeat

Once there are no Timed modules in the queue, the ChatBox will default back to the highest Always module with a valid value (see Always section)