Player permissions are functional, and properly enables and disables cameras.
This commit is contained in:
@@ -44,7 +44,7 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 7
|
||||
Data: 8
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
@@ -453,6 +453,72 @@ MonoBehaviour:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: CameraConsole
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 28|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: CameraConsole
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 29|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: CameraSystem.CameraSystem_Console, Assembly-CSharp
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 30|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: VRC.Udon.UdonBehaviour, VRC.Udon
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
- Name:
|
||||
Entry: 6
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <IsSerialized>k__BackingField
|
||||
Entry: 5
|
||||
Data: true
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 31|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 1
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data: 32|UnityEngine.SerializeField, UnityEngine.CoreModule
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
|
||||
using CameraSystem;
|
||||
using UdonSharp;
|
||||
using UnityEngine;
|
||||
using VRC.SDK3.Data;
|
||||
@@ -18,6 +19,8 @@ public class PermissionsPanel : UdonSharpBehaviour
|
||||
[SerializeField] private RectTransform _ListContainer;
|
||||
[SerializeField] private GameObject _PlayerItemTemplate;
|
||||
|
||||
[SerializeField] private CameraSystem_Console CameraConsole;
|
||||
|
||||
private const int MAX_PLAYERS_IN_LIST = 100;
|
||||
|
||||
|
||||
@@ -59,7 +62,7 @@ public class PermissionsPanel : UdonSharpBehaviour
|
||||
{
|
||||
if (PlayerData_Name[i] == Player.displayName)
|
||||
{
|
||||
Debug.Log("[PermissionsPanel] Found exiting player " + PlayerData_Name[i] + "on the list. Removing...");
|
||||
Debug.Log("[PermissionsPanel] Found exiting player " + PlayerData_Name[i] + " on the list. Removing...");
|
||||
PlayerData_Name[i] = null;
|
||||
Debug.Log("[PermissionsPanel] PlayerData_Name[" + i + "] now equals " + PlayerData_Name[i]);
|
||||
break;
|
||||
@@ -82,38 +85,133 @@ public class PermissionsPanel : UdonSharpBehaviour
|
||||
|
||||
public void PermissionsChanged()
|
||||
{
|
||||
Networking.SetOwner(Networking.LocalPlayer, gameObject);
|
||||
|
||||
for (int i = 0; i < PlayerData_Name.Length; i++)
|
||||
{
|
||||
GameObject Entry = _ListContainer.GetChild(i).gameObject;
|
||||
PermissionsPanelPlayerEntry PlayerEntry = Entry.GetComponent<PermissionsPanelPlayerEntry>();
|
||||
|
||||
PermissionsPanelPlayerEntry PlayerEntry = _ListContainer.GetChild(i).GetComponent<PermissionsPanelPlayerEntry>();
|
||||
PlayerData_Admin[i] = PlayerEntry.AdminToggle.isOn;
|
||||
PlayerData_Host[i] = PlayerEntry.HostToggle.isOn;
|
||||
PlayerData_Camera[i] = PlayerEntry.CameraToggle.isOn;
|
||||
}
|
||||
|
||||
RebuildPlayerList();
|
||||
RequestSerialization();
|
||||
}
|
||||
|
||||
|
||||
public string[] GetAdmins()
|
||||
{
|
||||
return GetListOfUsers(PlayerData_Admin);
|
||||
}
|
||||
|
||||
public string[] GetHosts()
|
||||
{
|
||||
return GetListOfUsers(PlayerData_Host);
|
||||
}
|
||||
|
||||
public string[] GetCameraOperators()
|
||||
{
|
||||
return GetListOfUsers(PlayerData_Camera);
|
||||
}
|
||||
|
||||
private string[] GetListOfUsers(bool[] ListToCheck)
|
||||
{
|
||||
string[] ListBig = new string[PlayerData_Name.Length];
|
||||
int Count = 0;
|
||||
for (int i = 0; i < PlayerData_Name.Length; i++)
|
||||
{
|
||||
if (PlayerData_Name[i] != null && ListToCheck[i])
|
||||
{
|
||||
ListBig[Count] = PlayerData_Name[i];
|
||||
Count++;
|
||||
}
|
||||
}
|
||||
|
||||
string[] List = new string[Count];
|
||||
Count = 0;
|
||||
while (ListBig[Count] != null)
|
||||
{
|
||||
List[Count] = ListBig[Count];
|
||||
Count++;
|
||||
}
|
||||
|
||||
return List;
|
||||
}
|
||||
|
||||
|
||||
public bool IsPlayerAdmin(VRCPlayerApi Player)
|
||||
{
|
||||
return IsPlayerAdmin(Player.displayName);
|
||||
}
|
||||
public bool IsPlayerAdmin(string PlayerName)
|
||||
{
|
||||
for (int i = 0; i < PlayerData_Name.Length; i++)
|
||||
{
|
||||
if (PlayerName == PlayerData_Name[i]) { return PlayerData_Admin[i]; }
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool IsPlayerHost(VRCPlayerApi Player)
|
||||
{
|
||||
return IsPlayerHost(Player.displayName);
|
||||
}
|
||||
public bool IsPlayerHost(string PlayerName)
|
||||
{
|
||||
for (int i = 0; i < PlayerData_Name.Length; i++)
|
||||
{
|
||||
if (PlayerName == PlayerData_Name[i]) { return PlayerData_Host[i]; }
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool IsPlayerCameraOperator(VRCPlayerApi Player)
|
||||
{
|
||||
return IsPlayerCameraOperator(Player.displayName);
|
||||
}
|
||||
public bool IsPlayerCameraOperator(string PlayerName)
|
||||
{
|
||||
for (int i = 0; i < PlayerData_Name.Length; i++)
|
||||
{
|
||||
if (PlayerName == PlayerData_Name[i]) { return PlayerData_Camera[i]; }
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
private void RebuildPlayerList()
|
||||
{
|
||||
Debug.Log("[PermissionsPanel] Rebuilding the player list...");
|
||||
|
||||
for (int i = 0; i < PlayerData_Name.Length; i++)
|
||||
{
|
||||
Debug.Log("[PermissionsPanel] PlayerData_Name[" + i + "] is " + PlayerData_Name[i]);
|
||||
|
||||
PermissionsPanelPlayerEntry PlayerListItem = _ListContainer.GetChild(i).GetComponent<PermissionsPanelPlayerEntry>();
|
||||
PlayerListItem.AdminToggle.interactable = false;
|
||||
PlayerListItem.HostToggle.interactable = false;
|
||||
PlayerListItem.CameraToggle.interactable = false;
|
||||
|
||||
if (PlayerData_Name[i] != null)
|
||||
{
|
||||
PlayerListItem.PlayerNameUI.text = PlayerData_Name[i];
|
||||
|
||||
if (PlayerData_Admin[i] != PlayerListItem.AdminToggle.isOn)
|
||||
{
|
||||
Debug.Log("[PermissionsPanel] " + PlayerData_Name[i] + " is " + (PlayerData_Admin[i] ? "now" : "no longer") + " an admin.");
|
||||
}
|
||||
PlayerListItem.AdminToggle.SetIsOnWithoutNotify(PlayerData_Admin[i]);
|
||||
PlayerListItem.HostToggle.SetIsOnWithoutNotify(PlayerData_Host[i]);
|
||||
PlayerListItem.CameraToggle.SetIsOnWithoutNotify(PlayerData_Camera[i]);
|
||||
|
||||
PlayerListItem.AdminToggle.interactable = (Networking.LocalPlayer.isInstanceOwner || Networking.LocalPlayer.isMaster);
|
||||
|
||||
if (PlayerData_Host[i] != PlayerListItem.HostToggle.isOn)
|
||||
{
|
||||
Debug.Log("[PermissionsPanel] " + PlayerData_Name[i] + " is " + (PlayerData_Host[i] ? "now" : "no longer") + " a host.");
|
||||
}
|
||||
PlayerListItem.HostToggle.SetIsOnWithoutNotify(PlayerData_Host[i]);
|
||||
PlayerListItem.HostToggle.interactable = (Networking.LocalPlayer.isInstanceOwner || Networking.LocalPlayer.isMaster);
|
||||
|
||||
if (PlayerData_Camera[i] != PlayerListItem.CameraToggle.isOn)
|
||||
{
|
||||
Debug.Log("[PermissionsPanel] " + PlayerData_Name[i] + " is " + (PlayerData_Camera[i] ? "now" : "no longer") + " a camera operator.");
|
||||
}
|
||||
PlayerListItem.CameraToggle.SetIsOnWithoutNotify(PlayerData_Camera[i]);
|
||||
PlayerListItem.CameraToggle.interactable = (Networking.LocalPlayer.isInstanceOwner || Networking.LocalPlayer.isMaster);
|
||||
|
||||
PlayerListItem.gameObject.SetActive(true);
|
||||
@@ -123,5 +221,40 @@ public class PermissionsPanel : UdonSharpBehaviour
|
||||
PlayerListItem.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
if (IsPlayerAdmin(Networking.LocalPlayer))
|
||||
{
|
||||
for (int i = 0; i < PlayerData_Name.Length; i++)
|
||||
{
|
||||
PermissionsPanelPlayerEntry PlayerListItem = _ListContainer.GetChild(i).GetComponent<PermissionsPanelPlayerEntry>();
|
||||
PlayerListItem.AdminToggle.interactable = true;
|
||||
PlayerListItem.HostToggle.interactable = true;
|
||||
PlayerListItem.CameraToggle.interactable = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (IsPlayerHost(Networking.LocalPlayer))
|
||||
{
|
||||
for (int i = 0; i < PlayerData_Name.Length; i++)
|
||||
{
|
||||
PermissionsPanelPlayerEntry PlayerListItem = _ListContainer.GetChild(i).GetComponent<PermissionsPanelPlayerEntry>();
|
||||
PlayerListItem.HostToggle.interactable = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (IsPlayerCameraOperator(Networking.LocalPlayer))
|
||||
{
|
||||
for (int i = 0; i < PlayerData_Name.Length; i++)
|
||||
{
|
||||
PermissionsPanelPlayerEntry PlayerListItem = _ListContainer.GetChild(i).GetComponent<PermissionsPanelPlayerEntry>();
|
||||
PlayerListItem.CameraToggle.interactable = true;
|
||||
}
|
||||
|
||||
CameraConsole.Authorize();
|
||||
}
|
||||
else
|
||||
{
|
||||
CameraConsole.Deauthorize();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user