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)
0
[VRCSDK 3.8.1] VRCSDK throws exceptions when encountering an avatar descriptor with an empty animation layer list but "customize animation layers" on
On a humanoid avatar, when the VRC Avatar Descriptor has an empty baseAnimationLayers list but customizeAnimationLayers is false, then in InitAnimLayer a NullReferenceException is thrown from element.FindPropertyRelative("type").enumValueIndex = (int)type; This is caused by EnforceAnimLayerSetup assuming there is at least one layer, and calling InitAnimLayer with index=1; list.InsertArrayElementAtIndex(1) then fails, and so the subsequent GetArrayElementAtIndex also returns null. This issue was encountered by a user of Vroid's Xavatar, and reported to me as a potential Modular Avatar bug (MA invokes this code to normalize animator layers, but this also happens just by opening the inspector normally). Stack traces: Retrieving array element that was out of bounds UnityEditor.SerializedProperty:InsertArrayElementAtIndex (int) AvatarDescriptorEditor3:InitAnimLayer (UnityEditor.SerializedProperty,VRC.SDK3.Avatars.Components.VRCAvatarDescriptor/AnimLayerType,bool,int) (at ./Packages/com.vrchat.avatars/Editor/VRCSDK/SDK3A/Components3/VRCAvatarDescriptorEditor3AnimLayerInit.cs:128) AvatarDescriptorEditor3:EnforceAnimLayerSetup (bool) (at ./Packages/com.vrchat.avatars/Editor/VRCSDK/SDK3A/Components3/VRCAvatarDescriptorEditor3AnimLayerInit.cs:166) AvatarDescriptorEditor3:OnEnable () (at ./Packages/com.vrchat.avatars/Editor/VRCSDK/SDK3A/Components3/VRCAvatarDescriptorEditor3.cs:41) Retrieving array element that was out of bounds UnityEditor.SerializedProperty:GetArrayElementAtIndex (int) AvatarDescriptorEditor3:InitAnimLayer (UnityEditor.SerializedProperty,VRC.SDK3.Avatars.Components.VRCAvatarDescriptor/AnimLayerType,bool,int) (at ./Packages/com.vrchat.avatars/Editor/VRCSDK/SDK3A/Components3/VRCAvatarDescriptorEditor3AnimLayerInit.cs:129) AvatarDescriptorEditor3:EnforceAnimLayerSetup (bool) (at ./Packages/com.vrchat.avatars/Editor/VRCSDK/SDK3A/Components3/VRCAvatarDescriptorEditor3AnimLayerInit.cs:166) AvatarDescriptorEditor3:OnEnable () (at ./Packages/com.vrchat.avatars/Editor/VRCSDK/SDK3A/Components3/VRCAvatarDescriptorEditor3.cs:41) NullReferenceException: Object reference not set to an instance of an object AvatarDescriptorEditor3.InitAnimLayer (UnityEditor.SerializedProperty list, VRC.SDK3.Avatars.Components.VRCAvatarDescriptor+AnimLayerType type, System.Boolean isDefault, System.Int32 index) (at ./Packages/com.vrchat.avatars/Editor/VRCSDK/SDK3A/Components3/VRCAvatarDescriptorEditor3AnimLayerInit.cs:131) AvatarDescriptorEditor3.EnforceAnimLayerSetup (System.Boolean isOnEnable) (at ./Packages/com.vrchat.avatars/Editor/VRCSDK/SDK3A/Components3/VRCAvatarDescriptorEditor3AnimLayerInit.cs:166) AvatarDescriptorEditor3.OnEnable () (at ./Packages/com.vrchat.avatars/Editor/VRCSDK/SDK3A/Components3/VRCAvatarDescriptorEditor3.cs:41)
1
·

tracked

[3.8.1] VRCStation crashes random unrelated scripts in ClientSim
This was figured out after an hour and a half of debugging. Turns out, the ClientSim staiton helper script has a bug that results in broken editor behaviour. Here's a writeup of what went wrong and my quick fix of the issue - the ideal fix is probably to use a GUID instead, but hey. There's a TODO in the SDK on the line that broke. This reproduces in 3.8.0 too, as well as earlier versions. From my postmortem - this was a mysterious crash in AquaFloat, but the bug is not in AquaFloat's code, which is why it sent us on such a wild goose chase. Postmortem: The script was crashing in a GetComponent<Floater>() in OnTriggerExit. GetComponent against an UdonBehaviour works by getting all UdonBehaviour components and matching their internal ID/name/signature (due to it not being a real type at runtime - standard U# behaviour) This was triggering when an object with a VRC Station left its bounding box. The reason why this broke is due to a ClientSim fumble. On game start, if in the editor, ClientSim attaches an UdonBehaviour, and tries to attach a default station behaviour to that. The problem is, the way it does that is it looks for a given .asset under the Assets dir (specifically vrc example stuff) - but VRC no longer places those assets there (or some other script was removing it). This caused an empty UdonBehavior component to be added without an associated Udon VM instance. When the GetComponent lookup ran, it tried to hit the VM instance to get public vars, in order to get the signature. The VM instance was null as a result of this failed load, which caused GetComponent to fail, which crashed the calling script. My quick fix (quick after 1.5 hours lol) was to modify the ClientSim station helper and fix up the path. Hilariously, there's actually a TODO comment talking about finding the asset file "properly".
2
·

tracked

Avatar buttons displaying as "Button Text" and do not function.
[SDK version(s) 3.7.6, and 3.8.0._]This bug is a resurgence of this bug described in https://feedback.vrchat.com/sdk-bug-reports/p/372-beta2-action-menu-buttons-are-blank This bug occurs any time I attempt to add a button to an avatar in the most recent SDK builds, and in 3.7.6, and older builds that featured this bug, the solution was entirely random. From changing parts of the animator, to replacing the boolean value with a trigger, I've done just about everything to try and fix this myself, and yet it still has the same outcome. I've even tried changing the name of the parameter, but with no luck. The only time this works is if I change the button to a toggle, but that would ruin the Idea I had. This did not occur in versions older than 3.7, which leads me to believe something related to buttons may be the cause of this bug, and the problem gets worse over time. I've been trying to fix this bug for a while now. I can't think of any way to get a button to work on this avatar specifically. Further information: Upon first upload, this avatar's toggles were all functional, both buttons I had added displayed without an icon, and were labelled "Button Text". First attempt to fix: I double checked that the transitions had conditions where they were needed, and cross referenced with an older avatar I had made with the same feature. I found no differences between the old, and new avatars. Second attempt to fix: I remembered what another person said about buttons only working with triggers in some cases, only to realize that didn't work either. Third attempt to fix: I deleted my old animator controller, menu, and parameter in order to start from scratch, adding one feature at a time. The charged attack was the first feature I worked on to attempt to see if this would fix the problem. The bug persisted. ONLY solution known so far: Replace all buttons with toggles. The only time the menu properly interfaces with this layer is if I change the button to a toggle. I want to use a button so you hold the button to charge the attack, or tap it to use an uncharged attack. I have determined that because ONLY toggles work on this layer, that it must be the result of a bug within the SDK.
2
·

tracked

Load More