// Use this for initialization void Start() { string bilFilePath = @"C:\n49_e019_1arc_v3.bil"; HeightmapFile heightmapFile = new HeightmapFile(); const int filePixelWidth = 3601; heightmapFile.loadFile(bilFilePath, 3601); //heightmapFile.MirrorReflectHeightDataInXAxis(); MyTotalHeightmap totalHeightmap = new MyTotalHeightmap(); const int subTerrainCount = 14; int minSubmapWidth = (int)Math.Floor((double)filePixelWidth / subTerrainCount); List <SubmapInfo> submapInfos = new List <SubmapInfo> { // newSubmapDimension(2,2,2,2,minSubmapWidth, 4), newSubmapDimension(0, 0, 4, 4, minSubmapWidth, 6), newSubmapDimension(0, 4, 4, 6, minSubmapWidth, 7), newSubmapDimension(4, 0, 6, 4, minSubmapWidth, 5), //todo delete newSubmapDimension(0, 10, 4, 4, minSubmapWidth, 4), newSubmapDimension(4, 4, 2, 2, minSubmapWidth, 2 + 4), newSubmapDimension(4, 6, 2, 2, minSubmapWidth, 2 + 4), newSubmapDimension(4, 8, 2, 2, minSubmapWidth, 2 + 4), newSubmapDimension(6, 4, 2, 2, minSubmapWidth, 2 + 4), newSubmapDimension(6, 8, 2, 2, minSubmapWidth, 2 + 4), newSubmapDimension(6, 8, 2, 2, minSubmapWidth, 2 + 4), newSubmapDimension(8, 4, 2, 2, minSubmapWidth, 2 + 4), newSubmapDimension(8, 6, 2, 2, minSubmapWidth, 2 + 4), newSubmapDimension(8, 8, 2, 2, minSubmapWidth, 2 + 4), newSubmapDimension(6, 6, 2, 2, minSubmapWidth, 2 + 4), newSubmapDimension(10, 4, 4, 6, minSubmapWidth, 3 + 2), newSubmapDimension(10, 10, 4, 4, minSubmapWidth, 4 + 1), newSubmapDimension(4, 10, 6, 4, minSubmapWidth, 3 + 4), newSubmapDimension(10, 0, 4, 4, minSubmapWidth, 3 + 4), //newSubmapDimension(0,0,1,1,minSubmapWidth, 1), //newSubmapDimension(0,1,1,1,minSubmapWidth, 1), //newSubmapDimension(0,2,1,1,minSubmapWidth, 1), //newSubmapDimension(1,0,1,1,minSubmapWidth, 1), //newSubmapDimension(1,1,1,1,minSubmapWidth, 1), //newSubmapDimension(1,2,1,1,minSubmapWidth, 1), //newSubmapDimension(2,0,1,1,minSubmapWidth, 1), //newSubmapDimension(2,1,1,1,minSubmapWidth, 1), //newSubmapDimension(2,2,1,1,minSubmapWidth, 1), }; //SubmapPlane.CreatePlaneObject(heightFloats); totalHeightmap.LoadHeightmap(heightmapFile, submapInfos, minSubmapWidth, subTerrainCount); }
public void LoadMeta(HeightmapFile heightmap) { var fn = ((heightmap?.RpfFileEntry?.Name) ?? "") + ".xml"; Xml = HmapXml.GetXml(heightmap); FileName = fn; RawPropertyGrid.SelectedObject = heightmap; rpfFileEntry = heightmap?.RpfFileEntry; modified = false; metaFormat = MetaFormat.XML; if (heightmap?.RpfFileEntry != null) { metaFormat = MetaFormat.Heightmap; } }
public void Start231() { string bilFilePath = @"C:\inz\cont\n49_e019_1arc_v3.bil"; HeightmapFile heightmapFile = new HeightmapFile(); const int filePixelWidth = 3601; heightmapFile.LoadFile(bilFilePath, 3601); heightmapFile.MirrorReflectHeightDataInXAxis(); var heightArray = heightmapFile.GlobalHeightArray; var smallArray = HeightmapUtils.CutSubArray(heightArray, new IntArea(100, 100, 240, 240)); SavingFileManager.SaveTextureToPngFile(@"C:\inz\cont\smallCut.png", HeightmapUtils.CreateTextureFromHeightmap(smallArray)); }
public void TestSaveMethod() { HeightmapFile heightmapFile = new HeightmapFile(); heightmapFile.Load(TEST_FILE); MemoryStream savedStream = new MemoryStream(); heightmapFile.Save(savedStream); heightmapFile.Load(TEST_FILE); savedStream.Seek(0, SeekOrigin.Begin); HeightmapFile savedHeightmapFile = new HeightmapFile(); savedHeightmapFile.Load(savedStream); savedStream.Close(); for (int x = 0; x < heightmapFile.Height; x++) { for (int y = 0; y < heightmapFile.Width; y++) { Assert.AreEqual(heightmapFile[x, y], savedHeightmapFile[x, y], "Height values do not match"); } } for (int x = 0; x < heightmapFile.Patches.GetLength(0); x++) { for (int y = 0; y < heightmapFile.Patches.GetLength(1); y++) { Assert.AreEqual(heightmapFile.Patches[x, y].Minimum, savedHeightmapFile.Patches[x, y].Minimum, "Minimum patch values do not match"); Assert.AreEqual(heightmapFile.Patches[x, y].Maximum, savedHeightmapFile.Patches[x, y].Maximum, "Maximum patch values do not match"); } } for (int i = 0; i < heightmapFile.QuadPatches.Length; i++) { Assert.AreEqual(heightmapFile.QuadPatches[i].Minimum, savedHeightmapFile.QuadPatches[i].Minimum, "Minimum quad patch values do not match"); Assert.AreEqual(heightmapFile.QuadPatches[i].Maximum, savedHeightmapFile.QuadPatches[i].Maximum, "Maximum quad patch values do not match"); } }
public void TestLoadMethod() { const int HEIGHT = 65; const int WIDTH = 65; Stream stream = File.OpenRead(TEST_FILE); stream.Seek(0, SeekOrigin.End); long fileSize = stream.Position; stream.Seek(0, SeekOrigin.Begin); HeightmapFile heightmapFile = new HeightmapFile(); heightmapFile.Load(stream); long streamPosition = stream.Position; stream.Close(); Assert.AreEqual(fileSize, streamPosition, "Not all of the file was read"); Assert.AreEqual(WIDTH, heightmapFile.Width, "Incorrect width"); Assert.AreEqual(HEIGHT, heightmapFile.Height, "Incorrect height"); }
private void BuildHeightmapVertices(HeightmapFile hmf, List <EditorVertex> vl, List <Vector4> nl) { var v1 = new EditorVertex(); var v2 = new EditorVertex(); var v3 = new EditorVertex(); var v4 = new EditorVertex(); uint cgrn = (uint)new Color(0, 128, 0, 60).ToRgba(); uint cyel = (uint)new Color(128, 128, 0, 200).ToRgba(); var w = hmf.Width; var h = hmf.Height; var hmin = hmf.MinHeights; var hmax = hmf.MaxHeights; var min = hmf.BBMin; var max = hmf.BBMax; var siz = max - min; var step = siz / new Vector3(w - 1, h - 1, 255); v1.Colour = v2.Colour = v3.Colour = v4.Colour = cyel; for (int yi = 1; yi < h; yi++) { var yo = yi - 1; for (int xi = 1; xi < w; xi++) { var xo = xi - 1; var o1 = yo * w + xo; var o2 = yo * w + xi; var o3 = yi * w + xo; var o4 = yi * w + xi; v1.Position = min + step * new Vector3(xo, yo, hmin[o1]); v2.Position = min + step * new Vector3(xi, yo, hmin[o2]); v3.Position = min + step * new Vector3(xo, yi, hmin[o3]); v4.Position = min + step * new Vector3(xi, yi, hmin[o4]); vl.Add(v1); vl.Add(v2); vl.Add(v3); vl.Add(v3); vl.Add(v2); vl.Add(v4); } } v1.Colour = v2.Colour = v3.Colour = v4.Colour = cgrn; for (int yi = 1; yi < h; yi++) { var yo = yi - 1; for (int xi = 1; xi < w; xi++) { var xo = xi - 1; var o1 = yo * w + xo; var o2 = yo * w + xi; var o3 = yi * w + xo; var o4 = yi * w + xi; v1.Position = min + step * new Vector3(xo, yo, hmax[o1]); v2.Position = min + step * new Vector3(xi, yo, hmax[o2]); v3.Position = min + step * new Vector3(xo, yi, hmax[o3]); v4.Position = min + step * new Vector3(xi, yi, hmax[o4]); vl.Add(v1); vl.Add(v2); vl.Add(v3); vl.Add(v3); vl.Add(v2); vl.Add(v4); } } for (int y = 0; y < h; y++) { for (int x = 0; x < w; x++) { var o = y * w + x; nl.Add(new Vector4(min + step * new Vector3(x, y, hmin[o]), 10)); nl.Add(new Vector4(min + step * new Vector3(x, y, hmax[o]), 10)); } } }