Jamie Greunbaum cfd9defc1f - Audience silencer implemented, and only enabled for first two rounds.
- Host teleport button enables on case load/respawn, and disables on teleport.
- Videos no longer infinitely retry loading.
- Improved lightmapping quality.
- Removed kernelsCache folder from index.
2025-09-05 17:57:45 -04:00

70 lines
1.6 KiB
C#

using System;
using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
[UdonBehaviourSyncMode(BehaviourSyncMode.NoVariableSync)]
public class Microphone : UdonSharpBehaviour
{
[SerializeField] private float _MikedVoiceDistanceNear = 30.0f;
[SerializeField] private float _MikedVoiceDistanceFar = 60.0f;
private VRCPlayerApi[] _EnteredPlayers = new VRCPlayerApi[MAX_PLAYERS];
private const float DEFAULT_VOICE_DISTANCE_NEAR = 0.0f;
private const float DEFAULT_VOICE_DISTANCE_FAR = 25.0f;
private const int MAX_PLAYERS = 100;
public override void OnPlayerTriggerEnter(VRCPlayerApi Player)
{
Player.SetVoiceDistanceNear(_MikedVoiceDistanceNear);
Player.SetVoiceDistanceFar(_MikedVoiceDistanceFar);
for (int i = 0; i < _EnteredPlayers.Length; i++)
{
if (_EnteredPlayers[i] == null)
{
_EnteredPlayers[i] = Player;
break;
}
}
base.OnPlayerTriggerEnter(Player);
}
public override void OnPlayerTriggerExit(VRCPlayerApi Player)
{
Player.SetVoiceDistanceNear(DEFAULT_VOICE_DISTANCE_NEAR);
Player.SetVoiceDistanceFar(DEFAULT_VOICE_DISTANCE_FAR);
for (int i = 0; i < _EnteredPlayers.Length; i++)
{
if (_EnteredPlayers[i] == Player)
{
_EnteredPlayers[i] = null;
break;
}
}
base.OnPlayerTriggerExit(Player);
}
public void OnDisable()
{
for (int i = 0; i < _EnteredPlayers.Length; i++)
{
if (_EnteredPlayers[i] != null && _EnteredPlayers[i].IsValid())
{
_EnteredPlayers[i].SetVoiceDistanceNear(DEFAULT_VOICE_DISTANCE_NEAR);
_EnteredPlayers[i].SetVoiceDistanceFar(DEFAULT_VOICE_DISTANCE_FAR);
}
_EnteredPlayers[i] = null;
}
}
}