From b6921d760a0d6c56614453f91cdf5130e3a6b1b6 Mon Sep 17 00:00:00 2001 From: Jamie Greunbaum Date: Mon, 8 Dec 2025 15:56:05 -0500 Subject: [PATCH] Permissions Panel no longer adds duplicates into the player list on first load. --- .../Player Permissions/PermissionsPanel.cs | 44 +++++++++++-------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/Assets/UdonSharp/Player Permissions/PermissionsPanel.cs b/Assets/UdonSharp/Player Permissions/PermissionsPanel.cs index dab3442..b2d7ae7 100644 --- a/Assets/UdonSharp/Player Permissions/PermissionsPanel.cs +++ b/Assets/UdonSharp/Player Permissions/PermissionsPanel.cs @@ -26,7 +26,7 @@ public class PermissionsPanel : UdonSharpBehaviour [SerializeField] private UdonBehaviour[] _HostEventListeners = new UdonBehaviour[0]; [SerializeField] private UdonBehaviour[] _CameraEventListeners = new UdonBehaviour[0]; - private const int MAX_PLAYERS_IN_LIST = 100; + private const int MAX_PLAYERS_IN_LIST = 85; void Start() @@ -40,40 +40,46 @@ public class PermissionsPanel : UdonSharpBehaviour public override void OnPlayerJoined(VRCPlayerApi Player) { - for (int i = 0; i < PlayerData_Name.Length; i++) + if (Networking.LocalPlayer == Networking.GetOwner(gameObject)) { - if (PlayerData_Name[i] == null) + for (int i = 0; i < PlayerData_Name.Length; i++) { - PlayerData_Name[i] = Player.displayName; - PlayerData_ID[i] = Player.playerId; + if (PlayerData_Name[i] == null) + { + PlayerData_Name[i] = Player.displayName; + PlayerData_ID[i] = Player.playerId; - PlayerData_Admin[i] = (Player.isInstanceOwner || Player.isMaster); - PlayerData_Host[i] = (Player.isInstanceOwner || Player.isMaster); - PlayerData_Camera[i] = (Player.isInstanceOwner || Player.isMaster); + PlayerData_Admin[i] = (Player.isInstanceOwner || Player.isMaster); + PlayerData_Host[i] = (Player.isInstanceOwner || Player.isMaster); + PlayerData_Camera[i] = (Player.isInstanceOwner || Player.isMaster); - break; + break; + } } - } - RebuildPlayerList(); - RequestSerialization(); + RebuildPlayerList(); + RequestSerialization(); + } base.OnPlayerJoined(Player); } public override void OnPlayerLeft(VRCPlayerApi Player) { - for (int i = 0; i < PlayerData_Name.Length; i++) + if (Networking.LocalPlayer == Networking.GetOwner(gameObject)) { - if (PlayerData_Name[i] == Player.displayName) + for (int i = 0; i < PlayerData_Name.Length; i++) { - PlayerData_Name[i] = null; - break; + if (PlayerData_Name[i] == Player.displayName) + { + PlayerData_Name[i] = null; + break; + } } - } - RebuildPlayerList(); - RequestSerialization(); + RebuildPlayerList(); + RequestSerialization(); + } base.OnPlayerLeft(Player); }