Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function newGame (xDimV, yDimV, zDimV, gameSelected = false) {
- // No game to load
- if (!gameSelected) {
- xDim = xDimV;
- yDim = yDimV;
- zDim = zDimV;
- } else {
- xDim = gameSelected[0][0].length;
- yDim = gameSelected[0].length;
- zDim = gameSelected.length;
- }
- myGame = Object.create(game);
- myGame.consutructor(xDim , yDim , zDim, gameSelected);
- objects = [];
- for (var z = 0; z < zDim; z++) {
- for (var y = 0; y < yDim; y++){
- for (var x = 0; x < xDim; x++){
- var uniforms = {
- u_colorMult: chroma.hsv(emod(baseHue + rand(0, 120), 360), rand(0.5,
- 1), rand(0.5, 1)).gl(),
- u_world: m4.identity(),
- u_worldInverseTranspose: m4.identity(),
- u_worldViewProjection: m4.identity(),
- };
- var drawObjects = [];
- drawObjects.push({
- programInfo: programInfo,
- bufferInfo: cubeBufferInfo,
- uniforms: uniforms,
- });
- objects.push({
- translation: [(x*scale)-xDim*scale/2, (z*scale), (y*scale)-yDim*scale/2],
- scale: scale,
- uniforms: uniforms,
- bufferInfo: cubeBufferInfo,
- programInfo: programInfo,
- drawObject: drawObjects,
- index: [z, y, x],
- });
- }
- }
- }
- requestAnimationFrame(render);
- }
- var then = 0;
- /**
- * Renders the cubes
- *
- * @param {Float} time Time since render start
- */
- function render(time) {
- time *= 0.001;
- var elapsed = time - then;
- then = time;
- twgl.resizeCanvasToDisplaySize(gl.canvas);
- gl.viewport(0, 0, gl.canvas.width, gl.canvas.height);
- gl.enable(gl.DEPTH_TEST);
- gl.enable(gl.CULL_FACE);
- gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
- gl.clearColor(255, 255, 0, 0.1);
- var fovy = 30 * Math.PI / 180;
- var projection = m4.perspective(fovy, gl.canvas.clientWidth / gl.canvas.clientHeight, 0.5, 10000);
- var eye = [cameraX, cameraY, cameraZ];
- var target = [cameraX, cameraY, 10];
- var up = [0, 1, 0];
- var camera = m4.lookAt(eye, target, up);
- var view = m4.inverse(camera);
- var viewProjection = m4.multiply(projection, view);
- viewProjection = m4.rotateX(viewProjection, phi);
- viewProjection = m4.rotateY(viewProjection, theta);
- targetTimer -= elapsed;
- objects.forEach(function(obj) {
- var uni = obj.uniforms;
- var world = uni.u_world;
- m4.identity(world);
- m4.translate(world, obj.translation, world);
- m4.scale(world, [obj.scale, obj.scale, obj.scale], world);
- m4.transpose(m4.inverse(world, uni.u_worldInverseTranspose), uni.u_worldInverseTranspose);
- m4.multiply(viewProjection, uni.u_world, uni.u_worldViewProjection);
- if (myGame.life[obj.index[0]][obj.index[1]][obj.index[2]] === 1) {
- twgl.drawObjectList(gl, obj.drawObject);
- }
- });
- if (targetTimer <= 0 && !paused) {
- targetTimer = targetChangeInterval / speed;
- myGame.nextGen();
- setGameStatus();
- myGame.resetStatus();
- }
- requestAnimationFrame(render);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement