Beispiel #1
0
 internal bool LoadFileInternal(GraphicsDevice gfxDevice, BinaryReader reader, ref SEFileHeader header, out object obj)
 => LoadFile(gfxDevice, reader, ref header, out obj);
Beispiel #2
0
 protected abstract bool LoadFile(GraphicsDevice gfxDevice, BinaryReader reader, ref SEFileHeader header, out object obj);
        protected override bool LoadFile(GraphicsDevice gfxDevice, BinaryReader reader, ref SEFileHeader header, out object obj)
        {
            if (gfxDevice == null)
            {
                throw new HeadlessNotSupportedException($"Texture '{reader}' was not loaded in headless display mode.");
            }

            Texture2D tex;

            if (header.OriginalExtension == ".dds")
            {
                DDSStruct ddsHeader = DDSStruct.Create(reader);
                tex = new Texture2D(gfxDevice, (int)ddsHeader.width, (int)ddsHeader.height, false, ddsHeader.GetSurfaceFormat());
                byte[] textureData = reader.ReadBytes((int)header.FileSize);
                tex.SetData(textureData, 0, textureData.Length);
            }
            else
            {
                tex = Texture2D.FromStream(gfxDevice, reader.BaseStream);
            }

            obj = tex;
            return(true);
        }