diff --git a/!Prefabs & Examples/!VRCBoardManager.prefab b/!Prefabs & Examples/!VRCBoardManager.prefab index 2a810f2..2db5282 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,118 +55,233 @@ MonoBehaviour: PrefabModifications: [] SerializationNodes: [] _udonSharpBackingUdonBehaviour: {fileID: 1195327852248355995} + GIT_USERNAME: + GIT_REPO: debugMode: 1 vrcBoardDomain: mydomain.vrcboard.app periodicUpdateInterval: 60 atlasUrlCount: 100 vrcBoardComponents: [] - atlasUrls: - - url: http://mydomain.vrcboard.app/atlas/0 - - url: http://mydomain.vrcboard.app/atlas/1 - - url: http://mydomain.vrcboard.app/atlas/2 - - url: http://mydomain.vrcboard.app/atlas/3 - - url: http://mydomain.vrcboard.app/atlas/4 - - url: http://mydomain.vrcboard.app/atlas/5 - - url: http://mydomain.vrcboard.app/atlas/6 - - url: http://mydomain.vrcboard.app/atlas/7 - - url: http://mydomain.vrcboard.app/atlas/8 - - url: http://mydomain.vrcboard.app/atlas/9 - - url: http://mydomain.vrcboard.app/atlas/10 - - url: http://mydomain.vrcboard.app/atlas/11 - - url: http://mydomain.vrcboard.app/atlas/12 - - url: http://mydomain.vrcboard.app/atlas/13 - - url: http://mydomain.vrcboard.app/atlas/14 - - url: http://mydomain.vrcboard.app/atlas/15 - - url: http://mydomain.vrcboard.app/atlas/16 - - url: http://mydomain.vrcboard.app/atlas/17 - - url: http://mydomain.vrcboard.app/atlas/18 - - url: http://mydomain.vrcboard.app/atlas/19 - - url: http://mydomain.vrcboard.app/atlas/20 - - url: http://mydomain.vrcboard.app/atlas/21 - - url: http://mydomain.vrcboard.app/atlas/22 - - url: http://mydomain.vrcboard.app/atlas/23 - - url: http://mydomain.vrcboard.app/atlas/24 - - url: http://mydomain.vrcboard.app/atlas/25 - - url: http://mydomain.vrcboard.app/atlas/26 - - url: http://mydomain.vrcboard.app/atlas/27 - - url: http://mydomain.vrcboard.app/atlas/28 - - url: http://mydomain.vrcboard.app/atlas/29 - - url: http://mydomain.vrcboard.app/atlas/30 - - url: http://mydomain.vrcboard.app/atlas/31 - - url: http://mydomain.vrcboard.app/atlas/32 - - url: http://mydomain.vrcboard.app/atlas/33 - - url: http://mydomain.vrcboard.app/atlas/34 - - url: http://mydomain.vrcboard.app/atlas/35 - - url: http://mydomain.vrcboard.app/atlas/36 - - url: http://mydomain.vrcboard.app/atlas/37 - - url: http://mydomain.vrcboard.app/atlas/38 - - url: http://mydomain.vrcboard.app/atlas/39 - - url: http://mydomain.vrcboard.app/atlas/40 - - url: http://mydomain.vrcboard.app/atlas/41 - - url: http://mydomain.vrcboard.app/atlas/42 - - url: http://mydomain.vrcboard.app/atlas/43 - - url: http://mydomain.vrcboard.app/atlas/44 - - url: http://mydomain.vrcboard.app/atlas/45 - - url: http://mydomain.vrcboard.app/atlas/46 - - url: http://mydomain.vrcboard.app/atlas/47 - - url: http://mydomain.vrcboard.app/atlas/48 - - url: http://mydomain.vrcboard.app/atlas/49 - - url: http://mydomain.vrcboard.app/atlas/50 - - url: http://mydomain.vrcboard.app/atlas/51 - - url: http://mydomain.vrcboard.app/atlas/52 - - url: http://mydomain.vrcboard.app/atlas/53 - - url: http://mydomain.vrcboard.app/atlas/54 - - url: http://mydomain.vrcboard.app/atlas/55 - - url: http://mydomain.vrcboard.app/atlas/56 - - url: http://mydomain.vrcboard.app/atlas/57 - - url: http://mydomain.vrcboard.app/atlas/58 - - url: http://mydomain.vrcboard.app/atlas/59 - - url: http://mydomain.vrcboard.app/atlas/60 - - url: http://mydomain.vrcboard.app/atlas/61 - - url: http://mydomain.vrcboard.app/atlas/62 - - url: http://mydomain.vrcboard.app/atlas/63 - - url: http://mydomain.vrcboard.app/atlas/64 - - url: http://mydomain.vrcboard.app/atlas/65 - - url: http://mydomain.vrcboard.app/atlas/66 - - url: http://mydomain.vrcboard.app/atlas/67 - - url: http://mydomain.vrcboard.app/atlas/68 - - url: http://mydomain.vrcboard.app/atlas/69 - - url: http://mydomain.vrcboard.app/atlas/70 - - url: http://mydomain.vrcboard.app/atlas/71 - - url: http://mydomain.vrcboard.app/atlas/72 - - url: http://mydomain.vrcboard.app/atlas/73 - - url: http://mydomain.vrcboard.app/atlas/74 - - url: http://mydomain.vrcboard.app/atlas/75 - - url: http://mydomain.vrcboard.app/atlas/76 - - url: http://mydomain.vrcboard.app/atlas/77 - - url: http://mydomain.vrcboard.app/atlas/78 - - url: http://mydomain.vrcboard.app/atlas/79 - - url: http://mydomain.vrcboard.app/atlas/80 - - url: http://mydomain.vrcboard.app/atlas/81 - - url: http://mydomain.vrcboard.app/atlas/82 - - url: http://mydomain.vrcboard.app/atlas/83 - - url: http://mydomain.vrcboard.app/atlas/84 - - url: http://mydomain.vrcboard.app/atlas/85 - - url: http://mydomain.vrcboard.app/atlas/86 - - url: http://mydomain.vrcboard.app/atlas/87 - - url: http://mydomain.vrcboard.app/atlas/88 - - url: http://mydomain.vrcboard.app/atlas/89 - - url: http://mydomain.vrcboard.app/atlas/90 - - url: http://mydomain.vrcboard.app/atlas/91 - - url: http://mydomain.vrcboard.app/atlas/92 - - url: http://mydomain.vrcboard.app/atlas/93 - - url: http://mydomain.vrcboard.app/atlas/94 - - url: http://mydomain.vrcboard.app/atlas/95 - - url: http://mydomain.vrcboard.app/atlas/96 - - url: http://mydomain.vrcboard.app/atlas/97 - - url: http://mydomain.vrcboard.app/atlas/98 - - url: http://mydomain.vrcboard.app/atlas/99 - customModuleUrls: [] - customModuleEnabled: - atlasInfoUrl: - url: http://mydomain.vrcboard.app/api/data/v1/atlas - supporterInfoUrl: - url: http://mydomain.vrcboard.app/api/data/v1/supporters + waitIndex: 0 + _sourceAtlasUrls: + - url: https://mydomain.vrcboard.app/atlas/0 + - url: https://mydomain.vrcboard.app/atlas/1 + - url: https://mydomain.vrcboard.app/atlas/2 + - url: https://mydomain.vrcboard.app/atlas/3 + - url: https://mydomain.vrcboard.app/atlas/4 + - url: https://mydomain.vrcboard.app/atlas/5 + - url: https://mydomain.vrcboard.app/atlas/6 + - url: https://mydomain.vrcboard.app/atlas/7 + - url: https://mydomain.vrcboard.app/atlas/8 + - url: https://mydomain.vrcboard.app/atlas/9 + - url: https://mydomain.vrcboard.app/atlas/10 + - url: https://mydomain.vrcboard.app/atlas/11 + - url: https://mydomain.vrcboard.app/atlas/12 + - url: https://mydomain.vrcboard.app/atlas/13 + - url: https://mydomain.vrcboard.app/atlas/14 + - url: https://mydomain.vrcboard.app/atlas/15 + - url: https://mydomain.vrcboard.app/atlas/16 + - url: https://mydomain.vrcboard.app/atlas/17 + - url: https://mydomain.vrcboard.app/atlas/18 + - url: https://mydomain.vrcboard.app/atlas/19 + - url: https://mydomain.vrcboard.app/atlas/20 + - url: https://mydomain.vrcboard.app/atlas/21 + - url: https://mydomain.vrcboard.app/atlas/22 + - url: https://mydomain.vrcboard.app/atlas/23 + - url: https://mydomain.vrcboard.app/atlas/24 + - url: https://mydomain.vrcboard.app/atlas/25 + - url: https://mydomain.vrcboard.app/atlas/26 + - url: https://mydomain.vrcboard.app/atlas/27 + - url: https://mydomain.vrcboard.app/atlas/28 + - url: https://mydomain.vrcboard.app/atlas/29 + - url: https://mydomain.vrcboard.app/atlas/30 + - url: https://mydomain.vrcboard.app/atlas/31 + - url: https://mydomain.vrcboard.app/atlas/32 + - url: https://mydomain.vrcboard.app/atlas/33 + - url: https://mydomain.vrcboard.app/atlas/34 + - url: https://mydomain.vrcboard.app/atlas/35 + - url: https://mydomain.vrcboard.app/atlas/36 + - url: https://mydomain.vrcboard.app/atlas/37 + - url: https://mydomain.vrcboard.app/atlas/38 + - url: https://mydomain.vrcboard.app/atlas/39 + - url: https://mydomain.vrcboard.app/atlas/40 + - url: https://mydomain.vrcboard.app/atlas/41 + - url: https://mydomain.vrcboard.app/atlas/42 + - url: https://mydomain.vrcboard.app/atlas/43 + - url: https://mydomain.vrcboard.app/atlas/44 + - url: https://mydomain.vrcboard.app/atlas/45 + - url: https://mydomain.vrcboard.app/atlas/46 + - url: https://mydomain.vrcboard.app/atlas/47 + - url: https://mydomain.vrcboard.app/atlas/48 + - url: https://mydomain.vrcboard.app/atlas/49 + - url: https://mydomain.vrcboard.app/atlas/50 + - url: https://mydomain.vrcboard.app/atlas/51 + - url: https://mydomain.vrcboard.app/atlas/52 + - url: https://mydomain.vrcboard.app/atlas/53 + - url: https://mydomain.vrcboard.app/atlas/54 + - url: https://mydomain.vrcboard.app/atlas/55 + - url: https://mydomain.vrcboard.app/atlas/56 + - url: https://mydomain.vrcboard.app/atlas/57 + - url: https://mydomain.vrcboard.app/atlas/58 + - url: https://mydomain.vrcboard.app/atlas/59 + - url: https://mydomain.vrcboard.app/atlas/60 + - url: https://mydomain.vrcboard.app/atlas/61 + - url: https://mydomain.vrcboard.app/atlas/62 + - url: https://mydomain.vrcboard.app/atlas/63 + - url: https://mydomain.vrcboard.app/atlas/64 + - url: https://mydomain.vrcboard.app/atlas/65 + - url: https://mydomain.vrcboard.app/atlas/66 + - url: https://mydomain.vrcboard.app/atlas/67 + - url: https://mydomain.vrcboard.app/atlas/68 + - url: https://mydomain.vrcboard.app/atlas/69 + - url: https://mydomain.vrcboard.app/atlas/70 + - url: https://mydomain.vrcboard.app/atlas/71 + - url: https://mydomain.vrcboard.app/atlas/72 + - url: https://mydomain.vrcboard.app/atlas/73 + - url: https://mydomain.vrcboard.app/atlas/74 + - url: https://mydomain.vrcboard.app/atlas/75 + - url: https://mydomain.vrcboard.app/atlas/76 + - url: https://mydomain.vrcboard.app/atlas/77 + - url: https://mydomain.vrcboard.app/atlas/78 + - url: https://mydomain.vrcboard.app/atlas/79 + - url: https://mydomain.vrcboard.app/atlas/80 + - url: https://mydomain.vrcboard.app/atlas/81 + - url: https://mydomain.vrcboard.app/atlas/82 + - url: https://mydomain.vrcboard.app/atlas/83 + - url: https://mydomain.vrcboard.app/atlas/84 + - url: https://mydomain.vrcboard.app/atlas/85 + - url: https://mydomain.vrcboard.app/atlas/86 + - url: https://mydomain.vrcboard.app/atlas/87 + - url: https://mydomain.vrcboard.app/atlas/88 + - url: https://mydomain.vrcboard.app/atlas/89 + - url: https://mydomain.vrcboard.app/atlas/90 + - url: https://mydomain.vrcboard.app/atlas/91 + - url: https://mydomain.vrcboard.app/atlas/92 + - url: https://mydomain.vrcboard.app/atlas/93 + - url: https://mydomain.vrcboard.app/atlas/94 + - url: https://mydomain.vrcboard.app/atlas/95 + - url: https://mydomain.vrcboard.app/atlas/96 + - url: https://mydomain.vrcboard.app/atlas/97 + - url: https://mydomain.vrcboard.app/atlas/98 + - url: https://mydomain.vrcboard.app/atlas/99 + _proxyAtlasUrls: + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image0.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image1.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image2.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image3.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image4.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image5.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image6.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image7.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image8.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image9.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image10.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image11.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image12.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image13.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image14.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image15.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image16.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image17.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image18.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image19.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image20.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image21.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image22.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image23.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image24.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image25.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image26.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image27.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image28.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image29.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image30.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image31.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image32.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image33.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image34.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image35.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image36.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image37.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image38.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image39.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image40.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image41.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image42.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image43.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image44.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image45.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image46.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image47.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image48.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image49.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image50.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image51.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image52.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image53.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image54.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image55.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image56.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image57.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image58.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image59.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image60.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image61.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image62.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image63.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image64.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image65.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image66.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image67.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image68.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image69.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image70.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image71.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image72.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image73.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image74.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image75.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image76.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image77.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image78.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image79.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image80.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image81.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image82.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image83.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image84.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image85.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image86.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image87.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image88.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image89.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image90.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image91.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image92.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image93.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image94.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image95.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image96.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image97.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image98.png + - url: https://raw.githubusercontent.com///refs/heads/main/atlas/image99.png + _sourceAtlasInfoUrl: + url: https://mydomain.vrcboard.app/api/data/v1/atlas + _proxyAtlasInfoUrl: + url: https://raw.githubusercontent.com///refs/heads/main/atlas.json + _sourceCustomModuleUrls: + - url: https://mydomain.vrcboard.app/api/data/v1/barmanager + - url: + - url: + _proxyCustomModuleUrls: + - url: https://raw.githubusercontent.com///refs/heads/main/custom_modules/barmanager + - url: + - url: + _sourceSupporterInfoUrl: + url: https://mydomain.vrcboard.app/api/data/v1/supporters + _proxySupporterInfoUrl: + url: https://raw.githubusercontent.com///refs/heads/main/supporters.json + customModuleEnabled: 000000 imageIdDownloadQueue: [] --- !u!114 &1195327852248355995 MonoBehaviour: diff --git a/!Prefabs & Examples/ImagePosterBasic.prefab b/!Prefabs & Examples/ImagePosterBasic.prefab index d145b31..4dadba7 100644 --- a/!Prefabs & Examples/ImagePosterBasic.prefab +++ b/!Prefabs & Examples/ImagePosterBasic.prefab @@ -48,7 +48,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: serializationData: - SerializedFormat: 0 + SerializedFormat: 2 SerializedBytes: ReferencedUnityObjects: [] SerializedBytesString: @@ -138,7 +138,7 @@ MonoBehaviour: AllowCollisionOwnershipTransfer: 0 Reliable: 0 _syncMethod: 1 - serializedProgramAsset: {fileID: 11400000, guid: 7111a5f4b78f7a94fb3d6ae9aef3b9d4, + serializedProgramAsset: {fileID: 11400000, guid: dfe93a97c46c4cf4c95cfe80dcaa0d3e, type: 2} programSource: {fileID: 11400000, guid: 5ca3673014ba8e84cbd28b03627eac47, type: 2} serializedPublicVariablesBytesString: Ai8AAAAAATIAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAFQAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AAAAAAAYBAAAAAAAAACcBBAAAAHQAeQBwAGUAAWgAAABTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEcAZQBuAGUAcgBpAGMALgBMAGkAcwB0AGAAMQBbAFsAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4ALgBJAG4AdABlAHIAZgBhAGMAZQBzAC4ASQBVAGQAbwBuAFYAYQByAGkAYQBiAGwAZQAsACAAVgBSAEMALgBVAGQAbwBuAC4AQwBvAG0AbQBvAG4AXQBdACwAIABtAHMAYwBvAHIAbABpAGIAAQEJAAAAVgBhAHIAaQBhAGIAbABlAHMALwEAAAABaAAAAFMAeQBzAHQAZQBtAC4AQwBvAGwAbABlAGMAdABpAG8AbgBzAC4ARwBlAG4AZQByAGkAYwAuAEwAaQBzAHQAYAAxAFsAWwBWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAEkAbgB0AGUAcgBmAGEAYwBlAHMALgBJAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlACwAIABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgBdAF0ALAAgAG0AcwBjAG8AcgBsAGkAYgABAAAABgEAAAAAAAAAAi8CAAAAAUkAAABWAFIAQwAuAFUAZABvAG4ALgBDAG8AbQBtAG8AbgAuAFUAZABvAG4AVgBhAHIAaQBhAGIAbABlAGAAMQBbAFsAUwB5AHMAdABlAG0ALgBJAG4AdAAzADIALAAgAG0AcwBjAG8AcgBsAGkAYgBdAF0ALAAgAFYAUgBDAC4AVQBkAG8AbgAuAEMAbwBtAG0AbwBuAAIAAAAGAgAAAAAAAAAnAQQAAAB0AHkAcABlAAEXAAAAUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwAsACAAbQBzAGMAbwByAGwAaQBiACcBCgAAAFMAeQBtAGIAbwBsAE4AYQBtAGUAAR8AAABfAF8AXwBVAGQAbwBuAFMAaABhAHIAcABCAGUAaABhAHYAaQBvAHUAcgBWAGUAcgBzAGkAbwBuAF8AXwBfACcBBAAAAHQAeQBwAGUAARYAAABTAHkAcwB0AGUAbQAuAEkAbgB0ADMAMgAsACAAbQBzAGMAbwByAGwAaQBiABcBBQAAAFYAYQBsAHUAZQACAAAABwUHBQcF diff --git a/Components/VRCBoardBaseComponent.cs b/Components/VRCBoardBaseComponent.cs index eb7dd06..fedc4eb 100644 --- a/Components/VRCBoardBaseComponent.cs +++ b/Components/VRCBoardBaseComponent.cs @@ -20,12 +20,14 @@ namespace VRCBoard.Components public abstract class VRCBoardBaseComponent : UdonSharpBehaviour { [HideInInspector] public VRCBoardManager manager; + protected virtual void OnRegister() {} + protected virtual void OnInitialize() {} + protected virtual void OnSupporterDataUpdate() {} + protected virtual void OnImageDataUpdate() {} - protected abstract void OnRegister(); - protected abstract void OnInitialize(); - protected abstract void OnSupporterDataUpdate(); - protected abstract void OnImageDataUpdate(); - protected abstract void OnImageLoaded(); + protected virtual void OnImageLoaded() {} + + protected virtual void OnCustomModuleUpdate(int inputModuleIndex, DataDictionary data) {} protected internal void _Register(VRCBoardManager _manager) { @@ -68,7 +70,7 @@ namespace VRCBoard.Components protected internal void _OnCustomModuleUpdate(int moduleIndex, DataDictionary data) { - Debug.Log("Custom module update"); + OnCustomModuleUpdate(moduleIndex, data); } protected internal void _OnAtlasImageLoaded(int atlasIndex = -1) diff --git a/Components/VRCBoardImage.asset b/Components/VRCBoardImage.asset index 6e1519f..a31a838 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: 19ae0697d87c22c40b5eceb361997922, + serializedUdonProgramAsset: {fileID: 11400000, guid: f83f88ce349d298438a783df6b33c10f, type: 2} udonAssembly: assemblyError: diff --git a/Components/VRCBoardImage.cs b/Components/VRCBoardImage.cs index 95a15b0..aef1c41 100644 --- a/Components/VRCBoardImage.cs +++ b/Components/VRCBoardImage.cs @@ -6,6 +6,7 @@ using VRC.SDK3.Data; using UnityEditor; using VRC.SDKBase; +using VRC.Udon.Common.Enums; namespace VRCBoard.Components { @@ -44,12 +45,6 @@ namespace VRCBoard.Components if (imageIds.Length == 0) return; _uploaderId = GetUploader(imageIds[0]); - - if (string.IsNullOrEmpty(_uploaderId)) - { - Debug.LogWarning("Failed to get uploader ID"); - //return; - } for (int i = 0; i < imageIds.Length; i++) { string imageId = imageIds[i]; @@ -73,13 +68,8 @@ namespace VRCBoard.Components TryGetUploader(); } - protected override void OnImageLoaded() + public void _ApplyImageToMaterial() { - //Debug.Log("Image loaded VRCBoardImage"); - - - //bool textureSuccess = GetImageAtlasTexture(albedoImageId, _uploaderId, out Texture2D texture, out int atlasPosition, out int atlasSize, out string type1); - MaterialPropertyBlock propertyBlock = new MaterialPropertyBlock(); for (int i = 0; i < imageIds.Length; i++) @@ -102,6 +92,11 @@ namespace VRCBoard.Components if (_renderer) _renderer.SetPropertyBlock(propertyBlock,materialIndex); } + protected override void OnImageLoaded() + { + if (manager == null) return; + SendCustomEventDelayedFrames(nameof(_ApplyImageToMaterial), manager.waitIndex++, EventTiming.LateUpdate); + } } #if UNITY_EDITOR && !COMPILER_UDONSHARP [CustomEditor(typeof(VRCBoardImage), true)] diff --git a/Components/VRCBoardImageBaseComponent.cs b/Components/VRCBoardImageBaseComponent.cs index cbfc7e3..ae05ea6 100644 --- a/Components/VRCBoardImageBaseComponent.cs +++ b/Components/VRCBoardImageBaseComponent.cs @@ -20,7 +20,7 @@ namespace VRCBoard.Components GetImageAtlasTexture(imageId, null, out Texture2D albedoTexture, out int albedoAtlasPosition, out int albedoAtlasSize, out string albedoType); if (albedoType == null) { - Debug.LogError("Failed to get image type for albedo image"); + //Debug.LogError("Failed to get image type for albedo image"); return ""; } string _mainType = albedoType; @@ -30,26 +30,14 @@ namespace VRCBoard.Components } else if (_mainType == "global") { - uploaderId = null; + uploaderId = "null"; } else { - DataDictionary ownerInfo = manager.GetSupporterDataFromPlayer(manager.InstanceOwner); - if (ownerInfo == null) - { - Debug.LogWarning("Failed to get owner info, user has likely not linked their account."); - return ""; - } - bool ownerSuccess = ownerInfo.TryGetValue("id", out DataToken ownerToken); - if (!ownerSuccess || ownerToken.TokenType != TokenType.String) - { - Debug.LogWarning("Failed to get owner ID from owner info."); - return ""; - } - uploaderId = ownerToken.String; + uploaderId = manager._VRCBoardIdFromName(manager.InstanceOwner); } - Debug.Log("image uploader: " + uploaderId); + //Debug.Log("image uploader: " + uploaderId); } else { uploaderId = uploaderIdOverride; diff --git a/Components/VRCBoardImageBasic.asset b/Components/VRCBoardImageBasic.asset index 83ffb9e..b89ee3f 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: 7111a5f4b78f7a94fb3d6ae9aef3b9d4, + serializedUdonProgramAsset: {fileID: 11400000, guid: dfe93a97c46c4cf4c95cfe80dcaa0d3e, type: 2} udonAssembly: assemblyError: diff --git a/Components/VRCBoardImageBasic.cs b/Components/VRCBoardImageBasic.cs index 440aa35..e9ed5a9 100644 --- a/Components/VRCBoardImageBasic.cs +++ b/Components/VRCBoardImageBasic.cs @@ -54,11 +54,6 @@ namespace VRCBoard.Components { if (!string.IsNullOrEmpty(_uploaderId)) return; _uploaderId = GetUploader(albedoImageId); - if (string.IsNullOrEmpty(_uploaderId)) - { - Debug.LogWarning("Failed to get uploader ID"); - //return; - } RequestImageLoad(albedoImageId, _uploaderId); RequestImageLoad(emissionImageId, _uploaderId); RequestImageLoad(normalImageId, _uploaderId); @@ -79,7 +74,7 @@ namespace VRCBoard.Components protected override void OnImageLoaded() { - Debug.Log("Image loaded VRCBoardImage"); + //Debug.Log("Image loaded VRCBoardImage"); Texture2D albedoTexture; int albedoAtlasPosition; diff --git a/Components/VRCBoardOverheadIcons.asset b/Components/VRCBoardOverheadIcons.asset index 86793d7..833a4ed 100644 --- a/Components/VRCBoardOverheadIcons.asset +++ b/Components/VRCBoardOverheadIcons.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3} m_Name: VRCBoardOverheadIcons m_EditorClassIdentifier: - serializedUdonProgramAsset: {fileID: 11400000, guid: 9b52c5e5b2955fa468b15a65e066455d, + serializedUdonProgramAsset: {fileID: 11400000, guid: 4d130d8e384312146b0f690571220be5, type: 2} udonAssembly: assemblyError: diff --git a/Components/VRCBoardSupporterBoardBase.cs b/Components/VRCBoardSupporterBoardBase.cs index 92e29c9..2edd0ed 100644 --- a/Components/VRCBoardSupporterBoardBase.cs +++ b/Components/VRCBoardSupporterBoardBase.cs @@ -86,7 +86,7 @@ namespace VRCBoard.Components { // for each entry in string[] config get every fifth element // if the first element is equal to the node, return the config - Debug.Log("Getting config from node " + node); + //Debug.Log("Getting config from node " + node); foundConfig = null; foundIndex = -1; string[] split = node.Split('.'); diff --git a/Components/VRCBoardSupporterBoardTMP.asset b/Components/VRCBoardSupporterBoardTMP.asset index a61f450..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: cb7ba44e9b1599548a81a4691eb88bb4, + serializedUdonProgramAsset: {fileID: 11400000, guid: e758930ddabc47d499d718189a2787b5, type: 2} udonAssembly: assemblyError: diff --git a/VRCBoardManager.asset b/VRCBoardManager.asset index bbb79f6..350928d 100644 --- a/VRCBoardManager.asset +++ b/VRCBoardManager.asset @@ -12,14 +12,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3} m_Name: VRCBoardManager m_EditorClassIdentifier: - serializedUdonProgramAsset: {fileID: 11400000, guid: f9597e921c7b6ed43b9c0e546b52af81, + serializedUdonProgramAsset: {fileID: 11400000, guid: b0a3201f714d46b4cbdb27ef08a99c58, type: 2} udonAssembly: assemblyError: sourceCsScript: {fileID: 11500000, guid: a15201eb91eaa134bb21f3335054e187, type: 3} scriptVersion: 2 compiledVersion: 2 - behaviourSyncMode: 0 + behaviourSyncMode: 4 hasInteractEvent: 0 scriptID: -2600486769412427948 serializationData: @@ -44,25 +44,25 @@ MonoBehaviour: Data: - Name: Entry: 12 - Data: 28 + Data: 37 - Name: Entry: 7 Data: - Name: $k Entry: 1 - Data: debugMode + Data: GIT_USERNAME - Name: $v Entry: 7 Data: 2|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: debugMode + Data: GIT_USERNAME - Name: k__BackingField Entry: 7 Data: 3|System.RuntimeType, mscorlib - Name: Entry: 1 - Data: System.Boolean, mscorlib + Data: System.String, mscorlib - Name: Entry: 8 Data: @@ -104,25 +104,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: vrcBoardDomain + Data: GIT_REPO - Name: $v Entry: 7 Data: 5|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: vrcBoardDomain + Data: GIT_REPO - Name: k__BackingField - Entry: 7 - Data: 6|System.RuntimeType, mscorlib - - Name: - Entry: 1 - Data: System.String, mscorlib - - Name: - Entry: 8 - Data: + Entry: 9 + Data: 3 - Name: k__BackingField Entry: 9 - Data: 6 + Data: 3 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -137,7 +131,109 @@ MonoBehaviour: Data: true - Name: _fieldAttributes Entry: 7 - Data: 7|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 6|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: debugMode + - Name: $v + Entry: 7 + Data: 7|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: debugMode + - 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: true + - 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: vrcBoardDomain + - Name: $v + Entry: 7 + Data: 10|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: vrcBoardDomain + - 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: true + - Name: _fieldAttributes + Entry: 7 + Data: 11|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 @@ -161,13 +257,13 @@ MonoBehaviour: Data: periodicUpdateInterval - Name: $v Entry: 7 - Data: 8|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 12|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 Data: periodicUpdateInterval - Name: k__BackingField Entry: 7 - Data: 9|System.RuntimeType, mscorlib + Data: 13|System.RuntimeType, mscorlib - Name: Entry: 1 Data: System.Single, mscorlib @@ -176,7 +272,7 @@ MonoBehaviour: Data: - Name: k__BackingField Entry: 9 - Data: 9 + Data: 13 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -191,7 +287,7 @@ MonoBehaviour: Data: true - Name: _fieldAttributes Entry: 7 - Data: 10|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 14|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 @@ -215,13 +311,13 @@ MonoBehaviour: Data: atlasUrlCount - Name: $v Entry: 7 - Data: 11|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 15|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 Data: atlasUrlCount - Name: k__BackingField Entry: 7 - Data: 12|System.RuntimeType, mscorlib + Data: 16|System.RuntimeType, mscorlib - Name: Entry: 1 Data: System.Int32, mscorlib @@ -230,67 +326,7 @@ MonoBehaviour: Data: - Name: k__BackingField Entry: 9 - Data: 12 - - 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: 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: vrcBoardComponents - - Name: $v - Entry: 7 - Data: 14|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - - Name: k__BackingField - Entry: 1 - Data: vrcBoardComponents - - Name: k__BackingField - Entry: 7 - Data: 15|System.RuntimeType, mscorlib - - Name: - Entry: 1 - Data: VRCBoard.Components.VRCBoardBaseComponent[], Assembly-CSharp - - Name: - Entry: 8 - Data: - - Name: k__BackingField - Entry: 7 - Data: 16|System.RuntimeType, mscorlib - - Name: - Entry: 1 - Data: UnityEngine.Component[], UnityEngine.CoreModule - - Name: - Entry: 8 - Data: + Data: 16 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -326,25 +362,31 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: atlasUrls + Data: vrcBoardComponents - Name: $v Entry: 7 Data: 18|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: atlasUrls + Data: vrcBoardComponents - Name: k__BackingField Entry: 7 Data: 19|System.RuntimeType, mscorlib - Name: Entry: 1 - Data: VRC.SDKBase.VRCUrl[], VRCSDKBase + Data: VRCBoard.Components.VRCBoardBaseComponent[], Assembly-CSharp - Name: Entry: 8 Data: - Name: k__BackingField - Entry: 9 - Data: 19 + Entry: 7 + Data: 20|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: UnityEngine.Component[], UnityEngine.CoreModule + - Name: + Entry: 8 + Data: - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -359,7 +401,7 @@ MonoBehaviour: Data: true - Name: _fieldAttributes Entry: 7 - Data: 20|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 21|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 @@ -380,25 +422,25 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _imageDownloaders + Data: waitIndex - Name: $v Entry: 7 - Data: 21|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 22|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _imageDownloaders + Data: waitIndex - Name: k__BackingField Entry: 7 - Data: 22|System.RuntimeType, mscorlib + Data: 23|System.RuntimeType, mscorlib - Name: Entry: 1 - Data: VRC.SDK3.Image.VRCImageDownloader[], VRCSDK3 + Data: System.Byte, mscorlib - Name: Entry: 8 Data: - Name: k__BackingField Entry: 9 - Data: 22 + Data: 23 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -410,10 +452,10 @@ MonoBehaviour: Data: - Name: k__BackingField Entry: 5 - Data: false + Data: true - Name: _fieldAttributes Entry: 7 - Data: 23|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 24|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 @@ -434,25 +476,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _downloadedAtlasTextures + Data: _useProxyUrls - Name: $v Entry: 7 - Data: 24|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 25|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _downloadedAtlasTextures + Data: _useProxyUrls - Name: k__BackingField - Entry: 7 - Data: 25|System.RuntimeType, mscorlib - - Name: - Entry: 1 - Data: UnityEngine.Texture2D[], UnityEngine.CoreModule - - Name: - Entry: 8 - Data: + Entry: 9 + Data: 8 - Name: k__BackingField Entry: 9 - Data: 25 + Data: 8 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -488,19 +524,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _atlasDownloadTimes + Data: _sourceAtlasUrls - Name: $v Entry: 7 Data: 27|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _atlasDownloadTimes + Data: _sourceAtlasUrls - Name: k__BackingField Entry: 7 Data: 28|System.RuntimeType, mscorlib - Name: Entry: 1 - Data: System.Single[], mscorlib + Data: VRC.SDKBase.VRCUrl[], VRCSDKBase - Name: Entry: 8 Data: @@ -518,7 +554,7 @@ MonoBehaviour: Data: - Name: k__BackingField Entry: 5 - Data: false + Data: true - Name: _fieldAttributes Entry: 7 Data: 29|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib @@ -542,19 +578,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: customModuleUrls + Data: _proxyAtlasUrls - Name: $v Entry: 7 Data: 30|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: customModuleUrls + Data: _proxyAtlasUrls - Name: k__BackingField Entry: 9 - Data: 19 + Data: 28 - Name: k__BackingField Entry: 9 - Data: 19 + Data: 28 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -590,19 +626,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: customModuleEnabled + Data: _sourceAtlasInfoUrl - Name: $v Entry: 7 Data: 32|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: customModuleEnabled + Data: _sourceAtlasInfoUrl - Name: k__BackingField Entry: 7 Data: 33|System.RuntimeType, mscorlib - Name: Entry: 1 - Data: System.Boolean[], mscorlib + Data: VRC.SDKBase.VRCUrl, VRCSDKBase - Name: Entry: 8 Data: @@ -644,25 +680,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: atlasInfoUrl + Data: _proxyAtlasInfoUrl - Name: $v Entry: 7 Data: 35|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: atlasInfoUrl + Data: _proxyAtlasInfoUrl - Name: k__BackingField - Entry: 7 - Data: 36|System.RuntimeType, mscorlib - - Name: - Entry: 1 - Data: VRC.SDKBase.VRCUrl, VRCSDKBase - - Name: - Entry: 8 - Data: + Entry: 9 + Data: 33 - Name: k__BackingField Entry: 9 - Data: 36 + Data: 33 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -677,7 +707,7 @@ MonoBehaviour: Data: true - Name: _fieldAttributes Entry: 7 - Data: 37|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 36|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 @@ -698,25 +728,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _atlasInfo + Data: _sourceCustomModuleUrls - Name: $v Entry: 7 - Data: 38|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 37|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _atlasInfo + Data: _sourceCustomModuleUrls - Name: k__BackingField - Entry: 7 - Data: 39|System.RuntimeType, mscorlib - - Name: - Entry: 1 - Data: VRC.SDK3.Data.DataDictionary, VRCSDK3 - - Name: - Entry: 8 - Data: + Entry: 9 + Data: 28 - Name: k__BackingField Entry: 9 - Data: 39 + Data: 28 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -728,7 +752,55 @@ MonoBehaviour: Data: - Name: k__BackingField Entry: 5 - Data: false + Data: true + - Name: _fieldAttributes + Entry: 7 + Data: 38|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: _proxyCustomModuleUrls + - Name: $v + Entry: 7 + Data: 39|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _proxyCustomModuleUrls + - Name: k__BackingField + Entry: 9 + Data: 28 + - Name: k__BackingField + Entry: 9 + Data: 28 + - 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: 40|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib @@ -752,19 +824,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: supporterInfoUrl + Data: _sourceSupporterInfoUrl - Name: $v Entry: 7 Data: 41|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: supporterInfoUrl + Data: _sourceSupporterInfoUrl - Name: k__BackingField Entry: 9 - Data: 36 + Data: 33 - Name: k__BackingField Entry: 9 - Data: 36 + Data: 33 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -800,19 +872,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _supporterInfo + Data: _proxySupporterInfoUrl - Name: $v Entry: 7 Data: 43|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _supporterInfo + Data: _proxySupporterInfoUrl - Name: k__BackingField Entry: 9 - Data: 39 + Data: 33 - Name: k__BackingField Entry: 9 - Data: 39 + Data: 33 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -824,7 +896,7 @@ MonoBehaviour: Data: - Name: k__BackingField Entry: 5 - Data: false + Data: true - Name: _fieldAttributes Entry: 7 Data: 44|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib @@ -848,19 +920,25 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _supporterInfoVrcLookup + Data: _imageDownloaders - Name: $v Entry: 7 Data: 45|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _supporterInfoVrcLookup + Data: _imageDownloaders - Name: k__BackingField - Entry: 9 - Data: 39 + Entry: 7 + Data: 46|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: VRC.SDK3.Image.VRCImageDownloader[], VRCSDK3 + - Name: + Entry: 8 + Data: - Name: k__BackingField Entry: 9 - Data: 39 + Data: 46 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -875,7 +953,7 @@ MonoBehaviour: Data: false - Name: _fieldAttributes Entry: 7 - Data: 46|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 47|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 @@ -896,25 +974,25 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _supporterList + Data: _downloadedAtlasTextures - Name: $v Entry: 7 - Data: 47|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 48|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _supporterList + Data: _downloadedAtlasTextures - Name: k__BackingField Entry: 7 - Data: 48|System.RuntimeType, mscorlib + Data: 49|System.RuntimeType, mscorlib - Name: Entry: 1 - Data: VRC.SDK3.Data.DataList, VRCSDK3 + Data: UnityEngine.Texture2D[], UnityEngine.CoreModule - Name: Entry: 8 Data: - Name: k__BackingField Entry: 9 - Data: 48 + Data: 49 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -929,7 +1007,7 @@ MonoBehaviour: Data: false - Name: _fieldAttributes Entry: 7 - Data: 49|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 50|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 @@ -950,19 +1028,25 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _perkNodes + Data: _atlasDownloadTimes - Name: $v Entry: 7 - Data: 50|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 51|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _perkNodes + Data: _atlasDownloadTimes - Name: k__BackingField - Entry: 9 - Data: 48 + Entry: 7 + Data: 52|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: System.Single[], mscorlib + - Name: + Entry: 8 + Data: - Name: k__BackingField Entry: 9 - Data: 48 + Data: 52 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -975,72 +1059,12 @@ MonoBehaviour: - 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 - - 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: _instanceOwnerOverride - - Name: $v - Entry: 7 - Data: 52|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - - Name: k__BackingField - Entry: 1 - Data: _instanceOwnerOverride - - Name: k__BackingField - Entry: 9 - Data: 6 - - Name: k__BackingField - Entry: 9 - Data: 6 - - Name: k__BackingField - Entry: 7 - Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib - - Name: - Entry: 3 - Data: 1 - - Name: - Entry: 8 - Data: - - Name: k__BackingField - Entry: 5 - Data: false - Name: _fieldAttributes Entry: 7 Data: 53|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 - Data: 2 - - Name: - Entry: 7 - Data: 54|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime - - Name: - Entry: 8 - Data: - - Name: - Entry: 7 - Data: 55|UdonSharp.FieldChangeCallbackAttribute, UdonSharp.Runtime - - Name: - Entry: 8 - Data: + Data: 0 - Name: Entry: 13 Data: @@ -1058,85 +1082,25 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _instanceOwner + Data: customModuleEnabled - Name: $v Entry: 7 - Data: 56|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 54|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _instanceOwner - - Name: k__BackingField - Entry: 9 - Data: 6 - - Name: k__BackingField - Entry: 9 - Data: 6 - - Name: k__BackingField - Entry: 7 - Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib - - Name: - Entry: 3 - Data: 1 - - Name: - Entry: 8 - Data: - - Name: k__BackingField - Entry: 5 - Data: false - - Name: _fieldAttributes - Entry: 7 - Data: 57|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - - Name: - Entry: 12 - Data: 2 - - Name: - Entry: 7 - Data: 58|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime - - Name: - Entry: 8 - Data: - - Name: - Entry: 7 - Data: 59|UdonSharp.FieldChangeCallbackAttribute, 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: imageIdDownloadQueue - - Name: $v - Entry: 7 - Data: 60|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - - Name: k__BackingField - Entry: 1 - Data: imageIdDownloadQueue + Data: customModuleEnabled - Name: k__BackingField Entry: 7 - Data: 61|System.RuntimeType, mscorlib + Data: 55|System.RuntimeType, mscorlib - Name: Entry: 1 - Data: System.String[], mscorlib + Data: System.Boolean[], mscorlib - Name: Entry: 8 Data: - Name: k__BackingField Entry: 9 - Data: 61 + Data: 55 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -1151,7 +1115,7 @@ MonoBehaviour: Data: true - Name: _fieldAttributes Entry: 7 - Data: 62|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 56|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 @@ -1172,19 +1136,25 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _shouldUpdateAtlasInfo + Data: _atlasInfo - Name: $v Entry: 7 - Data: 63|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 57|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _shouldUpdateAtlasInfo + Data: _atlasInfo - Name: k__BackingField - Entry: 9 - Data: 3 + Entry: 7 + Data: 58|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: VRC.SDK3.Data.DataDictionary, VRCSDK3 + - Name: + Entry: 8 + Data: - Name: k__BackingField Entry: 9 - Data: 3 + Data: 58 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -1199,7 +1169,7 @@ MonoBehaviour: Data: false - Name: _fieldAttributes Entry: 7 - Data: 64|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 59|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 @@ -1220,19 +1190,121 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _shouldUpdateSupporterInfo + Data: _supporterInfo - Name: $v Entry: 7 - Data: 65|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + Data: 60|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _shouldUpdateSupporterInfo + Data: _supporterInfo - Name: k__BackingField Entry: 9 - Data: 3 + Data: 58 - Name: k__BackingField Entry: 9 - Data: 3 + Data: 58 + - 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: 61|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: _supporterInfoVrcLookup + - Name: $v + Entry: 7 + Data: 62|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _supporterInfoVrcLookup + - Name: k__BackingField + Entry: 9 + Data: 58 + - Name: k__BackingField + Entry: 9 + Data: 58 + - 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: 63|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: 64|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _supporterList + - Name: k__BackingField + Entry: 7 + Data: 65|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: VRC.SDK3.Data.DataList, VRCSDK3 + - Name: + Entry: 8 + Data: + - Name: k__BackingField + Entry: 9 + Data: 65 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -1268,19 +1340,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _shouldUpdateCustomModules + Data: _perkNodes - Name: $v Entry: 7 Data: 67|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _shouldUpdateCustomModules + Data: _perkNodes - Name: k__BackingField Entry: 9 - Data: 3 + Data: 65 - Name: k__BackingField Entry: 9 - Data: 3 + Data: 65 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -1316,19 +1388,19 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: _currentlyDownloadingUrls + Data: _instanceOwnerOverride - Name: $v Entry: 7 Data: 69|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: _currentlyDownloadingUrls + Data: _instanceOwnerOverride - Name: k__BackingField Entry: 9 - Data: 19 + Data: 3 - Name: k__BackingField Entry: 9 - Data: 19 + Data: 3 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib @@ -1364,25 +1436,25 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: textureCacheKeys + Data: _instanceOwner - Name: $v Entry: 7 Data: 71|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: textureCacheKeys + Data: _instanceOwner - Name: k__BackingField Entry: 9 - Data: 61 + Data: 3 - Name: k__BackingField Entry: 9 - Data: 61 + Data: 3 - Name: k__BackingField Entry: 7 Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib - Name: - Entry: 6 - Data: + Entry: 3 + Data: 1 - Name: Entry: 8 Data: @@ -1394,7 +1466,19 @@ MonoBehaviour: Data: 72|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 - Data: 0 + Data: 2 + - Name: + Entry: 7 + Data: 73|UdonSharp.UdonSyncedAttribute, UdonSharp.Runtime + - Name: + Entry: 8 + Data: + - Name: + Entry: 7 + Data: 74|UdonSharp.FieldChangeCallbackAttribute, UdonSharp.Runtime + - Name: + Entry: 8 + Data: - Name: Entry: 13 Data: @@ -1412,67 +1496,121 @@ MonoBehaviour: Data: - Name: $k Entry: 1 - Data: textureCacheTextures - - Name: $v - Entry: 7 - Data: 73|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - - Name: k__BackingField - Entry: 1 - Data: textureCacheTextures - - Name: k__BackingField - Entry: 9 - Data: 25 - - Name: k__BackingField - Entry: 9 - Data: 25 - - 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: 74|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: textureCacheCurrentSize + Data: imageIdDownloadQueue - Name: $v Entry: 7 Data: 75|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor - Name: k__BackingField Entry: 1 - Data: textureCacheCurrentSize + Data: imageIdDownloadQueue - Name: k__BackingField - Entry: 9 - Data: 12 + Entry: 7 + Data: 76|System.RuntimeType, mscorlib + - Name: + Entry: 1 + Data: System.String[], mscorlib + - Name: + Entry: 8 + Data: - Name: k__BackingField Entry: 9 - Data: 12 + Data: 76 + - 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: 77|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: automaticInstanceOwner + - Name: $v + Entry: 7 + Data: 78|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: automaticInstanceOwner + - 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: true + - Name: _fieldAttributes + Entry: 7 + Data: 79|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: _shouldUpdateAtlasInfo + - Name: $v + Entry: 7 + Data: 80|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _shouldUpdateAtlasInfo + - 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 @@ -1487,7 +1625,295 @@ MonoBehaviour: Data: false - Name: _fieldAttributes Entry: 7 - Data: 76|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib + Data: 81|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: _shouldUpdateSupporterInfo + - Name: $v + Entry: 7 + Data: 82|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _shouldUpdateSupporterInfo + - 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: 83|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: 84|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _shouldUpdateCustomModules + - 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: 85|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: _currentlyDownloadingUrls + - Name: $v + Entry: 7 + Data: 86|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: _currentlyDownloadingUrls + - Name: k__BackingField + Entry: 9 + Data: 28 + - Name: k__BackingField + Entry: 9 + Data: 28 + - 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: 87|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: textureCacheKeys + - Name: $v + Entry: 7 + Data: 88|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: textureCacheKeys + - Name: k__BackingField + Entry: 9 + Data: 76 + - Name: k__BackingField + Entry: 9 + Data: 76 + - 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: 89|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: textureCacheTextures + - Name: $v + Entry: 7 + Data: 90|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: textureCacheTextures + - Name: k__BackingField + Entry: 9 + Data: 49 + - Name: k__BackingField + Entry: 9 + Data: 49 + - 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: 91|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: textureCacheCurrentSize + - Name: $v + Entry: 7 + Data: 92|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor + - Name: k__BackingField + Entry: 1 + Data: textureCacheCurrentSize + - Name: k__BackingField + Entry: 9 + Data: 16 + - Name: k__BackingField + Entry: 9 + Data: 16 + - 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: 93|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib - Name: Entry: 12 Data: 0 diff --git a/VRCBoardManager.cs b/VRCBoardManager.cs index 62e70ec..38dd131 100644 --- a/VRCBoardManager.cs +++ b/VRCBoardManager.cs @@ -25,8 +25,14 @@ namespace VRCBoard Tag, Image } + + [UdonBehaviourSyncMode(BehaviourSyncMode.Manual)] public class VRCBoardManager : UdonSharpBehaviour { + public string GIT_USERNAME = ""; + public string GIT_REPO = ""; + public string GIT_BASE_URL => "https://raw.githubusercontent.com/" + GIT_USERNAME + "/" + GIT_REPO + "/refs/heads/main/"; + public bool debugMode = true; public string vrcBoardDomain = "mydomain.vrcboard.app"; @@ -35,26 +41,49 @@ namespace VRCBoard public int atlasUrlCount = 100; public VRCBoardBaseComponent[] vrcBoardComponents; + public byte waitIndex = 0; - public VRCUrl[] atlasUrls; + private bool _useProxyUrls = false; + + #region URLS + + public VRCUrl[] _sourceAtlasUrls; + public VRCUrl[] _proxyAtlasUrls; + + public VRCUrl _sourceAtlasInfoUrl; + public VRCUrl _proxyAtlasInfoUrl; + + public VRCUrl[] _sourceCustomModuleUrls; + public VRCUrl[] _proxyCustomModuleUrls; + + public VRCUrl _sourceSupporterInfoUrl; + public VRCUrl _proxySupporterInfoUrl; + + public VRCUrl[] customModuleUrls => _useProxyUrls ? _proxyCustomModuleUrls : _sourceCustomModuleUrls; + public VRCUrl supporterInfoUrl => _useProxyUrls ? _proxySupporterInfoUrl : _sourceSupporterInfoUrl; + public VRCUrl atlasInfoUrl => _useProxyUrls ? _proxyAtlasInfoUrl : _sourceAtlasInfoUrl; + public VRCUrl[] atlasUrls => _useProxyUrls ? _proxyAtlasUrls : _sourceAtlasUrls; + + #endregion + + private VRCImageDownloader[] _imageDownloaders; private Texture2D[] _downloadedAtlasTextures; private float[] _atlasDownloadTimes; - public VRCUrl[] customModuleUrls; + public bool[] customModuleEnabled; - public VRCUrl atlasInfoUrl; + private DataDictionary _atlasInfo; - public VRCUrl supporterInfoUrl; + private DataDictionary _supporterInfo; private DataDictionary _supporterInfoVrcLookup; private DataList _supporterList; private DataList _perkNodes; - - [UdonSynced, FieldChangeCallback(nameof(instanceOwnerOverride))] + private string _instanceOwnerOverride = ""; private string instanceOwnerOverride @@ -68,31 +97,51 @@ namespace VRCBoard } } - [UdonSynced, FieldChangeCallback(nameof(InstanceOwner))] private string _instanceOwner; + [UdonSynced, FieldChangeCallback(nameof(InstanceOwner))] + private string _instanceOwner; + public string[] imageIdDownloadQueue = new string[0]; - + public bool automaticInstanceOwner = true; + [PublicAPI] public void SetInstanceOwner(string owner) { instanceOwnerOverride = owner; - Networking.SetOwner(Networking.LocalPlayer, gameObject); } public string InstanceOwner { get { if (!string.IsNullOrWhiteSpace(instanceOwnerOverride)) return instanceOwnerOverride; - return _instanceOwner; + if (automaticInstanceOwner) + { + return _instanceOwner; + } + return String.Empty; } private set { _instanceOwner = value; - Networking.SetOwner(Networking.LocalPlayer, gameObject); - RequestSerialization(); - Debug.Log("Instance owner set to " + value); } } + public string _VRCBoardIdFromName(string name) + { + DataDictionary ownerInfo = GetSupporterDataFromPlayer(name); + if (ownerInfo == null) + { + Debug.LogWarning("Failed to get user info, user has likely not linked their account. username: " + name); + return ""; + } + bool ownerSuccess = ownerInfo.TryGetValue("id", out DataToken ownerToken); + if (!ownerSuccess || ownerToken.TokenType != TokenType.String) + { + Debug.LogWarning("Failed to get vrcboard ID from displayname"); + return ""; + } + return ownerToken.String; + } + private void RemoveNullComponents() { int nullCount = 0; @@ -198,6 +247,7 @@ namespace VRCBoard private VRCUrl[] _currentlyDownloadingUrls = new VRCUrl[0]; private void RequestUrlLoad(VRCUrl url) { + Debug.Log("[VRCBOARD] Laoding URL " + url.Get()); string urlStr = url.Get(); for (int i = 0; i < _currentlyDownloadingUrls.Length; i++) { @@ -281,7 +331,7 @@ namespace VRCBoard DataDictionary imageInfo = _GetImageIdInfo(imageId); if (imageInfo == null) { - Debug.LogWarning("[_GetImageAtlasTexture] " + imageId + " not found!"); + //Debug.LogWarning("[_GetImageAtlasTexture] " + imageId + " not found!"); return false; } @@ -304,6 +354,7 @@ namespace VRCBoard int uploadCount = uploads.Count; if (uploadCount == 0) { + Debug.LogWarning("[_GetImageAtlasTexture] " + imageId + " has no uploads."); return false; } // find index of the uploader @@ -333,16 +384,20 @@ namespace VRCBoard //Debug.Log("Uploader index: " + uploaderIndex); if (uploaderIndex == -1) { + + Debug.LogWarning("[_GetImageAtlasTexture] " + imageId + " uploader not found. uploaderIndex==-1"); return false; } DataDictionary uploadInfo = uploads[uploaderIndex].DataDictionary; if (uploadInfo == null) { + Debug.LogWarning("[_GetImageAtlasTexture] " + imageId + " uploadInfo is null."); return false; } bool atlasIndexSuccess = uploadInfo.TryGetValue("i", out DataToken atlasIndexToken); if (!atlasIndexSuccess || atlasIndexToken.TokenType != TokenType.Double) { + Debug.LogWarning("[_GetImageAtlasTexture] " + imageId + " atlasIndex is not a valid number."); return false; } @@ -351,6 +406,7 @@ namespace VRCBoard bool positionSuccess = uploadInfo.TryGetValue("p", out DataToken positionToken); if (!positionSuccess || positionToken.TokenType != TokenType.Double) { + Debug.LogWarning("[_GetImageAtlasTexture] " + imageId + " position is not a valid number."); return false; } texture = _downloadedAtlasTextures[atlasIndex]; @@ -359,11 +415,19 @@ namespace VRCBoard bool hashSuccess = uploadInfo.TryGetValue("h", out DataToken hashToken); if (!hashSuccess || hashToken.TokenType != TokenType.String) { + Debug.LogWarning("[_GetImageAtlasTexture] " + imageId + " hash is not a valid string."); return false; } hash = hashToken.String; return true; } + + public void _RequestCustomModuleUpdate(int moduleIndex) + { + if (moduleIndex < 0 || moduleIndex >= customModuleUrls.Length) return; + VRCUrl url = customModuleUrls[moduleIndex]; + RequestUrlLoad(url); + } public void _RequestImageLoad(string imageId, string uploader, VRCBoardBaseComponent component) { if (uploader == null) uploader = "null"; @@ -375,6 +439,7 @@ namespace VRCBoard } private void TryDownloadImageId(string combinedImageId) { + Debug.Log("[VRCBoard] Trying to download imageid " + combinedImageId); string[] split = combinedImageId.Split(':'); if (split.Length != 2) return; string imageId = split[0]; @@ -382,10 +447,16 @@ namespace VRCBoard if (uploader == "null") uploader = null; bool success = _GetImageAtlasTexture(imageId, uploader, out int atlasIndex, out Texture2D texture, out int position, out int size, out string type, out string hash); - //Debug.Log("Try download image " + combinedImageId + " success: " + success); + Debug.Log("Try download image " + combinedImageId + " success: " + success); if (!success) return; + + /*if ( GetFromTextureCache(hash) != null) + { + Debug.Log("[VRCBoard] Image found in texture cache " + combinedImageId); + return; + }*/ + DownloadAtlas(atlasIndex); - } private void OnSupporterInfoDownload(string data) @@ -535,7 +606,7 @@ namespace VRCBoard private void OnAtlasInfoDownload(string data) { - //Debug.Log("Atlas info download success"); + Debug.Log("[VRCBoard] Atlas info download success"); if (VRCJson.TryDeserializeFromJson(data, out DataToken result)) { if (result.TokenType != TokenType.DataDictionary) return; @@ -569,7 +640,7 @@ namespace VRCBoard private void DownloadAtlas(int index) { - //Debug.Log("Downloading atlas " + index); + Debug.Log("Downloading atlas " + index); if (index < 0 || index >= atlasUrls.Length) return; VRCUrl url = GetAtlasUrlFromIndex(index); VRCImageDownloader imageDownloader = _imageDownloaders[index]; @@ -664,74 +735,100 @@ namespace VRCBoard textureCacheCurrentSize = newSize; } - [PublicAPI] - public Texture2D GetTexture2D(string uploader, string imageId, out string imageHash) + public void BilinearScale(Texture2D tex, int newWidth, int newHeight) { - bool success = _GetImageAtlasTexture(imageId, uploader, out int atlasIndex, out Texture2D texture, - out int position, out int size, out string type, out string hash); + Color[] newPixels = new Color[newWidth * newHeight]; + + Color[] originalPixels = tex.GetPixels(); + int origWidth = tex.width; + int origHeight = tex.height; + + float ratioX = (float)(origWidth - 1) / newWidth; + float ratioY = (float)(origHeight - 1) / newHeight; + + for (int y = 0; y < newHeight; y++) + { + float sy = y * ratioY; + int yFloor = Mathf.FloorToInt(sy); + int yCeil = Mathf.Min(yFloor + 1, origHeight - 1); + float fy = sy - yFloor; + + for (int x = 0; x < newWidth; x++) + { + float sx = x * ratioX; + int xFloor = Mathf.FloorToInt(sx); + int xCeil = Mathf.Min(xFloor + 1, origWidth - 1); + float fx = sx - xFloor; + + // Manual bilinear interpolation + Color c00 = originalPixels[yFloor * origWidth + xFloor]; + Color c10 = originalPixels[yFloor * origWidth + xCeil]; + Color c01 = originalPixels[yCeil * origWidth + xFloor]; + Color c11 = originalPixels[yCeil * origWidth + xCeil]; + + Color interpolated = + c00 * (1 - fx) * (1 - fy) + + c10 * fx * (1 - fy) + + c01 * (1 - fx) * fy + + c11 * fx * fy; + + newPixels[y * newWidth + x] = interpolated; + } + } + + tex.Reinitialize(newWidth, newHeight); + tex.SetPixels(newPixels); + tex.Apply(); + } + + + [PublicAPI] + public Texture2D GetTexture2D(string uploader, string imageId, out string imageHash, bool bilinearScaling = false) + { + imageHash = null; + + if (!_GetImageAtlasTexture(imageId, uploader, out int atlasIndex, out Texture2D texture, + out int position, out int size, out string type, out string hash) || atlasIndex == -1 || texture == null) + { + Debug.LogWarning("[VRCBoard] [GetTexture2D] Failed to get texture for " + uploader); + return null; + } + imageHash = hash; Texture2D cachedTexture = GetFromTextureCache(hash); if (cachedTexture != null) return cachedTexture; + + int blockSize = texture.width / size; + + int xIndex = position % size; + int yIndex = size - 1 - (position / size); + + int startX = xIndex * blockSize; + int startY = yIndex * blockSize; - if (!success || atlasIndex == -1) - { - Debug.LogWarning("[VRCBoard] [GetTexture2D] Failed to get texture for " + uploader); - return null; - } + Color[] pixels = texture.GetPixels(startX, startY, blockSize, blockSize); - if (texture == null) - { - Debug.LogWarning("[VRCBoard] [GetTexture2D] Failed to get texture for " + uploader); - return null; - } + // Instead of bilinear sampling, scale using Unity’s built-in Resize method. + Texture2D newTexture = new Texture2D(blockSize, blockSize, TextureFormat.RGBA32, false); + newTexture.SetPixels(pixels); - int blockSize = (int)Mathf.Floor((float)(texture.width) / (float)(size)); - - - float startX = position % size; - float startY = size - (int)Mathf.Floor((float)position / (float)size) - 1; - - startX = startX / size; - startY = startY / size; + if (bilinearScaling) BilinearScale(newTexture, 512, 512); - //Debug.Log("[VRCBoard] texture startX:" + startX + ", startY:" + startY); - - int textureSize = 1024; - - Texture2D newTexture = new Texture2D (textureSize, textureSize); - - - Color[] stretchedPixels = new Color[textureSize * textureSize]; - - for (int y = 0; y < textureSize; y++) - { - for (int x = 0; x < textureSize; x++) - { - // Get the corresponding pixel from the original texture - float u = startX + ((float)x / textureSize / size); - float v = startY + ((float)y / textureSize / size); - - // Sample the original texture at the calculated UV coordinates - Color pixel = texture.GetPixelBilinear(u, v); - stretchedPixels[y * textureSize + x] = pixel; - } - } - - //Color[] pixels = texture.GetPixels(startX * blockSize, startY * blockSize, blockSize, blockSize); - newTexture.SetPixels(stretchedPixels); - newTexture.wrapMode = TextureWrapMode.Clamp; + newTexture.wrapMode = TextureWrapMode.Repeat; newTexture.filterMode = FilterMode.Trilinear; newTexture.anisoLevel = 1; - newTexture.Apply(); + + newTexture.Apply(true,true); + AddToTextureCache(hash, newTexture); return newTexture; } [PublicAPI] - public Texture2D GetTexture2D(string uploader, string imageId) + public Texture2D GetTexture2D(string uploader, string imageId, bool bilinearScaling = false) { - return GetTexture2D(uploader, imageId, out string imageHash); + return GetTexture2D(uploader, imageId, out string imageHash, bilinearScaling); } public override void OnImageLoadError(IVRCImageDownload result) @@ -810,6 +907,7 @@ namespace VRCBoard public class VrcBoardManagerEditor : Editor { bool shouldRefreshUrls = true; + bool showGitSettings = false; private void OnEnable() { shouldRefreshUrls = true; @@ -844,32 +942,52 @@ namespace VRCBoard string baseUrl = manager.VrcBoardBaseUrl; // update the urls - manager.atlasUrls = new VRCUrl[manager.atlasUrlCount]; + manager._sourceAtlasUrls = new VRCUrl[manager.atlasUrlCount]; + manager._proxyAtlasUrls = new VRCUrl[manager.atlasUrlCount]; for (int i = 0; i < manager.atlasUrlCount; i++) { - manager.atlasUrls[i] = new VRCUrl(baseUrl + "atlas/" + i); + manager._sourceAtlasUrls[i] = new VRCUrl(baseUrl + "atlas/" + i); + manager._proxyAtlasUrls[i] = new VRCUrl(manager.GIT_BASE_URL + "atlas/image" + i + ".png"); } const string apiPath = "api/data/v1/"; bool[] oldEnabled = manager.customModuleEnabled; - manager.customModuleUrls = new VRCUrl[3]; + manager._sourceCustomModuleUrls = new VRCUrl[3]; + manager._proxyCustomModuleUrls = new VRCUrl[3]; manager.customModuleEnabled = new bool[3]; - manager.customModuleUrls[0] = new VRCUrl(baseUrl + apiPath + "barmanager"); + manager._sourceCustomModuleUrls[0] = new VRCUrl(baseUrl + apiPath + "module/barmanager"); + manager._proxyCustomModuleUrls[0] = new VRCUrl(manager.GIT_BASE_URL + "custom_modules/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"); + manager._sourceAtlasInfoUrl = new VRCUrl(baseUrl + apiPath + "atlas"); + manager._sourceSupporterInfoUrl = new VRCUrl(baseUrl + apiPath + "supporters"); + + manager._proxyAtlasInfoUrl = new VRCUrl(manager.GIT_BASE_URL + "atlas.json"); + manager._proxySupporterInfoUrl = new VRCUrl(manager.GIT_BASE_URL + "supporters.json"); + EditorUtility.SetDirty(manager); } float selectedInterval = EditorGUILayout.FloatField("Periodic Update Interval", manager.periodicUpdateInterval); - manager.periodicUpdateInterval = Mathf.Clamp(selectedInterval, 5f, 600f); + if (selectedInterval != manager.periodicUpdateInterval) + { + manager.periodicUpdateInterval = Mathf.Clamp(selectedInterval, 5f, 600f); + EditorUtility.SetDirty(manager); + } + + bool instanceOwner = EditorGUILayout.Toggle("Enable Automatic Instance Owner Detection", manager.automaticInstanceOwner); + if (instanceOwner != manager.automaticInstanceOwner) + { + manager.automaticInstanceOwner = instanceOwner; + EditorUtility.SetDirty(manager); + } + EditorGUILayout.Separator(); SerializedProperty customModuleEnabled = serializedObject.FindProperty("customModuleEnabled"); @@ -880,6 +998,25 @@ namespace VRCBoard customModuleEnabled.GetArrayElementAtIndex(0).boolValue = EditorGUILayout.Popup(customModuleEnabled.GetArrayElementAtIndex(0).boolValue ? 1 : 0, new[] {"Disabled", "Enabled"}) == 1; EditorGUILayout.EndHorizontal(); + EditorGUILayout.Separator(); + + showGitSettings = EditorGUILayout.Foldout(showGitSettings, "GitHub Settings"); + if (showGitSettings) + { + EditorGUILayout.HelpBox("GitHub can be used to host the images on trusted URLs. See more info on the VRCBoard website.", MessageType.Info); + string gitUser = EditorGUILayout.TextField("GitHub Username", manager.GIT_USERNAME); + string gitRepo = EditorGUILayout.TextField("GitHub Repo", manager.GIT_REPO); + //string gitBranch = EditorGUILayout.TextField("GitHub Branch", manager.GIT_BRANCH); + bool gitChanged = gitUser != manager.GIT_USERNAME || gitRepo != manager.GIT_REPO; //|| gitBranch != manager.GIT_BRANCH; + if (gitChanged) + { + manager.GIT_USERNAME = gitUser; + manager.GIT_REPO = gitRepo; + EditorUtility.SetDirty(manager); + } + } + + EditorGUILayout.Separator(); SerializedProperty vrcBoardComponents = serializedObject.FindProperty("vrcBoardComponents");