Stack voxels per height level instead of smooth animation
This commit is contained in:
1 parent
49c558bef9
commit
c89cca37bf
1 file changed
+21
-13
+21
-13
@@ -40,12 +40,12 @@
|
|||||||
return [sx, sy];
|
return [sx, sy];
|
||||||
}
|
}
|
||||||
|
|
||||||
function getHeight(x, y, time) {
|
function getHeight(x, y) {
|
||||||
var h = 0;
|
var h = 0;
|
||||||
h += Math.sin(x * 0.03 + time * 0.5) * 3;
|
h += Math.sin(x * 0.03) * 3;
|
||||||
h += Math.cos(y * 0.03 + time * 0.4) * 3;
|
h += Math.cos(y * 0.03) * 3;
|
||||||
h += Math.sin(x * 0.05 + y * 0.03 + time * 0.3) * 1.5;
|
h += Math.sin(x * 0.05 + y * 0.03) * 1.5;
|
||||||
h += Math.cos(y * 0.05 - x * 0.03 + time * 0.6) * 1;
|
h += Math.cos(y * 0.05 - x * 0.03) * 1;
|
||||||
return Math.round(h);
|
return Math.round(h);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -53,7 +53,6 @@
|
|||||||
return h <= -2;
|
return h <= -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
var time = 0;
|
|
||||||
var tiles = [];
|
var tiles = [];
|
||||||
|
|
||||||
function generateTiles() {
|
function generateTiles() {
|
||||||
@@ -65,7 +64,7 @@
|
|||||||
for (var y = -rangeY; y <= rangeY; y++) {
|
for (var y = -rangeY; y <= rangeY; y++) {
|
||||||
var wx = x * TILE;
|
var wx = x * TILE;
|
||||||
var wy = y * TILE;
|
var wy = y * TILE;
|
||||||
var h = getHeight(wx, wy, time);
|
var h = getHeight(wx, wy);
|
||||||
tiles.push({ x: wx, y: wy, h: h });
|
tiles.push({ x: wx, y: wy, h: h });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -130,10 +129,21 @@
|
|||||||
|
|
||||||
var water = isWater(h);
|
var water = isWater(h);
|
||||||
|
|
||||||
var hRight = heightMap[(wx + TILE) + ',' + wy] || 0;
|
for (var level = 1; level <= h; level++) {
|
||||||
var hBack = heightMap[wx + ',' + (wy + TILE)] || 0;
|
var hRight;
|
||||||
|
if (level > (heightMap[(wx + TILE) + ',' + wy] || 0)) {
|
||||||
drawTile(wx, wy, h, water, hRight, hBack);
|
hRight = level - 1;
|
||||||
|
} else {
|
||||||
|
hRight = level;
|
||||||
|
}
|
||||||
|
var hBack;
|
||||||
|
if (level > (heightMap[wx + ',' + (wy + TILE)] || 0)) {
|
||||||
|
hBack = level - 1;
|
||||||
|
} else {
|
||||||
|
hBack = level;
|
||||||
|
}
|
||||||
|
drawTile(wx, wy, level, true, hRight, hBack);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,8 +161,6 @@
|
|||||||
ctx.fillStyle = '#001020';
|
ctx.fillStyle = '#001020';
|
||||||
ctx.fillRect(0, 0, W, H);
|
ctx.fillRect(0, 0, W, H);
|
||||||
|
|
||||||
time += 0.02;
|
|
||||||
|
|
||||||
generateTiles();
|
generateTiles();
|
||||||
drawTiles();
|
drawTiles();
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user