Esempio n. 1
0
        public async static Task <byte[][]> hdt(MCTransferAsync data, int worldX, int worldZ)
        {
            var w = new WorldVoxelEx()
            {
                R = 1, X = worldX, Z = worldZ
            };

            byte[][] map = new byte[2][];

            var hd = new byte[512 * 512];

            var hdt = $"r.{w.Xs}.{w.Zs}.hdt";

            using (var mem = new MemoryStream())
            {
                if (await data.TransferNext(hdt, mem, TxRx.RECEIVE))
                {
                    mem.Position = 0;

                    mem.Read(hd, 0, 512 * 512);
                    map[0] = hd;

                    hd = new byte[512 * 512];
                    mem.Read(hd, 0, 512 * 512);
                    map[1] = hd;
                }
                else
                {
                    map[0] = new byte[512 * 512];
                    map[1] = new byte[512 * 512];
                }
            }

            return(map);
        }
Esempio n. 2
0
        public static bool RenderTopo(Rendering.BlockColors bc, WorldVoxelEx wv, string RegionDirectory, string ImgsDirectory)
        {
            if (wv.R > 1)
            {
                return(false);
            }

            byte[][] MapData   = new byte[][] { new byte[512 * 512], new byte[512 * 512] };
            Color[]  BlockData = new Color[512 * 512];

            RegionMCA mca = new RegionMCA(RegionDirectory);


            mca.LoadRegion(wv.Xs, wv.Zs);

            try
            {
                Rendering.MCRegionMaps.RenderDataFromRegion(bc, mca, MapData, BlockData);
                Rendering.MCRegionMaps.RenderTopoPngFromRegion(MapData, ImgsDirectory, wv.Xs, wv.Zs);
                Rendering.MCRegionMaps.RenderBlockPngFromRegion(MapData, BlockData, ImgsDirectory, wv.Xs, wv.Zs);


                FileInfo mcaH = new FileInfo(Path.Combine(RegionDirectory, $"r{wv.BaseFilename()}.hdt"));

                using (FileStream tempFS = mcaH.Create())
                {
                    tempFS.Write(MapData[0], 0, 512 * 512);
                    tempFS.Write(MapData[1], 0, 512 * 512);
                    tempFS.Flush();
                    tempFS.Close();
                }

                mcaH.LastWriteTime = mca.LastModified;

                FileInfo lwFS = new FileInfo(Path.Combine(ImgsDirectory, $"topo{wv.BaseFilename()}.png"));
                if (lwFS.Exists)
                {
                    lwFS.LastWriteTime = mca.LastModified;
                }

                lwFS = new FileInfo(Path.Combine(ImgsDirectory, $"tile{wv.BaseFilename()}.png"));
                if (lwFS.Exists)
                {
                    lwFS.LastWriteTime = mca.LastModified;
                }

                return(true);
            }
            catch (Exception ex)
            {
                Debug.Print(ex.Message);
                return(false);
            }
        }
Esempio n. 3
0
        public static async Task StitchAsync(WorldVoxelEx wv, string ImgPath, MCTransferAsync Tiles, MCTransferAsync Maps, int Regions = 2, bool TransferBack = true)
        {
            var map = wv.CopyToWorld(Regions);

            async Task MakeImage(string ImgType)
            {
                try
                {
                    using (var ms1 = new MemoryStream())
                        using (var ms2 = new MemoryStream())
                        {
                            var FileName      = $"{ImgType}{map.BaseFilename()}.png";
                            var LocalFileName = Path.Combine(ImgPath, FileName);

                            var b = await GetImgAsync(ms1, Maps, ImgPath, FileName, new Size(512, 512));

                            var g = Graphics.FromImage(b);

                            var img = wv.CopyToWorld(Regions);
                            var pix = WorldVoxelEx.PixelSize(img.R, wv.R);

                            var p = await GetImgAsync(ms2, (wv.R == 1)?Tiles : Maps, ImgPath, $"{ImgType}{wv.BaseFilename()}.png", new Size(pix, pix));

                            g.DrawImage(p, img.Xo, img.Zo, pix, pix);
                            p.Dispose();

                            b.Save(LocalFileName);

                            if (TransferBack == true)
                            {
                                using (var mem = new MemoryStream())
                                {
                                    b.Save(mem, System.Drawing.Imaging.ImageFormat.Png);
                                    mem.Position = 0;

                                    await Maps.TransferNext(FileName, mem, TxRx.SEND);
                                }
                            }

                            b.Dispose();
                            g.Dispose();
                        }
                }
                catch (Exception ex)
                {
                }
            }

            await Task.WhenAll(MakeImage("tile"), MakeImage("topo"));
        }
Esempio n. 4
0
        public static bool RenderTopo(Rendering.BlockColors bc, WorldVoxelEx mr, string RegionDirectory, string ImgsDirectory)
        {
            if (mr.R > 1)
            {
                return(false);
            }

            byte[][] MapData   = new byte[][] { new byte[512 * 512], new byte[512 * 512] };
            Color[]  BlockData = new Color[512 * 512];

            RegionMCA mca = new RegionMCA(RegionDirectory);


            mca.LoadRegion(mr.Xs, mr.Zs);

            Rendering.MCRegionMaps.RenderDataFromRegion(bc, mca, MapData, BlockData);
            Rendering.MCRegionMaps.RenderTopoPngFromRegion(MapData, ImgsDirectory, mr.Xs, mr.Zs);
            //LibMCRcon.Rendering.MCRegionMaps.RenderBlockPngFromRegion(MapData, BlockData, ImgsDir.FullName, RV);


            FileInfo mcaH = new FileInfo(Path.Combine(RegionDirectory, $"r{mr.BaseFilename()}.hdt"));

            using (FileStream tempFS = mcaH.Create())
            {
                tempFS.Write(MapData[0], 0, 512 * 512);
                tempFS.Write(MapData[1], 0, 512 * 512);
                tempFS.Flush();
                tempFS.Close();
            }

            mcaH.LastWriteTime = mca.LastModified;

            FileInfo lwFS = new FileInfo(Path.Combine(ImgsDirectory, $"topo{mr.BaseFilename()}.png"));

            if (lwFS.Exists)
            {
                lwFS.LastWriteTime = mca.LastModified;
            }

            return(true);
        }