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
VRCSDK 3.6.0 breaks GetComponent<MyType>()
3.5.2: working 3.6.0: exception occured like below GetComponent<MyCustomType>() throws because of failing to get the type of generics type parameter. [UdonBehaviour] An exception occurred during Udon execution, this UdonBehaviour will be halted. VRC.Udon.VM.UdonVMException: The VM encountered an error! Exception Message: An exception occurred during EXTERN to 'VRCUdonCommonInterfacesIUdonEventReceiver.__GetProgramVariableType__SystemString__SystemType'. Parameter Addresses: 0x00000105, 0x0000007A, 0x00000106 Object reference not set to an instance of an object ---------------------- Program Counter was at: 8244 ---------------------- Stack Dump: 0: 0x0000001E 1: 0x0000003C ---------------------- Heap Dump: 0x00000000: -3985560734572591354 0x00000001: JetDog.UserCollider.AvatarArmatureColliderManager 0x00000002: 2420 0x00000003: avatar collider root (VRC.Udon.UdonBehaviour) 0x00000004: True 0x00000005: True 0x00000006: False 0x00000007: False 0x00000008: 17 0x00000009: 17 0x0000000A: UnityEngine.LayerMask 0x0000000B: UnityEngine.LayerMask 0x0000000C: UnityEngine.LayerMask 0x0000000D: UnityEngine.LayerMask 0x0000000E: True 0x0000000F: True 0x00000010: True 0x00000011: True 0x00000012: True 0x00000013: True 0x00000014: VRC.SDK3.Data.DataDictionary 0x00000015: VRC.SDK3.Data.DataList 0x00000016: VRC.SDKBase.VRCPlayerApi 0x00000017: null 0x00000018: (4.00, 72.25, 225.00) 0x00000019: (1, 3, 6) 0x0000001A: 0 0x0000001B: False 0x0000001C: True 0x0000001D: False 0x0000001E: 4294967295 0x0000001F: False 0x00000020: null 0x00000021: null 0x00000022: False 0x00000023: 0 0x00000024: Reference 0x00000025: 1 0x00000026: False 0x00000027: False 0x00000028: __10_state__param 0x00000029: __0_VisualizeColliders 0x0000002A: 1228 0x0000002B: null 0x0000002C: 0 0x0000002D: null 0x0000002E: null 0x0000002F: collider manager (VRC.Udon.UdonBehaviour) 0x00000030: DistanceUpdateLoop 0x00000031: 0.05 0x00000032: Update 0x00000033: VRC.SDKBase.VRCPlayerApi 0x00000034: Player Joined 0x00000035: 2420 0x00000036: avatar collider root(Clone) (UnityEngine.GameObject) 0x00000037: avatar collider root (UnityEngine.GameObject) 0x00000038: (0.00, 0.00, 0.00) 0x00000039: (0.00000, 0.00000, 0.00000, 1.00000) 0x0000003A: (0.00, 0.00, 0.00) 0x0000003B: (0.00000, 0.00000, 0.00000, 1.00000) 0x0000003C: 2516 0x0000003D: null 0x0000003E: avatar collider root(Clone) (UnityEngine.Transform) 0x0000003F: Player Joined inst 0x00000040: __0_player__param 0x00000041: __0_SetUser 0x00000042: Player Joined setp 0x00000043: __1_value__param 0x00000044: __0_set_ColliderLayer 0x00000045: __6_value__param 0x00000046: __0_set_CollisionTransferOwnership 0x00000047: __3_value__param 0x00000048: __0_set_ColliderIsTrigger 0x00000049: __4_value__param 0x0000004A: __0_set_IncludeLayers 0x0000004B: __5_value__param 0x0000004C: __0_set_ExcludeLayers 0x0000004D: 3656 0x0000004E: null 0x0000004F: True 0x00000050: null 0x00000051: 10 0x00000052: 4420 0x00000053: 9 0x00000054: collider manager (VRC.Udon.UdonBehaviour) 0x00000055: Head 0x00000056: Hips 0x00000057: (0.00, 0.00, 1.00) 0x00000058: 0.5 0x00000059: 2 0x0000005A: 0.6 0x0000005B: get_FingerColliderEnable 0x0000005C: __0_get_FingerColliderEnable__ret 0x0000005D: __0_state__param 0x0000005E: __0_SetFingerColliderState 0x0000005F: get_ArmColliderEnable 0x00000060: __0_get_ArmColliderEnable__ret 0x00000061: get_LegColliderEnable 0x00000062: __0_get_LegColliderEnable__ret 0x00000063: __4_state__param 0x00000064: __0_SetArmColliderState 0x00000065: __6_state__param 0x00000066: __0_SetLegColliderState 0x00000067: get_HeadColliderEnable 0x00000068: __0_get_HeadColliderEnable__ret 0x00000069: get_TorsoColliderEnable 0x0000006A: __0_get_TorsoColliderEnable__ret 0x0000006B: get_HandColliderEnable 0x0000006C: __0_get_HandColliderEnable__ret 0x0000006D: __2_state__param 0x0000006E: __0_SetHandColliderState 0x0000006F: __8_state__param 0x00000070: __0_SetTorsoColliderState 0x00000071: __9_state__param 0x00000072: __0_SetHeadColliderState 0x00000073: __0_value__param 0x00000074: __0_set_UpdateEveryNthFrame 0x00000075: 7888 0x00000076: avatar collider root(Clone) (UnityEngine.GameObject) 0x00000077: avatar collider root (UnityEngine.GameObject) 0x00000078: VRC.Udon.UdonBehaviour 0x00000079: -1643787929011847894 0x0000007A: __refl_typeid 0x0000007B: null 0x0000007C: null 0x0000007D: 0 0x0000007E: 0 0x0000007F: False 0x00000080: Null 0x00000081: Null 0x00000082: False 0x00000083: null 0x00000084: null 0x00000085: null 0x00000086: null 0x00000087: False 0x00000088: 0 0x00000089: 0 0x0000008A: Null 0x0000008B: Null 0x0000008C: False 0x0000008D: null 0x0000008E: null 0x0000008F: False 0x00000090: False 0x00000091: Null 0x00000092: Null 0x00000093: False 0x00000094: null 0x00000095: null 0x00000096: 0 0x00000097: 0 0x00000098: 0 0x00000099: False 0x0000009A: null 0x0000009B: 0 0x0000009C: Null 0x0000009D: Null 0x0000009E: False 0x0000009F: null 0x000000A0: null 0x000000A1: avatar collider root (UnityEngine.GameObject) 0x000000A2: avatar collider root(Clone) (UnityEngine.GameObject) 0x000000A3: avatar collider root (UnityEngine.GameObject) 0x000000A4: null 0x000000A5: avatar collider root(Clone) (UnityEngine.Transform) 0x000000A6: null 0x000000A7: False 0x000000A8: null 0x000000A9: 0 0x000000AA: False 0x000000AB: False 0x000000AC: UnityEngine.LayerMask 0x000000AD: UnityEngine.LayerMask 0x000000AE: 0 0x000000AF: Null 0x000000B0: Null 0x000000B1: False 0x000000B2: 0 0x000000B3: Null 0x000000B4: Null 0x000000B5: null 0x000000B6: null 0x000000B7: null 0x000000B8: null 0x000000B9: 0 0x000000BA: Null 0x000000BB: False 0x000000BC: False 0x000000BD: 0 0x000000BE: 0 0x000000BF: 0 0x000000C0: False 0x000000C1: Null 0x000000C2: 0 0x000000C3: null 0x000000C4: 0 0x000000C5: Null 0x000000C6: Null 0x000000C7: False 0x000000C8: VRC.SDKBase.VRCPlayerApi+TrackingData 0x000000C9: (0.00, 0.00, 0.00) 0x000000CA: False 0x000000CB: False 0x000000CC: (0.00000, 0.00000, 0.00000, 0.00000) 0x000000CD: (0.00, 0.00, 0.00) 0x000000CE: (0.00, 0.00, 0.00) 0x000000CF: (0.00, 0.00, 0.00) 0x000000D0: (0.00, 0.00, 0.00) 0x000000D1: 0 0x000000D2: 0 0x000000D3: (0.00, 0.00, 0.00) 0x000000D4: (0.00, 0.00, 0.00) 0x000000D5: 0 0x000000D6: 0 0x000000D7: 0 0x000000D8: null 0x000000D9: null 0x000000DA: False 0x000000DB: 0 0x000000DC: 0 0x000000DD: 0 0x000000DE: False 0x000000DF: null 0x000000E0: False 0x000000E1: 0 0x000000E2: 0 0x000000E3: 0 0x000000E4: False 0x000000E5: False 0x000000E6: null 0x000000E7: False 0x000000E8: null 0x000000E9: 0 0x000000EA: 0 0x000000EB: 0 0x000000EC: False 0x000000ED: False 0x000000EE: False 0x000000EF: null 0x000000F0: False 0x000000F1: null 0x000000F2: False 0x000000F3: null 0x000000F4: False 0x000000F5: False 0x000000F6: False 0x000000F7: 0 0x000000F8: (0, 0, 0) 0x000000F9: 0 0x000000FA: (0, 0, 0) 0x000000FB: 0 0x000000FC: (0, 0, 0) 0x000000FD: avatar collider root(Clone) (UnityEngine.GameObject) 0x000000FE: avatar collider root(Clone) (UnityEngine.Transform) 0x000000FF: UnityEngine.Component[] 0x00000100: UnityEngine.Component[] 0x00000101: -1643787929011847894 0x00000102: 1 0x00000103: 0 0x00000104: True 0x00000105: avatar collider root(Clone) (VRC.Udon.UdonBehaviour) 0x00000106: null 0x00000107: null 0x00000108: False 0x00000109: null 0x0000010A: False 0x0000010B: 0 0x0000010C: null 0x0000010D: VRCSDK3DataDataList.__get_Count__SystemInt32 0x0000010E: SystemInt32.__op_LessThan__SystemInt32_SystemInt32__SystemBoolean 0x0000010F: VRCSDK3DataDataList.__get_Item__SystemInt32__VRCSDK3DataDataToken 0x00000110: VRCSDK3DataDataDictionary.__TryGetValue__VRCSDK3DataDataToken_VRCSDK3DataTokenType_VRCSDK3DataDataTokenRef__SystemBoolean 0x00000111: VRCSDK3DataDataToken.__get_Reference__SystemObject 0x00000112: UnityEngineComponent.__get_gameObject__UnityEngineGameObject 0x00000113: UnityEngineGameObject.__SetActive__SystemBoolean__SystemVoid 0x00000114: SystemInt32.__op_Addition__SystemInt32_SystemInt32__SystemInt32 0x00000115: VRCUdonCommonInterfacesIUdonEventReceiver.__SetProgramVariable__SystemString_SystemObject__SystemVoid 0x00000116: VRCUdonCommonInterfacesIUdonEventReceiver.__SendCustomEvent__SystemString__SystemVoid 0x00000117: SystemBoolean.__op_UnaryNegation__SystemBoolean__SystemBoolean 0x00000118: VRCSDK3DataDataToken.__ctor__SystemInt32__VRCSDK3DataDataToken 0x00000119: UnityEngineComponentArray.__ctor__SystemInt32__UnityEngineComponentArray 0x0000011A: SystemObjectArray.__Set__SystemInt32_SystemObject__SystemVoid 0x0000011B: SystemArray.__get_Length__SystemInt32 0x0000011C: SystemInt32.__op_Equality__SystemInt32_SystemInt32__SystemBoolean 0x0000011D: SystemArray.__Copy__SystemArray_SystemArray_SystemInt32__SystemVoid 0x0000011E: VRCSDKBaseNetworking.__get_LocalPlayer__VRCSDKBaseVRCPlayerApi 0x0000011F: UnityEngineVector3.__Scale__UnityEngineVector3_UnityEngineVector3__UnityEngineVector3 0x00000120: VRCUdonCommonInterfacesIUdonEventReceiver.__SendCustomEventDelayedSeconds__SystemString_SystemSingle_VRCUdonCommonEnumsEventTiming__SystemVoid 0x00000121: UnityEngineDebug.__Log__SystemObject__SystemVoid 0x00000122: UnityEngineGameObject.__get_transform__UnityEngineTransform 0x00000123: VRCSDKBaseVRCPlayerApi.__get_isLocal__SystemBoolean 0x00000124: VRCSDKBaseVRCPlayerApi.__get_playerId__SystemInt32 0x00000125: VRCSDK3DataDataToken.__op_Implicit__SystemInt32__VRCSDK3DataDataToken 0x00000126: VRCSDK3DataDataToken.__op_Implicit__UnityEngineObject__VRCSDK3DataDataToken 0x00000127: VRCSDK3DataDataDictionary.__Add__VRCSDK3DataDataToken_VRCSDK3DataDataToken__SystemVoid 0x00000128: VRCSDK3DataDataDictionary.__GetKeys__VRCSDK3DataDataList 0x00000129: VRCSDK3DataDataDictionary.__get_Item__VRCSDK3DataDataToken__VRCSDK3DataDataToken 0x0000012A: UnityEngineObject.__Destroy__UnityEngineObject__SystemVoid 0x0000012B: VRCSDK3DataDataDictionary.__Remove__VRCSDK3DataDataToken__SystemBoolean 0x0000012C: SystemInt32.__op_Remainder__SystemInt32_SystemInt32__SystemInt32 0x0000012D: VRCSDK3DataDataToken.__get_Int__SystemInt32 0x0000012E: VRCSDKBaseVRCPlayerApi.__GetPlayerById__SystemInt32__VRCSDKBaseVRCPlayerApi 0x0000012F: SystemInt32.__op_GreaterThan__SystemInt32_SystemInt32__SystemBoolean 0x00000130: VRCSDKBaseVRCPlayerApi.__GetTrackingData__VRCSDKBaseVRCPlayerApiTrackingDataType__VRCSDKBaseVRCPlayerApiTrackingData 0x00000131: VRCSDKBaseVRCPlayerApi.__GetBonePosition__UnityEngineHumanBodyBones__UnityEngineVector3 0x00000132: UnityEngineVector3.__op_Equality__UnityEngineVector3_UnityEngineVector3__SystemBoolean 0x00000133: VRCSDKBaseVRCPlayerApi.__GetPosition__UnityEngineVector3 0x00000134: VRCSDKBaseVRCPlayerApiTrackingData.__get_rotation__UnityEngineQuaternion 0x00000135: UnityEngineQuaternion.__op_Multiply__UnityEngineQuaternion_UnityEngineVector3__UnityEngineVector3 0x00000136: VRCSDKBaseVRCPlayerApiTrackingData.__get_position__UnityEngineVector3 0x00000137: UnityEngineVector3.__op_Subtraction__UnityEngineVector3_UnityEngineVector3__UnityEngineVector3 0x00000138: UnityEngineVector3.__get_normalized__UnityEngineVector3 0x00000139: UnityEngineVector3.__Dot__UnityEngineVector3_UnityEngineVector3__SystemSingle 0x0000013A: SystemSingle.__op_GreaterThan__SystemSingle_SystemSingle__SystemBoolean 0x0000013B: UnityEngineVector3.__get_sqrMagnitude__SystemSingle 0x0000013C: VRCSDKBaseVRCPlayerApi.__GetAvatarEyeHeightAsMeters__SystemSingle 0x0000013D: UnityEngineMathf.__Pow__SystemSingle_SystemSingle__SystemSingle 0x0000013E: SystemSingle.__op_Division__SystemSingle_SystemSingle__SystemSingle 0x0000013F: UnityEngineVector3.__get_x__SystemSingle 0x00000140: SystemSingle.__op_Multiplication__SystemSingle_SystemSingle__SystemSingle 0x00000141: SystemSingle.__op_LessThan__SystemSingle_SystemSingle__SystemBoolean 0x00000142: VRCUdonCommonInterfacesIUdonEventReceiver.__GetProgramVariable__SystemString__SystemObject 0x00000143: SystemBoolean.__op_Inequality__SystemBoolean_SystemBoolean__SystemBoolean 0x00000144: UnityEngineVector3.__get_y__SystemSingle 0x00000145: UnityEngineVector3.__get_z__SystemSingle 0x00000146: UnityEngineVector3Int.__get_x__SystemInt32 0x00000147: UnityEngineVector3Int.__get_y__SystemInt32 0x00000148: UnityEngineVector3Int.__get_z__SystemInt32 0x00000149: UnityEngineTransform.__SetPositionAndRotation__UnityEngineVector3_UnityEngineQuaternion__SystemVoid 0x0000014A: UnityEngineComponent.__GetComponents__SystemType__UnityEngineComponentArray 0x0000014B: SystemObjectArray.__Get__SystemInt32__SystemObject 0x0000014C: VRCUdonCommonInterfacesIUdonEventReceiver.__GetProgramVariableType__SystemString__SystemType 0x0000014D: SystemType.__op_Equality__SystemType_SystemType__SystemBoolean 0x0000014E: SystemObject.__op_Inequality__SystemObject_SystemObject__SystemBoolean 0x0000014F: SystemConvert.__ToInt64__SystemObject__SystemInt64 0x00000150: SystemInt64.__op_Equality__SystemInt64_SystemInt64__SystemBoolean 0x00000151: VRCInstantiate.__Instantiate__UnityEngineGameObject__UnityEngineGameObject ---------------------- Inner Exception: ---> VRC.Udon.VM.UdonVMException: An exception occurred during EXTERN to 'VRCUdonCommonInterfacesIUdonEventReceiver.__GetProgramVariableType__SystemString__SystemType'. Parameter Addresses: 0x00000105, 0x0000007A, 0x00000106 ---> System.NullReferenceException: Object reference not set to an instance of an object at VRC.Udon.UdonBehaviour.GetProgramVariableType (System.String symbolName) [0x00000] in .\Packages\com.vrchat.worlds\Runtime\Udon\UdonBehaviour.cs:1731 at VRC.Udon.Wrapper.Modules.ExternVRCUdonCommonInterfacesIUdonEventReceiver.__GetProgramVariableType__SystemString__SystemType (VRC.Udon.Common.Interfaces.IUdonHeap heap, System.Span`1[T] parameterAddresses) [0x0001e] in <11546783382e41f2a8d66d02efa564f4>:0 at VRC.Udon.VM.UdonVM.Interpret () [0x00273] in <b8155616f39a49dbbdd1159444a18382>:0 --- End of inner exception stack trace --- at VRC.Udon.VM.UdonVM.Interpret () [0x0033c] in <b8155616f39a49dbbdd1159444a18382>:0 --- End of inner exception stack trace --- at VRC.Udon.VM.UdonVM.Interpret () [0x00436] in <b8155616f39a49dbbdd1159444a18382>:0 at VRC.Udon.UdonBehaviour.RunProgram (System.UInt32 entryPoint) [0x00058] in .\Packages\com.vrchat.worlds\Runtime\Udon\UdonBehaviour.cs:1035 UnityEngine.Debug:LogError (object,UnityEngine.Object) VRC.Core.Logger:LogError (string,int,UnityEngine.Object) VRC.Udon.UdonBehaviour:RunProgram (uint) (at ./Packages/com.vrchat.worlds/Runtime/Udon/UdonBehaviour.cs:1049) VRC.Udon.UdonBehaviour:RunEvent (string,System.ValueTuple`2<string, object>[]) (at ./Packages/com.vrchat.worlds/Runtime/Udon/UdonBehaviour.cs:1412) VRC.Udon.UdonManager:RunEvent (string,System.ValueTuple`2<string, object>[]) (at ./Packages/com.vrchat.worlds/Runtime/Udon/UdonManager.cs:964) VRC.SDK3.ClientSim.ClientSimUdonManagerEventSender:RunEvent (string,System.ValueTuple`2<string, object>[]) (at ./Packages/com.vrchat.worlds/Integrations/ClientSim/Runtime/System/ClientSimUdonManagerEventSender.cs:16) VRC.SDK3.ClientSim.ClientSimUdonManager:OnPlayerJoined (VRC.SDK3.ClientSim.ClientSimOnPlayerJoinedEvent) (at ./Packages/com.vrchat.worlds/Integrations/ClientSim/Runtime/System/ClientSimUdonManager.cs:106) VRC.SDK3.ClientSim.ClientSimEventDispatcher:SendEvent<VRC.SDK3.ClientSim.ClientSimOnPlayerJoinedEvent> (VRC.SDK3.ClientSim.ClientSimOnPlayerJoinedEvent) (at ./Packages/com.vrchat.worlds/Integrations/ClientSim/Runtime/Events/ClientSimEventDispatcher.cs:62) VRC.SDK3.ClientSim.ClientSimPla<message truncated>
1
Proposal for fixing Audio Filters (eg low-pass) support for AVPro
I believe it is time to get a solution to the most plaguing issue (in my opinion) of AVPro: Audio Filters I do not think this is a "can't fix" situation. In this proposal I will go over the problem, considerations that have been discussed historically, and the solution I believe is feasible to implement with working sample code. ### Previous Cannys 1) https://feedback.vrchat.com/open-beta/p/986-avpro-player-ignores-lowpass-reverb-and-other-filters 2) https://feedback.vrchat.com/sdk-bug-reports/p/avpro-video-player-audio-filter-issue 3) https://feedback.vrchat.com/sdk-bug-reports/p/sound-effects-are-not-applied-to-audiosource-using-avpro-that-comes-with-sdk3 4) https://feedback.vrchat.com/feature-requests/p/usharpvideo-stream-audio-does-not-support-filters ### Crux of the issue As previously discussed in above canny #1, the current way of handling the AVPro speaker component (type named AudioOutput ) is that the component is implicitly created via AddComponent on the same game object. This has the critical drawback of being unable to respect any audio filters due to the DSP filter chain being _component order dependent_. The second half of this issue is that Unity has no runtime native way to change the ordering of components without fully reconstructing the references. This causes very obvious issues in regards to dependent scene references. (TCL's comment in canny #1 clarifies this as well) ### What has been considered Detecting and destroying/rebuilding known filter components after the implicit component is added. This is bad because all scene references to those components would be lost (eg: UI Events or public Udon variables). To avoid the lost components issue, a full scene search would be required in order to update the references which is costly and fragile. Placeholder components (shims) for each filter type that gets implicitly created after the implicit AudioOutput This is bad because it does not allow users to reference the actual filter components in the inspector (namely an issue for UI Events) Allow adding the AudioOutput script manually in scene and have the speaker search for it before trying to implicitly add the component. This is bad because it requires that the user import the AVProTrial package to be able to use built-in unity audio filters. This needs to be compatible with situations where the user does not wish to import that package so the dependency is decoupled from the feature itself. ### Proposed Solution A shim script that inherits from the AudioOutput class combined with a compiler flag for detecting if AVPro is present, and if not, then have a stub type of the _same namespace and type name_ which is _ONLY_ present in the sdk. Then update the VRCAVProVideoSpeaker to check for the existence of the shim component before creating an implicit AudioOutput, using it instead if found on the game object. This ensures that when the main shim script is loaded in editor, it is already a valid AudioOutput component and the component order is correctly retained so the Audio Filters will work correctly. In the SDK, the script type will check for the existence of AVPro through a version define, and if NOT present, will enable the AudioOutput stub class of the same namespace. An example of what it might be like: https://gist.github.com/techanon/41efc336604e148dde55862bff1778d9 I've tested this specific example in editor and it works there. Can't test in-client obviously.
7
Load More