private static void SetValue(SerializedProperty property, Type fieldType, Object value)
 {
     if (InterfaceReferenceDrawer.GetInterfaceType(fieldType) != null)
     {
         InterfaceReferenceDrawer.SetReferenceValue(property, value);
     }
     else
     {
         property.objectReferenceValue = value;
     }
 }
        public static bool IsInterfaceReference(SerializedProperty property, Type fieldType)
        {
            if (property.propertyType == SerializedPropertyType.Generic)
            {
                if (fieldType != null)
                {
                    return(InterfaceReferenceDrawer.GetInterfaceType(fieldType) != null);
                }
            }

            return(false);
        }
        public static Type GetSearchType(Type fieldType, AutoPopulateAttribute autoPopulate)
        {
            Type searchType = fieldType;

            Type interfaceType = InterfaceReferenceDrawer.GetInterfaceType(searchType);

            if (interfaceType != null)
            {
                searchType = interfaceType;
            }

            if (autoPopulate.TypeOverride != null)
            {
                searchType = autoPopulate.TypeOverride;
            }
            return(searchType);
        }