SDK Bug & Feature Requests

Please check out the following rules and use the provided template when posting a bug report! Off-topic posts will be deleted.http://bit.ly/vrchat-bug-reports
UnityEventFilter removes events from non-whitelisted components
UnityEventFilter interferes with non-VRCSDK related components, causing UnityEvents to be wiped out on any object in the scene if they target forbidden types, methods or objects. I'm heavily relying on UnityEvents for build actions, making the creator workflow significantly easier by allowing the utilization of several build time callbacks to invoke UnityEvents, however, UnityEventFilter's overzealous reach breaks this functionality for no apparent reason. I would suggest comparing the list of components for filtering against the already existing component whitelist that exists in the SDK, since the build action components will be removed on build regardless, they just need to exist for the duration of the scene processing to get their job done, after which they are not a concern in the scope of the scene to be uploaded. As far as I'm aware this problem exists in all versions of the SDK where UnityEventFilter is in use. [UnityEventFilter] Events on 'X' were removed because one of them targeted a prohibited type 'X', method 'Y' or object 'X'. UnityEngine.Debug:LogWarning (object,UnityEngine.Object) VRC.Core.Logger:LogWarning (string,string,UnityEngine.Object) VRC.Core.UnityEventFilter:LogRemoval (string,UnityEngine.Object) (at ./Packages/com.vrchat.worlds/Runtime/VRCSDK/SDK3/UnityEventFilter.cs:442) VRC.Core.UnityEventFilter:FilterUnityEvents (System.Collections.Generic.HashSet`1<object>,VRC.Core.UnityEventFilter/TypeInfo,object,UnityEngine.Component) (at ./Packages/com.vrchat.worlds/Runtime/VRCSDK/SDK3/UnityEventFilter.cs:360) VRC.Core.UnityEventFilter:FilterUnityEvents (System.Collections.Generic.ICollection`1<UnityEngine.Component>) (at ./Packages/com.vrchat.worlds/Runtime/VRCSDK/SDK3/UnityEventFilter.cs:322) VRC.Core.UnityEventFilter:FilterUnityEvents (System.Collections.Generic.List`1<UnityEngine.GameObject>) (at ./Packages/com.vrchat.worlds/Runtime/VRCSDK/SDK3/UnityEventFilter.cs:278) VRC.Core.UnityEventFilter:FilterEvents (System.Collections.Generic.List`1<UnityEngine.GameObject>) (at ./Packages/com.vrchat.worlds/Runtime/VRCSDK/SDK3/UnityEventFilter.cs:254) VRC.Core.UnityEventFilter:RunFilteringOnPlayModeEntry (UnityEditor.PlayModeStateChange) (at ./Packages/com.vrchat.worlds/Runtime/VRCSDK/SDK3/UnityEventFilter.cs:125) UnityEditor.EditorApplication:Internal_PlayModeStateChanged (UnityEditor.PlayModeStateChange)
1
·

tracked

