525 lines
61 KiB
JavaScript
525 lines
61 KiB
JavaScript
|
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
|
||
|
var width = exports.width = 676;
|
||
|
var height = exports.height = 400;
|
||
|
var wireframe = exports.wireframe = true;
|
||
|
var wireframeWidth = exports.wireframeWidth = 1.2;
|
||
|
var terrainHeight = exports.terrainHeight = 50;
|
||
|
var terrainSize = exports.terrainSize = 100;
|
||
|
void 0;
|
||
|
void 0;
|
||
|
void 0;
|
||
|
void 0;
|
||
|
void 0;
|
||
|
void 0;
|
||
|
var l = exports.l = function l(v) {
|
||
|
return console.log(v);
|
||
|
};
|
||
|
var midpoint = exports.midpoint = function midpoint(a, b) {
|
||
|
return (a + b) / 2;
|
||
|
};
|
||
|
var average2 = exports.average2 = function average2(a, b) {
|
||
|
return (a + b) / 2;
|
||
|
};
|
||
|
var average4 = exports.average4 = function average4(a, b, c, d) {
|
||
|
return (a + b + c + d) / 4;
|
||
|
};
|
||
|
var safeAverage = exports.safeAverage = function safeAverage(a, b, c, d) {
|
||
|
return function () {
|
||
|
var totalø1 = 0;
|
||
|
var countø1 = 0;
|
||
|
a ? (function () {
|
||
|
totalø1 = totalø1 + a;
|
||
|
return countø1 = countø1 + 1;
|
||
|
})() : void 0;
|
||
|
b ? (function () {
|
||
|
totalø1 = totalø1 + b;
|
||
|
return countø1 = countø1 + 1;
|
||
|
})() : void 0;
|
||
|
c ? (function () {
|
||
|
totalø1 = totalø1 + c;
|
||
|
return countø1 = countø1 + 1;
|
||
|
})() : void 0;
|
||
|
d ? (function () {
|
||
|
totalø1 = totalø1 + d;
|
||
|
return countø1 = countø1 + 1;
|
||
|
})() : void 0;
|
||
|
return totalø1 / countø1;
|
||
|
}.call(this);
|
||
|
};
|
||
|
var rand = exports.rand = function rand() {
|
||
|
return Math.random();
|
||
|
};
|
||
|
var randAroundZero = exports.randAroundZero = function randAroundZero(spread) {
|
||
|
return spread * rand() * 2 - spread;
|
||
|
};
|
||
|
var jitter = exports.jitter = function jitter(value, spread) {
|
||
|
return value + randAroundZero(spread);
|
||
|
};
|
||
|
void 0;
|
||
|
var heightmapGetSafe = exports.heightmapGetSafe = function heightmapGetSafe(hm, x, y) {
|
||
|
return 0 <= x && x <= hm.last && (0 <= y && y <= hm.last) ? (function () {
|
||
|
return hm[y * hm.resolution + x];
|
||
|
})() : void 0;
|
||
|
};
|
||
|
void 0;
|
||
|
var normalize = exports.normalize = function normalize(hm) {
|
||
|
return function () {
|
||
|
var maxø1 = 0 - Infinity;
|
||
|
var minø1 = Infinity;
|
||
|
(function () {
|
||
|
var G__1ø1 = hm.length;
|
||
|
return function loop() {
|
||
|
var recur = loop;
|
||
|
var iø1 = 0;
|
||
|
do {
|
||
|
recur = iø1 < G__1ø1 ? (function () {
|
||
|
(function () {
|
||
|
var elø1 = hm[iø1];
|
||
|
maxø1 < elø1 ? (function () {
|
||
|
return maxø1 = elø1;
|
||
|
})() : void 0;
|
||
|
return minø1 > elø1 ? (function () {
|
||
|
return minø1 = elø1;
|
||
|
})() : void 0;
|
||
|
}.call(this));
|
||
|
return loop[0] = 1 + iø1, loop;
|
||
|
})() : void 0;
|
||
|
} while (iø1 = loop[0], recur === loop);
|
||
|
return recur;
|
||
|
}.call(this);
|
||
|
}.call(this));
|
||
|
return function () {
|
||
|
var spanø1 = maxø1 - minø1;
|
||
|
return function () {
|
||
|
var G__2ø1 = hm.length;
|
||
|
return function loop() {
|
||
|
var recur = loop;
|
||
|
var iø1 = 0;
|
||
|
do {
|
||
|
recur = iø1 < G__2ø1 ? (function () {
|
||
|
hm[iø1] = (hm[iø1] - minø1) / spanø1;
|
||
|
return loop[0] = 1 + iø1, loop;
|
||
|
})() : void 0;
|
||
|
} while (iø1 = loop[0], recur === loop);
|
||
|
return recur;
|
||
|
}.call(this);
|
||
|
}.call(this);
|
||
|
}.call(this);
|
||
|
}.call(this);
|
||
|
};
|
||
|
var zeroHeightmap = exports.zeroHeightmap = function zeroHeightmap(heightmap) {
|
||
|
(function () {
|
||
|
var G__3ø1 = heightmap.length;
|
||
|
return function loop() {
|
||
|
var recur = loop;
|
||
|
var iø1 = 0;
|
||
|
do {
|
||
|
recur = iø1 < G__3ø1 ? (function () {
|
||
|
heightmap[iø1] = 0;
|
||
|
return loop[0] = 1 + iø1, loop;
|
||
|
})() : void 0;
|
||
|
} while (iø1 = loop[0], recur === loop);
|
||
|
return recur;
|
||
|
}.call(this);
|
||
|
}.call(this));
|
||
|
return heightmap;
|
||
|
};
|
||
|
var makeHeightmap = exports.makeHeightmap = function makeHeightmap(exponent) {
|
||
|
return function () {
|
||
|
var resolutionø1 = 1 + Math.pow(2, exponent);
|
||
|
l('Creating ' + resolutionø1 + ' by ' + resolutionø1 + ' heightmap...');
|
||
|
var heightmap = new Array(resolutionø1 * resolutionø1);
|
||
|
heightmap.resolution = resolutionø1;
|
||
|
heightmap.exponent = exponent;
|
||
|
heightmap.last = resolutionø1 - 1;
|
||
|
return zeroHeightmap(heightmap);
|
||
|
}.call(this);
|
||
|
};
|
||
|
var randomNoise = exports.randomNoise = function randomNoise(heightmap) {
|
||
|
return function () {
|
||
|
var G__4ø1 = heightmap.length;
|
||
|
return function loop() {
|
||
|
var recur = loop;
|
||
|
var iø1 = 0;
|
||
|
do {
|
||
|
recur = iø1 < G__4ø1 ? (function () {
|
||
|
heightmap[iø1] = rand();
|
||
|
return loop[0] = 1 + iø1, loop;
|
||
|
})() : void 0;
|
||
|
} while (iø1 = loop[0], recur === loop);
|
||
|
return recur;
|
||
|
}.call(this);
|
||
|
}.call(this);
|
||
|
};
|
||
|
var mpdInitCorners = exports.mpdInitCorners = function mpdInitCorners(heightmap) {
|
||
|
heightmap[0 * heightmap.resolution + 0] = rand();
|
||
|
heightmap[heightmap.last * heightmap.resolution + 0] = rand();
|
||
|
heightmap[0 * heightmap.resolution + heightmap.last] = rand();
|
||
|
return heightmap[heightmap.last * heightmap.resolution + heightmap.last] = rand();
|
||
|
};
|
||
|
var mpdDisplace = exports.mpdDisplace = function mpdDisplace(heightmap, lx, rx, by, ty, spread) {
|
||
|
return function () {
|
||
|
var cxø1 = midpoint(lx, rx);
|
||
|
var cyø1 = midpoint(by, ty);
|
||
|
var bottomLeftø1 = heightmap[by * heightmap.resolution + lx];
|
||
|
var bottomRightø1 = heightmap[by * heightmap.resolution + rx];
|
||
|
var topLeftø1 = heightmap[ty * heightmap.resolution + lx];
|
||
|
var topRightø1 = heightmap[ty * heightmap.resolution + rx];
|
||
|
var topø1 = average2(topLeftø1, topRightø1);
|
||
|
var leftø1 = average2(bottomLeftø1, topLeftø1);
|
||
|
var bottomø1 = average2(bottomLeftø1, bottomRightø1);
|
||
|
var rightø1 = average2(bottomRightø1, topRightø1);
|
||
|
var centerø1 = average4(topø1, leftø1, bottomø1, rightø1);
|
||
|
heightmap[by * heightmap.resolution + cxø1] = jitter(bottomø1, spread);
|
||
|
heightmap[ty * heightmap.resolution + cxø1] = jitter(topø1, spread);
|
||
|
heightmap[cyø1 * heightmap.resolution + lx] = jitter(leftø1, spread);
|
||
|
heightmap[cyø1 * heightmap.resolution + rx] = jitter(rightø1, spread);
|
||
|
return heightmap[cyø1 * heightmap.resolution + cxø1] = jitter(centerø1, spread);
|
||
|
}.call(this);
|
||
|
};
|
||
|
var midpointDisplacement = exports.midpointDisplacement = function midpointDisplacement(heightmap) {
|
||
|
mpdInitCorners(heightmap);
|
||
|
(function loop() {
|
||
|
var recur = loop;
|
||
|
var iterø1 = 0;
|
||
|
var spreadø1 = 0.3;
|
||
|
do {
|
||
|
recur = iterø1 < heightmap.exponent ? (function () {
|
||
|
(function () {
|
||
|
var chunksø1 = Math.pow(2, iterø1);
|
||
|
var chunkWidthø1 = (heightmap.resolution - 1) / chunksø1;
|
||
|
return function () {
|
||
|
var G__5ø1 = chunksø1;
|
||
|
return function () {
|
||
|
var G__6ø1 = G__5ø1;
|
||
|
return function loop() {
|
||
|
var recur = loop;
|
||
|
var xchunkø1 = 0;
|
||
|
do {
|
||
|
recur = xchunkø1 < G__6ø1 ? (function () {
|
||
|
(function () {
|
||
|
var G__7ø1 = G__5ø1;
|
||
|
return function loop() {
|
||
|
var recur = loop;
|
||
|
var ychunkø1 = 0;
|
||
|
do {
|
||
|
recur = ychunkø1 < G__7ø1 ? (function () {
|
||
|
(function () {
|
||
|
var leftXø1 = chunkWidthø1 * xchunkø1;
|
||
|
var rightXø1 = leftXø1 + chunkWidthø1;
|
||
|
var bottomYø1 = chunkWidthø1 * ychunkø1;
|
||
|
var topYø1 = bottomYø1 + chunkWidthø1;
|
||
|
return mpdDisplace(heightmap, leftXø1, rightXø1, bottomYø1, topYø1, spreadø1);
|
||
|
}.call(this));
|
||
|
return loop[0] = 1 + ychunkø1, loop;
|
||
|
})() : void 0;
|
||
|
} while (ychunkø1 = loop[0], recur === loop);
|
||
|
return recur;
|
||
|
}.call(this);
|
||
|
}.call(this));
|
||
|
return loop[0] = 1 + xchunkø1, loop;
|
||
|
})() : void 0;
|
||
|
} while (xchunkø1 = loop[0], recur === loop);
|
||
|
return recur;
|
||
|
}.call(this);
|
||
|
}.call(this);
|
||
|
}.call(this);
|
||
|
}.call(this));
|
||
|
return loop[0] = 1 + iterø1, loop[1] = spreadø1 * 0.5, loop;
|
||
|
})() : void 0;
|
||
|
} while (iterø1 = loop[0], spreadø1 = loop[1], recur === loop);
|
||
|
return recur;
|
||
|
}.call(this));
|
||
|
return normalize(heightmap);
|
||
|
};
|
||
|
var midpointDisplacementFinal = exports.midpointDisplacementFinal = function midpointDisplacementFinal(heightmap) {
|
||
|
mpdInitCorners(heightmap);
|
||
|
(function loop() {
|
||
|
var recur = loop;
|
||
|
var iterø1 = 0;
|
||
|
var spreadø1 = 0 + $('#input-starting-spread').val();
|
||
|
do {
|
||
|
recur = iterø1 < heightmap.exponent ? (function () {
|
||
|
(function () {
|
||
|
var chunksø1 = Math.pow(2, iterø1);
|
||
|
var chunkWidthø1 = (heightmap.resolution - 1) / chunksø1;
|
||
|
return function () {
|
||
|
var G__8ø1 = chunksø1;
|
||
|
return function () {
|
||
|
var G__9ø1 = G__8ø1;
|
||
|
return function loop() {
|
||
|
var recur = loop;
|
||
|
var xchunkø1 = 0;
|
||
|
do {
|
||
|
recur = xchunkø1 < G__9ø1 ? (function () {
|
||
|
(function () {
|
||
|
var G__10ø1 = G__8ø1;
|
||
|
return function loop() {
|
||
|
var recur = loop;
|
||
|
var ychunkø1 = 0;
|
||
|
do {
|
||
|
recur = ychunkø1 < G__10ø1 ? (function () {
|
||
|
(function () {
|
||
|
var leftXø1 = chunkWidthø1 * xchunkø1;
|
||
|
var rightXø1 = leftXø1 + chunkWidthø1;
|
||
|
var bottomYø1 = chunkWidthø1 * ychunkø1;
|
||
|
var topYø1 = bottomYø1 + chunkWidthø1;
|
||
|
return mpdDisplace(heightmap, leftXø1, rightXø1, bottomYø1, topYø1, spreadø1);
|
||
|
}.call(this));
|
||
|
return loop[0] = 1 + ychunkø1, loop;
|
||
|
})() : void 0;
|
||
|
} while (ychunkø1 = loop[0], recur === loop);
|
||
|
return recur;
|
||
|
}.call(this);
|
||
|
}.call(this));
|
||
|
return loop[0] = 1 + xchunkø1, loop;
|
||
|
})() : void 0;
|
||
|
} while (xchunkø1 = loop[0], recur === loop);
|
||
|
return recur;
|
||
|
}.call(this);
|
||
|
}.call(this);
|
||
|
}.call(this);
|
||
|
}.call(this));
|
||
|
return loop[0] = 1 + iterø1, loop[1] = spreadø1 * (0 + $('#input-spread-reduction').val()), loop;
|
||
|
})() : void 0;
|
||
|
} while (iterø1 = loop[0], spreadø1 = loop[1], recur === loop);
|
||
|
return recur;
|
||
|
}.call(this));
|
||
|
return normalize(heightmap);
|
||
|
};
|
||
|
var mpdDisplaceD2 = exports.mpdDisplaceD2 = function mpdDisplaceD2(heightmap, lx, rx, by, ty, spread) {
|
||
|
return function () {
|
||
|
var cxø1 = midpoint(lx, rx);
|
||
|
var cyø1 = midpoint(by, ty);
|
||
|
var bottomLeftø1 = heightmap[by * heightmap.resolution + lx];
|
||
|
var bottomRightø1 = heightmap[by * heightmap.resolution + rx];
|
||
|
var topLeftø1 = heightmap[ty * heightmap.resolution + lx];
|
||
|
var topRightø1 = heightmap[ty * heightmap.resolution + rx];
|
||
|
var topø1 = average2(topLeftø1, topRightø1);
|
||
|
var leftø1 = average2(bottomLeftø1, topLeftø1);
|
||
|
var bottomø1 = average2(bottomLeftø1, bottomRightø1);
|
||
|
var rightø1 = average2(bottomRightø1, topRightø1);
|
||
|
heightmap[by * heightmap.resolution + cxø1] = jitter(bottomø1, spread);
|
||
|
heightmap[ty * heightmap.resolution + cxø1] = jitter(topø1, spread);
|
||
|
heightmap[cyø1 * heightmap.resolution + lx] = jitter(leftø1, spread);
|
||
|
return heightmap[cyø1 * heightmap.resolution + rx] = jitter(rightø1, spread);
|
||
|
}.call(this);
|
||
|
};
|
||
|
var midpointDisplacementD1 = exports.midpointDisplacementD1 = function midpointDisplacementD1(heightmap) {
|
||
|
return mpdInitCorners(heightmap);
|
||
|
};
|
||
|
var midpointDisplacementD2 = exports.midpointDisplacementD2 = function midpointDisplacementD2(heightmap) {
|
||
|
mpdInitCorners(heightmap);
|
||
|
return mpdDisplaceD2(heightmap, 0, heightmap.last, 0, heightmap.last, 0.1);
|
||
|
};
|
||
|
var midpointDisplacementD3 = exports.midpointDisplacementD3 = function midpointDisplacementD3(heightmap) {
|
||
|
mpdInitCorners(heightmap);
|
||
|
return mpdDisplace(heightmap, 0, heightmap.last, 0, heightmap.last, 0.1);
|
||
|
};
|
||
|
var makeDirectionalLight = exports.makeDirectionalLight = function makeDirectionalLight() {
|
||
|
return function () {
|
||
|
var lightø1 = new THREE.DirectionalLight(16777215, 1);
|
||
|
lightø1.position.set(100, 0, 150);
|
||
|
return lightø1;
|
||
|
}.call(this);
|
||
|
};
|
||
|
var makeCamera = exports.makeCamera = function makeCamera() {
|
||
|
return function () {
|
||
|
var cameraø1 = new THREE.PerspectiveCamera(55, width / height, 0.1, 1000);
|
||
|
cameraø1.position.set(0, -100, 150);
|
||
|
return cameraø1;
|
||
|
}.call(this);
|
||
|
};
|
||
|
var makeRenderer = exports.makeRenderer = function makeRenderer() {
|
||
|
return function () {
|
||
|
var rendererø1 = new THREE.WebGLRenderer({ 'antialias': false });
|
||
|
rendererø1.setClearColor(16777215);
|
||
|
rendererø1.setSize(width, height);
|
||
|
rendererø1.setPixelRatio(2);
|
||
|
return rendererø1;
|
||
|
}.call(this);
|
||
|
};
|
||
|
var makeGeometry = exports.makeGeometry = function makeGeometry(heightmap) {
|
||
|
return function () {
|
||
|
var geometryø1 = new THREE.PlaneGeometry(terrainSize, terrainSize, heightmap.resolution - 1, heightmap.resolution - 1);
|
||
|
geometryø1.dynamic = true;
|
||
|
return geometryø1;
|
||
|
}.call(this);
|
||
|
};
|
||
|
var makeControls = exports.makeControls = function makeControls(camera, renderer) {
|
||
|
return function () {
|
||
|
var controlsø1 = new THREE.TrackballControls(camera, renderer.domElement);
|
||
|
controlsø1.rotateSpeed = 1.4;
|
||
|
controlsø1.zoomSpeed = 0.5;
|
||
|
controlsø1.staticMoving = true;
|
||
|
controlsø1.dynamicDampingFactor = 0.3;
|
||
|
return controlsø1;
|
||
|
}.call(this);
|
||
|
};
|
||
|
var makePlane = exports.makePlane = function makePlane(geometry) {
|
||
|
return function () {
|
||
|
var materialø1 = new THREE.MeshLambertMaterial({
|
||
|
'wireframe': wireframe,
|
||
|
'wireframeLinewidth': wireframeWidth,
|
||
|
'color': 47872
|
||
|
});
|
||
|
return new THREE.Mesh(geometry, materialø1);
|
||
|
}.call(this);
|
||
|
};
|
||
|
var attachToDom = exports.attachToDom = function attachToDom(renderer, elName, refreshFn) {
|
||
|
return function () {
|
||
|
var containerø1 = document.getElementById(elName);
|
||
|
var settingsø1 = document.createElement('div');
|
||
|
var refreshButtonø1 = document.createElement('button');
|
||
|
var buttonTextø1 = document.createTextNode('Refresh');
|
||
|
var cancelScrollø1 = function (e) {
|
||
|
return e.preventDefault();
|
||
|
};
|
||
|
refreshButtonø1.onclick = refreshFn;
|
||
|
renderer.domElement.onmousewheel = cancelScrollø1;
|
||
|
renderer.domElement.addEventListener('MozMousePixelScroll', cancelScrollø1, false);
|
||
|
refreshButtonø1.appendChild(buttonTextø1);
|
||
|
containerø1.appendChild(renderer.domElement);
|
||
|
containerø1.appendChild(settingsø1);
|
||
|
return settingsø1.appendChild(refreshButtonø1);
|
||
|
}.call(this);
|
||
|
};
|
||
|
var updateGeometry = exports.updateGeometry = function updateGeometry(geometry, heightmap) {
|
||
|
(function () {
|
||
|
var G__11ø1 = geometry.vertices.length;
|
||
|
return function loop() {
|
||
|
var recur = loop;
|
||
|
var iø1 = 0;
|
||
|
do {
|
||
|
recur = iø1 < G__11ø1 ? (function () {
|
||
|
geometry.vertices[iø1].z = terrainHeight * heightmap[iø1];
|
||
|
return loop[0] = 1 + iø1, loop;
|
||
|
})() : void 0;
|
||
|
} while (iø1 = loop[0], recur === loop);
|
||
|
return recur;
|
||
|
}.call(this);
|
||
|
}.call(this));
|
||
|
geometry.verticesNeedUpdate = true;
|
||
|
geometry.computeFaceNormals();
|
||
|
geometry.computeVertexNormals();
|
||
|
geometry.computeMorphNormals();
|
||
|
return geometry;
|
||
|
};
|
||
|
var makeDemo = exports.makeDemo = function makeDemo(elementId, algorithm, size) {
|
||
|
var scene = new THREE.Scene();
|
||
|
scene.add(new THREE.AxisHelper(100));
|
||
|
var clock = new THREE.Clock();
|
||
|
var camera = makeCamera();
|
||
|
var renderer = makeRenderer();
|
||
|
var geometry = makeGeometry(makeHeightmap(size));
|
||
|
scene.add(makeDirectionalLight());
|
||
|
scene.add(new THREE.AmbientLight(16777215, 0.05));
|
||
|
scene.add(makePlane(geometry));
|
||
|
var refresh = function refresh() {
|
||
|
l('Refreshing ========================================');
|
||
|
return function () {
|
||
|
var heightmapø1 = makeHeightmap(size);
|
||
|
l('Generating terrain...');
|
||
|
(function () {
|
||
|
var G__12ø1 = new Date().getTime();
|
||
|
var G__14ø1 = (function () {
|
||
|
return algorithm(heightmapø1);
|
||
|
})();
|
||
|
var G__13ø1 = new Date().getTime();
|
||
|
l('Elapsed time: ' + (G__13ø1 - G__12ø1) + 'ms.');
|
||
|
return G__14ø1;
|
||
|
}.call(this));
|
||
|
l('Refreshing geometry...');
|
||
|
(function () {
|
||
|
var G__15ø1 = new Date().getTime();
|
||
|
var G__17ø1 = (function () {
|
||
|
return updateGeometry(geometry, heightmapø1);
|
||
|
})();
|
||
|
var G__16ø1 = new Date().getTime();
|
||
|
l('Elapsed time: ' + (G__16ø1 - G__15ø1) + 'ms.');
|
||
|
return G__17ø1;
|
||
|
}.call(this));
|
||
|
return l('Done!');
|
||
|
}.call(this);
|
||
|
};
|
||
|
attachToDom(renderer, elementId, refresh);
|
||
|
var controls = makeControls(camera, renderer);
|
||
|
var render = function render() {
|
||
|
return function () {
|
||
|
var deltaø1 = clock.getDelta();
|
||
|
requestAnimationFrame(render);
|
||
|
controls.update(deltaø1);
|
||
|
return renderer.render(scene, camera);
|
||
|
}.call(this);
|
||
|
};
|
||
|
render();
|
||
|
return void 0;
|
||
|
};
|
||
|
var makeFinal = exports.makeFinal = function makeFinal(elementId) {
|
||
|
var scene = new THREE.Scene();
|
||
|
scene.add(new THREE.AxisHelper(100));
|
||
|
var clock = new THREE.Clock();
|
||
|
var camera = makeCamera();
|
||
|
var renderer = makeRenderer();
|
||
|
var heightmap = makeHeightmap($('#input-exponent').val());
|
||
|
var geometry = makeGeometry(heightmap);
|
||
|
var plane = makePlane(geometry);
|
||
|
scene.add(makeDirectionalLight());
|
||
|
scene.add(new THREE.AmbientLight(16777215, 0.05));
|
||
|
scene.add(plane);
|
||
|
var refresh = function refresh() {
|
||
|
l('Refreshing ========================================');
|
||
|
scene.remove(plane);
|
||
|
heightmap = makeHeightmap($('#input-exponent').val());
|
||
|
geometry = makeGeometry(heightmap);
|
||
|
plane = makePlane(geometry);
|
||
|
scene.add(plane);
|
||
|
l('Generating terrain...');
|
||
|
(function () {
|
||
|
var G__18ø1 = new Date().getTime();
|
||
|
var G__20ø1 = (function () {
|
||
|
return midpointDisplacementFinal(heightmap);
|
||
|
})();
|
||
|
var G__19ø1 = new Date().getTime();
|
||
|
l('Elapsed time: ' + (G__19ø1 - G__18ø1) + 'ms.');
|
||
|
return G__20ø1;
|
||
|
}.call(this));
|
||
|
l('Refreshing geometry...');
|
||
|
(function () {
|
||
|
var G__21ø1 = new Date().getTime();
|
||
|
var G__23ø1 = (function () {
|
||
|
return updateGeometry(geometry, heightmap);
|
||
|
})();
|
||
|
var G__22ø1 = new Date().getTime();
|
||
|
l('Elapsed time: ' + (G__22ø1 - G__21ø1) + 'ms.');
|
||
|
return G__23ø1;
|
||
|
}.call(this));
|
||
|
return l('Done!');
|
||
|
};
|
||
|
attachToDom(renderer, elementId, refresh);
|
||
|
var controls = makeControls(camera, renderer);
|
||
|
var render = function render() {
|
||
|
return function () {
|
||
|
var deltaø1 = clock.getDelta();
|
||
|
requestAnimationFrame(render);
|
||
|
controls.update(deltaø1);
|
||
|
return renderer.render(scene, camera);
|
||
|
}.call(this);
|
||
|
};
|
||
|
render();
|
||
|
return void 0;
|
||
|
};
|
||
|
var run = exports.run = function run() {
|
||
|
makeDemo('demo-random', randomNoise, 7);
|
||
|
makeDemo('demo-mpd-1', midpointDisplacementD1, 2);
|
||
|
makeDemo('demo-mpd-2', midpointDisplacementD2, 2);
|
||
|
makeDemo('demo-mpd-3', midpointDisplacementD3, 2);
|
||
|
makeDemo('demo-mpd-4', midpointDisplacement, 3);
|
||
|
return makeFinal('demo-final');
|
||
|
};
|
||
|
$(run);
|
||
|
|
||
|
|
||
|
},{}]},{},[1])
|
||
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Vzci9sb2NhbC9saWIvbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL2Jyb3dzZXItcGFjay9fcHJlbHVkZS5qcyIsIm1lZGlhL2pzL3dpc3AvYW5vbnltb3VzLndpc3AiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUNDQSxJQUFLLEtBQUEsR0FBQSxPQUFBLENBQUEsS0FBQSxHQUFNLEdBQVg7QUFDQSxJQUFLLE1BQUEsR0FBQSxPQUFBLENBQUEsTUFBQSxHQUFPLEdBQVosQ0FEQTtBQUVBLElBQUssU0FBQSxHQUFBLE9BQUEsQ0FBQSxTQUFBLEcsSUFBTCxDQUZBO0FBR0EsSUFBSyxjQUFBLEdBQUEsT0FBQSxDQUFBLGNBQUEsR0FBZ0IsR0FBckIsQ0FIQTtBQUlBLElBQUssYUFBQSxHQUFBLE9BQUEsQ0FBQSxhQUFBLEdBQWUsRUFBcEIsQ0FKQTtBQUtBLElBQUssV0FBQSxHQUFBLE9BQUEsQ0FBQSxXQUFBLEdBQWEsR0FBbEIsQ0FMQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtBQTJDQSxJQUFNLENBQUEsR0FBQSxPQUFBLENBQUEsQ0FBQSxHQUFOLFNBQU0sQ0FBTixDQUFTLENBQVQsRUFDRTtBQUFBLFdBQUMsT0FBQSxDQUFRLEdBQVQsQ0FBYSxDQUFiO0FBQUEsQ0FERixDQTNDQTtBQStDQSxJQUFNLFFBQUEsR0FBQSxPQUFBLENBQUEsUUFBQSxHQUFOLFNBQU0sUUFBTixDQUFnQixDQUFoQixFQUFrQixDQUFsQixFQUNFO0FBQUEsV0FBRyxDQUFHLENBQUgsR0FBSyxDQUFMLENBQUgsR0FBVyxDQUFYO0FBQUEsQ0FERixDQS9DQTtBQWtEQSxJQUFNLFFBQUEsR0FBQSxPQUFBLENBQUEsUUFBQSxHQUFOLFNBQU0sUUFBTixDQUFnQixDQUFoQixFQUFrQixDQUFsQixFQUNFO0FBQUEsV0FBRyxDQUFHLENBQUgsR0FBSyxDQUFMLENBQUgsR0FBVyxDQUFYO0FBQUEsQ0FERixDQWxEQTtB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
|