|
@@ -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;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|