Selaa lähdekoodia

Update Terrain

ShiroSmith 7 vuotta sitten
vanhempi
commit
9164737490

+ 11 - 3
hide/prefab/terrain/Brush.hx

@@ -53,9 +53,13 @@ class BrushPreview {
 
 
 	var terrain : h3d.scene.pbr.terrain.Terrain;
 	var terrain : h3d.scene.pbr.terrain.Terrain;
 	var tiles : Array<TilePreviewMesh> = [];
 	var tiles : Array<TilePreviewMesh> = [];
+	var grid : h3d.prim.Grid;
 
 
 	public function new(terrain){
 	public function new(terrain){
 		this.terrain = terrain;
 		this.terrain = terrain;
+		grid = new h3d.prim.Grid( terrain.cellCount, terrain.cellCount, terrain.cellSize, terrain.cellSize);
+		grid.addUVs();
+		grid.addNormals();
 	}
 	}
 
 
 	public function dispose(){
 	public function dispose(){
@@ -73,13 +77,13 @@ class BrushPreview {
 			tilePreview = tile;
 			tilePreview = tile;
 		}
 		}
 		if(tilePreview == null){
 		if(tilePreview == null){
-			tilePreview = new TilePreviewMesh(terrain.grid, terrain);
+			tilePreview = new TilePreviewMesh(grid, terrain);
 			tiles.push(tilePreview);
 			tiles.push(tilePreview);
 		}
 		}
 		tilePreview.used = true;
 		tilePreview.used = true;
 		var t = terrain.getTile(x,y);
 		var t = terrain.getTile(x,y);
 		tilePreview.heightMap = t == null ? null : t.heightMap;
 		tilePreview.heightMap = t == null ? null : t.heightMap;
-		tilePreview.shader.heightMapSize = tilePreview.heightMap.width;
+		tilePreview.shader.heightMapSize = terrain.heightMapResolution;
 		var pos = new h3d.Vector(x * terrain.tileSize, y * terrain.tileSize);
 		var pos = new h3d.Vector(x * terrain.tileSize, y * terrain.tileSize);
 		tilePreview.setPosition(pos.x, pos.y, pos.z + 0.1 * terrain.scaleZ * offsetDir);
 		tilePreview.setPosition(pos.x, pos.y, pos.z + 0.1 * terrain.scaleZ * offsetDir);
 		tilePreview.visible = true;
 		tilePreview.visible = true;
@@ -97,8 +101,12 @@ class BrushPreview {
 	}
 	}
 
 
 	public function refreshMesh(){
 	public function refreshMesh(){
+		if(grid != null) grid.dispose();
+		grid = new h3d.prim.Grid( terrain.cellCount, terrain.cellCount, terrain.cellSize, terrain.cellSize);
+		grid.addUVs();
+		grid.addNormals();
 		for(tile in tiles)
 		for(tile in tiles)
-			tile.primitive = terrain.grid;
+			tile.primitive = grid;
 	}
 	}
 }
 }
 
 

+ 2 - 0
hide/prefab/terrain/StrokeBuffer.hx

@@ -34,6 +34,8 @@ class StrokeBuffer {
 		tempTex.filter = Linear;
 		tempTex.filter = Linear;
 		tex.preventAutoDispose();
 		tex.preventAutoDispose();
 		tempTex.preventAutoDispose();
 		tempTex.preventAutoDispose();
+		tex.realloc = null;
+		tempTex.realloc = null;
 	}
 	}
 
 
 	public function reset(){
 	public function reset(){

+ 1 - 1
hide/prefab/terrain/Terrain.hx

@@ -245,7 +245,7 @@ class Terrain extends Object3D {
 	}
 	}
 
 
 	override function getHideProps() : HideProps {
 	override function getHideProps() : HideProps {
-		return { icon : "square", name : "Terrain" };
+		return { icon : "industry", name : "Terrain" };
 	}
 	}
 
 
 	override function edit( ctx : EditContext ) {
 	override function edit( ctx : EditContext ) {