Started rework on the permissions panel.
This commit is contained in:
parent
d49fbdf827
commit
5f84efb6c7
@ -44,25 +44,25 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 3
|
||||
Data: 7
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: _ListContainer
|
||||
Data: PlayerData_Name
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 2|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: _ListContainer
|
||||
Data: PlayerData_Name
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 3|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: UnityEngine.RectTransform, UnityEngine.CoreModule
|
||||
Data: System.String[], mscorlib
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
@ -73,14 +73,14 @@ MonoBehaviour:
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
- Name:
|
||||
Entry: 6
|
||||
Data:
|
||||
Entry: 3
|
||||
Data: 1
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <IsSerialized>k__BackingField
|
||||
Entry: 5
|
||||
Data: true
|
||||
Data: false
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 4|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
@ -89,7 +89,7 @@ MonoBehaviour:
|
||||
Data: 1
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data: 5|UnityEngine.SerializeField, UnityEngine.CoreModule
|
||||
Data: 5|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
@ -110,19 +110,19 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: _PlayerItemTemplate
|
||||
Data: PlayerData_ID
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 6|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: _PlayerItemTemplate
|
||||
Data: PlayerData_ID
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 7|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: UnityEngine.GameObject, UnityEngine.CoreModule
|
||||
Data: System.Int32[], mscorlib
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
@ -133,14 +133,14 @@ MonoBehaviour:
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
- Name:
|
||||
Entry: 6
|
||||
Data:
|
||||
Entry: 3
|
||||
Data: 1
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <IsSerialized>k__BackingField
|
||||
Entry: 5
|
||||
Data: true
|
||||
Data: false
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 8|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
@ -149,7 +149,7 @@ MonoBehaviour:
|
||||
Data: 1
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data: 9|UnityEngine.SerializeField, UnityEngine.CoreModule
|
||||
Data: 9|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
@ -170,19 +170,19 @@ MonoBehaviour:
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: PlayerData
|
||||
Data: PlayerData_Admin
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 10|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: PlayerData
|
||||
Data: PlayerData_Admin
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 11|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: VRC.SDK3.Data.DataDictionary, VRCSDK3
|
||||
Data: System.Boolean[], mscorlib
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
@ -193,8 +193,8 @@ MonoBehaviour:
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
- Name:
|
||||
Entry: 6
|
||||
Data:
|
||||
Entry: 3
|
||||
Data: 1
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
@ -206,7 +206,241 @@ MonoBehaviour:
|
||||
Data: 12|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 0
|
||||
Data: 1
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data: 13|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: PlayerData_Host
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 14|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: PlayerData_Host
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 11
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 11
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
- Name:
|
||||
Entry: 3
|
||||
Data: 1
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <IsSerialized>k__BackingField
|
||||
Entry: 5
|
||||
Data: false
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 15|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 1
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data: 16|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: PlayerData_Camera
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 17|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: PlayerData_Camera
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 11
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 11
|
||||
- Name: <SyncMode>k__BackingField
|
||||
Entry: 7
|
||||
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
|
||||
- Name:
|
||||
Entry: 3
|
||||
Data: 1
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <IsSerialized>k__BackingField
|
||||
Entry: 5
|
||||
Data: false
|
||||
- Name: _fieldAttributes
|
||||
Entry: 7
|
||||
Data: 18|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 1
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data: 19|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: _ListContainer
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 20|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: _ListContainer
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 21|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: UnityEngine.RectTransform, UnityEngine.CoreModule
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 21
|
||||
- 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: 22|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 1
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data: 23|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: 7
|
||||
Data:
|
||||
- Name: $k
|
||||
Entry: 1
|
||||
Data: _PlayerItemTemplate
|
||||
- Name: $v
|
||||
Entry: 7
|
||||
Data: 24|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
|
||||
- Name: <Name>k__BackingField
|
||||
Entry: 1
|
||||
Data: _PlayerItemTemplate
|
||||
- Name: <UserType>k__BackingField
|
||||
Entry: 7
|
||||
Data: 25|System.RuntimeType, mscorlib
|
||||
- Name:
|
||||
Entry: 1
|
||||
Data: UnityEngine.GameObject, UnityEngine.CoreModule
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: <SystemType>k__BackingField
|
||||
Entry: 9
|
||||
Data: 25
|
||||
- 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: 26|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
|
||||
- Name:
|
||||
Entry: 12
|
||||
Data: 1
|
||||
- Name:
|
||||
Entry: 7
|
||||
Data: 27|UnityEngine.SerializeField, UnityEngine.CoreModule
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name:
|
||||
Entry: 13
|
||||
Data:
|
||||
|
||||
@ -3,57 +3,133 @@ using UdonSharp;
|
||||
using UnityEngine;
|
||||
using VRC.SDK3.Data;
|
||||
using VRC.SDKBase;
|
||||
using VRC.Udon.Common;
|
||||
|
||||
|
||||
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
|
||||
public class PermissionsPanel : UdonSharpBehaviour
|
||||
{
|
||||
[SerializeField] private RectTransform _ListContainer;
|
||||
[UdonSynced] private string[] PlayerData_Name = new string[MAX_PLAYERS_IN_LIST];
|
||||
[UdonSynced] private int[] PlayerData_ID = new int[MAX_PLAYERS_IN_LIST];
|
||||
[UdonSynced] private bool[] PlayerData_Admin = new bool[MAX_PLAYERS_IN_LIST];
|
||||
[UdonSynced] private bool[] PlayerData_Host = new bool[MAX_PLAYERS_IN_LIST];
|
||||
[UdonSynced] private bool[] PlayerData_Camera = new bool[MAX_PLAYERS_IN_LIST];
|
||||
|
||||
[SerializeField] private RectTransform _ListContainer;
|
||||
[SerializeField] private GameObject _PlayerItemTemplate;
|
||||
|
||||
private DataDictionary PlayerData = new DataDictionary();
|
||||
private const int MAX_PLAYERS_IN_LIST = 85;
|
||||
|
||||
|
||||
public override void OnPlayerJoined(VRCPlayerApi Player)
|
||||
{
|
||||
GameObject NewListItem = Instantiate<GameObject>(_PlayerItemTemplate, _ListContainer, false);
|
||||
NewListItem.SetActive(true);
|
||||
PermissionsPanelPlayerEntry PlayerListItem = NewListItem.GetComponent<PermissionsPanelPlayerEntry>();
|
||||
PlayerListItem.PlayerNameUI.text = Player.displayName;
|
||||
|
||||
PlayerData[Player.displayName] = new DataDictionary();
|
||||
PlayerData[Player.displayName].DataDictionary["Admin"] = Player.isInstanceOwner;
|
||||
PlayerData[Player.displayName].DataDictionary["Host"] = Player.isInstanceOwner;
|
||||
PlayerData[Player.displayName].DataDictionary["Camera"] = Player.isInstanceOwner;
|
||||
|
||||
if (Networking.LocalPlayer.isInstanceOwner)
|
||||
for (int i = 0; i < MAX_PLAYERS_IN_LIST; i++)
|
||||
{
|
||||
PlayerListItem.AdminToggle.interactable = true;
|
||||
PlayerListItem.HostToggle.interactable = true;
|
||||
PlayerListItem.CameraToggle.interactable = true;
|
||||
if (PlayerData_Name[i] == null)
|
||||
{
|
||||
PlayerData_Name[i] = Player.displayName;
|
||||
PlayerData_ID[i] = Player.playerId;
|
||||
|
||||
PlayerListItem.AdminToggle.SetIsOnWithoutNotify(true);
|
||||
PlayerListItem.HostToggle.SetIsOnWithoutNotify(true);
|
||||
PlayerListItem.CameraToggle.SetIsOnWithoutNotify(true);
|
||||
PlayerData_Admin[i] = (Player.isInstanceOwner || Player.isMaster);
|
||||
PlayerData_Host[i] = (Player.isInstanceOwner || Player.isMaster);
|
||||
PlayerData_Camera[i] = (Player.isInstanceOwner || Player.isMaster);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
RequestSerialization();
|
||||
|
||||
base.OnPlayerJoined(Player);
|
||||
}
|
||||
|
||||
public override void OnPlayerLeft(VRCPlayerApi player)
|
||||
public override void OnPlayerLeft(VRCPlayerApi Player)
|
||||
{
|
||||
for (int i = 0; i < MAX_PLAYERS_IN_LIST; i++)
|
||||
{
|
||||
if (PlayerData_Name[i] == Player.displayName)
|
||||
{
|
||||
PlayerData_Name[i] = null;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
string[] NewPlayerData_Name = new string[MAX_PLAYERS_IN_LIST];
|
||||
int[] NewPlayerData_ID = new int[MAX_PLAYERS_IN_LIST];
|
||||
bool[] NewPlayerData_Admin = new bool[MAX_PLAYERS_IN_LIST];
|
||||
bool[] NewPlayerData_Host = new bool[MAX_PLAYERS_IN_LIST];
|
||||
bool[] NewPlayerData_Camera = new bool[MAX_PLAYERS_IN_LIST];
|
||||
|
||||
for (int i = 0; i < MAX_PLAYERS_IN_LIST; i++)
|
||||
{
|
||||
for (int j = i; j < MAX_PLAYERS_IN_LIST; j++)
|
||||
{
|
||||
if (PlayerData_Name[j] != null)
|
||||
{
|
||||
NewPlayerData_Name[i] = PlayerData_Name[j];
|
||||
NewPlayerData_ID[i] = PlayerData_ID[j];
|
||||
NewPlayerData_Admin[i] = PlayerData_Admin[j];
|
||||
NewPlayerData_Host[i] = PlayerData_Host[j];
|
||||
NewPlayerData_Camera[i] = PlayerData_Camera[j];
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PlayerData_Name = NewPlayerData_Name;
|
||||
PlayerData_ID = NewPlayerData_ID;
|
||||
PlayerData_Admin = NewPlayerData_Admin;
|
||||
PlayerData_Host = NewPlayerData_Host;
|
||||
PlayerData_Camera = NewPlayerData_Camera;
|
||||
|
||||
RequestSerialization();
|
||||
|
||||
base.OnPlayerLeft(Player);
|
||||
}
|
||||
|
||||
public override void OnDeserialization(DeserializationResult Result)
|
||||
{
|
||||
base.OnDeserialization(Result);
|
||||
}
|
||||
|
||||
|
||||
public void PermissionsChanged()
|
||||
{
|
||||
for (int i = 0; i < _ListContainer.childCount; i++)
|
||||
{
|
||||
GameObject Entry = _ListContainer.GetChild(i).gameObject;
|
||||
PermissionsPanelPlayerEntry PlayerEntry = Entry.GetComponent<PermissionsPanelPlayerEntry>();
|
||||
if (PlayerEntry != null && PlayerEntry.PlayerNameUI.text == player.displayName)
|
||||
{
|
||||
Destroy(Entry);
|
||||
break;
|
||||
|
||||
PlayerData_Admin[i] = PlayerEntry.AdminToggle.isOn;
|
||||
PlayerData_Host[i] = PlayerEntry.HostToggle.isOn;
|
||||
PlayerData_Camera[i] = PlayerEntry.CameraToggle.isOn;
|
||||
}
|
||||
}
|
||||
|
||||
base.OnPlayerLeft(player);
|
||||
|
||||
private void RebuildPlayerList()
|
||||
{
|
||||
int CurrentListCount = _ListContainer.childCount;
|
||||
for (int i = 0; i < CurrentListCount; i++)
|
||||
{
|
||||
Destroy(_ListContainer.GetChild(CurrentListCount - i - 1).gameObject);
|
||||
}
|
||||
|
||||
for (int i = 0; i < VRCPlayerApi.GetPlayerCount(); i++)
|
||||
{
|
||||
GameObject NewListItem = Instantiate<GameObject>(_PlayerItemTemplate, _ListContainer, false);
|
||||
NewListItem.SetActive(true);
|
||||
PermissionsPanelPlayerEntry PlayerListItem = NewListItem.GetComponent<PermissionsPanelPlayerEntry>();
|
||||
PlayerListItem.PlayerNameUI.text = PlayerData_Name[i];
|
||||
|
||||
PlayerListItem.AdminToggle.SetIsOnWithoutNotify(PlayerData_Admin[i]);
|
||||
PlayerListItem.HostToggle.SetIsOnWithoutNotify(PlayerData_Host[i]);
|
||||
PlayerListItem.CameraToggle.SetIsOnWithoutNotify(PlayerData_Camera[i]);
|
||||
|
||||
PlayerListItem.AdminToggle.interactable = false;
|
||||
PlayerListItem.HostToggle.interactable = false;
|
||||
PlayerListItem.CameraToggle.interactable = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user