فهرست منبع

Terrain: switch API to x, y

trethaller 7 سال پیش
والد
کامیت
7b34b3d24f
1فایلهای تغییر یافته به همراه17 افزوده شده و 9 حذف شده
  1. 17 9
      h3d/scene/pbr/terrain/Terrain.hx

+ 17 - 9
h3d/scene/pbr/terrain/Terrain.hx

@@ -25,11 +25,12 @@ class Terrain extends Object {
 		copyPass = new h3d.pass.Copy();
 	}
 
-	public function getHeight(pos : h3d.Vector) : Float {
+	public function getHeight(x : Float, y : Float) : Float {
 		var z = 0.0;
-		var t = getTileAtWorldPos(pos);
+		var t = getTileAtWorldPos(x, y);
 		if(t != null){
-			var pos = t.globalToLocal(pos.clone());
+			tmpVec.set(x, y);
+			var pos = t.globalToLocal(tmpVec);
 			z = t.getHeight(pos.x / tileSize, pos.y / tileSize);
 		}
 		return z;
@@ -170,8 +171,8 @@ class Terrain extends Object {
 		return result;
 	}
 
-	public function getTileAtWorldPos(pos : h3d.Vector) : Tile {
-		var pos = globalToLocal(pos.clone());
+	public function getTileAtWorldPos(x : Float, y : Float) : Tile {
+		var pos = toLocalPos(x, y);
 		var result : Tile = null;
 		var tileX = Math.floor(pos.x / tileSize);
 		var tileY = Math.floor(pos.y / tileSize);
@@ -180,16 +181,16 @@ class Terrain extends Object {
 		return result;
 	}
 
-	public function createTileAtWorldPos(pos : h3d.Vector) : Tile {
-		var pos = globalToLocal(pos.clone());
+	public function createTileAtWorldPos(x : Float, y : Float) : Tile {
+		var pos = toLocalPos(x, y);
 		var tileX = Math.floor(pos.x / tileSize);
 		var tileY = Math.floor(pos.y / tileSize);
 		var result = getTile(tileX, tileY);
 		return result == null ? createTile(tileX, tileY) : result;
 	}
 
-	public function getTiles(pos : h3d.Vector, range : Float, ?create = false) : Array<Tile> {
-		var pos = globalToLocal(pos.clone());
+	public function getTiles(x : Float, y : Float, range : Float, ?create = false) : Array<Tile> {
+		var pos = toLocalPos(x, y);
 		if(create != null && create){
 			var maxTileX = Math.floor((pos.x + range)/ tileSize);
 			var minTileX = Math.floor((pos.x - range)/ tileSize);
@@ -221,6 +222,13 @@ class Terrain extends Object {
 		}
 		return res;
 	}
+
+	static var tmpVec = new h3d.Vector();
+	inline function toLocalPos(x : Float, y : Float) {
+		tmpVec.set(x, y);
+		globalToLocal(tmpVec);
+		return tmpVec;
+	}
 }