From 3f83bcd799c81781a4f29e83d0c64e7e5e48fecf Mon Sep 17 00:00:00 2001 From: -=yb4f310 Date: Sun, 12 Nov 2017 14:00:30 +0100 Subject: [PATCH] Initial Commit: CC - Before Render - Moorcow (4jubz9thqn.js) --- 4jubz9thqn.js | 184 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 184 insertions(+) create mode 100644 4jubz9thqn.js diff --git a/4jubz9thqn.js b/4jubz9thqn.js new file mode 100644 index 0000000..b4e3314 --- /dev/null +++ b/4jubz9thqn.js @@ -0,0 +1,184 @@ +if (!this.entityLoaded) { + return; +} + +if (GameLib.Utils.UndefinedOrNull(this.initialized)) { + + this.initialized = true; + + this.bull = this.entityLoaded.bull; + this.star = this.entityLoaded.star; + this.burger = this.entityLoaded.burger; + this.parcel = this.entityLoaded.parcel; + + this.bull.instance.visible = false; + this.star.instance.visible = false; + this.burger.instance.visible = false; + this.parcel.instance.visible = false; + + /** + * This component is initializing - set the total time to 0 + */ + this.totalTime = 0; + this.spawnTime = 0; + + this.enemies = []; + + GameLib.Event.Emit( + GameLib.Event.GET_GRAPHICS_IMPLEMENTATION, + null, + function(graphics) { + this.graphics = graphics + }.bind(this) + ); + + this.getNextSpawnTime = function() { + return GameLib.Utils.GetRandomIntInclusive( + 1, + 1 + ); + } + + this.nextSpawnTime = this.getNextSpawnTime(); + + this.spawnEnemy = function() { + + var enemyType = GameLib.Utils.GetRandomIntInclusive(1, 5); + var meshType = GameLib.Utils.GetRandomIntInclusive(1, 4); + + var y = GameLib.Utils.GetRandomIntInclusive(2, 10); + + var apiBox = new GameLib.D3.API.Mesh(); + + apiBox.materials = [this.boxMaterial]; + + var speed = 1; + + var mesh = null; + if (meshType === 1) { + mesh = this.bull.clone(); + speed = 0.2; + } else if (meshType === 2) { + mesh = this.star.clone(); + speed = 0.3; + } else if (meshType === 3) { + mesh = this.burger.clone(); + speed = 0.4; + } else if (meshType === 4) { + mesh = this.parcel.clone(); + speed = 0.5; + } else { + console.log('unknown mesh type : ' + meshType); + } + + mesh.instance.visible = true; + + var velocity = null; + + var axis = new GameLib.API.Vector3( + GameLib.Utils.GetRandomIntInclusive(1,10) * 0.1, + GameLib.Utils.GetRandomIntInclusive(1,10) * 0.1, + GameLib.Utils.GetRandomIntInclusive(1,10) * 0.1 + ); + + axis = axis.normalize(); + + var angle = GameLib.Utils.GetRandomIntInclusive(1,100) * 0.001; + + var position = {x : 0, y: y, z :0}; + + var rotation = { + axis : axis, + angle : angle + }; + + var enemy = { + mesh : mesh + }; + + if (enemyType === 1) { + position.x = -100; + velocity = {x:speed,y:0,z:0}; + } + + if (enemyType === 2) { + position.x = 100; + velocity = {x:-speed,y:0,z:0}; + } + + if (enemyType === 3) { + position.x = -100; + position.z = -100; + velocity = {x:speed,y:0,z:speed}; + } + + if (enemyType === 4) { + position.x = 100; + position.z = -100; + velocity = {x:-speed,y:0,z:speed}; + } + + if (enemyType === 5) { + position.x = 0; + position.z = -100; + velocity = {x:0,y:0,z:speed}; + } + + + enemy.mesh.position.x = position.x; + enemy.mesh.position.y = position.y; + enemy.mesh.position.z = position.z; + enemy.mesh.updateInstancePosition(); + + enemy.mesh.useQuaternion = true; + enemy.mesh.quaternion.axis.x = rotation.axis.x; + enemy.mesh.quaternion.axis.y = rotation.axis.y; + enemy.mesh.quaternion.axis.z = rotation.axis.z; + enemy.mesh.quaternion.angle = rotation.angle; + enemy.mesh.updateInstanceRotation(); + + enemy.velocity = velocity; + enemy.rotation = rotation; + + enemy.lifeTime = 0; + enemy.life = 15; + + this.enemies.push(enemy); + } +} + +this.totalTime += data.delta; +this.spawnTime += data.delta; + +if (this.spawnTime > this.nextSpawnTime) { + this.nextSpawnTime = this.getNextSpawnTime(); + this.spawnTime = 0; + this.spawnEnemy(); +} + +this.enemies = this.enemies.reduce( + function(result, enemy) { + enemy.mesh.position.add(enemy.velocity); + enemy.mesh.updateInstancePosition(); + + enemy.mesh.quaternion.angle += enemy.rotation.angle; + enemy.mesh.updateInstanceRotation(); + + enemy.lifeTime += data.delta; + if (enemy.lifeTime > enemy.life) { + GameLib.Event.Emit( + GameLib.Event.REMOVE_COMPONENT, + { + component : enemy.mesh + } + ); + } else { + result.push(enemy); + } + return result; + }, + [] +); + +return null; +//# sourceURL=beforeRender.js \ No newline at end of file