From e8ac3aa02db68046596df5e7ee1d7987158b33a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Perneky=20L=C3=A1szl=C3=B3?= Date: Wed, 11 Oct 2017 12:42:03 +0200 Subject: [PATCH] Added support for external renderers. (#431) --- .../Visuals/Flat/FlatGuiVisualizer.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/FlatGuiVisualizer.cs b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/FlatGuiVisualizer.cs index f2145842..4bbdcfcd 100644 --- a/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/FlatGuiVisualizer.cs +++ b/Source/MonoGame.Extended.NuclexGui/Visuals/Flat/FlatGuiVisualizer.cs @@ -30,6 +30,9 @@ namespace MonoGame.Extended.NuclexGui.Visuals.Flat /// Avaiable renderers private readonly Dictionary _renderers; + /// Assemblies which has renderer implementations + public static readonly List ExternalAssembliesWithRenderers = new List(); + /// Initializes a new gui painter for traditional GUIs /// Content manager that will be used to load the skin resources /// Stream from which the GUI Visualizer will read the skin description @@ -118,10 +121,17 @@ namespace MonoGame.Extended.NuclexGui.Visuals.Flat } private void FetchRenderers() + { + FetchRenderers(typeof(FlatGuiVisualizer).GetTypeInfo().Assembly); + foreach(var assembly in ExternalAssembliesWithRenderers) + FetchRenderers(assembly); + } + + private void FetchRenderers(Assembly assembly) { foreach ( var typeinfo in - typeof(FlatGuiVisualizer).GetTypeInfo().Assembly.DefinedTypes.Where(e => e.IsPublic && !e.IsAbstract)) + assembly.DefinedTypes.Where(e => e.IsPublic && !e.IsAbstract)) { // If the type doesn't implement the IFlatcontrolRenderer interface, there's // no chance that it will implement one of the generic control drawers