Uploading Avatar may freeze when antivirus software holds handle for lastly uploaded .vrca files
When we uploaded multiple avatars in a row relatively quickly, we encountered an issue where the upload process would freeze without any error message shown on the console or in the log files. This issue comes from two main causes: Firstly, the VRChat SDK silently ignores exceptions that occur in VRC_SdkBuilder.RunExportAvatarBlueprint . The catch clauses has comment // Errors are handled by the error callback , but most of the exceptions do not initiate error callback, including this one. Secondly, the VRChat SDK does not handle the exception occurred when trying to delete the last uploaded .vrca file. Removing the last uploaded .vrca file is not a critical step in the upload process, so it should not cause upload to freeze. However, currently, if the deletion fails, the upload process will not continue, leading to a freeze. When we replaced catch clauses to catch (Exception e) { Debug.LogError(e); } , we were able to see the following error message in the console: System.IO.IOException: The process cannot access the file 'C:\Users\****\AppData\Local\Temp\****\****\637e8e6c-8eb6-4cd2-a651-241fb7aa6ed3.vrca' because it is being used by another process. at System.IO.FileSystem.DeleteFile (System.String fullPath) [0x0001a] in <27124aa0e30a41659b903b822b959bc7>:0 at System.IO.File.Delete (System.String path) [0x00014] in <27124aa0e30a41659b903b822b959bc7>:0 at VRC.SDK3.Builder.VRCAvatarBuilder.ExportCurrentAvatarResource (UnityEngine.Object avatarResource, System.Boolean testAsset, System.Boolean buildAssetBundle, System.String& avatarPrefabPath, System.Action`1[T] onProgress, System.Action`1[T] onContentProcessed) [0x003bc] in <81261fc1c1e94d15bda5671000ac0e16>:0 at VRC.SDK3.Builder.VRCAvatarBuilder.ExportAvatarBlueprint (UnityEngine.GameObject externalReference) [0x00021] in <81261fc1c1e94d15bda5671000ac0e16>:0 at VRC.SDK3A.Editor.VRCSdkControlPanelAvatarBuilder.Build (UnityEngine.GameObject target, System.Boolean testAvatar) [0x0040b] in .\Packages\com.vrchat.avatars\Editor\VRCSDK\SDK3A\VRCSdkControlPanelAvatarBuilder.cs:2600 UnityEngine.StackTraceUtility:ExtractStackTrace () UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[]) UnityEngine.Logger:Log (UnityEngine.LogType,object) UnityEngine.Debug:LogError (object) VRC.SDK3A.Editor.VRCSdkControlPanelAvatarBuilder/<Build>d__132:MoveNext () (at ./Packages/com.vrchat.avatars/Editor/VRCSDK/SDK3A/VRCSdkControlPanelAvatarBuilder.cs:2605) System.Runtime.CompilerServices.AsyncMethodBuilderCore/MoveNextRunner:InvokeMoveNext (object) System.Threading.ExecutionContext:RunInternal (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool) System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool) System.Runtime.CompilerServices.AsyncMethodBuilderCore/MoveNextRunner:Run () System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation/<>c:<.cctor>b__7_0 (object) UnityEngine.UnitySynchronizationContext/WorkRequest:Invoke () UnityEngine.UnitySynchronizationContext:Exec () UnityEngine.UnitySynchronizationContext:ExecuteTasks () When we disabled the real-time protection of the antivirus software for the temporary folder, the upload process worked as expected without freezing. Therefore, we conclude that the issue is related to antivirus software holding a handle on the last uploaded .vrca file, which prevents it from being deleted.
1
·

tracked

[VRCCameraSettings] Property to tell which camera is currently rendering
Within a render callback such as OnWillRenderObject, it's useful to be able to check which camera is rendering. Unity has "Camera.current" for this, but it's not exposed to Udon. The new camera API is awesome, but without a property like that, I still can't make my UdonPortals prefab render correctly in the hand-held camera because there's no way to tell which camera is currently triggering OnWillRenderObject. I'd like a property to tell which camera is responsible for the render. A really simple implementation would be a new read-only property like: VRCCameraSettings.CurrentCameraType: An enum consisting of the values "ScreenCamera" or "PhotoCamera". However, I think this API could be extended further to be even more useful. In particular, if a Camera that was created by the world (and so is already accessible to Udon) is rendering, it would be great to be able to access the actual Camera object! Just like Unity's "Camera.current", but only limited to world-created Cameras. An API might look like this: VRCCameraSettings.CurrentCameraType: Enum consisting of the values "ScreenCamera", "PhotoCamera", "WorldCamera", or "Other". "WorldCamera" would be any camera created by the current world, i.e. a Camera that's accessible to Udon. "Other" would be anything else that isn't (yet!) accessible to Udon, e.g. avatar cameras or the screenshot camera. VRCCameraSettings.CurrentCamera: A reference to the current Camera object, just like Unity's Camera.current, except it's only set when CurrentCameraType is "WorldCamera". Otherwise, it's null.
1
·

tracked

Load More