Example #1
0
 public Shader(IDisposableResource parent, string filename, ShaderVersions shaderVersion, ShaderFloatingPointQuality vsQuality, ShaderFloatingPointQuality psQuality, Loader.LoadedCallbackMethod loadedCallback)
     : base(parent)
 {
                 #if WINRT || WP8
     Loader.AddLoadable(this);
     filename = Streams.StripFileExt(filename) + ".mrs";
                 #endif
     new StreamLoader(filename,
                      delegate(object sender, bool succeeded)
     {
         if (succeeded)
         {
             init(filename, ((StreamLoader)sender).LoadedStream, shaderVersion, vsQuality, psQuality, loadedCallback);
         }
         else
         {
             FailedToLoad = true;
             Dispose();
             if (loadedCallback != null)
             {
                 loadedCallback(this, false);
             }
         }
     });
 }
Example #2
0
        public ImageWP8(Stream stream, bool flip, Loader.LoadedCallbackMethod loadedCallback)
        {
            Loader.AddLoadable(this);
            this.flip           = flip;
            this.loadedCallback = loadedCallback;

            image              = new BitmapImage();
            image.ImageOpened += image_ImageOpened;
            image.ImageFailed += image_ImageFailed;
            image.SetSource(stream);
        }
Example #3
0
        public ImageWP8(string fileName, bool flip, Loader.LoadedCallbackMethod loadedCallback)
        {
            Loader.AddLoadable(this);
            this.flip           = flip;
            this.loadedCallback = loadedCallback;

            image              = new BitmapImage();
            image.ImageOpened += image_ImageOpened;
            image.ImageFailed += image_ImageFailed;
            image.UriSource    = new Uri(fileName, UriKind.Relative);
        }
Example #4
0
        public Model(IDisposableResource parent, SoftwareModel softwareModel, bool loadColors, bool loadUVs, bool loadNormals, string contentDirectory, Dictionary <string, Type> materialTypes, List <MaterialFieldBinder> value1BinderTypes, List <MaterialFieldBinder> value2BinderTypes, List <MaterialFieldBinder> value3BinderTypes, List <MaterialFieldBinder> value4BinderTypes, List <MaterialFieldBinder> textureBinderTypes, Dictionary <string, string> fileExtOverrides, int classicInstanceCount, Loader.LoadedCallbackMethod loadedCallback)
            : base(parent)
        {
            Loader.AddLoadable(this);
            new LoadWaiter(new ILoadable[] { softwareModel },
                           delegate(object sender, bool succeeeded)
            {
                if (succeeeded)
                {
                    using (var stream = new MemoryStream())
                    {
                        try
                        {
                            Model.Save(stream, false, softwareModel, loadColors, loadUVs, loadNormals);
                            stream.Position = 0;
                        }
                        catch (Exception e)
                        {
                            FailedToLoad = true;
                            Dispose();
                            if (loadedCallback != null)
                            {
                                loadedCallback(this, false);
                            }
                        }

                        if (!FailedToLoad)
                        {
                            init(null, stream, contentDirectory, materialTypes, value1BinderTypes, value2BinderTypes, value3BinderTypes, value4BinderTypes, textureBinderTypes, fileExtOverrides, classicInstanceCount, loadedCallback);
                        }
                    }
                }
                else
                {
                    FailedToLoad = true;
                    Dispose();
                    if (loadedCallback != null)
                    {
                        loadedCallback(this, false);
                    }
                }
            });
        }
Example #5
0
 public ImageMetro(string fileName, bool flip, Loader.LoadedCallbackMethod loadedCallback)
 {
     Loader.AddLoadable(this);
     new StreamLoader(fileName,
                      delegate(object sender, bool succeeded)
     {
         if (succeeded)
         {
             init(((StreamLoader)sender).LoadedStream, flip, loadedCallback);
         }
         else
         {
             FailedToLoad = true;
             if (loadedCallback != null)
             {
                 loadedCallback(this, false);
             }
         }
     });
 }
