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, Raycaster, Mouse */ this.camera = GameLib.EntityManager.Instance.findComponentById('hd8dsn7o4c'); this.raycaster = GameLib.EntityManager.Instance.findComponentById('h3yxd73sz7'); this.mouse = GameLib.EntityManager.Instance.findComponentById('eriv6mcw8k'); 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.05)) { this.camera.position.z -= this.speed * delta; modified = true; } if ((this.snail.position.z - this.camera.position.z) > (0.05)) { this.camera.position.z += this.speed * delta; modified = true; } if (modified) { 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('position'); this.camera.updateInstance('lookAt'); } }.bind(this); GameLib.CustomCode.prototype.adjustSpeed = function(delta) { if (this.speedUp) { this.speed += delta; } else { this.speed -= delta; } if (this.speed < 0) { this.speed = 0; } if (this.speed > 50) { this.speed = 50; } }.bind(this); GameLib.CustomCode.prototype.adjustSnailPosition = function(delta) { var diff = delta * 5; var modified = false; if (this.movement.left) { this.snail.position.z += diff; this.movement.left = false; modified = true; } if (this.movement.right) { this.snail.position.z -= diff; this.movement.right = false; modified = true; } if (modified) { if (this.snail.position.z < -4.8) { this.snail.position.z = -4.8; } if (this.snail.position.z > 4.8) { this.snail.position.z = 4.8; } this.solar.position.z = this.snail.position.z; this.snail.updateInstance('position'); this.solar.updateInstance('position'); } }.bind(this); GameLib.Event.Subscribe( GameLib.Event.GAME_START, function() { /** * Game Variables */ this.snail.position.z = 0; this.speed = 0; this.speedUp = false; this.movement = { left : false, right : false, leftAmount : 0, rightAmount : 0 }; 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