示例#1
0
        public async Task ApplyToModels(ModelsEx models)
        {
            // clear images
            if (ImportMode == ViewerConfig.ImportMode.Replace)
            {
                models.Images.Clear();
            }

            var import       = new ImportDialogController(models);
            var layerMipmaps = new LayerMipmapCount(NumLayers, NumMipmaps);
            var imgSize      = new Size3(Width, Height, Depth);

            // add images from config
            foreach (var img in Images)
            {
                if (img.Data == null)
                {
                    await import.ImportImageAsync(img.Filename, img.Alias);
                }
                else
                {
                    Debug.Assert(img.Format != null);
                    var fmt = new ImageFormat(img.Format.Value);

                    // load base 64 bytes
                    var bytes = System.Convert.FromBase64String(img.Data);
                    bytes = Compression.Decompress(bytes);
                    var      bi  = new ByteImageData(bytes, layerMipmaps, imgSize, fmt);
                    ITexture tex = null;
                    if (bi.Is3D)
                    {
                        tex = new Texture3D(bi);
                    }
                    else
                    {
                        tex = new TextureArray2D(bi);
                    }

                    try
                    {
                        models.Images.AddImage(tex, false, img.Filename, fmt.GliFormat, img.Alias);
                    }
                    catch (Exception e)
                    {
                        tex?.Dispose();
                        models.Window.ShowErrorDialog(e);
                    }
                }
            }
        }
示例#2
0
 private void LoadByteData()
 {
     byteData = Resources.Load <ByteImageData>("ByteImageData");
 }