From 6e89d8569e13ff1639771a3fc3bc241f92c9e623 Mon Sep 17 00:00:00 2001 From: Merlin <36685500+MerlinVR@users.noreply.github.com> Date: Wed, 4 Aug 2021 14:18:13 -0700 Subject: [PATCH] Fix exposure tree exceptions in Unity 2019 - Resolves #94 --- .../UdonSharp/Editor/Editors/UdonTypeExposureTree.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Assets/UdonSharp/Editor/Editors/UdonTypeExposureTree.cs b/Assets/UdonSharp/Editor/Editors/UdonTypeExposureTree.cs index 45c3847f..4c659bbb 100644 --- a/Assets/UdonSharp/Editor/Editors/UdonTypeExposureTree.cs +++ b/Assets/UdonSharp/Editor/Editors/UdonTypeExposureTree.cs @@ -330,7 +330,7 @@ private void AddChildNode(TreeViewItem parentItem, MemberInfo memberInfo, ref in if (obsoleteAttribute != null) return; - if (memberInfo.MemberType == MemberTypes.Property && !((PropertyInfo)memberInfo).GetGetMethod().IsPublic) + if (memberInfo.MemberType == MemberTypes.Property && (!((PropertyInfo)memberInfo).GetGetMethod()?.IsPublic ?? false)) return; if (memberInfo.DeclaringType.IsEnum) @@ -350,7 +350,6 @@ private void AddChildNode(TreeViewItem parentItem, MemberInfo memberInfo, ref in } TreeViewItem memberItem = new TreeViewItem(currentID++, parentItem.depth + 1, $"<{memberInfo.MemberType}>{staticStr} {memberInfo.ToString()}"); - parentItem.AddChild(memberItem); TypeItemMetadata itemMetadata = new TypeItemMetadata(); itemMetadata.member = memberInfo; @@ -370,7 +369,12 @@ private void AddChildNode(TreeViewItem parentItem, MemberInfo memberInfo, ref in itemMetadata.exposed = resolver.IsValidUdonMethod(getAccessor); break; case MemberTypes.Property: - string getProperty = resolver.GetUdonMethodName(((PropertyInfo)memberInfo).GetGetMethod(), false); + var getMethod = ((PropertyInfo) memberInfo).GetGetMethod(); + + if (getMethod == null) + return; + + string getProperty = resolver.GetUdonMethodName(getMethod, false); exposedUdonExterns.Remove(getProperty); if (((PropertyInfo)memberInfo).GetSetMethod() != null) @@ -382,6 +386,8 @@ private void AddChildNode(TreeViewItem parentItem, MemberInfo memberInfo, ref in itemMetadata.exposed = resolver.IsValidUdonMethod(getProperty); break; } + + parentItem.AddChild(memberItem); itemMetadatas.Add(memberItem, itemMetadata);