/// <summary>Creates a new solid color screen mask</summary> /// <param name="graphicsDevice"> /// Graphics device the screen mask will be draw with /// </param> /// <param name="createDelegate"> /// Factory method that will be used to instantiate the mask /// </param> /// <returns>The newly created solid color screen mask</returns> internal static ColorScreenMask Create( GraphicsDevice graphicsDevice, CreateDelegate createDelegate ) { // Fake up a service provider with a graphics device service so we can // create a content manager without the huge rat-tail of references IServiceProvider serviceProvider; serviceProvider = GraphicsDeviceServiceHelper.MakePrivateServiceProvider( GraphicsDeviceServiceHelper.MakeDummyGraphicsDeviceService(graphicsDevice) ); // Create a resource content manager to load the default effect and hand // everything to the new screen mask instance, which will then be responsible // for freeing those resources again. ResourceContentManager contentManager = new ResourceContentManager( serviceProvider, Resources.ScreenMaskResources.ResourceManager ); try { Effect effect = contentManager.Load <Effect>("ScreenMaskEffect"); try { return(createDelegate(graphicsDevice, contentManager, effect)); } catch (Exception) { effect.Dispose(); throw; } } catch (Exception) { contentManager.Dispose(); throw; } }
/// <summary>Initializes a new gui visualizer from a skin stored as a resource</summary> /// <param name="serviceProvider"> /// Game service provider containing the graphics device service /// </param> /// <param name="resourceManager"> /// Resource manager containing the resources used in the skin /// </param> /// <param name="skinResource"> /// Name of the resource containing the skin description /// </param> public static FlatGuiVisualizer FromResource( IServiceProvider serviceProvider, ResourceManager resourceManager, string skinResource ) { byte[] resourceData = (byte[])resourceManager.GetObject(skinResource); if (resourceData == null) { throw new ArgumentException( "Resource '" + skinResource + "' not found", "skinResource" ); } // This sucks! I cannot use ResourceManager.GetStream() on a resource that's // stored as a byte array! using ( MemoryStream skinStream = new MemoryStream(resourceData, false) ) { ResourceContentManager contentManager = new ResourceContentManager( serviceProvider, resourceManager ); try { return(new FlatGuiVisualizer(contentManager, skinStream)); } catch (Exception) { contentManager.Dispose(); throw; } } }