public static void RegisterVisualizer(Type forType, ICustomVisualizer visualizer, bool registerDerivedTypes = false) { Ensure.ArgumentNotNull(visualizer, "visualizer"); if (VisualizationManager._visualizerLookup == null) { VisualizationManager._visualizerLookup = new Dictionary <Type, ICustomVisualizer>(); } if (!(forType.IsAbstract | registerDerivedTypes)) { if (VisualizationManager._visualizerLookup.ContainsKey(forType)) { Debug.LogWarning(string.Format("A visualizer for type {0} has already been registered, skipping {1}.", forType.Name, visualizer.GetType().Name)); return; } VisualizationManager._visualizerLookup.Add(forType, visualizer); } else { foreach (Type derived in VisualizationManager.GetDerived(forType)) { if (!VisualizationManager._visualizerLookup.ContainsKey(derived)) { VisualizationManager._visualizerLookup.Add(derived, visualizer); } else { Debug.LogWarning(string.Format("A visualizer for type {0} has already been registered, skipping {1}.", derived.Name, visualizer.GetType().Name)); } } } }
/// <summary> /// Registers a custom visualizer. /// </summary> /// <param name="forType">The type visualized by the custom visualizer.</param> /// <param name="visualizer">The visualizer.</param> /// <param name="registerDerivedTypes">Whether to register the visualizer for all types derived from <paramref name="forType"/></param> public static void RegisterVisualizer(Type forType, ICustomVisualizer visualizer, bool registerDerivedTypes = false) { Ensure.ArgumentNotNull(visualizer, "visualizer"); if (_visualizerLookup == null) { _visualizerLookup = new Dictionary <Type, ICustomVisualizer>(); } if (forType.IsAbstract || registerDerivedTypes) { var types = GetDerived(forType); foreach (var t in types) { if (_visualizerLookup.ContainsKey(t)) { Debug.LogWarning(string.Format("A visualizer for type {0} has already been registered, skipping {1}.", t.Name, visualizer.GetType().Name)); } else { _visualizerLookup.Add(t, visualizer); } } } else { if (_visualizerLookup.ContainsKey(forType)) { Debug.LogWarning(string.Format("A visualizer for type {0} has already been registered, skipping {1}.", forType.Name, visualizer.GetType().Name)); return; } _visualizerLookup.Add(forType, visualizer); } }
internal static bool TryGetVisualizerFor(Type t, out ICustomVisualizer visualizer) { if (VisualizationManager._visualizerLookup == null) { visualizer = null; return(false); } return(VisualizationManager._visualizerLookup.TryGetValue(t, out visualizer)); }
public static void RegisterVisualizer <TFor>(ICustomVisualizer visualizer, bool registerDerivedTypes = false) { VisualizationManager.RegisterVisualizer(typeof(TFor), visualizer, registerDerivedTypes); }