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
"Freeze to world" on constraints won't turn off and on again correctly if the constraint was turned on in the same frame
Following up https://feedback.vrchat.com/sdk-bug-reports/p/freeze-to-world-on-constraints-will-always-bake-offsets-if-there-are-0-sources A parent constraint with "Freeze to world" enabled before the object containing it is turned off will not properly snap back when "Freeze to world" is disabled and the object is turned back on (on the same frame), if "Freeze to world" is re-enabled a frame later. Repro: Two objects, X (i.e. the avatar's armature) and Y (droppable) Parent constraint on object Y has a single source to X, activated via "Zero". A toggle is linked to two animations: * False = Object Y is turned off (2 keyframes, both are the same, animation duration is 0.017). * True = Object Y is turned on, "Freeze to world" is disabled on keyframe 0, enabled on keyframe 1 (animation duration is also 0.017) Assumption would be that because the parent constraint "freeze to world" is turned off, it would make object Y snap back to object X. This works in the editor , but does NOT work in game. A further observation was then made - adding a 3rd keyframe ("keyframe 2", animation duration 0.033) that is a copy of "keyframe 1" (object on, freeze on) made it work in game, but removing "keyframe 1" (so the animation duration is simply longer) did not solve it, it appears that for whatever reason the duplicated keyframe is necessary for the expected unfreeze/freeze snap to work in game.
1
·
Bug Report
·
tracked
[3.7.5+] Parallel Import encounters null exception following migration from VRCSettings to VRCPackageSettings
With SDK version 3.7.5 several settings were migrated from the static class VRCSettings , existing within the VRCSDKBase-Editor.dll library provided alongside the SDK to VRCPackageSettings , the change also included a refactor of the class, introducing a static property Instance , used to get or create an instance of the class, an instance is attempted to be created by the PerceptualPostProcessor as DPID settings were part of the migration, however this fails because of a null exception: VRCPackageSettings.Instance.dpidMipmaps within PerceptualPostProcessor executes VRCPackageSettings.Instance_get VRCPackageSettings._instance is null so Create() is called, which calls Load() Load() and calls within it, including EnsurePathExists() expect GetPath() to not be null, causing a null exception when it is because GetPath() calls GetPathFromType(GetType()) which calls UnityEditor.PackageManager.PackageInfo.FindForAssembly(t.Assembly) and returns null when executed by a worker process, GetPathFromType then returns null (a comment assumes this would only occur when the SDK is not located within the Packages folder) but this execution path was seemingly never tested and so methods that expect valid strings such as Directory.CreateDirectory within EnsurePathExists() throw null exceptions. Simply resolving the null exceptions is not enough as the current implementation would cause Load() to not load any data when it's meant to, leading to VRCPackageSettings.Instance to contain default values when executed by worker processes ( AssetDatabase.IsAssetImportWorkerProcess() ), you cannot simply abort execution because that invalidates the use of Parallel Import and would cause textures marked as "dirty" to not actually be updated to have mipmaps re-generated, a proper solution leading to the same settings file must be implemented, the whole dependency on the assembly's package info seems extreme. This can be easily reproduced on any 3.7.5+ project with Parallel Import enabled (Project Settings -> Editor, mine is configured with 8 desired workers and 2 on standby) by enabling/disabling "Override Kaiser mipmapping" in the SDK settings.
1
·
Bug Report
·
tracked
Load More
→