From 168d814ad93dafd2725b306a8064d08c440ee0aa Mon Sep 17 00:00:00 2001 From: Jamie Greunbaum Date: Sun, 7 Sep 2025 04:30:05 -0400 Subject: [PATCH] Player permissions are functional, and properly enables and disables cameras. --- Assets/Prefabs/Full Camera System.prefab | 4 +- .../Player View Template.prefab | 2 +- Assets/Scenes/witwics.unity | 113 ++++++++++--- .../Game Managers/GameManagerRound3.cs | 2 +- .../Player Permissions/PermissionsPanel.asset | 68 +++++++- .../Player Permissions/PermissionsPanel.cs | 155 ++++++++++++++++-- .../UtilityScripts/BoneFollower.asset | 2 +- .../UtilityScripts/InteractToggle.asset | 2 +- .../UtilityScripts/PlayerModSetter.asset | 2 +- .../Synced/GlobalToggleObject.asset | 2 +- .../Synced/MasterToggleObject.asset | 2 +- .../UtilityScripts/TrackingDataFollower.asset | 2 +- .../UtilityScripts/WorldAudioSettings.asset | 2 +- Assets/VRChatCameraSystem | 2 +- 14 files changed, 309 insertions(+), 51 deletions(-) diff --git a/Assets/Prefabs/Full Camera System.prefab b/Assets/Prefabs/Full Camera System.prefab index 79368a3..1a1f255 100644 --- a/Assets/Prefabs/Full Camera System.prefab +++ b/Assets/Prefabs/Full Camera System.prefab @@ -347,7 +347,7 @@ MonoBehaviour: m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine m_IntArgument: 0 m_FloatArgument: 0 - m_StringArgument: deauthorize + m_StringArgument: Deauthorize m_BoolArgument: 0 m_CallState: 2 --- !u!1 &3033213810001527052 @@ -737,7 +737,7 @@ MonoBehaviour: m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine m_IntArgument: 0 m_FloatArgument: 0 - m_StringArgument: authorize + m_StringArgument: Authorize m_BoolArgument: 0 m_CallState: 2 --- !u!1 &7128916910425769860 diff --git a/Assets/Prefabs/PlayerPermissions/Player View Template.prefab b/Assets/Prefabs/PlayerPermissions/Player View Template.prefab index cbcd09e..f9b79be 100644 --- a/Assets/Prefabs/PlayerPermissions/Player View Template.prefab +++ b/Assets/Prefabs/PlayerPermissions/Player View Template.prefab @@ -491,7 +491,7 @@ MonoBehaviour: m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_fontSize: 49 + m_fontSize: 32 m_fontSizeBase: 24 m_fontWeight: 400 m_enableAutoSizing: 1 diff --git a/Assets/Scenes/witwics.unity b/Assets/Scenes/witwics.unity index 37e4ea9..127f457 100644 --- a/Assets/Scenes/witwics.unity +++ b/Assets/Scenes/witwics.unity @@ -1485,7 +1485,7 @@ PrefabInstance: - target: {fileID: 8896942705519841538, guid: fac4aa7abd3ecbe44a9eaf7f05275244, type: 3} propertyPath: sleepFlag - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8896942705519841538, guid: fac4aa7abd3ecbe44a9eaf7f05275244, type: 3} @@ -13917,7 +13917,7 @@ PrefabInstance: - target: {fileID: 8896942705519841538, guid: fac4aa7abd3ecbe44a9eaf7f05275244, type: 3} propertyPath: sleepFlag - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8896942705519841538, guid: fac4aa7abd3ecbe44a9eaf7f05275244, type: 3} @@ -19461,7 +19461,7 @@ PrefabInstance: - target: {fileID: 8896942705519841538, guid: fac4aa7abd3ecbe44a9eaf7f05275244, type: 3} propertyPath: sleepFlag - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8896942705519841538, guid: fac4aa7abd3ecbe44a9eaf7f05275244, type: 3} @@ -25210,6 +25210,18 @@ GameObject: type: 3} m_PrefabInstance: {fileID: 1559839983} m_PrefabAsset: {fileID: 0} +--- !u!114 &674142362 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4677278074043053975, guid: 700c7675bc7fcf547a888725c3536e38, + type: 3} + m_PrefabInstance: {fileID: 1559839983} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 674142360} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a14cb14e50950304eab77b70f4649c38, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &678242348 stripped GameObject: m_CorrespondingSourceObject: {fileID: 2805056360774473063, guid: be33bc7f6c414e6409becfa348b9310d, @@ -29313,7 +29325,7 @@ PrefabInstance: - target: {fileID: 8896942705519841538, guid: fac4aa7abd3ecbe44a9eaf7f05275244, type: 3} propertyPath: sleepFlag - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8896942705519841538, guid: fac4aa7abd3ecbe44a9eaf7f05275244, type: 3} @@ -29705,6 +29717,7 @@ MonoBehaviour: _udonSharpBackingUdonBehaviour: {fileID: 824788961} _ListContainer: {fileID: 183058224} _PlayerItemTemplate: {fileID: 3611530376002209998} + CameraConsole: {fileID: 674142362} --- !u!65 &824788963 BoxCollider: m_ObjectHideFlags: 0 @@ -30830,7 +30843,7 @@ PrefabInstance: - target: {fileID: 8896942705519841538, guid: fac4aa7abd3ecbe44a9eaf7f05275244, type: 3} propertyPath: sleepFlag - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8896942705519841538, guid: fac4aa7abd3ecbe44a9eaf7f05275244, type: 3} @@ -42044,7 +42057,7 @@ PrefabInstance: - target: {fileID: 8896942705519841538, guid: fac4aa7abd3ecbe44a9eaf7f05275244, type: 3} propertyPath: sleepFlag - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 8896942705519841538, guid: fac4aa7abd3ecbe44a9eaf7f05275244, type: 3} @@ -56633,7 +56646,7 @@ PrefabInstance: - target: {fileID: 2291016102578546175, guid: 700c7675bc7fcf547a888725c3536e38, type: 3} propertyPath: m_LocalPosition.x - value: -11.01 + value: -0.07 objectReference: {fileID: 0} - target: {fileID: 2291016102578546175, guid: 700c7675bc7fcf547a888725c3536e38, type: 3} @@ -56643,22 +56656,22 @@ PrefabInstance: - target: {fileID: 2291016102578546175, guid: 700c7675bc7fcf547a888725c3536e38, type: 3} propertyPath: m_LocalPosition.z - value: -7.49 + value: -1.16 objectReference: {fileID: 0} - target: {fileID: 2291016102578546175, guid: 700c7675bc7fcf547a888725c3536e38, type: 3} propertyPath: m_LocalRotation.w - value: -0.9961946 + value: -0.7071068 objectReference: {fileID: 0} - target: {fileID: 2291016102578546175, guid: 700c7675bc7fcf547a888725c3536e38, type: 3} propertyPath: m_LocalRotation.x - value: -0 + value: 0 objectReference: {fileID: 0} - target: {fileID: 2291016102578546175, guid: 700c7675bc7fcf547a888725c3536e38, type: 3} propertyPath: m_LocalRotation.y - value: 0.08715705 + value: 0.7071068 objectReference: {fileID: 0} - target: {fileID: 2291016102578546175, guid: 700c7675bc7fcf547a888725c3536e38, type: 3} @@ -56673,7 +56686,7 @@ PrefabInstance: - target: {fileID: 2291016102578546175, guid: 700c7675bc7fcf547a888725c3536e38, type: 3} propertyPath: m_LocalEulerAnglesHint.y - value: 350 + value: 270 objectReference: {fileID: 0} - target: {fileID: 2291016102578546175, guid: 700c7675bc7fcf547a888725c3536e38, type: 3} @@ -56996,6 +57009,21 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.x value: -90 objectReference: {fileID: 0} + - target: {fileID: 3915007824167823394, guid: 700c7675bc7fcf547a888725c3536e38, + type: 3} + propertyPath: m_LocalPosition.x + value: 1.975 + objectReference: {fileID: 0} + - target: {fileID: 3915007824167823394, guid: 700c7675bc7fcf547a888725c3536e38, + type: 3} + propertyPath: m_LocalPosition.y + value: 1.778 + objectReference: {fileID: 0} + - target: {fileID: 3915007824167823394, guid: 700c7675bc7fcf547a888725c3536e38, + type: 3} + propertyPath: m_LocalPosition.z + value: 0.689 + objectReference: {fileID: 0} - target: {fileID: 4023205140265486406, guid: 700c7675bc7fcf547a888725c3536e38, type: 3} propertyPath: m_AnchorMax.y @@ -57058,6 +57086,21 @@ PrefabInstance: propertyPath: m_Layer value: 22 objectReference: {fileID: 0} + - target: {fileID: 4397686769689672985, guid: 700c7675bc7fcf547a888725c3536e38, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4397686769689672985, guid: 700c7675bc7fcf547a888725c3536e38, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4397686769689672985, guid: 700c7675bc7fcf547a888725c3536e38, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} - target: {fileID: 4414371088573257027, guid: 700c7675bc7fcf547a888725c3536e38, type: 3} propertyPath: m_AnchorMax.y @@ -57098,6 +57141,21 @@ PrefabInstance: propertyPath: m_ShowCustomSorter value: 0 objectReference: {fileID: 0} + - target: {fileID: 4661317834651903540, guid: 700c7675bc7fcf547a888725c3536e38, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4661317834651903540, guid: 700c7675bc7fcf547a888725c3536e38, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4661317834651903540, guid: 700c7675bc7fcf547a888725c3536e38, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0.535 + objectReference: {fileID: 0} - target: {fileID: 4677278074043053975, guid: 700c7675bc7fcf547a888725c3536e38, type: 3} propertyPath: serializationData.Prefab @@ -57330,7 +57388,7 @@ PrefabInstance: type: 3} propertyPath: m_Materials.Array.data[0] value: - objectReference: {fileID: 2100000, guid: b017bf045b817cf4cb3c1dde000fac19, type: 2} + objectReference: {fileID: 2100000, guid: 5a56ded101f363e46861c8fe1c4f360e, type: 2} - target: {fileID: 5279654634281865815, guid: 700c7675bc7fcf547a888725c3536e38, type: 3} propertyPath: m_Layer @@ -57799,6 +57857,7 @@ PrefabInstance: - {fileID: 4174641338678754265, guid: 700c7675bc7fcf547a888725c3536e38, type: 3} - {fileID: 6223380121855048231, guid: 700c7675bc7fcf547a888725c3536e38, type: 3} - {fileID: 8525479936919637482, guid: 700c7675bc7fcf547a888725c3536e38, type: 3} + - {fileID: 4385867836768625048, guid: 700c7675bc7fcf547a888725c3536e38, type: 3} m_AddedGameObjects: - targetCorrespondingSourceObject: {fileID: 495400204671463884, guid: 700c7675bc7fcf547a888725c3536e38, type: 3} @@ -79530,39 +79589,39 @@ MonoBehaviour: useAssignedLayers: 0 DynamicPrefabs: [] DynamicMaterials: - - {fileID: 2100000, guid: 0c3dfdcd7a2a6ac408ec3d431f9a4932, type: 2} - {fileID: 2100000, guid: 9cdc0250a4c9b534fae68ae6aa90bf31, type: 2} + - {fileID: 2100000, guid: dba163de40c568b48ae2ffa7c83c66b9, type: 2} - {fileID: 2100000, guid: af0c1cbaaffed304ba0e3a1fbac41e7e, type: 2} - {fileID: 2100000, guid: cc22c7f9de95cab4488b30fe8699a82a, type: 2} - {fileID: 2100000, guid: fe872fb72ad98da4dbb868481468e848, type: 2} - - {fileID: 2100000, guid: 80746b095abb6ce41a1c737df3649172, type: 2} - {fileID: 2100000, guid: 4fb0b8cdca56f5d47be970c7490cb7a1, type: 2} + - {fileID: 2100000, guid: 348ff3cc54305654d9eeebbbb385c262, type: 2} - {fileID: 2100000, guid: 82f2961c9baa48a45ac897be257fd655, type: 2} + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 2100000, guid: 0c3dfdcd7a2a6ac408ec3d431f9a4932, type: 2} - {fileID: 2100000, guid: 71fff76911e92ab43a71d15602da4c4b, type: 2} + - {fileID: 2100000, guid: 35c2a316ece610b4b963e047e5238337, type: 2} + - {fileID: 2100000, guid: 20b7b61cb65ead644a4959264fc90833, type: 2} + - {fileID: 2100000, guid: c1b531b2f1a7dab43b46daa7546cfda7, type: 2} - {fileID: 2100000, guid: accd304c49b7d6d43b97738e8e118342, type: 2} - {fileID: 2100000, guid: 2c0cd617d97924748a9d5e2eeb2039b5, type: 2} - - {fileID: 2100000, guid: 20b7b61cb65ead644a4959264fc90833, type: 2} - {fileID: 2100000, guid: 4c14b2f4b9a613f418bb1e6cf8cf68f4, type: 2} - {fileID: 2100000, guid: cf2685410a4f72447a34ea1791a70a1c, type: 2} - {fileID: 2100000, guid: c3186340e03d26341969d34663dbf8f3, type: 2} - - {fileID: 2100000, guid: e45d02bbf7268504ca58513c548a58e7, type: 2} - {fileID: 2100000, guid: 6dd6b8b1c8133f04dbc23ac81f5dfded, type: 2} - - {fileID: 2100000, guid: d1244b908a4cccd4397cc9cad45fe846, type: 2} - - {fileID: 2100000, guid: dba163de40c568b48ae2ffa7c83c66b9, type: 2} - - {fileID: 2100000, guid: c1b531b2f1a7dab43b46daa7546cfda7, type: 2} - {fileID: 2100000, guid: ea08301eace4f164bb3aae930413a978, type: 2} - {fileID: 2100000, guid: 97a375a2664a65f44a74b8e0711591fb, type: 2} - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} - - {fileID: 2100000, guid: 348ff3cc54305654d9eeebbbb385c262, type: 2} - {fileID: 2100000, guid: a793cd1d5fe89c440900d816c7b8c323, type: 2} - - {fileID: 2100000, guid: c10453b4aa0c864458b74f3797cb611e, type: 2} - - {fileID: 2100000, guid: 885429151ec5f6a4a926f6aaabd7e001, type: 2} - - {fileID: 2100000, guid: 672c36f6dbb36b5439cc0fdd2f74c531, type: 2} - - {fileID: 2100000, guid: 98166ed003d332e488319f662c3b4429, type: 2} - {fileID: 2100000, guid: cac39def7281c5c488b6a3465ec1951b, type: 2} + - {fileID: 2100000, guid: e45d02bbf7268504ca58513c548a58e7, type: 2} + - {fileID: 2100000, guid: 98166ed003d332e488319f662c3b4429, type: 2} + - {fileID: 2100000, guid: 672c36f6dbb36b5439cc0fdd2f74c531, type: 2} + - {fileID: 2100000, guid: 885429151ec5f6a4a926f6aaabd7e001, type: 2} - {fileID: 2100000, guid: bc5888e576e9cb34bab7b7af42d2b63f, type: 2} - {fileID: 2100000, guid: 332daba92d0976f4d86bdcdc1a94179e, type: 2} - - {fileID: 2100000, guid: 35c2a316ece610b4b963e047e5238337, type: 2} + - {fileID: 2100000, guid: d1244b908a4cccd4397cc9cad45fe846, type: 2} + - {fileID: 2100000, guid: 80746b095abb6ce41a1c737df3649172, type: 2} + - {fileID: 2100000, guid: c10453b4aa0c864458b74f3797cb611e, type: 2} - {fileID: 2100000, guid: cf9efbb6277ea2d4aa7d30bc9073915e, type: 2} LightMapsNear: [] LightMapsFar: [] diff --git a/Assets/UdonSharp/Game Managers/GameManagerRound3.cs b/Assets/UdonSharp/Game Managers/GameManagerRound3.cs index e295eae..3137fe6 100644 --- a/Assets/UdonSharp/Game Managers/GameManagerRound3.cs +++ b/Assets/UdonSharp/Game Managers/GameManagerRound3.cs @@ -349,7 +349,7 @@ public class GameManagerRound3 : GameManagerBase { HostCardBetweenRoundsInterface Interface = (HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments); - Interface.HeaderUI.text = "Rockin' it acapella"; + Interface.HeaderUI.text = "Rockin' it a capella"; Interface.CommentUI.text = ""; _AudioManager.SendCustomNetworkEvent(NetworkEventTarget.All, "FadeOutMusic"); diff --git a/Assets/UdonSharp/Player Permissions/PermissionsPanel.asset b/Assets/UdonSharp/Player Permissions/PermissionsPanel.asset index 6a7389b..1e821ae 100644 --- a/Assets/UdonSharp/Player Permissions/PermissionsPanel.asset +++ b/Assets/UdonSharp/Player Permissions/PermissionsPanel.asset @@ -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: k__BackingField + Entry: 1 + Data: CameraConsole + - Name: k__BackingField + Entry: 7 + Data: 29|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: CameraSystem.CameraSystem_Console, Assembly-CSharp + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 7 + Data: 30|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: VRC.Udon.UdonBehaviour, VRC.Udon + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 7 + Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib + - Name: + Entry: 6 + Data: + - Name: + Entry: 8 + Data: + - Name: 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: diff --git a/Assets/UdonSharp/Player Permissions/PermissionsPanel.cs b/Assets/UdonSharp/Player Permissions/PermissionsPanel.cs index e980258..4924d62 100644 --- a/Assets/UdonSharp/Player Permissions/PermissionsPanel.cs +++ b/Assets/UdonSharp/Player Permissions/PermissionsPanel.cs @@ -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 PlayerEntry = _ListContainer.GetChild(i).GetComponent(); 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(); + 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(); + 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(); + PlayerListItem.HostToggle.interactable = true; + } + } + + if (IsPlayerCameraOperator(Networking.LocalPlayer)) + { + for (int i = 0; i < PlayerData_Name.Length; i++) + { + PermissionsPanelPlayerEntry PlayerListItem = _ListContainer.GetChild(i).GetComponent(); + PlayerListItem.CameraToggle.interactable = true; + } + + CameraConsole.Authorize(); + } + else + { + CameraConsole.Deauthorize(); + } } } diff --git a/Assets/UdonSharp/UtilityScripts/BoneFollower.asset b/Assets/UdonSharp/UtilityScripts/BoneFollower.asset index 036a370..b946757 100644 --- a/Assets/UdonSharp/UtilityScripts/BoneFollower.asset +++ b/Assets/UdonSharp/UtilityScripts/BoneFollower.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3} m_Name: BoneFollower m_EditorClassIdentifier: - serializedUdonProgramAsset: {fileID: 11400000, guid: 52ecc8a73071e8e40928c3609699fcf4, + serializedUdonProgramAsset: {fileID: 11400000, guid: ccbda9bf23e2f714c9226283c77a92e5, type: 2} udonAssembly: assemblyError: diff --git a/Assets/UdonSharp/UtilityScripts/InteractToggle.asset b/Assets/UdonSharp/UtilityScripts/InteractToggle.asset index 13d78db..b35639e 100644 --- a/Assets/UdonSharp/UtilityScripts/InteractToggle.asset +++ b/Assets/UdonSharp/UtilityScripts/InteractToggle.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3} m_Name: InteractToggle m_EditorClassIdentifier: - serializedUdonProgramAsset: {fileID: 11400000, guid: 873dfce61b1514e429c92e0d2fded7de, + serializedUdonProgramAsset: {fileID: 11400000, guid: 405e38d3dfb2f514daeed0e28fbb4864, type: 2} udonAssembly: assemblyError: diff --git a/Assets/UdonSharp/UtilityScripts/PlayerModSetter.asset b/Assets/UdonSharp/UtilityScripts/PlayerModSetter.asset index d89a1a4..1def3de 100644 --- a/Assets/UdonSharp/UtilityScripts/PlayerModSetter.asset +++ b/Assets/UdonSharp/UtilityScripts/PlayerModSetter.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3} m_Name: PlayerModSetter m_EditorClassIdentifier: - serializedUdonProgramAsset: {fileID: 11400000, guid: e81558796a212ab4d88e305e2010f24b, + serializedUdonProgramAsset: {fileID: 11400000, guid: f938e6c4ff027a74da405a1f9353fd2b, type: 2} udonAssembly: assemblyError: diff --git a/Assets/UdonSharp/UtilityScripts/Synced/GlobalToggleObject.asset b/Assets/UdonSharp/UtilityScripts/Synced/GlobalToggleObject.asset index ea98aa4..8101274 100644 --- a/Assets/UdonSharp/UtilityScripts/Synced/GlobalToggleObject.asset +++ b/Assets/UdonSharp/UtilityScripts/Synced/GlobalToggleObject.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3} m_Name: GlobalToggleObject m_EditorClassIdentifier: - serializedUdonProgramAsset: {fileID: 11400000, guid: 2fe8ced6184000f49bca526cd2c5891c, + serializedUdonProgramAsset: {fileID: 11400000, guid: c49c9265a3ef24642a6a4465d0a78872, type: 2} udonAssembly: assemblyError: diff --git a/Assets/UdonSharp/UtilityScripts/Synced/MasterToggleObject.asset b/Assets/UdonSharp/UtilityScripts/Synced/MasterToggleObject.asset index b4b3ede..901d05e 100644 --- a/Assets/UdonSharp/UtilityScripts/Synced/MasterToggleObject.asset +++ b/Assets/UdonSharp/UtilityScripts/Synced/MasterToggleObject.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3} m_Name: MasterToggleObject m_EditorClassIdentifier: - serializedUdonProgramAsset: {fileID: 11400000, guid: a2d01d9f36ac6df49831be249e48ecc4, + serializedUdonProgramAsset: {fileID: 11400000, guid: 04024a76ab1924042ba521e11cb76d91, type: 2} udonAssembly: assemblyError: diff --git a/Assets/UdonSharp/UtilityScripts/TrackingDataFollower.asset b/Assets/UdonSharp/UtilityScripts/TrackingDataFollower.asset index c624599..da92932 100644 --- a/Assets/UdonSharp/UtilityScripts/TrackingDataFollower.asset +++ b/Assets/UdonSharp/UtilityScripts/TrackingDataFollower.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3} m_Name: TrackingDataFollower m_EditorClassIdentifier: - serializedUdonProgramAsset: {fileID: 11400000, guid: 1b89d4552983c0448a7389decec3b555, + serializedUdonProgramAsset: {fileID: 11400000, guid: 17f8fbbe6cc186d4f8dbb057b01a4ec2, type: 2} udonAssembly: assemblyError: diff --git a/Assets/UdonSharp/UtilityScripts/WorldAudioSettings.asset b/Assets/UdonSharp/UtilityScripts/WorldAudioSettings.asset index 5226f4f..ee4621f 100644 --- a/Assets/UdonSharp/UtilityScripts/WorldAudioSettings.asset +++ b/Assets/UdonSharp/UtilityScripts/WorldAudioSettings.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3} m_Name: WorldAudioSettings m_EditorClassIdentifier: - serializedUdonProgramAsset: {fileID: 11400000, guid: 994b559b0f158b4499f8937980ed8694, + serializedUdonProgramAsset: {fileID: 11400000, guid: 128d924a3066b7546b2d1c73e61006ab, type: 2} udonAssembly: assemblyError: diff --git a/Assets/VRChatCameraSystem b/Assets/VRChatCameraSystem index 1a4dbb6..44c331e 160000 --- a/Assets/VRChatCameraSystem +++ b/Assets/VRChatCameraSystem @@ -1 +1 @@ -Subproject commit 1a4dbb6e40ff5378499fe1b06c8cba48e1430618 +Subproject commit 44c331eb27ed8135280479e24ddf2f035e352b07