if (data.entity === this.parentEntity) { console.log('snail runner loaded'); } else { return; } /** * Custom Code Components */ this.beforeRender = GameLib.EntityManager.Instance.findComponentById('94xi7aitax'); this.mouseMove = GameLib.EntityManager.Instance.findComponentById('jz3qg0174l'); this.mouseDown = GameLib.EntityManager.Instance.findComponentById('8dntnb01wu'); this.mouseUp = GameLib.EntityManager.Instance.findComponentById('kx7drv1vqw'); this.keyDown = GameLib.EntityManager.Instance.findComponentById('ramgcjepp5'); this.keyUp = GameLib.EntityManager.Instance.findComponentById('4uie4sjqxd'); /** * Meshes */ this.snail = GameLib.EntityManager.Instance.findComponentById('z2izbq1hcz'); this.cloud = GameLib.EntityManager.Instance.findComponentById('jbvm17iwfx'); this.solar = GameLib.EntityManager.Instance.findComponentById('lq5xyiu8n4'); this.treesLeft = GameLib.EntityManager.Instance.findComponentById('lq0rxnjq3n'); this.treesRight = GameLib.EntityManager.Instance.findComponentById('oag0yr1rav'); this.road = GameLib.EntityManager.Instance.findComponentById('4furha3wst'); /** * Road Sections and Clouds */ this.sections = []; this.clouds = []; /** * Camera */ this.camera = GameLib.EntityManager.Instance.findComponentById('hd8dsn7o4c'); GameLib.CustomCode.prototype.spawnCloud = function() { var cloud = this.cloud.clone(); this.cloud.position.x = -155; this.cloud.position.z = (Math.random() * 25) - 12.5; this.cloud.updateInstance('position'); this.clouds.push(cloud); }.bind(this) GameLib.CustomCode.prototype.spawnRoadSections = function() { var cloneLeft = this.treesLeft.clone(); var cloneRoad = this.road.clone(); var cloneRight = this.treesRight.clone(); for (var i = 0; i < 17; i++) { this.sections.push({ left : cloneLeft, road : cloneRoad, right : cloneRight }) cloneLeft = cloneLeft.clone(); cloneRoad = cloneRoad.clone(); cloneRight = cloneRight.clone(); } this.sections.push({ left : cloneLeft, road : cloneRoad, right : cloneRight }) }.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.CustomCode.prototype.adjustSpeed = function(delta) { if (this.speedUp) { this.speed += delta; } }.bind(this); GameLib.Event.Subscribe( GameLib.Event.GAME_START, function() { /** * Game Variables */ this.snail.position.z = 0; this.speed = 0; this.speedUp = false; this.clouds.map( function(cloud) { cloud.geometry = null; cloud.materials = null; cloud.remove(); } ); this.clouds = []; /** * Activate our custom code components */ this.beforeRender.entityLoaded = this; this.mouseMove.entityLoaded = this; this.mouseDown.entityLoaded = this; this.mouseUp.entityLoaded = this; this.keyDown.entityLoaded = this; this.keyUp.entityLoaded = this; }.bind(this) ); this.spawnRoadSections(); GameLib.Event.Emit(GameLib.Event.GAME_LOADED); //@ sourceURL=entityLoaded.js