Advertisement
Guest User

Untitled

a guest
Apr 19th, 2017
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function newGame (xDimV, yDimV, zDimV, gameSelected = false) {
  2.     // No game to load
  3.     if (!gameSelected) {
  4.         xDim = xDimV;
  5.         yDim = yDimV;
  6.         zDim = zDimV;
  7.     } else {
  8.         xDim = gameSelected[0][0].length;
  9.         yDim = gameSelected[0].length;
  10.         zDim = gameSelected.length;
  11.     }
  12.     myGame = Object.create(game);
  13.     myGame.consutructor(xDim , yDim , zDim, gameSelected);
  14.     objects = [];  
  15. for (var z = 0; z < zDim; z++) {
  16.         for (var y = 0; y < yDim; y++){
  17.             for (var x = 0; x < xDim; x++){
  18.            
  19.                 var uniforms = {
  20.                     u_colorMult: chroma.hsv(emod(baseHue + rand(0, 120), 360), rand(0.5,
  21.                                         1), rand(0.5, 1)).gl(),
  22.                     u_world: m4.identity(),
  23.                     u_worldInverseTranspose: m4.identity(),
  24.                     u_worldViewProjection: m4.identity(),
  25.                 };
  26.  
  27.                 var drawObjects = [];
  28.                 drawObjects.push({
  29.                     programInfo: programInfo,
  30.                     bufferInfo: cubeBufferInfo,
  31.                     uniforms: uniforms,
  32.                 });
  33.  
  34.                 objects.push({
  35.                     translation: [(x*scale)-xDim*scale/2, (z*scale), (y*scale)-yDim*scale/2],
  36.                     scale: scale,
  37.                     uniforms: uniforms,
  38.                     bufferInfo: cubeBufferInfo,
  39.                     programInfo: programInfo,
  40.                     drawObject: drawObjects,
  41.                     index: [z, y, x],
  42.                 });
  43.             }
  44.         }
  45.     }
  46.     requestAnimationFrame(render);
  47. }
  48.  
  49. var then = 0;
  50.  
  51. /**
  52.  * Renders the cubes
  53.  *
  54.  * @param {Float} time Time since render start
  55.  */
  56. function render(time) {
  57.     time *= 0.001;
  58.     var elapsed = time - then;
  59.     then = time;
  60.  
  61.     twgl.resizeCanvasToDisplaySize(gl.canvas);
  62.     gl.viewport(0, 0, gl.canvas.width, gl.canvas.height);
  63.  
  64.     gl.enable(gl.DEPTH_TEST);
  65.     gl.enable(gl.CULL_FACE);
  66.     gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
  67.     gl.clearColor(255, 255, 0, 0.1);
  68.     var fovy = 30 * Math.PI / 180;
  69.     var projection = m4.perspective(fovy, gl.canvas.clientWidth / gl.canvas.clientHeight, 0.5, 10000);
  70.  
  71.     var eye = [cameraX, cameraY, cameraZ];
  72.     var target = [cameraX, cameraY, 10];
  73.     var up = [0, 1, 0];
  74.  
  75.     var camera = m4.lookAt(eye, target, up);
  76.     var view = m4.inverse(camera);
  77.     var viewProjection = m4.multiply(projection, view);
  78.     viewProjection =  m4.rotateX(viewProjection, phi);
  79.     viewProjection = m4.rotateY(viewProjection, theta);
  80.     targetTimer -= elapsed;
  81.    
  82.     objects.forEach(function(obj) {
  83.         var uni = obj.uniforms;
  84.         var world = uni.u_world;
  85.         m4.identity(world);
  86.         m4.translate(world, obj.translation, world);
  87.         m4.scale(world, [obj.scale, obj.scale, obj.scale], world);
  88.         m4.transpose(m4.inverse(world, uni.u_worldInverseTranspose), uni.u_worldInverseTranspose);
  89.         m4.multiply(viewProjection, uni.u_world, uni.u_worldViewProjection);
  90.  
  91.         if (myGame.life[obj.index[0]][obj.index[1]][obj.index[2]] === 1) {
  92.             twgl.drawObjectList(gl, obj.drawObject);
  93.         }
  94.     });
  95.     if (targetTimer <= 0 && !paused) {
  96.         targetTimer = targetChangeInterval / speed;
  97.         myGame.nextGen();
  98.         setGameStatus();
  99.         myGame.resetStatus();
  100.     }
  101.     requestAnimationFrame(render);
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement