[UDONSDK-2020.02.23.14.05_Public] Node interface missing proper description/text.
The latest update has missing description / title on the node variable parameters which makes it difficult to know what it does.
UdonBehaviour specialized GetComponent(s)<T> functions are not defined
All Unity types that inherit from Component have specialized GetComponent<T> functions for them that return the correct type of component directly or correct array type in the case of GetComponents<T>(). The signature for getting all components of type Transform is UnityEngineTransform.__GetComponents__TArray, this returns a Transform array. This is very useful behavior since it means we don't need to convert array types ourselves, but UdonBehaviour does not define any of these specializations so we can't use the specialized versions on it and need to do regular GetComponent(typeof(UdonBehaviour)) which returns a type of Component or Component for GetComponents. It would be nice to have these specializations for UdonBehaviours as well.
[Feb 23 Update] Subgraph inputs not recognized/missing resulting in compile errors.
Input variable parameters for the new Subgraph nodes seems to have an issue where they are not recognised by the graph compiler which results in a "FAILED_TO_FIND_PARAMETER" placeholder variable in Udon assembly. VRCSDK3-2020.02.23.13.54 UDONSDK-2020.02.23.14.05_Public In editor: In my example I have a simple subgraph that adds 1 to an input integer and returns it. The main graph prints the value of the input before the subgraph, and the subgraphs output. graph: https://gist.github.com/RengeMiyauchi/b96e3405e1035137ec36e7a4c4a4fae1 subgraph: https://gist.github.com/RengeMiyauchi/ebe850b3ea86043efac57fca12a1ed13 This results in the following assembly with the error "AssemblyException: Undefined data identifier 'FAILED_TO_FIND_PARAMETER'. Identifiers must be defined before use." uasm: https://gist.github.com/RengeMiyauchi/354abd64a8f41d0207c344136b54d599 Where the input variable for the subgraph is "PUSH, FAILED_TO_FIND_PARAMETER" when it should be "PUSH, test" modifying the uasm as such with the appropriate data_start values: https://gist.github.com/RengeMiyauchi/4321d8ccd8609e25c1ba9ca7bdf06e1d works without issues
GetComponent(s)<T> functions are not defined internally for VRCSDK3 components
The generic versions of VRCSDK3 component GetComponent<T> functions are not defined internally and throw runtime exceptions when you attempt to use them. This is only for the VRCSDK3 components, these functions work fine for the built-in Unity components. This is the error I get when attempting to use GetComponentInChildren to get a VRCPickup: An exception occurred during EXTERN to 'VRCSDK3ComponentsVRCPickup.__GetComponentInChildren__T'. The generic node '__GetComponentInChildren__T' doesn't support the type VRC.SDK3.Components.VRCPickup; Consider using the non-generic form of this node if it's available This means that people need to fall back to using GetComponent(typeof(VRCPickup)) currently which isn't much of an issue for single components, but can be difficult to handle for arrays of components since you need to iterate the array and assign each element of a new array of VRCPickup individually from a Component array. This is partially related to this canny, but is a different issue as the functions just don't have node definitions in the first place: https://vrchat.canny.io/vrchat-udon-closed-alpha-bugs/p/udonbehaviour-specialized-getcomponentst-functions-are-not-defined
UdonBehaviour array type is not defined
If you attempt to create an array of UdonBehaviours by naming the type VRCUdonUdonBehaviourArray, it does not get recognized as a valid Udon type and fails to assemble. The alternate special case type "VRCUdonCommonInterfacesIUdonEventReceiver" that's used in other places that takes the place of UdonBehavior doesn't have an array type of "VRCUdonCommonInterfacesIUdonEventReceiverArray" defined either. So at the moment we need to use arrays of Component to represent arrays of UdonBehaviours. This issue is probably related and seems like a workaround on the graph side or a bug that's hiding the issue: https://vrchat.canny.io/vrchat-udon-closed-alpha-bugs/p/udonbehaviour-variable-compiles-into-unityengineobjectarray-which-is-an-object
SendCustomNetworkEvent doesn't work
UdonBehaviour/SendCustomNetworkEvent doesn't work. Version: UDONSDK-2019.12.22.12.32 VRCSDK3-2019.12.21.16.01 Log file: Error - [Network Processing] Could not find any components capable of receiving RPC "UdonSyncRunProgramAsRPC(String)" on object "Cube" with path "/Cube" ("Cube" is the name of GameObject that has UdonBehaviour component)
Udon Assembly: Misbehaving Floating Point Initialisation
Even though assigning literals (specifically floating point numbers) isn't officially supported as of right now, there is a problem with initialising floating point numbers, due to Float.Parse being "Culture Sensitive" and thereby countries that use , (comma) instead of . (period) as decimal-indicator will currently not be able to serialize UASM with decimal literals correctly.
UdonBehaviour.enabled is not exposed
Please expose the UdonBehaviour.enabled property, at the moment we can't enable and disable it at runtime.
Array CopyTo is missing target and index as input
UDONSDK-2019.12.22.12.32_Public This seems to apply to all .CopyTo nodes. It should accept a sourceArray, targetArray and index, but currently only accepts an "instance".
Udon Mesh ctor and Gizmos nodes not working
VRCSDK3-2020.02.03.22.36 UDONSDK-2020.02.03.11.56_Public The patch notes said these two nodes were added - Added Mesh Constructor node - Added Gizmos nodes Trying to use any gizmos node results in this error https://cdn.discordapp.com/attachments/504448512231211008/674030632963276820/unknown.png That error makes sense, but there's no OnDrawGizmosSelected event, so these are unusable at the moment. Also trying to use `EXTERN, "UnityEngineMesh.__ctor____UnityEngineMesh"` (what the graph spits out) causes this error `VRC.Udon.VM.UdonVMException: The VM encountered an error!` `Exception Message:` ` External function '__ctor____UnityEngineMesh' is not supported.` Lastly I noticed there's I also noticed `UnityEngineTypeResolver` doesn't have a mapping from `"UnityEngineGizmos" -> typeof(UnityEngine.Gizmos)` Speaking of things missing from the type resolvers, I had to create my own type resolver for a lot of missing mappings from string to type that exist in the strings of Udon externs. Unsure whether or not these are intended to be missing https://github.com/Toocanzs/Udon-Type-Exporter/blob/master/ExtendedUASM/ExceptionTypeResolver.cs