Example #1
0
        /// <inheritdoc />
        public object?ReadContent(IContentManager contentManager, ref ContentReaderParameters parameters)
        {
            IGraphicsDevice graphicsDevice =
                contentManager.ServiceRegistry.GetService <IGraphicsDevice>();

            return(Texture.Load(graphicsDevice.Device, parameters.Stream));
        }
        /// <inheritdoc />
        public object?ReadContent(IContentManager contentManager, ref ContentReaderParameters parameters)
        {
            SpriteFont font = ContentSerializer.Read <SpriteFont>(parameters.Stream);

            if (font.ImageData.Length <= 0)
            {
                return(null);
            }

            IGraphicsDevice graphicsDevice =
                contentManager.ServiceRegistry.GetService <IGraphicsDevice>();

            try
            {
                using (MemoryStream ms = new MemoryStream(font.ImageData)
                {
                    Position = 0
                })
                {
                    font.Texture = Texture.Load(graphicsDevice.Device, ms) ??
                                   throw new NullReferenceException($"{nameof(font.Texture)}");
                }
            }
            catch { return(null); }

            return(font);
        }
Example #3
0
        public object ReadContent(IContentManager readerManager, ref ContentReaderParameters parameters)
        {
            parameters.KeepStreamOpen = false;
            var image = Image.Load(parameters.Stream);

            if (image != null)
            {
                image.Name = parameters.AssetName;
            }
            return(image);
        }
        object IContentReader.ReadContent(IContentManager readerManager, ref ContentReaderParameters parameters)
        {
            parameters.KeepStreamOpen = false;
            var service = readerManager.ServiceProvider.GetService(typeof(IGraphicsDeviceService)) as IGraphicsDeviceService;

            if (service == null)
            {
                throw new InvalidOperationException("Unable to retrieve a IGraphicsDeviceService service provider");
            }

            if (service.GraphicsDevice == null)
            {
                throw new InvalidOperationException("GraphicsDevice is not initialized");
            }

            return(ReadContent(readerManager, service.GraphicsDevice, ref parameters));
        }
Example #5
0
        /// <summary>
        /// Reads the content and performs any common precondition checks.
        /// </summary>
        /// <param name="contentManager">The content manager.</param>
        /// <param name="parameters">The content reader parameters.</param>
        /// <returns>The loaded audio content object.</returns>
        /// <exception cref="ArgumentNullException">Is thrown when <paramref name="contentManager"/> is null.</exception>
        /// <exception cref="ArgumentException">Is thrown when <paramref name="parameters"/> <see cref="ContentReaderParameters.AssetType"/> is not <typeparamref name="TAsset"/></exception>
        /// <exception cref="InvalidOperationException">Is thrown when <paramref name="contentManager"/> <see cref="IContentManager.ServiceProvider"/> doesn't contain an <see cref="AudioManager"/> service.</exception>
        public object ReadContent(IContentManager contentManager, ref ContentReaderParameters parameters)
        {
            if (contentManager == null)
            {
                throw new ArgumentNullException("contentManager");
            }

            if (parameters.AssetType != typeof(TAsset))
            {
                var message = string.Format("Invalid asset type, expected {0} but got {1}", typeof(TAsset), parameters.AssetType);
                throw new ArgumentException(message, "parameters");
            }

            var audioManager = contentManager.ServiceProvider.GetService(typeof(AudioManager)) as AudioManager;

            if (audioManager == null)
            {
                throw new InvalidOperationException("Cannot read WaveBank without AudioManager.");
            }

            return(ReadContentInternal(audioManager, ref parameters));
        }
