Suggestion:
  • Option 1: In class VRCPlayerApi, create a bool method
    SetVisibility(bool)
    which defaults to true, for toggling the overall visibility of a particular player, which includes their avatar and nameplate and any chat box they may create.
  • Option 2: Alternatively, create multiple toggles to control each element individually, such as
SetAvatarVisibility()
SetNamePlateVisibility()
SetChatBoxVisibility()
SetStickerVisibility()
SetItemVisibility()
etc.
  • In my opinion the second option offer better granularity of control and allows a more creative use.
Reason 1:
  • Currently if we need to hide a remote player without changing their actual position, we need to exploit a desync station to achieve this effect. Surely that is not the intended use of a station and is in fact a bug.
  • We should be allowed to modify a remote player's visibility with Udon, directly, without exploiting a bug.
  • Meanwhile, world creators can transition to this method, thus allowing the station bug be fixed without affecting worlds that utilize it. Arguably this feature is a prerequisite of eventually fixing the station.
Reason 2:
  • We can already control the audibility of a player, via
    SetVoiceDistanceFar
    etc.
  • Combining
    SetVisibility(false)
    with
    SetVoiceDistanceFar(0f)
    and
    SetAvatarAudioFarRadius(0f)
    you can make someone completely disappear. Or, alternatively, make someone invisible but can still be heard.