@@ -826,15 +826,19 @@ internal void SyncSerializedPropertyPathes()
826826 }
827827 }
828828
829+ protected SerializedProperty FindSerializedProperty ( string fieldName )
830+ {
831+ int i = owner . graph . nodes . FindIndex ( n => n == nodeTarget ) ;
832+ return owner . serializedGraph . FindProperty ( "nodes" ) . GetArrayElementAtIndex ( i ) . FindPropertyRelative ( fieldName ) ;
833+ }
834+
829835 protected VisualElement AddControlField ( FieldInfo field , string label = null , bool showInputDrawer = false , Action valueChangedCallback = null )
830836 {
831837 if ( field == null )
832838 return null ;
833839
834840 // This doesn't work
835- int i = owner . graph . nodes . FindIndex ( n => n == nodeTarget ) ;
836- var prop = owner . serializedGraph . FindProperty ( "nodes" ) . GetArrayElementAtIndex ( i ) . FindPropertyRelative ( field . Name ) ;
837- var element = new PropertyField ( prop , showInputDrawer ? "" : label ) ;
841+ var element = new PropertyField ( FindSerializedProperty ( field . Name ) , showInputDrawer ? "" : label ) ;
838842 element . Bind ( owner . serializedGraph ) ;
839843
840844 // Disallow picking scene objects when the graph is not linked to a scene
@@ -903,14 +907,10 @@ protected void AddSettingField(FieldInfo field)
903907
904908 var label = field . GetCustomAttribute < SettingAttribute > ( ) . name ;
905909
906- // TODO: find the property path from the field
907- // var element = new PropertyField();
908- var element = FieldFactory . CreateField ( field . FieldType , field . GetValue ( nodeTarget ) , ( newValue ) => {
909- owner . RegisterCompleteObjectUndo ( "Updated " + newValue ) ;
910- field . SetValue ( nodeTarget , newValue ) ;
911- } , label ) ;
910+ var element = new PropertyField ( FindSerializedProperty ( field . Name ) ) ;
911+ element . Bind ( owner . serializedGraph ) ;
912912
913- if ( element != null )
913+ if ( element != null )
914914 {
915915 settingsContainer . Add ( element ) ;
916916 element . name = field . Name ;
0 commit comments