private static EditorDrawer GetFallbackDrawer(Type type) { EditorDrawer d = null; if (s_fallbackDrawers.TryGetValue(type, out d)) { return(d); } else { int hierarchyDistance = int.MaxValue; foreach (var kvp in s_drawers) { if (kvp.Key.IsAssignableFrom(type)) { int newHD = GetHierarchyDistance(kvp.Key.GetTypeInfo(), type.GetTypeInfo()); if (newHD < hierarchyDistance) { hierarchyDistance = newHD; d = kvp.Value; } } } s_fallbackDrawers.Add(type, d); return(d); } }
public static void AddDrawer(EditorDrawer drawer) { s_drawers.Add(drawer.TypeDrawn, drawer); s_fallbackDrawers.Clear(); }