Example #6
0
        protected override Model ReadContent(IContentManager readerManager, GraphicsDevice device, ref ContentReaderParameters parameters)
        {
            var readerOptions = parameters.Options as ModelContentReaderOptions;

            if (parameters.Options != null && readerOptions == null)
            {
                throw new ArgumentException("Invalid options. Must be instance of ModelContentReaderOptions", "options");
            }

            var assetPath = Path.GetDirectoryName(parameters.AssetName);

            // Loads the model.
            var model = Model.Load(device, parameters.Stream, name =>
            {
                // Try to load the texture with its texture path as is
                // otherwise try to load with tkb extension
                var texturePath = Path.Combine(assetPath ?? string.Empty, name);
                if (!readerManager.Exists(texturePath))
                {
                    // Use the extension tkb to load a texture
                    texturePath = Path.ChangeExtension(texturePath, "tkb");
                }

                // If the texture exists, return it, otherwise return null without throwing an exception.
                return(readerManager.Exists(texturePath) ? readerManager.Load <Texture>(texturePath) : null);
            });

            if (model == null)
            {
                return(null);
            }

            // If the model has no name, use filename
            if (model.Name == null)
            {
                model.Name = Path.GetFileName(parameters.AssetName);
            }

            // Applies the Effect installer on the model.
            bool disableInstaller = readerOptions != null && readerOptions.DisableEffectInstaller;

            if (!disableInstaller)
            {
                IEffectInstaller effectInstaller;
                if (readerOptions != null && readerOptions.EffectInstaller != null)
                {
                    effectInstaller = readerOptions.EffectInstaller;
                }
                else
                {
                    effectInstaller = new BasicEffectInstaller(device);
                }

                effectInstaller.Apply(model);
            }

            return(model);
        }
 protected abstract T ReadContent(IContentManager readerManager, GraphicsDevice device, ref ContentReaderParameters parameters);
Example #8
0
 protected override SoundEffect ReadContentInternal(AudioManager audioManager, ref ContentReaderParameters parameters)
 {
     return(SoundEffect.FromStream(audioManager, parameters.Stream, parameters.AssetName));
 }
Example #9
0
        public object ReadContent(IContentManager contentManager, ref ContentReaderParameters parameters)
        {
            var service = contentManager.ServiceProvider.GetService(typeof(IGraphicsDeviceService)) as IGraphicsDeviceService;

            if (service == null)
            {
                throw new InvalidOperationException("Unable to retrieve a IGraphicsDeviceService service provider");
            }

            if (service.GraphicsDevice == null)
            {
                throw new InvalidOperationException("GraphicsDevice is not initialized");
            }

            string asset = parameters.AssetName;

            if (Path.GetExtension(asset).ToLower() == ".dat")
            {
                return(D2.FileTypes.StreamHelper.ReadToEnd(parameters.Stream));
            }

            if (Path.GetExtension(asset).ToLower() == ".ds1")
            {
                return(new DS1File(parameters.Stream));
            }

            if (Path.GetExtension(asset).ToLower() == ".dt1")
            {
                byte[] palette = null;

                Context.Send(_ =>
                {
                    palette = contentManager.Load <byte[]>(@"data\global\palette\act1\pal.dat");
                }, null);

                var dt1Texture = new DT1Texture();
                dt1Texture.File = new DT1File(parameters.Stream, palette);

                int floorCount = dt1Texture.File.FloorHeaders.Count;
                if (floorCount > 0)
                {
                    Context.Send(_ =>
                    {
                        dt1Texture.FloorsTexture = Texture2D.New(service.GraphicsDevice, 128, 128, SharpDX.Toolkit.Graphics.PixelFormat.B8G8R8A8.UNorm, arraySize: floorCount);
                    }, null);

                    for (int i = 0; i < floorCount; i++)
                    {
                        //var ms = new MemoryStream();
                        //dt1Texture.File.GetFloorImage(i).Save(ms, ImageFormat.Bmp);
                        //var data = ms.ToArray().Skip(54).ToArray();

                        var data = BitmapToByteArray(dt1Texture.File.GetFloorImage(i) as Bitmap);

                        Context.Send(_ =>
                        {
                            dt1Texture.FloorsTexture.SetData(service.GraphicsDevice, data, i, 0, null);
                        }, null);
                    }
                }

                int wallCount = dt1Texture.File.WallHeaders.Count;
                if (wallCount > 0)
                {
                    Context.Send(_ =>
                    {
                        dt1Texture.WallsTexture = Texture2D.New(service.GraphicsDevice, 160, 960, SharpDX.Toolkit.Graphics.PixelFormat.B8G8R8A8.UNorm, arraySize: wallCount);
                    }, null);

                    for (int i = 0; i < wallCount; i++)
                    {
                        //var ms = new MemoryStream();
                        //dt1Texture.File.GetWallImage(i).Save(ms, ImageFormat.Bmp);
                        //var data = ms.ToArray().Skip(54).ToArray();

                        var data = BitmapToByteArray(dt1Texture.File.GetWallImage(i) as Bitmap);

                        Context.Send(_ =>
                        {
                            dt1Texture.WallsTexture.SetData(service.GraphicsDevice, data, i, 0, null);
                        }, null);
                    }
                }

                return(dt1Texture);
            }

            if (Path.GetExtension(asset).ToLower() == ".dc6")
            {
                byte[] palette = null;
                Context.Send(_ =>
                {
                    palette = contentManager.Load <byte[]>(@"data\global\palette\loading\pal.dat");
                }, null);
                var dc6File = new DC6File(D2.FileTypes.StreamHelper.ReadToEnd(parameters.Stream), palette);

                int maxWidth  = 0;
                int maxHeight = 0;

                var frames = dc6File.Transform();

                foreach (var frame in frames)
                {
                    maxWidth  = Math.Max(frame.Width, maxWidth);
                    maxHeight = Math.Max(frame.Height, maxHeight);
                }

                Texture2D dc6Texture = null;

                Context.Send(_ =>
                {
                    dc6Texture = Texture2D.New(service.GraphicsDevice, maxWidth, maxHeight, SharpDX.Toolkit.Graphics.PixelFormat.B8G8R8A8.UNorm, arraySize: frames.Count);
                }, null);

                int i = 0;
                foreach (var frame in frames)
                {
                    //var ms = new MemoryStream();
                    //frame.Save(ms, ImageFormat.Bmp);
                    //var data = ms.ToArray().Skip(54).ToArray();

                    var data = BitmapToByteArray(frame as Bitmap);

                    Context.Send(_ =>
                    {
                        dc6Texture.SetData(service.GraphicsDevice, data, i++, 0, null);
                    }, null);
                }

                return(dc6Texture);
            }

            var texture = Texture.Load(service.GraphicsDevice, parameters.Stream);

            if (texture != null)
            {
                texture.Name = parameters.AssetName;
            }

            return(texture);
        }
