예제 #1
0
        private static VoxelObject ChangeColor(string file, Dictionary <Color, Color> replaceColorsWith)
        {
            var voxelStream = GameContext.ContentLoader.ReadStream(file);

            voxelStream.Seek(0L, SeekOrigin.Begin);

            var voxels = QbFile.Read(voxelStream);

            voxelStream.Seek(0L, SeekOrigin.Begin);

            var sVoxels = VoxelLoader.LoadQb(voxelStream, file, Vector3I.Zero,
                                             new Vector3I(voxels.size.X, voxels.size.Y, voxels.size.Z));

            var colors = new List <Color>();

            Helpers.VectorLoop(Vector3I.Zero, sVoxels.Size, (x, y, z) => {
                try {
                    var color = sVoxels.Read(x, y, z);

                    foreach (var check in replaceColorsWith)
                    {
                        if (color == check.Key)
                        {
                            color = check.Value;

                            sVoxels.Write(x, y, z, check.Value);
                        }
                    }

                    colors.Add(color);
                } catch { }
            });

            return(sVoxels);
        }
예제 #2
0
        protected override Bitmap GetThumbnailImage(uint width)
        {
            var size      = (int)width;
            var voxelData = QbFile.Read(SelectedItemStream);

            if (voxelData == null)
            {
                return(null);
            }
            var bitmapBytes = Renderer.RenderBitmap((int)size, voxelData);

            // Convert Skia bytes to GDI Bitmap
            var format     = PixelFormat.Format32bppArgb;
            var bitmap     = new Bitmap(size, size, format);
            var bitmapData = bitmap.LockBits(new Rectangle(0, 0, size, size), ImageLockMode.WriteOnly, format);

            Marshal.Copy(bitmapBytes, 0, bitmapData.Scan0, bitmapBytes.Length);
            bitmap.UnlockBits(bitmapData);
            return(bitmap);
        }