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;...