mapgen - doboz
by adamkrisz
HTML
<link rel="stylesheet" href="http://hangyas.net/three_test/bootstrap.min.css">
<script src="http://hangyas.net/three_test/bootstrap.min.js"></script>
<script src="http://hotblocks.nl/tests/three/Three.js"></script>
<script src="http://mrdoob.github.io/three.js/examples/js/loaders/OBJLoader.js"></script>
<div id="container">
</div>
JavaScript
var WIDTH = $(document).width()-10,
HEIGHT = $(document).height()-10;
var VIEW_ANGLE = 45,
ASPECT = WIDTH / HEIGHT,
NEAR = 1,
FAR = 10000;
var $container = $('#container');
var renderer = new THREE.WebGLRenderer({antialias: true});
var projector;
var camera = new THREE.PerspectiveCamera( VIEW_ANGLE,
ASPECT,
NEAR,
FAR );
var scene = new THREE.Scene();
var SIZE = 20,
MAPSIZE = 200;
var map,
water;
var mapMesh,
waterMesh;
var talaj = 200,
fal = 20;
camera.position.y = 300;
renderer.setSize(WIDTH, HEIGHT);
$container.append(renderer.domElement);
projector = new THREE.Projector();
/*
* MATERIALS
*/
var waterMaterial = new THREE.MeshLambertMaterial({
color: 0x1111ff,
opacity: 0.7,
transparent: true,
shininess: 10000,
shading: /*THREE.SmoothShading, /*/THREE.FlatShading,
//blending: THREE.NormalBlending,
//envMap: project.cubeCamera.renderTarget,
// wireframe: false
});
var sphereMaterial = new THREE.MeshLambertMaterial({
color: 0x8DCF37,
});
function min(rmap){
rmap = rmap || map;
var r = rmap[0][0];
for (var i = 0; i<MAPSIZE; i++)
for (var j = 0; j<MAPSIZE; j++)
if (rmap[i][j] < r)
r = rmap[i][j];
return r;
}
/*
* generálás
*/
var list = new Array();
function bennevan(width, height, x, z){
return x < width && x >= 0 && z < height && z >= 0;
}
function makemap(width, height){
list.push({x: width/2, z:height/2});
for(i=0; i<100; ++i){
var k = list[Math.round(Math.random() * (list.length-1))];
list.push(gen(k.x, k.z, 150));
}
for(i=0; i<1000; ++i){
var k = list[Math.round(Math.random() * (list.length-1))%100];
list.push(gen(k.x, k.z, 20));
}
var map = new Array(width);
for (i=0; i<map.length;...