@@ -114,7 +114,7 @@ public void Call() {
114114 try {
115115 thrownException = null ;
116116 var requestData = parameters . Select ( d => d . Value ) . ToArray ( ) ;
117- if ( ctorMode ) {
117+ if ( selectedCtor != null ) {
118118 var returnData = selectedCtor . Invoke ( requestData ) ;
119119 result = new MethodPropertyDrawer ( selectedCtor . ReflectedType , "Constructed object" , returnData , privateFields , obsolete ) ;
120120 } else {
@@ -182,6 +182,17 @@ void AddComponentMethod(Type type) {
182182 ctorInfo = m
183183 } )
184184 ) ;
185+ flag &= ~ BindingFlags . Instance ;
186+ methods . AddRange (
187+ type . GetMethods ( flag )
188+ . Where ( t => obsolete || ! Attribute . IsDefined ( t , typeof ( ObsoleteAttribute ) ) )
189+ . Where ( t => t . ReturnType == type )
190+ . Where ( t => string . IsNullOrEmpty ( filter ) || t . Name . IndexOf ( filter , StringComparison . CurrentCultureIgnoreCase ) >= 0 )
191+ . Select ( m => new ComponentMethod {
192+ method = m ,
193+ target = null
194+ } )
195+ ) ;
185196 }
186197
187198 void AddComponentMethod ( object target ) {
@@ -206,10 +217,16 @@ void InitComponentMethods(bool resetIndex = true) {
206217 else
207218 AddComponentMethod ( component ) ;
208219 if ( ctorMode )
209- methodNames = methods . Select ( m => string . Format (
210- "Constructor ({0} parameters)" ,
211- m . ctorInfo . GetParameters ( ) . Length
212- ) ) . ToArray ( ) ;
220+ methodNames = methods . Select ( m => m . ctorInfo != null ?
221+ string . Format (
222+ "[Constructor] ({0} parameters)" ,
223+ m . ctorInfo . GetParameters ( ) . Length
224+ ) : string . Format (
225+ "{0} ({1} parameters)" ,
226+ Helper . GetMemberName ( m . method as MemberInfo ) ,
227+ m . method . GetParameters ( ) . Length
228+ )
229+ ) . ToArray ( ) ;
213230 else if ( drawHeader ) {
214231 var gameObject = component as GameObject ;
215232 if ( gameObject != null )
@@ -244,8 +261,9 @@ void InitComponentMethods(bool resetIndex = true) {
244261 }
245262
246263 void InitMethodParams ( ) {
247- if ( ctorMode ) {
248- selectedCtor = methods [ selectedMethodIndex ] . ctorInfo ;
264+ selectedCtor = methods [ selectedMethodIndex ] . ctorInfo ;
265+ if ( selectedCtor != null ) {
266+ selectedMethod = null ;
249267 component = null ;
250268 parameterInfo = selectedCtor . GetParameters ( ) ;
251269 } else {
@@ -279,11 +297,11 @@ void DrawComponent() {
279297 }
280298
281299 void DrawMethod ( ) {
282- if ( paramsFolded = EditorGUILayout . Foldout ( paramsFolded , ctorMode ? "Constructor" : selectedMethod . Name ) ) {
300+ if ( paramsFolded = EditorGUILayout . Foldout ( paramsFolded , selectedCtor != null ? "Constructor" : selectedMethod . Name ) ) {
283301 GUI . changed = false ;
284302 EditorGUI . indentLevel ++ ;
285303 EditorGUILayout . BeginVertical ( ) ;
286- if ( ctorMode ? selectedCtor . ContainsGenericParameters : selectedMethod . ContainsGenericParameters )
304+ if ( selectedCtor != null ? selectedCtor . ContainsGenericParameters : selectedMethod . ContainsGenericParameters )
287305 EditorGUILayout . HelpBox ( "Generic method is not supported." , MessageType . Warning ) ;
288306 else {
289307 if ( parameterInfo . Length == 0 )
0 commit comments