diff --git a/!Prefabs & Examples/!VRCBoardManager.prefab b/!Prefabs & Examples/!VRCBoardManager.prefab index 6b79a42..5c836d1 100644 --- a/!Prefabs & Examples/!VRCBoardManager.prefab +++ b/!Prefabs & Examples/!VRCBoardManager.prefab @@ -46,7 +46,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: serializationData: - SerializedFormat: 0 + SerializedFormat: 2 SerializedBytes: ReferencedUnityObjects: [] SerializedBytesString: @@ -55,6 +55,7 @@ MonoBehaviour: PrefabModifications: [] SerializationNodes: [] _udonSharpBackingUdonBehaviour: {fileID: 1195327852248355995} + debugMode: 1 vrcBoardDomain: mydomain.vrcboard.app periodicUpdateInterval: 60 atlasUrlCount: 100 @@ -186,7 +187,7 @@ MonoBehaviour: AllowCollisionOwnershipTransfer: 0 Reliable: 0 _syncMethod: 0 - serializedProgramAsset: {fileID: 11400000, guid: f9597e921c7b6ed43b9c0e546b52af81, + serializedProgramAsset: {fileID: 11400000, guid: d4ffc934acd43fc4b8cb40f7f16ab93b, type: 2} programSource: {fileID: 11400000, guid: c4183376def25d24a8d2963d59ac2cd2, type: 2} serializedPublicVariablesBytesString: Ai8AAAAAATIAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAFQAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AAAAAAAYBAAAAAAAAACcBBAAAAHQAeQBwAGUAAWgAAABTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEcAZQBuAGUAcgBpAGMALgBMAGkAcwB0AGAAMQBbAFsAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBJAG4AdABlAHIAZgBhAGMAZQBzAC4ASQBVAGQAbwBuAFYAYQByAGkAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AXQBdACwAIABtAHMAYwBvAHIAbABpAGIAAQEJAAAAVgBhAHIAaQBhAGIAbABlAHMALwEAAAABaAAAAFMAeQBzAHQAZQBtAC4AQwBvAGwAbABlAGMAdABpAG8AbgBzAC4ARwBlAG4AZQByAGkAYwAuAEwAaQBzAHQAYAAxAFsAWwBWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAEkAbgB0AGUAcgBmAGEAYwBlAHMALgBJAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgABAAAABgEAAAAAAAAAAi8CAAAAAUkAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAGAAMQBbAFsAUwB5AHMAdABlAG0ALgBJAG4AdAAzADIALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAAIAAAAGAgAAAAAAAAAnAQQAAAB0AHkAcABlAAEXAAAAUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwAsACAAbQBzAGMAbwByAGwAaQBiACcBCgAAAFMAeQBtAGIAbwBsAE4AYQBtAGUAAR8AAABfAF8AXwBVAGQAbwBuAFMAaABhAHIAcABCAGUAaABhAHYAaQBvAHUAcgBWAGUAcgBzAGkAbwBuAF8AXwBfACcBBAAAAHQAeQBwAGUAARYAAABTAHkAcwB0AGUAbQAuAEkAbgB0ADMAMgAsACAAbQBzAGMAbwByAGwAaQBiABcBBQAAAFYAYQBsAHUAZQACAAAABwUHBQcF diff --git a/!Prefabs & Examples/ImagePoster.prefab b/!Prefabs & Examples/ImagePoster.prefab index ca667da..e3897bd 100644 --- a/!Prefabs & Examples/ImagePoster.prefab +++ b/!Prefabs & Examples/ImagePoster.prefab @@ -136,7 +136,7 @@ MonoBehaviour: AllowCollisionOwnershipTransfer: 0 Reliable: 0 _syncMethod: 1 - serializedProgramAsset: {fileID: 11400000, guid: 19ae0697d87c22c40b5eceb361997922, + serializedProgramAsset: {fileID: 11400000, guid: 32cf8d0597898494cbc98c3c876c73e3, type: 2} programSource: {fileID: 11400000, guid: ac7f998a74898ea4ead01ba49e49e658, type: 2} serializedPublicVariablesBytesString: Ai8AAAAAATIAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAFQAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AAAAAAAYBAAAAAAAAACcBBAAAAHQAeQBwAGUAAWgAAABTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEcAZQBuAGUAcgBpAGMALgBMAGkAcwB0AGAAMQBbAFsAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBJAG4AdABlAHIAZgBhAGMAZQBzAC4ASQBVAGQAbwBuAFYAYQByAGkAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AXQBdACwAIABtAHMAYwBvAHIAbABpAGIAAQEJAAAAVgBhAHIAaQBhAGIAbABlAHMALwEAAAABaAAAAFMAeQBzAHQAZQBtAC4AQwBvAGwAbABlAGMAdABpAG8AbgBzAC4ARwBlAG4AZQByAGkAYwAuAEwAaQBzAHQAYAAxAFsAWwBWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAEkAbgB0AGUAcgBmAGEAYwBlAHMALgBJAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgABAAAABgEAAAAAAAAAAi8CAAAAAUkAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAGAAMQBbAFsAUwB5AHMAdABlAG0ALgBJAG4AdAAzADIALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAAIAAAAGAgAAAAAAAAAnAQQAAAB0AHkAcABlAAEXAAAAUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwAsACAAbQBzAGMAbwByAGwAaQBiACcBCgAAAFMAeQBtAGIAbwBsAE4AYQBtAGUAAR8AAABfAF8AXwBVAGQAbwBuAFMAaABhAHIAcABCAGUAaABhAHYAaQBvAHUAcgBWAGUAcgBzAGkAbwBuAF8AXwBfACcBBAAAAHQAeQBwAGUAARYAAABTAHkAcwB0AGUAbQAuAEkAbgB0ADMAMgAsACAAbQBzAGMAbwByAGwAaQBiABcBBQAAAFYAYQBsAHUAZQACAAAABwUHBQcF diff --git a/!Prefabs & Examples/ImagePosterBasic.prefab b/!Prefabs & Examples/ImagePosterBasic.prefab index a274b73..df39b3e 100644 --- a/!Prefabs & Examples/ImagePosterBasic.prefab +++ b/!Prefabs & Examples/ImagePosterBasic.prefab @@ -138,7 +138,7 @@ MonoBehaviour: AllowCollisionOwnershipTransfer: 0 Reliable: 0 _syncMethod: 1 - serializedProgramAsset: {fileID: 11400000, guid: 7111a5f4b78f7a94fb3d6ae9aef3b9d4, + serializedProgramAsset: {fileID: 11400000, guid: d1ddff36e693dc44c9be01aca0c91ed0, type: 2} programSource: {fileID: 11400000, guid: 5ca3673014ba8e84cbd28b03627eac47, type: 2} serializedPublicVariablesBytesString: Ai8AAAAAATIAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAFQAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AAAAAAAYBAAAAAAAAACcBBAAAAHQAeQBwAGUAAWgAAABTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEcAZQBuAGUAcgBpAGMALgBMAGkAcwB0AGAAMQBbAFsAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBJAG4AdABlAHIAZgBhAGMAZQBzAC4ASQBVAGQAbwBuAFYAYQByAGkAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AXQBdACwAIABtAHMAYwBvAHIAbABpAGIAAQEJAAAAVgBhAHIAaQBhAGIAbABlAHMALwEAAAABaAAAAFMAeQBzAHQAZQBtAC4AQwBvAGwAbABlAGMAdABpAG8AbgBzAC4ARwBlAG4AZQByAGkAYwAuAEwAaQBzAHQAYAAxAFsAWwBWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAEkAbgB0AGUAcgBmAGEAYwBlAHMALgBJAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgABAAAABgEAAAAAAAAAAi8CAAAAAUkAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAGAAMQBbAFsAUwB5AHMAdABlAG0ALgBJAG4AdAAzADIALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAAIAAAAGAgAAAAAAAAAnAQQAAAB0AHkAcABlAAEXAAAAUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwAsACAAbQBzAGMAbwByAGwAaQBiACcBCgAAAFMAeQBtAGIAbwBsAE4AYQBtAGUAAR8AAABfAF8AXwBVAGQAbwBuAFMAaABhAHIAcABCAGUAaABhAHYAaQBvAHUAcgBWAGUAcgBzAGkAbwBuAF8AXwBfACcBBAAAAHQAeQBwAGUAARYAAABTAHkAcwB0AGUAbQAuAEkAbgB0ADMAMgAsACAAbQBzAGMAbwByAGwAaQBiABcBBQAAAFYAYQBsAHUAZQACAAAABwUHBQcF diff --git a/!Prefabs & Examples/Materials.meta b/!Prefabs & Examples/Materials.meta new file mode 100644 index 0000000..2f0e807 --- /dev/null +++ b/!Prefabs & Examples/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c3374d73a47905046b0437a022971024 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/!Prefabs & Examples/Materials/Trail.mat b/!Prefabs & Examples/Materials/Trail.mat new file mode 100644 index 0000000..c81947f --- /dev/null +++ b/!Prefabs & Examples/Materials/Trail.mat @@ -0,0 +1,84 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Trail + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: + - _EMISSION + m_InvalidKeywords: [] + m_LightmapFlags: 2 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0.01027944, g: 0.7264151, b: 0.69064385, a: 1} + m_BuildTextureStacks: [] diff --git a/!Prefabs & Examples/Materials/Trail.mat.meta b/!Prefabs & Examples/Materials/Trail.mat.meta new file mode 100644 index 0000000..790a28e --- /dev/null +++ b/!Prefabs & Examples/Materials/Trail.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 36a1e61f7b79b9a45afefda8ed660c06 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/!Prefabs & Examples/SupporterBoardTMP.prefab b/!Prefabs & Examples/SupporterBoardTMP.prefab index e6860f4..0db6f14 100644 --- a/!Prefabs & Examples/SupporterBoardTMP.prefab +++ b/!Prefabs & Examples/SupporterBoardTMP.prefab @@ -258,7 +258,7 @@ MonoBehaviour: AllowCollisionOwnershipTransfer: 0 Reliable: 0 _syncMethod: 1 - serializedProgramAsset: {fileID: 11400000, guid: e758930ddabc47d499d718189a2787b5, + serializedProgramAsset: {fileID: 11400000, guid: 3401459dfca037648911c85bdb5cf560, type: 2} programSource: {fileID: 11400000, guid: 486db5f9f0a8ce345a26bc8587a216a2, type: 2} serializedPublicVariablesBytesString: Ai8AAAAAATIAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAFQAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AAAAAAAYBAAAAAAAAACcBBAAAAHQAeQBwAGUAAWgAAABTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEcAZQBuAGUAcgBpAGMALgBMAGkAcwB0AGAAMQBbAFsAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBJAG4AdABlAHIAZgBhAGMAZQBzAC4ASQBVAGQAbwBuAFYAYQByAGkAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AXQBdACwAIABtAHMAYwBvAHIAbABpAGIAAQEJAAAAVgBhAHIAaQBhAGIAbABlAHMALwEAAAABaAAAAFMAeQBzAHQAZQBtAC4AQwBvAGwAbABlAGMAdABpAG8AbgBzAC4ARwBlAG4AZQByAGkAYwAuAEwAaQBzAHQAYAAxAFsAWwBWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAEkAbgB0AGUAcgBmAGEAYwBlAHMALgBJAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgABAAAABgEAAAAAAAAAAi8CAAAAAUkAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAGAAMQBbAFsAUwB5AHMAdABlAG0ALgBJAG4AdAAzADIALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAAIAAAAGAgAAAAAAAAAnAQQAAAB0AHkAcABlAAEXAAAAUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwAsACAAbQBzAGMAbwByAGwAaQBiACcBCgAAAFMAeQBtAGIAbwBsAE4AYQBtAGUAAR8AAABfAF8AXwBVAGQAbwBuAFMAaABhAHIAcABCAGUAaABhAHYAaQBvAHUAcgBWAGUAcgBzAGkAbwBuAF8AXwBfACcBBAAAAHQAeQBwAGUAARYAAABTAHkAcwB0AGUAbQAuAEkAbgB0ADMAMgAsACAAbQBzAGMAbwByAGwAaQBiABcBBQAAAFYAYQBsAHUAZQACAAAABwUHBQcF diff --git a/Components/VRCBoardBaseComponent.cs b/Components/VRCBoardBaseComponent.cs index 27c98f8..3bcc3a6 100644 --- a/Components/VRCBoardBaseComponent.cs +++ b/Components/VRCBoardBaseComponent.cs @@ -8,6 +8,14 @@ using UnityEditor; namespace VRCBoard.Components { + /* + protected override void OnRegister() {} + protected override void OnInitialize() {} + protected override void OnSupporterDataUpdate() {} + protected override void OnImageDataUpdate() {} + protected override void OnImageLoaded() {} + */ + [UdonBehaviourSyncMode(BehaviourSyncMode.None)] public abstract class VRCBoardBaseComponent : UdonSharpBehaviour { @@ -57,6 +65,11 @@ namespace VRCBoard.Components CheckInitialization(); } } + + protected internal void _OnCustomModuleUpdate(int moduleIndex, DataDictionary data) + { + Debug.Log("Custom module update"); + } protected internal void _OnAtlasImageLoaded(int atlasIndex = -1) { diff --git a/Components/VRCBoardImage.asset b/Components/VRCBoardImage.asset index 70eb87d..6cacc1c 100644 --- a/Components/VRCBoardImage.asset +++ b/Components/VRCBoardImage.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3} m_Name: VRCBoardImage m_EditorClassIdentifier: - serializedUdonProgramAsset: {fileID: 11400000, guid: 32cf8d0597898494cbc98c3c876c73e3, + serializedUdonProgramAsset: {fileID: 11400000, guid: f83f88ce349d298438a783df6b33c10f, type: 2} udonAssembly: assemblyError: diff --git a/Components/VRCBoardImage.cs b/Components/VRCBoardImage.cs index f9733e6..ab6e549 100644 --- a/Components/VRCBoardImage.cs +++ b/Components/VRCBoardImage.cs @@ -59,7 +59,7 @@ namespace VRCBoard.Components } else { - DataDictionary ownerInfo = manager.GetSupporterDataFromPlayer(manager.instanceOwner); + DataDictionary ownerInfo = manager.GetSupporterDataFromPlayer(manager.InstanceOwner); if (ownerInfo == null) { Debug.LogWarning("Failed to get owner info, user has likely not linked their account."); diff --git a/Components/VRCBoardImageBasic.asset b/Components/VRCBoardImageBasic.asset index 084d9af..9e4f980 100644 --- a/Components/VRCBoardImageBasic.asset +++ b/Components/VRCBoardImageBasic.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3} m_Name: VRCBoardImageBasic m_EditorClassIdentifier: - serializedUdonProgramAsset: {fileID: 11400000, guid: d1ddff36e693dc44c9be01aca0c91ed0, + serializedUdonProgramAsset: {fileID: 11400000, guid: dfe93a97c46c4cf4c95cfe80dcaa0d3e, type: 2} udonAssembly: assemblyError: diff --git a/Components/VRCBoardImageBasic.cs b/Components/VRCBoardImageBasic.cs index b8cf56a..bfbf386 100644 --- a/Components/VRCBoardImageBasic.cs +++ b/Components/VRCBoardImageBasic.cs @@ -74,7 +74,7 @@ namespace VRCBoard.Components } else { - DataDictionary ownerInfo = manager.GetSupporterDataFromPlayer(manager.instanceOwner); + DataDictionary ownerInfo = manager.GetSupporterDataFromPlayer(manager.InstanceOwner); if (ownerInfo == null) { Debug.LogWarning("Failed to get owner info, user has likely not linked their account."); diff --git a/Components/VRCBoardOverheadIcons.asset b/Components/VRCBoardOverheadIcons.asset new file mode 100644 index 0000000..833a4ed --- /dev/null +++ b/Components/VRCBoardOverheadIcons.asset @@ -0,0 +1,641 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3} + m_Name: VRCBoardOverheadIcons + m_EditorClassIdentifier: + serializedUdonProgramAsset: {fileID: 11400000, guid: 4d130d8e384312146b0f690571220be5, + type: 2} + udonAssembly: + assemblyError: + sourceCsScript: {fileID: 11500000, guid: 390a3a2e54582c843b95c9f2b53c8131, type: 3} + scriptVersion: 2 + compiledVersion: 2 + behaviourSyncMode: 1 + hasInteractEvent: 0 + scriptID: -5697409913467428907 + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: + - Name: fieldDefinitions + Entry: 7 + Data: 0|System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[UdonSharp.Compiler.FieldDefinition, + UdonSharp.Editor]], mscorlib + - Name: comparer + Entry: 7 + Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.String, + mscorlib]], mscorlib + - Name: + Entry: 8 + Data: + - Name: + Entry: 12 + Data: 11 + - Name: + Entry: 7 + Data: + - Name: $k + Entry: 1 + Data: manager + - Name: $v + Entry: 7 + Data: 2|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: manager + - Name: k__BackingField + Entry: 7 + Data: 3|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: VRCBoard.VRCBoardManager, Assembly-CSharp + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 7 + Data: 4|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: 5|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 1 + - Name: + Entry: 7 + Data: 6|UnityEngine.HideInInspector, 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: _imageInitialized + - Name: $v + Entry: 7 + Data: 7|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _imageInitialized + - Name: k__BackingField + Entry: 7 + Data: 8|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: System.Boolean, mscorlib + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 8 + - 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: false + - Name: _fieldAttributes + Entry: 7 + Data: 9|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - 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: _dataInitialized + - Name: $v + Entry: 7 + Data: 10|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _dataInitialized + - Name: k__BackingField + Entry: 9 + Data: 8 + - Name: k__BackingField + Entry: 9 + Data: 8 + - 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: false + - Name: _fieldAttributes + Entry: 7 + Data: 11|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - 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: _initialized + - Name: $v + Entry: 7 + Data: 12|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _initialized + - Name: k__BackingField + Entry: 9 + Data: 8 + - Name: k__BackingField + Entry: 9 + Data: 8 + - 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: false + - Name: _fieldAttributes + Entry: 7 + Data: 13|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - 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: icons + - Name: $v + Entry: 7 + Data: 14|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: icons + - Name: k__BackingField + Entry: 7 + Data: 15|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: UnityEngine.Texture2D[], UnityEngine.CoreModule + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 15 + - 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: 16|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - 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: requiredTags + - Name: $v + Entry: 7 + Data: 17|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: requiredTags + - Name: k__BackingField + Entry: 7 + Data: 18|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: System.String[], mscorlib + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 18 + - 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: 19|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - 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: follower + - Name: $v + Entry: 7 + Data: 20|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: follower + - Name: k__BackingField + Entry: 7 + Data: 21|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: UnityEngine.Transform, UnityEngine.CoreModule + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 21 + - 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: 22|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - 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: _owner + - Name: $v + Entry: 7 + Data: 23|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _owner + - Name: k__BackingField + Entry: 7 + Data: 24|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: VRC.SDKBase.VRCPlayerApi, VRCSDKBase + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 24 + - 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: false + - Name: _fieldAttributes + Entry: 7 + Data: 25|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - 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: _iconForPlayer + - Name: $v + Entry: 7 + Data: 26|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _iconForPlayer + - Name: k__BackingField + Entry: 7 + Data: 27|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: UnityEngine.Texture2D, UnityEngine.CoreModule + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 27 + - 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: false + - Name: _fieldAttributes + Entry: 7 + Data: 28|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - 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: _active + - Name: $v + Entry: 7 + Data: 29|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _active + - Name: k__BackingField + Entry: 9 + Data: 8 + - Name: k__BackingField + Entry: 9 + Data: 8 + - 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: false + - Name: _fieldAttributes + Entry: 7 + Data: 30|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - 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: _iconOffset + - Name: $v + Entry: 7 + Data: 31|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _iconOffset + - Name: k__BackingField + Entry: 7 + Data: 32|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: UnityEngine.Vector3, UnityEngine.CoreModule + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 32 + - 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: false + - Name: _fieldAttributes + Entry: 7 + Data: 33|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 8 + Data: + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: diff --git a/Components/VRCBoardOverheadIcons.asset.meta b/Components/VRCBoardOverheadIcons.asset.meta new file mode 100644 index 0000000..ca67c00 --- /dev/null +++ b/Components/VRCBoardOverheadIcons.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fb42e76a96bbe5a409deb5e5993bb03e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Components/VRCBoardOverheadIcons.cs b/Components/VRCBoardOverheadIcons.cs new file mode 100644 index 0000000..6fb5f69 --- /dev/null +++ b/Components/VRCBoardOverheadIcons.cs @@ -0,0 +1,73 @@ + +using UdonSharp; +using UnityEngine; +using VRC.SDKBase; +using VRC.Udon; + +namespace VRCBoard.Components +{ + public class VRCBoardOverheadIcons : VRCBoardBaseComponent { + public Texture2D[] icons; + public string[] requiredTags; + public Transform follower; + private bool ArrayContains(string[] array, string value) + { + foreach (string s in array) + { + if (s == value) return true; + } + return false; + } + + private VRCPlayerApi _owner; + protected override void OnRegister() {} + + protected override void OnInitialize() + { + UpdateIcon(); + } + + protected override void OnSupporterDataUpdate() + { + UpdateIcon(); + } + protected override void OnImageDataUpdate() {} + protected override void OnImageLoaded() {} + + private Texture2D _iconForPlayer; + private bool _active = false; + private readonly Vector3 _iconOffset = new Vector3(0, 1.5f, 0); + + void UpdateIcon() + { + Debug.Log("Updating icon"); + _active = (_owner != null && _owner.IsValid()); + Debug.Log("Owner is valid: " + _active); + if (!_active) return; + string[] tags = manager.GetPlayerTags(_owner.displayName); + for (int i = 0; i < requiredTags.Length; i++) + { + if (ArrayContains(tags, requiredTags[i])) + { + _iconForPlayer = icons[i]; + Debug.Log("Found tag " + requiredTags[i] + " for player " + _owner.displayName); + return; + } + } + } + + void Start() + { + _owner = Networking.GetOwner(gameObject); + } + + void Update() + { + //Debug.Log(_active); + if (_owner == null) return; + Vector3 headPos = _owner.GetBonePosition(HumanBodyBones.Head); + Vector3 iconPos = headPos + _iconOffset; + follower.position = iconPos; + } + } +} diff --git a/Components/VRCBoardOverheadIcons.cs.meta b/Components/VRCBoardOverheadIcons.cs.meta new file mode 100644 index 0000000..f97504b --- /dev/null +++ b/Components/VRCBoardOverheadIcons.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 390a3a2e54582c843b95c9f2b53c8131 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Components/VRCBoardSupporterBoardTMP.asset b/Components/VRCBoardSupporterBoardTMP.asset index 7eee8bb..6752d81 100644 --- a/Components/VRCBoardSupporterBoardTMP.asset +++ b/Components/VRCBoardSupporterBoardTMP.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3} m_Name: VRCBoardSupporterBoardTMP m_EditorClassIdentifier: - serializedUdonProgramAsset: {fileID: 11400000, guid: 3401459dfca037648911c85bdb5cf560, + serializedUdonProgramAsset: {fileID: 11400000, guid: e758930ddabc47d499d718189a2787b5, type: 2} udonAssembly: assemblyError: diff --git a/VRCBoardManager.asset b/VRCBoardManager.asset index 1c4e07b..2c0a66f 100644 --- a/VRCBoardManager.asset +++ b/VRCBoardManager.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3} m_Name: VRCBoardManager m_EditorClassIdentifier: - serializedUdonProgramAsset: {fileID: 11400000, guid: d4ffc934acd43fc4b8cb40f7f16ab93b, + serializedUdonProgramAsset: {fileID: 11400000, guid: b0a3201f714d46b4cbdb27ef08a99c58, type: 2} udonAssembly: assemblyError: @@ -44,7 +44,7 @@ MonoBehaviour: Data: - Name: Entry: 12 - Data: 23 + Data: 25 - Name: Entry: 7 Data: @@ -590,19 +590,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: atlasInfoUrl + Data: customModuleEnabled - Name: $v Entry: 7 Data: 32|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: atlasInfoUrl + Data: customModuleEnabled - Name: k__BackingField Entry: 7 Data: 33|System.RuntimeType, mscorlib - Name: Entry: 1 - Data: VRC.SDKBase.VRCUrl, VRCSDKBase + Data: System.Boolean[], mscorlib - Name: Entry: 8 Data: @@ -644,19 +644,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _atlasInfo + Data: atlasInfoUrl - Name: $v Entry: 7 Data: 35|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _atlasInfo + Data: atlasInfoUrl - Name: k__BackingField Entry: 7 Data: 36|System.RuntimeType, mscorlib - Name: Entry: 1 - Data: VRC.SDK3.Data.DataDictionary, VRCSDK3 + Data: VRC.SDKBase.VRCUrl, VRCSDKBase - Name: Entry: 8 Data: @@ -674,7 +674,7 @@ MonoBehaviour: Data: - Name: k__BackingField Entry: 5 - Data: false + Data: true - Name: _fieldAttributes Entry: 7 Data: 37|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib @@ -698,19 +698,73 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: supporterInfoUrl + Data: _atlasInfo - Name: $v Entry: 7 Data: 38|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _atlasInfo + - Name: k__BackingField + Entry: 7 + Data: 39|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: VRC.SDK3.Data.DataDictionary, VRCSDK3 + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 39 + - 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: false + - Name: _fieldAttributes + Entry: 7 + Data: 40|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - 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: supporterInfoUrl + - Name: $v + Entry: 7 + Data: 41|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 Data: supporterInfoUrl - Name: k__BackingField Entry: 9 - Data: 33 + Data: 36 - Name: k__BackingField Entry: 9 - Data: 33 + Data: 36 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -725,7 +779,7 @@ MonoBehaviour: Data: true - Name: _fieldAttributes Entry: 7 - Data: 39|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 42|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 @@ -749,16 +803,16 @@ MonoBehaviour: Data: _supporterInfo - Name: $v Entry: 7 - Data: 40|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 43|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 Data: _supporterInfo - Name: k__BackingField Entry: 9 - Data: 36 + Data: 39 - Name: k__BackingField Entry: 9 - Data: 36 + Data: 39 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -773,7 +827,7 @@ MonoBehaviour: Data: false - Name: _fieldAttributes Entry: 7 - Data: 41|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 44|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 @@ -797,70 +851,16 @@ MonoBehaviour: Data: _supporterInfoVrcLookup - Name: $v Entry: 7 - Data: 42|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 45|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 Data: _supporterInfoVrcLookup - Name: k__BackingField Entry: 9 - Data: 36 + Data: 39 - Name: k__BackingField Entry: 9 - Data: 36 - - 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: false - - Name: _fieldAttributes - Entry: 7 - Data: 43|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - - Name: - Entry: 12 - Data: 0 - - 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: _supporterList - - Name: $v - Entry: 7 - Data: 44|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - - Name: k__BackingField - Entry: 1 - Data: _supporterList - - Name: k__BackingField - Entry: 7 - Data: 45|System.RuntimeType, mscorlib - - Name: - Entry: 1 - Data: VRC.SDK3.Data.DataList, VRCSDK3 - - Name: - Entry: 8 - Data: - - Name: k__BackingField - Entry: 9 - Data: 45 + Data: 39 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -896,19 +896,25 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _perkNodes + Data: _supporterList - Name: $v Entry: 7 Data: 47|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _perkNodes + Data: _supporterList - Name: k__BackingField - Entry: 9 - Data: 45 + Entry: 7 + Data: 48|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: VRC.SDK3.Data.DataList, VRCSDK3 + - Name: + Entry: 8 + Data: - Name: k__BackingField Entry: 9 - Data: 45 + Data: 48 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -923,7 +929,55 @@ MonoBehaviour: Data: false - Name: _fieldAttributes Entry: 7 - Data: 48|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 49|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - 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: _perkNodes + - Name: $v + Entry: 7 + Data: 50|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _perkNodes + - Name: k__BackingField + Entry: 9 + Data: 48 + - Name: k__BackingField + Entry: 9 + Data: 48 + - 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: false + - Name: _fieldAttributes + Entry: 7 + Data: 51|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 @@ -947,7 +1001,7 @@ MonoBehaviour: Data: _instanceOwnerOverride - Name: $v Entry: 7 - Data: 49|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 52|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 Data: _instanceOwnerOverride @@ -971,19 +1025,19 @@ MonoBehaviour: Data: false - Name: _fieldAttributes Entry: 7 - Data: 50|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 53|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 2 - Name: Entry: 7 - Data: 51|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime + Data: 54|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime - Name: Entry: 8 Data: - Name: Entry: 7 - Data: 52|UdonSharp.FieldChangeCallbackAttribute, UdonSharp.Runtime + Data: 55|UdonSharp.FieldChangeCallbackAttribute, UdonSharp.Runtime - Name: Entry: 8 Data: @@ -1007,7 +1061,7 @@ MonoBehaviour: Data: _instanceOwner - Name: $v Entry: 7 - Data: 53|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 56|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 Data: _instanceOwner @@ -1031,19 +1085,19 @@ MonoBehaviour: Data: false - Name: _fieldAttributes Entry: 7 - Data: 54|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 57|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 2 - Name: Entry: 7 - Data: 55|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime + Data: 58|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime - Name: Entry: 8 Data: - Name: Entry: 7 - Data: 56|UdonSharp.FieldChangeCallbackAttribute, UdonSharp.Runtime + Data: 59|UdonSharp.FieldChangeCallbackAttribute, UdonSharp.Runtime - Name: Entry: 8 Data: @@ -1067,13 +1121,13 @@ MonoBehaviour: Data: imageIdDownloadQueue - Name: $v Entry: 7 - Data: 57|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 60|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 Data: imageIdDownloadQueue - Name: k__BackingField Entry: 7 - Data: 58|System.RuntimeType, mscorlib + Data: 61|System.RuntimeType, mscorlib - Name: Entry: 1 Data: System.String[], mscorlib @@ -1082,7 +1136,7 @@ MonoBehaviour: Data: - Name: k__BackingField Entry: 9 - Data: 58 + Data: 61 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -1097,7 +1151,7 @@ MonoBehaviour: Data: true - Name: _fieldAttributes Entry: 7 - Data: 59|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 62|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 @@ -1121,7 +1175,7 @@ MonoBehaviour: Data: _shouldUpdateAtlasInfo - Name: $v Entry: 7 - Data: 60|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 63|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 Data: _shouldUpdateAtlasInfo @@ -1145,7 +1199,7 @@ MonoBehaviour: Data: false - Name: _fieldAttributes Entry: 7 - Data: 61|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 64|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 @@ -1169,7 +1223,7 @@ MonoBehaviour: Data: _shouldUpdateSupporterInfo - Name: $v Entry: 7 - Data: 62|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 65|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 Data: _shouldUpdateSupporterInfo @@ -1193,7 +1247,55 @@ MonoBehaviour: Data: false - Name: _fieldAttributes Entry: 7 - Data: 63|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 66|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + - Name: + Entry: 12 + Data: 0 + - 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: _shouldUpdateCustomModules + - Name: $v + Entry: 7 + Data: 67|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _shouldUpdateCustomModules + - Name: k__BackingField + Entry: 9 + Data: 3 + - Name: k__BackingField + Entry: 9 + Data: 3 + - 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: false + - Name: _fieldAttributes + Entry: 7 + Data: 68|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 @@ -1217,7 +1319,7 @@ MonoBehaviour: Data: _currentlyDownloadingUrls - Name: $v Entry: 7 - Data: 64|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 69|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 Data: _currentlyDownloadingUrls @@ -1241,7 +1343,7 @@ MonoBehaviour: Data: false - Name: _fieldAttributes Entry: 7 - Data: 65|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 70|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 diff --git a/VRCBoardManager.cs b/VRCBoardManager.cs index db173ea..0c15237 100644 --- a/VRCBoardManager.cs +++ b/VRCBoardManager.cs @@ -42,6 +42,7 @@ namespace VRCBoard private float[] _atlasDownloadTimes; public VRCUrl[] customModuleUrls; + public bool[] customModuleEnabled; public VRCUrl atlasInfoUrl; private DataDictionary _atlasInfo; @@ -56,28 +57,34 @@ namespace VRCBoard [UdonSynced, FieldChangeCallback(nameof(instanceOwnerOverride))] private string _instanceOwnerOverride = ""; - public string instanceOwnerOverride + private string instanceOwnerOverride { get => _instanceOwnerOverride; set { _instanceOwnerOverride = value; - Networking.SetOwner(Networking.LocalPlayer, gameObject); RequestSerialization(); Debug.Log("Instance owner override set to " + value); } } - [UdonSynced, FieldChangeCallback(nameof(instanceOwner))] private string _instanceOwner; + [UdonSynced, FieldChangeCallback(nameof(InstanceOwner))] private string _instanceOwner; public string[] imageIdDownloadQueue = new string[0]; + + [PublicAPI] + public void SetInstanceOwner(string owner) + { + instanceOwnerOverride = owner; + Networking.SetOwner(Networking.LocalPlayer, gameObject); + } - public string instanceOwner + public string InstanceOwner { get { if (!string.IsNullOrWhiteSpace(instanceOwnerOverride)) return instanceOwnerOverride; return _instanceOwner; } - set + private set { _instanceOwner = value; Networking.SetOwner(Networking.LocalPlayer, gameObject); @@ -132,7 +139,7 @@ namespace VRCBoard public void _PeriodicUpdate() { //Debug.Log("Periodic update"); - if (Networking.LocalPlayer.isInstanceOwner) { instanceOwner = Networking.LocalPlayer.displayName; } + if (Networking.LocalPlayer.isInstanceOwner) { InstanceOwner = Networking.LocalPlayer.displayName; } _RequestAtlasInfoUpdate(); _RequestSupporterInfoUpdate(); SendCustomEventDelayedSeconds(nameof(_PeriodicUpdate), periodicUpdateInterval); @@ -142,12 +149,14 @@ namespace VRCBoard //Debug.Log("Task loop"); _TryUpdateAtlasInfo(); _TryUpdateSupporterInfo(); + _TryUpdateCustomModules(); SendCustomEventDelayedSeconds(nameof(_TaskLoop), 1f); } private bool _shouldUpdateAtlasInfo = true; private bool _shouldUpdateSupporterInfo = true; + private bool _shouldUpdateCustomModules = false; private void _TryUpdateAtlasInfo() { if (!_shouldUpdateAtlasInfo) return; @@ -163,6 +172,19 @@ namespace VRCBoard _shouldUpdateSupporterInfo = false; } + private void _TryUpdateCustomModules() + { + if (!_shouldUpdateCustomModules) return; + Debug.Log("Trying to update custom modules"); + for (int i = 0; i < customModuleUrls.Length; i++) + { + if (!customModuleEnabled[i]) continue; + VRCUrl url = customModuleUrls[i]; + RequestUrlLoad(url); + } + _shouldUpdateCustomModules = false; + } + [PublicAPI] public void _RequestAtlasInfoUpdate() { _shouldUpdateAtlasInfo = true; @@ -222,6 +244,14 @@ namespace VRCBoard { OnSupporterInfoDownload(download.Result); } + + for (int i = 0; i < customModuleUrls.Length; i++) + { + if (customModuleUrls[i].Get() == url) + { + OnCustomModuleDownload(i, download.Result); + } + } } public override void OnStringLoadError(IVRCStringDownload result) { @@ -380,25 +410,58 @@ namespace VRCBoard Debug.Log("Set supporter info "+vrcsuccess+" "+supporterSuccess+" "+perkSuccess); } + private void OnCustomModuleDownload(int moduleIndex, string data) + { + Debug.Log("Custom module download success " + moduleIndex); + if (VRCJson.TryDeserializeFromJson(data, out DataToken result)) + { + if (result.TokenType != TokenType.DataDictionary) return; + OnCustomModuleUpdate(moduleIndex, result.DataDictionary); + } + else + { + Debug.LogError("Failed to deserialize custom module " + moduleIndex); + } + } + + private void OnCustomModuleUpdate(int moduleIndex, DataDictionary data) + { + Debug.Log("Custom module update " + moduleIndex); + foreach (var component in vrcBoardComponents) + component._OnCustomModuleUpdate(moduleIndex, data); + } + [PublicAPI] public bool PlayerHasTag(VRCPlayerApi player, string tag) { return PlayerHasTag(player.displayName, tag); } - + [PublicAPI] - public bool PlayerHasTag(string displayName, string tag) + public String[] GetPlayerTags(string displayName) { DataDictionary supporterData = GetSupporterDataFromPlayer(displayName); - if (supporterData == null) return false; + if (supporterData == null) return new string[0]; bool perkNodesSuccess = supporterData.TryGetValue("pn", out DataToken perkNodesToken); - if (!perkNodesSuccess || perkNodesToken.TokenType != TokenType.DataList) return false; + if (!perkNodesSuccess || perkNodesToken.TokenType != TokenType.DataList) return new string[0]; DataList perkNodes = perkNodesToken.DataList; + string[] tags = new string[perkNodes.Count]; for (int i = 0; i < perkNodes.Count; i++) { DataToken perkNode = perkNodes[i]; if (perkNode.TokenType != TokenType.String) continue; - if (perkNode.String == tag) return true; + tags[i] = perkNode.String; + } + return tags; + } + + [PublicAPI] + public bool PlayerHasTag(string displayName, string tag) + { + string[] tags = GetPlayerTags(displayName); + for (int i = 0; i < tags.Length; i++) + { + if (tags[i] == tag) return true; } return false; } @@ -636,8 +699,14 @@ namespace VRCBoard [CustomEditor(typeof(VRCBoardManager))] public class VrcBoardManagerEditor : Editor { + bool shouldRefreshUrls = true; + private void OnEnable() + { + shouldRefreshUrls = true; + } public override void OnInspectorGUI() { + // is first render //base.OnInspectorGUI(); VRCBoardManager manager = target as VRCBoardManager; if (manager == null) @@ -646,9 +715,6 @@ namespace VRCBoard return; } - - - // draw a header EditorGUILayout.HelpBox("VRCBoard Manager", MessageType.Info); string domainInput = EditorGUILayout.TextField("Your VRCBoard Domain", manager.vrcBoardDomain); bool changed = domainInput != manager.vrcBoardDomain; @@ -658,7 +724,7 @@ namespace VRCBoard manager.atlasUrlCount = Math.Clamp(urlCount, 10, 1000); - if (changed || urlCountChanged) + if (changed || urlCountChanged || shouldRefreshUrls) { domainInput = domainInput.Trim(); domainInput = domainInput.Replace("http://", ""); @@ -675,6 +741,16 @@ namespace VRCBoard } const string apiPath = "api/data/v1/"; + + bool[] oldEnabled = manager.customModuleEnabled; + manager.customModuleUrls = new VRCUrl[3]; + manager.customModuleEnabled = new bool[3]; + manager.customModuleUrls[0] = new VRCUrl(baseUrl + apiPath + "barmanager"); + + for (int i = 0; i < oldEnabled.Length; i++) + { + if (i < manager.customModuleEnabled.Length) manager.customModuleEnabled[i] = oldEnabled[i]; + } manager.atlasInfoUrl = new VRCUrl(baseUrl + apiPath + "atlas"); manager.supporterInfoUrl = new VRCUrl(baseUrl + apiPath + "supporters"); @@ -684,7 +760,17 @@ namespace VRCBoard float selectedInterval = EditorGUILayout.FloatField("Periodic Update Interval", manager.periodicUpdateInterval); manager.periodicUpdateInterval = Mathf.Clamp(selectedInterval, 5f, 600f); - EditorGUILayout.Space(); + EditorGUILayout.Separator(); + + SerializedProperty customModuleEnabled = serializedObject.FindProperty("customModuleEnabled"); + + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.LabelField("[Module] Group Manager"); + // dropdown with enabled/disabled + customModuleEnabled.GetArrayElementAtIndex(0).boolValue = EditorGUILayout.Popup(customModuleEnabled.GetArrayElementAtIndex(0).boolValue ? 1 : 0, new[] {"Disabled", "Enabled"}) == 1; + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.Separator(); SerializedProperty vrcBoardComponents = serializedObject.FindProperty("vrcBoardComponents"); EditorGUILayout.PropertyField(vrcBoardComponents); @@ -701,8 +787,7 @@ namespace VRCBoard serializedObject.ApplyModifiedProperties(); //DrawDefaultInspector(); - - + shouldRefreshUrls = false; } }