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); } }
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); }
public bool SyncAnvilToRender(Rendering.BlockColors bc, string RegionDirectory, string ImgsDirectory) { int renderCount = 0; if (SourceList[0].R == 1) { foreach (var mf in SourceList) { FileInfo mca = new FileInfo(Path.Combine(RegionDirectory, $"r{mf.BaseFilename()}.mca")); FileInfo lwFStile = new FileInfo(Path.Combine(ImgsDirectory, $"tile{mf.BaseFilename()}.png")); FileInfo lwFStopo = new FileInfo(Path.Combine(ImgsDirectory, $"topo{mf.BaseFilename()}.png")); if (mca.Exists) { if (lwFStile.Exists) { lwFStile.LastWriteTime = mca.LastWriteTime; if (lwFStopo.Exists ? true : RenderTopo(bc, mf, RegionDirectory, ImgsDirectory)) { ++renderCount; } } else if (!lwFStopo.Exists) { RenderTopo(bc, mf, RegionDirectory, ImgsDirectory); } } } } if (renderCount == SourceList.Count) { return(true); } else { return(false); } }