Permissions Panel no longer adds duplicates into the player list on first load.

This commit is contained in:
Jamie Greunbaum 2025-12-08 15:56:05 -05:00
parent be83f3a0b2
commit b6921d760a

View File

@ -26,7 +26,7 @@ public class PermissionsPanel : UdonSharpBehaviour
[SerializeField] private UdonBehaviour[] _HostEventListeners = new UdonBehaviour[0]; [SerializeField] private UdonBehaviour[] _HostEventListeners = new UdonBehaviour[0];
[SerializeField] private UdonBehaviour[] _CameraEventListeners = 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() void Start()
@ -40,40 +40,46 @@ public class PermissionsPanel : UdonSharpBehaviour
public override void OnPlayerJoined(VRCPlayerApi Player) 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; if (PlayerData_Name[i] == null)
PlayerData_ID[i] = Player.playerId; {
PlayerData_Name[i] = Player.displayName;
PlayerData_ID[i] = Player.playerId;
PlayerData_Admin[i] = (Player.isInstanceOwner || Player.isMaster); PlayerData_Admin[i] = (Player.isInstanceOwner || Player.isMaster);
PlayerData_Host[i] = (Player.isInstanceOwner || Player.isMaster); PlayerData_Host[i] = (Player.isInstanceOwner || Player.isMaster);
PlayerData_Camera[i] = (Player.isInstanceOwner || Player.isMaster); PlayerData_Camera[i] = (Player.isInstanceOwner || Player.isMaster);
break; break;
}
} }
}
RebuildPlayerList(); RebuildPlayerList();
RequestSerialization(); RequestSerialization();
}
base.OnPlayerJoined(Player); base.OnPlayerJoined(Player);
} }
public override void OnPlayerLeft(VRCPlayerApi 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; if (PlayerData_Name[i] == Player.displayName)
break; {
PlayerData_Name[i] = null;
break;
}
} }
}
RebuildPlayerList(); RebuildPlayerList();
RequestSerialization(); RequestSerialization();
}
base.OnPlayerLeft(Player); base.OnPlayerLeft(Player);
} }