2018-03-09 00:36:40 +01:00
|
|
|
if (!this.entityLoaded) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!this.initialized) {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Meshes
|
|
|
|
*/
|
2018-03-09 02:37:49 +01:00
|
|
|
this.sections = this.entityLoaded.sections;
|
|
|
|
this.cloud = this.entityLoaded.cloud;
|
2018-03-09 02:52:33 +01:00
|
|
|
this.camera = this.entityLoaded.camera;
|
|
|
|
this.snail = this.entityLoaded.snail;
|
2018-03-09 00:36:40 +01:00
|
|
|
|
|
|
|
this.time = 0;
|
2018-03-09 02:37:49 +01:00
|
|
|
|
2018-03-09 03:04:07 +01:00
|
|
|
this.speed = 15;
|
2018-03-09 00:36:40 +01:00
|
|
|
|
2018-03-09 03:26:41 +01:00
|
|
|
this.clouds = [];
|
|
|
|
|
2018-03-09 02:27:19 +01:00
|
|
|
this.spawnCloud = function() {
|
2018-03-09 03:26:41 +01:00
|
|
|
|
|
|
|
var cloud = this.cloud.clone();
|
|
|
|
|
2018-03-09 02:37:49 +01:00
|
|
|
this.cloud.position.x = -155;
|
2018-03-09 13:21:36 +01:00
|
|
|
this.cloud.position.z = (Math.random() * 25) - 12.5;
|
2018-03-09 02:27:19 +01:00
|
|
|
this.cloud.updateInstance('position');
|
2018-03-09 03:26:41 +01:00
|
|
|
|
|
|
|
this.clouds.push(cloud);
|
2018-03-09 02:27:19 +01:00
|
|
|
}
|
2018-03-09 00:36:40 +01:00
|
|
|
|
|
|
|
this.initialized = true;
|
|
|
|
}
|
|
|
|
|
2018-03-09 02:37:49 +01:00
|
|
|
var diff = data.delta * this.speed;
|
2018-03-09 00:36:40 +01:00
|
|
|
|
2018-03-09 03:36:32 +01:00
|
|
|
var cloudInfo = this.clouds.reduce(
|
2018-03-09 03:26:41 +01:00
|
|
|
function(result, cloud) {
|
|
|
|
cloud.position.x += diff;
|
|
|
|
cloud.updateInstance('position');
|
|
|
|
|
2018-03-09 13:36:28 +01:00
|
|
|
if (cloud.position.x > 48) {
|
2018-03-09 03:36:32 +01:00
|
|
|
result.dead.push(cloud);
|
|
|
|
} else {
|
|
|
|
result.alive.push(cloud);
|
2018-03-09 03:26:41 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
|
|
|
},
|
2018-03-09 03:36:32 +01:00
|
|
|
{
|
|
|
|
alive : [],
|
|
|
|
dead : []
|
|
|
|
}
|
2018-03-09 03:26:41 +01:00
|
|
|
);
|
|
|
|
|
2018-03-09 03:36:32 +01:00
|
|
|
this.clouds = cloudInfo.alive;
|
|
|
|
|
|
|
|
cloudInfo.dead.map(
|
2018-03-09 03:26:41 +01:00
|
|
|
function(deadCloud) {
|
|
|
|
deadCloud.geometry = null;
|
|
|
|
deadCloud.materials = null;
|
|
|
|
deadCloud.remove();
|
|
|
|
}
|
|
|
|
)
|
2018-03-09 00:36:40 +01:00
|
|
|
|
2018-03-09 02:37:49 +01:00
|
|
|
this.sections.map(
|
|
|
|
function(section) {
|
|
|
|
section.left.position.x += diff;
|
|
|
|
section.road.position.x += diff;
|
|
|
|
section.right.position.x += diff;
|
|
|
|
|
2018-03-09 13:36:28 +01:00
|
|
|
if (section.left.position.x > 48) {
|
|
|
|
section.left.position.x -= 204;
|
|
|
|
section.road.position.x -= 204;
|
|
|
|
section.right.position.x -= 204;
|
2018-03-09 02:41:48 +01:00
|
|
|
}
|
|
|
|
|
2018-03-09 02:37:49 +01:00
|
|
|
section.left.updateInstance('position');
|
|
|
|
section.road.updateInstance('position');
|
|
|
|
section.right.updateInstance('position');
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
2018-03-09 03:21:02 +01:00
|
|
|
//return;
|
2018-03-09 03:09:52 +01:00
|
|
|
|
2018-03-09 03:00:19 +01:00
|
|
|
var modified = false;
|
|
|
|
|
2018-03-09 03:01:05 +01:00
|
|
|
if ((this.camera.position.z - this.snail.position.z) > 0.01) {
|
|
|
|
this.camera.position.z -= data.delta;
|
2018-03-09 03:00:19 +01:00
|
|
|
modified = true;
|
|
|
|
}
|
|
|
|
|
2018-03-09 03:01:05 +01:00
|
|
|
if ((this.snail.position.z - this.camera.position.z) > 0.01) {
|
|
|
|
this.camera.position.z += data.delta;
|
2018-03-09 03:00:19 +01:00
|
|
|
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');
|
2018-03-09 02:52:33 +01:00
|
|
|
}
|
|
|
|
|
2018-03-09 00:36:40 +01:00
|
|
|
this.time += data.delta;
|
|
|
|
|
2018-03-09 13:21:36 +01:00
|
|
|
if (this.time > 0.5) {
|
2018-03-09 02:27:19 +01:00
|
|
|
this.spawnCloud();
|
2018-03-09 00:36:40 +01:00
|
|
|
this.time = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
//@ sourceURL=beforeRender.js
|