Example #6
0
 public Model(IDisposableResource parent, string filename, string contentDirectory, Dictionary <string, Type> materialTypes, List <MaterialFieldBinder> value1BinderTypes, List <MaterialFieldBinder> value2BinderTypes, List <MaterialFieldBinder> value3BinderTypes, List <MaterialFieldBinder> value4BinderTypes, List <MaterialFieldBinder> textureBinderTypes, Dictionary <string, string> fileExtOverrides, int classicInstanceCount, Loader.LoadedCallbackMethod loadedCallback)
     : base(parent)
 {
     Loader.AddLoadable(this);
     new StreamLoader(filename,
                      delegate(object sender, bool succeeded)
     {
         if (succeeded)
         {
             init(filename, ((StreamLoader)sender).LoadedStream, contentDirectory, materialTypes, value1BinderTypes, value2BinderTypes, value3BinderTypes, value4BinderTypes, textureBinderTypes, fileExtOverrides, classicInstanceCount, loadedCallback);
         }
         else
         {
             FailedToLoad = true;
             Dispose();
             if (loadedCallback != null)
             {
                 loadedCallback(this, false);
             }
         }
     });
 }
Example #7
0
        protected override void init(Stream stream, bool flip, Loader.LoadedCallbackMethod loadedCallback)
        {
            try
            {
                ImageType     = ImageTypes.BMPC;
                ImageFormat   = ImageFormats.BMPC;
                SurfaceFormat = SurfaceFormats.RGBAx8;

                using (var reader = new BinaryReader(stream))
                {
                    // File Type
                    int type = reader.ReadInt32();
                    if (type != Streams.MakeFourCC('b', 'm', 'p', 'c'))
                    {
                        throw new Exception("Not a .bmpc file");
                    }

                    // Version
                    float version = reader.ReadSingle();
                    if (version != 1.0f)
                    {
                        throw new Exception("Unsuported .bmpc version");
                    }

                    // Meta Data
                    Size = new Size2(reader.ReadInt32(), reader.ReadInt32());
                    bool zipCompressed = reader.ReadBoolean();

                    // Data
                    using (var decompressedDataStream = new MemoryStream())
                    {
                        int dataLength = reader.ReadInt32();
                        int dataRead   = 0;
                        do
                        {
                            int read = 1024;
                            if ((dataRead + read) > dataLength)
                            {
                                read -= (int)((dataRead + read) - dataLength);
                            }

                            var data = reader.ReadBytes(read);
                            decompressedDataStream.Write(data, 0, data.Length);

                            dataRead += read;
                        } while (dataRead < dataLength);
                        decompressedDataStream.Position = 0;

                                                #if NaCl || SILVERLIGHT
                        using (var zip = new GZipInputStream(decompressedDataStream))
                            using (var dataStream = new MemoryStream())
                            {
                                var buffer = new byte[4096];
                                int read   = 0;
                                do
                                {
                                    read = zip.Read(buffer, 0, buffer.Length);
                                    dataStream.Write(buffer, 0, buffer.Length);
                                } while (read > 0);

                                Mipmaps    = new Mipmap[1];
                                Mipmaps[0] = new Mipmap(dataStream.GetBuffer(), Size.Width, Size.Height, 1, 4);
                                if (flip)
                                {
                                    Mipmaps[0].FlipVertical();
                                }
                            }
                                                #else
                        using (var decompressedStream = new GZipStream(decompressedDataStream, CompressionMode.Decompress))
                            using (var dataStream = new MemoryStream())
                            {
                                decompressedStream.CopyTo(dataStream);
                                Mipmaps    = new Mipmap[1];
                                Mipmaps[0] = new Mipmap(dataStream.ToArray(), Size.Width, Size.Height, 1, 4);
                                if (flip)
                                {
                                    Mipmaps[0].FlipVertical();
                                }
                            }
                                                #endif
                    }
                }
            }
            catch (Exception e)
            {
                FailedToLoad = true;
                Loader.AddLoadableException(e);
                if (loadedCallback != null)
                {
                    loadedCallback(this, false);
                }
                return;
            }

            Loaded = true;
            Loader.AddLoadable(this);
            if (loadedCallback != null)
            {
                loadedCallback(this, true);
            }
        }
Example #8
0
 public ImageMetro(Stream stream, bool flip, Loader.LoadedCallbackMethod loadedCallback)
 {
     Loader.AddLoadable(this);
     init(stream, flip, loadedCallback);
 }