diff --git a/78gnds8jrj.js b/78gnds8jrj.js index 3313046..670ddcf 100644 --- a/78gnds8jrj.js +++ b/78gnds8jrj.js @@ -72,6 +72,81 @@ GameLib.CustomCode.prototype.spawnRoadSections = function() { }.bind(this) +GameLib.CustomCode.prototype.advanceClouds = function(diff) { + + var cloudInfo = this.clouds.reduce( + function(result, cloud) { + cloud.position.x += diff; + cloud.updateInstance('position'); + + if (cloud.position.x > 48) { + result.dead.push(cloud); + } else { + result.alive.push(cloud); + } + + return result; + }, + { + alive : [], + dead : [] + } + ); + + this.clouds = cloudInfo.alive; + + cloudInfo.dead.map( + function(deadCloud) { + deadCloud.geometry = null; + deadCloud.materials = null; + deadCloud.remove(); + } + ) +}.bind(this); + +GameLib.CustomCode.prototype.advanceRoadSections = function(diff) { + this.sections.map( + function(section) { + section.left.position.x += diff; + section.road.position.x += diff; + section.right.position.x += diff; + + if (section.left.position.x > 48) { + section.left.position.x -= 204; + section.road.position.x -= 204; + section.right.position.x -= 204; + } + + section.left.updateInstance('position'); + section.road.updateInstance('position'); + section.right.updateInstance('position'); + } + ); +}.bind(this); + +GameLib.CustomCode.prototype.advanceCamera = function(delta) { + var modified = false; + + if ((this.camera.position.z - this.snail.position.z) > 0.01) { + this.camera.position.z -= delta; + modified = true; + } + + if ((this.snail.position.z - this.camera.position.z) > 0.01) { + this.camera.position.z += delta; + modified = true; + } + + if (modified) { + this.camera.updateInstance('position'); + + this.camera.lookAt.x = this.snail.position.x; + this.camera.lookAt.y = this.snail.position.y; + this.camera.lookAt.z = this.snail.position.z; + this.camera.updateInstance('lookAt'); + } +}.bind(this); + GameLib.Event.Subscribe( GameLib.Event.GAME_START, function() {