public string GetUdonFieldAccessorName(FieldInfo externField, FieldAccessorType accessorType, bool validate = true) { System.Type fieldType = UdonSharpUtils.RemapBaseType(externField.DeclaringType); string functionNamespace = SanitizeTypeName(fieldType.FullName).Replace("VRCUdonUdonBehaviour", "VRCUdonCommonInterfacesIUdonEventReceiver"); string methodName = $"__{(accessorType == FieldAccessorType.Get ? "get" : "set")}_{externField.Name.Trim('_')}"; string paramStr = $"__{GetUdonTypeName(externField.FieldType)}"; string finalFunctionSig = $"{functionNamespace}.{methodName}{paramStr}"; if (validate && !nodeDefinitionLookup.Contains(finalFunctionSig)) { throw new System.Exception($"Field accessor {finalFunctionSig} is not exposed in Udon"); } return(finalFunctionSig); }
public FieldAccessor(FieldAccessorType type, InterField field) { this.Type = type; this.Field = field; }