ymir/ymir/rendering.js @ ba91e9e4c14e default tip

Add ymir
author Steve Losh <steve@stevelosh.com>
date Sun, 05 Nov 2023 14:25:55 -0500
parents (none)
children (none)
{
    var _ns_ = {
        id: 'ymir.rendering',
        doc: void 0
    };
    var ymir_frontend = require('./frontend');
    var front = ymir_frontend;
}
var width = exports.width = 800 - 2;
var height = exports.height = 500;
var terrainHeight = exports.terrainHeight = 50;
var terrainSize = exports.terrainSize = 100;
var makeDirectionalLight = exports.makeDirectionalLight = function makeDirectionalLight() {
    return function () {
        var lightø1 = new THREE.DirectionalLight(16777215, 1);
        lightø1.position.set(100, 50, 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 resolutionø1 = heightmap.shape[0];
        var geometryø1 = new THREE.PlaneGeometry(terrainSize, terrainSize, resolutionø1 - 1, resolutionø1 - 1);
        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': front.getInputBoolean('main-settings', 'wireframe'),
            'wireframeLinewidth': front.getInputNumber('main-settings', 'wireframe-width'),
            'color': 47872
        });
        return new THREE.Mesh(geometry, materialø1);
    }.call(this);
};
var attachToDom = exports.attachToDom = function attachToDom(renderer, refreshFn) {
    $('#render').append(renderer.domElement);
    (function () {
        var cancelScrollø1 = function (e) {
            return e.preventDefault();
        };
        renderer.domElement.onmousewheel = cancelScrollø1;
        return renderer.domElement.addEventListener('MozMousePixelScroll', cancelScrollø1, false);
    }.call(this));
    return $('#regenerate').click(refreshFn);
};
var updateGeometry = exports.updateGeometry = function updateGeometry(geometry, heightmap) {
    (function loop() {
        var recur = loop;
        var iø1 = 0;
        do {
            recur = iø1 < geometry.vertices.length ? (function () {
                geometry.vertices[iø1].z = terrainHeight * heightmap.data[iø1];
                return loop[0] = iø1 + 1, loop;
            })() : void 0;
        } while (iø1 = loop[0], recur === loop);
        return recur;
    }.call(this));
    geometry.computeVertexNormals();
    return geometry;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFub255bW91cy53aXNwIl0sIm5hbWVzIjpbIl9uc18iLCJpZCIsImRvYyIsIndpZHRoIiwiZXhwb3J0cyIsImhlaWdodCIsInRlcnJhaW5IZWlnaHQiLCJ0ZXJyYWluU2l6ZSIsIm1ha2VEaXJlY3Rpb25hbExpZ2h0IiwibGlnaHTDuDEiLCJUSFJFRSIsIkRpcmVjdGlvbmFsTGlnaHQiLCJwb3NpdGlvbi5zZXQiLCJtYWtlQ2FtZXJhIiwiY2FtZXJhw7gxIiwiUGVyc3BlY3RpdmVDYW1lcmEiLCJtYWtlUmVuZGVyZXIiLCJyZW5kZXJlcsO4MSIsIldlYkdMUmVuZGVyZXIiLCJzZXRDbGVhckNvbG9yIiwic2V0U2l6ZSIsInNldFBpeGVsUmF0aW8iLCJtYWtlR2VvbWV0cnkiLCJoZWlnaHRtYXAiLCJyZXNvbHV0aW9uw7gxIiwic2hhcGUiLCJnZW9tZXRyecO4MSIsIlBsYW5lR2VvbWV0cnkiLCJtYWtlQ29udHJvbHMiLCJjYW1lcmEiLCJyZW5kZXJlciIsImNvbnRyb2xzw7gxIiwiVHJhY2tiYWxsQ29udHJvbHMiLCJkb21FbGVtZW50Iiwicm90YXRlU3BlZWQiLCJ6b29tU3BlZWQiLCJzdGF0aWNNb3ZpbmciLCJkeW5hbWljRGFtcGluZ0ZhY3RvciIsIm1ha2VQbGFuZSIsImdlb21ldHJ5IiwibWF0ZXJpYWzDuDEiLCJNZXNoTGFtYmVydE1hdGVyaWFsIiwiZnJvbnQuZ2V0SW5wdXRCb29sZWFuIiwiZnJvbnQuZ2V0SW5wdXROdW1iZXIiLCJNZXNoIiwiYXR0YWNoVG9Eb20iLCJyZWZyZXNoRm4iLCIkIiwiYXBwZW5kIiwiY2FuY2VsU2Nyb2xsw7gxIiwiZSIsInByZXZlbnREZWZhdWx0IiwiZG9tRWxlbWVudC5vbm1vdXNld2hlZWwiLCJkb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIiLCJjbGljayIsInVwZGF0ZUdlb21ldHJ5IiwiacO4MSIsInZlcnRpY2VzLmxlbmd0aCIsInZlcnRpY2VzIiwieiIsImRhdGEiLCJjb21wdXRlVmVydGV4Tm9ybWFs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QUFBQSxJQUlBLE9BQVNGLENBQUQsQ0FBRyxhQUFILENBQVAsQ0FBQ08sS0FBRixDQUEwQlIsU0FBMUIsRUFKQTtBQUFBLENBREYsQztBQVFBLElBQU1TLGNBQUEsR0FBQW5ELE9BQUEsQ0FBQW1ELGNBQUEsR0FBTixTQUFNQSxjQUFOLENBQXVCaEIsUUFBdkIsRUFBZ0NoQixTQUFoQyxFQUNFO0FBQUEsSzs7UUFBTyxJQUFBaUMsRyxHQUFFLENBQUYsQzs7b0JBQ0VBLEdBQUgsR0FBS2pCLFFBQUEsQ0FBU2tCLGVBQWxCLEcsYUFDTTtBQUFBLGdCQUFpQmxCLFFBQUEsQ0FBU21CLFFBQWYsQ0FBd0JGLEdBQXhCLENBQUwsQ0FBR0csQ0FBVCxHQUNTckQsYUFBSCxHQUFnQ2lCLFNBQVIsQ0FBR3FDLElBQVQsQ0FBeUJKLEdBQXpCLENBRHhCO0FBQUEsZ0JBRUYsTyxVQUFVQSxHQUFILEdBQUssQ0FBWixFLElBQUEsQ0FGRTtBQUFBLGEsQ0FBQSxFQUROLEc7aUJBREtBLEc7O1VBQVAsQyxJQUFBO0FBQUEsSUFLQ2pCLFFBQUEsQ0FBU3NCLG9CQUFWLEdBTEE7QUFBQSxJQU1BLE9BQUF0QixRQUFBLENBTkE7QUFBQSxDQURGIiwic291cmNlc0NvbnRlbnQiOlsiKG5zIHltaXIucmVuZGVyaW5nXG4gICg6cmVxdWlyZSBbeW1pci5mcm9udGVuZCA6YXMgZnJvbnRdKSlcblxuXG47IFRocmVlLmpzIHJlbGF0ZWQgc3R1ZmYgZ29lcyBpbiB0aGlzIG5hbWVzcGFjZS5cbihkZWYgd2lkdGggKC0gODAwIDIpKVxuKGRlZiBoZWlnaHQgNTAwKVxuKGRlZiB0ZXJyYWluLWhlaWdodCA1MClcbihkZWYgdGVycmFpbi1zaXplIDEwMClcblxuKGRlZm4gbWFrZS1kaXJlY3Rpb25hbC1saWdodCBbXVxuICAobGV0IFtsaWdodCAobmV3IFRIUkVFLkRpcmVjdGlvbmFsTGlnaHQgMHhmZmZmZmYgMSldXG4gICAgKGxpZ2h0LnBvc2l0aW9uLnNldCAxMDAgNTAgMTUwKVxuICAgIGxpZ2h0KSlcblxuKGRlZm4gbWFrZS1jYW1lcmEgW11cbiAgKGxldCBbY2FtZXJhIChuZXcgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmFcbiAgICAgICAgICAgICAgICAgICAgNTUsXG4gICAgICAgICAgICAgICAgICAgICgvIHdpZHRoIGhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgMC4xLFxuICAgICAgICAgICAgICAgICAgICAxMDAwKV1cbiAgICAoY2FtZXJhLnBvc2l0aW9uLnNldCAwIC0xMDAgMTUwKVxuICAgIGNhbWVyYSkpXG5cbihkZWZuIG1ha2UtcmVuZGVyZXIgW11cbiAgKGxldCBbcmVuZGVyZXIgKG5ldyBUSFJFRS5XZWJHTFJlbmRlcmVyIHs6YW50aWFsaWFzIGZhbHNlfSldXG4gICAgKHJlbmRlcmVyLnNldENsZWFyQ29sb3IgMHhmZmZmZmYpXG4gICAgKHJlbmRlcmVyLnNldFNpemUgd2lkdGggaGVpZ2h0KVxuICAgIChyZW5kZXJlci5zZXRQaXhlbFJhdGlvIDIpXG4gICAgcmVuZGVyZXIpKVxuXG4oZGVmbiBtYWtlLWdlb21ldHJ5IFtoZWlnaHRtYXBdXG4gIChsZXQgW3Jlc29sdXRpb24gKGFnZXQgaGVpZ2h0bWFwLnNoYXBlIDApXG4gICAgICAgIGdlb21ldHJ5IChuZXcgVEhSRUUuUGxhbmVHZW9tZXRyeVxuICAgICAgICAgICAgICAgICAgICAgIHRlcnJhaW4tc2l6ZVxuICAgICAgICAgICAgICAgICAgICAgIHRlcnJhaW4tc2l6ZVxuICAgICAgICAgICAgICAgICAgICAgICgtIHJlc29sdXRpb24gMSlcbiAgICAgICAgICAgICAgICAgICAgICAoLSByZXNvbHV0aW9uIDEpKV1cbiAgICBnZW9tZXRyeSkpXG5cbihkZWZuIG1ha2UtY29udHJvbHMgW2NhbWVyYSByZW5kZXJlcl1cbiAgKGxldCBbY29udHJvbHMgKG5ldyBUSFJFRS5UcmFja2JhbGxDb250cm9scyBjYW1lcmEgcmVuZGVyZXIuZG9tRWxlbWVudCldXG4gICAgKHNldCEgY29udHJvbHMucm90YXRlU3BlZWQgMS40KVxuICAgIChzZXQhIGNvbnRyb2xzLnpvb21TcGVlZCAwLjUpXG4gICAgKHNldCEgY29udHJvbHMuc3RhdGljTW92aW5nIHRydWUpXG4gICAgKHNldCEgY29udHJvbHMuZHluYW1pY0RhbXBpbmdGYWN0b3IgMC4zKVxuICAgIGNvbnRyb2xzKSlcblxuKGRlZm4gbWFrZS1wbGFuZSBbZ2VvbWV0cnldXG4gIChsZXQgW21hdGVyaWFsIChuZXcgVEhSRUUuTWVzaExhbWJlcnRNYXRlcmlhbFxuICAgICAgICAgICAgICAgICAgICAgIHs6d2lyZWZyYW1lXG4gICAgICAgICAgICAgICAgICAgICAgIChmcm9udC9nZXQtaW5wdXQtYm9vbGVhbiBcIm1haW4tc2V0dGluZ3NcIiBcIndpcmVmcmFtZVwiKVxuXG4gICAgICAgICAgICAgICAgICAgICAgIDp3aXJlZnJhbWVMaW5ld2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICAgKGZyb250L2dldC1pbnB1dC1udW1iZXIgXCJtYWluLXNldHRpbmdzXCIgXCJ3aXJlZnJhbWUtd2lkdGhcIilcblxuICAgICAgICAgICAgICAgICAgICAgICA6Y29sb3IgMHgwMGJiMDB9KV1cbiAgICAobmV3IFRIUkVFLk1lc2ggZ2VvbWV0cnkgbWF0ZXJpYWwpKSlcblxuXG4oZGVmbiBhdHRhY2gtdG8tZG9tIFtyZW5kZXJlciByZWZyZXNoLWZuXVxuICAoLmFwcGVuZCAoJCBcIiNyZW5kZXJcIikgcmVuZGVyZXIuZG9tRWxlbWVudClcbiAgKGxldCBbY2FuY2VsLXNjcm9sbCAoZm4gW2VdICgucHJldmVudERlZmF1bHQgZSkpXVxuICAgIChzZXQhIHJlbmRlcmVyLmRvbUVsZW1lbnQub25tb3VzZXdoZWVsIGNhbmNlbC1zY3JvbGwpXG4gICAgKHJlbmRlcmVyLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lciBcIk1vek1vdXNlUGl4ZWxTY3JvbGxcIiBjYW5jZWwtc2Nyb2xsIGZhbHNlKSlcbiAgKC5jbGljayAoJCBcIiNyZWdlbmVyYXRlXCIpIHJlZnJlc2gtZm4pKVxuXG5cbihkZWZuIHVwZGF0ZS1nZW9tZXRyeSBbZ2VvbWV0cnkgaGVpZ2h0bWFwXVxuICAobG9vcCBbaSAwXVxuICAgIChpZiAoPCBpIGdlb21ldHJ5LnZlcnRpY2VzLmxlbmd0aClcbiAgICAgIChkbyAoc2V0ISAoLi16IChhZ2V0IGdlb21ldHJ5LnZlcnRpY2VzIGkpKVxuICAgICAgICAgICAgICAgICgqIHRlcnJhaW4taGVpZ2h0IChhZ2V0ICguLWRhdGEgaGVpZ2h0bWFwKSBpKSkpXG4gICAgICAgIChyZWN1ciAoKyBpIDEpKSkpKVxuICAoZ2VvbWV0cnkuY29tcHV0ZVZlcnRleE5vcm1hbHMpXG4gIGdlb21ldHJ5KVxuXG4iXX0=