Ejemplo n.º 1
0
        /// <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;
            }
        }
Ejemplo n.º 2
0
        /// <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;
                }
            }
        }