mapserver/server/static/js/test.js
2019-05-05 17:33:09 +02:00

87 lines
2.2 KiB
JavaScript

var camera, scene, renderer;
init();
animate();
function init() {
camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 2, 2000 );
camera.position.z = 30;
camera.position.y = 10;
scene = new THREE.Scene();
var geometry = new THREE.BoxGeometry( 3, 3, 3 );
//var texture = new THREE.TextureLoader().load( 'textures/technic_water_mill_top_active.png', render );
//var material = new THREE.MeshBasicMaterial( { map: texture } );
var material = new THREE.MeshBasicMaterial( { color: 0xff0000, opacity: 0.5, transparent: true } );
var colormapping;
m.request("api/colormapping")
.then(function(_colormapping){
colormapping = _colormapping;
console.log(colormapping);
return m.request("api/mapblock/0/0/0")
})
.then(function(mapblock){
//console.log(mapblock);
function getNodePos(x,y,z){ return x + (y * 16) + (z * 256); }
for (var x=0; x<16; x++){
for (var y=0; y<16; y++){
for (var z=0; z<16; z++){
var i = getNodePos(x,y,z);
var contentId = mapblock.mapdata.contentid[i];
var nodeName = mapblock.blockmapping[contentId]
var colorObj = colormapping[nodeName];
if (!colorObj)
continue;
var color = new THREE.Color( colorObj.r/256, colorObj.g/256, colorObj.b/256 );
var material = new THREE.MeshBasicMaterial( { color: color } );
var mesh = new THREE.Mesh( geometry, material );
mesh.position.x = x*3;
mesh.position.y = y*3;
mesh.position.z = z*3;
scene.add( mesh );
}
}
}
});
renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
controls = new THREE.TrackballControls( camera, renderer.domElement );
controls.rotateSpeed = 1.0;
controls.zoomSpeed = 1.2;
controls.panSpeed = 0.8;
controls.noZoom = false;
controls.noPan = false;
controls.staticMoving = true;
controls.dynamicDampingFactor = 0.3;
controls.keys = [ 65, 83, 68 ];
controls.addEventListener( 'change', render );
render();
}
function render(){
renderer.render( scene, camera );
}
function animate() {
requestAnimationFrame( animate );
controls.update();
}