Example #10
0
 public object ReadContent(IContentManager readerManager, ref ContentReaderParameters parameters)
 {
     parameters.KeepStreamOpen = false;
     return(EffectData.Load(parameters.Stream));
 }
Example #11
0
 object IContentReader.ReadContent(IContentManager contentManagerArg, ref ContentReaderParameters parameters)
 {
     return(serializer.Deserialize(parameters.Stream, parameters.AssetType));
 }
Example #12
0
        protected override Effect ReadContent(IContentManager readerManager, GraphicsDevice device, ref ContentReaderParameters parameters)
        {
            var effectData = EffectData.Load(parameters.Stream);

            if (effectData == null)
            {
                return(null);
            }

            if (parameters.AssetType == typeof(Effect))
            {
                return(new Effect(device, effectData));
            }

            // Else, create a specific instance of effect using a constructor (GraphicsDevice, EffectData)
            return((Effect)Activator.CreateInstance(parameters.AssetType, device, effectData));
        }
Example #13
0
        protected override SpriteFont ReadContent(IContentManager readerManager, GraphicsDevice device, ref ContentReaderParameters parameters)
        {
            SpriteFont spriteFont = null;
            var        assetPath  = Path.GetDirectoryName(parameters.AssetName);

            // Load the sprite font data
            var spriteFontData = SpriteFontData.Load(parameters.Stream, name => readerManager.Load <Texture2D>(Path.Combine(assetPath ?? string.Empty, name)));

            // If sprite font was fine, then instantiate SpriteFont graphics object.
            if (spriteFontData != null)
            {
                spriteFont = SpriteFont.New(device, spriteFontData);
            }

            return(spriteFont);
        }
Example #14
0
 protected override WaveBank ReadContentInternal(AudioManager audioManager, ref ContentReaderParameters parameters)
 {
     return(WaveBank.FromStream(audioManager, parameters.Stream));
 }
Example #15
0
 /// <inheritdoc />
 public object?ReadContent(IContentManager contentManager, ref ContentReaderParameters parameters)
 {
     return(s_objFileLoader.Load(parameters.Stream));
 }
Example #16
0
 /// <summary>
 /// Derived class must implement this method to perform the actual asset reading.
 /// </summary>
 /// <param name="audioManager">The associated audio manager.</param>
 /// <param name="parameters">The content reader parameters containing the asset data stream.</param>
 /// <returns>The loaded asset.</returns>
 protected abstract TAsset ReadContentInternal(AudioManager audioManager, ref ContentReaderParameters parameters);
Example #17
0
        protected override Texture ReadContent(IContentManager readerManager, GraphicsDevice device, ref ContentReaderParameters parameters)
        {
            var texture = Texture.Load(device, parameters.Stream);

            if (texture != null)
            {
                texture.Name = parameters.AssetName;
            }

            return(texture);
        }