diff --git a/7l8ar325qf.js b/7l8ar325qf.js index 7800937..1af9d53 100644 --- a/7l8ar325qf.js +++ b/7l8ar325qf.js @@ -1,2 +1,8 @@ -return null; -//@ sourceURL=CustomCode (7l8ar325qf).js \ No newline at end of file + +if (!this.entityLoaded) { + return; +} + +this.entityLoaded.render(data.delta); + +//@ sourceURL=beforeRender.js \ No newline at end of file diff --git a/dwxvtxzrun.js b/dwxvtxzrun.js index f7756a0..bc0bcbb 100644 --- a/dwxvtxzrun.js +++ b/dwxvtxzrun.js @@ -11,4 +11,4 @@ this.entityLoaded.move( } ); -//@ sourceURL=mouseMoveARFootball2.js \ No newline at end of file +//@ sourceURL=mouseMove.js \ No newline at end of file diff --git a/ff0fsum4zx.js b/ff0fsum4zx.js index 7fee068..2a0a32a 100644 --- a/ff0fsum4zx.js +++ b/ff0fsum4zx.js @@ -9,29 +9,58 @@ if (data.entity === this.parentEntity) { */ this.mouseMove = R3.EntityManager.Instance.findComponentById('dwxvtxzrun'); this.touchMove = R3.EntityManager.Instance.findComponentById('p49pad0i7l'); +this.beforeRender = R3.EntityManager.Instance.findComponentById('7l8ar325qf'); /** * Meshes */ this.footballPlayer = R3.EntityManager.Instance.findComponentById('t537n02x0s'); +this.football = R3.EntityManager.Instance.findComponentById('umgbzb0ur2'); -this.movingAverage = R3.Utils.MovingAverage(10); +/** + * Geometry + */ +this.ballGeometry = R3.EntityManager.Instance.findComponentById('dt6jl8kocw'); + +/** + * Materials + */ +this.materialWhite = R3.EntityManager.Instance.findComponentById('iualutcl1y'); +this.materialBlack = R3.EntityManager.Instance.findComponentById('2g36po454g'); this.playerRotation = { x : 0, y : 0 }; +this.kick = { + start : null, + distance : 0, + time : 0, + speed : 0, + direction : 0 +}; -R3.CustomCode.prototype.kick = function(data) { +this.balls = []; +this.activeBall = this.football.instance; + +R3.CustomCode.prototype.render = function(delta) { + + this.balls.map( + function(object) { + var ball = object.ball; + var kick = object.kick; + + ball.translateOnAxis(object.v, 1); + } + ) }; R3.CustomCode.prototype.move = function(data) { var x = data.x; var y = data.y; - var speed = 0; if (data.source === 'mouse' || 'touch') { x *= 0.01; @@ -41,20 +70,16 @@ R3.CustomCode.prototype.move = function(data) { this.playerRotation.x += x; this.playerRotation.y += y; - this.timestamp = null; - var kick = false; var canKick = false; - var movingDown = false; - if (this.playerRotation.y > Math.PI) { canKick = true; } /** - * Clamp player rotation to values between Math.PI * 2 + * Clamp player rotation to values between 0 and Math.PI * 2 */ if (this.playerRotation.y > Math.PI * 2) { this.playerRotation.y -= Math.PI * 2; @@ -67,6 +92,17 @@ R3.CustomCode.prototype.move = function(data) { canKick = true; } + /** + * Clamp direction angle between 0 and Math.PI * 2 + */ + if (this.playerRotation.x > Math.PI * 2) { + this.playerRotation.x -= Math.PI * 2; + } + + if (this.playerRotation.x < 0) { + this.playerRotation.x += Math.PI * 2; + } + this.footballPlayer.instance.matrix = new THREE.Matrix4(); this.footballPlayer.instance.matrix.decompose( this.footballPlayer.instance.position, @@ -83,44 +119,89 @@ R3.CustomCode.prototype.move = function(data) { this.footballPlayer.instance.rotateX(this.playerRotation.y); if (kick) { - console.log('kick'); - console.log(Number(Date.now()) - Number(this.timestamp)); + + if (this.kick.start === null) { + console.warn('no kick start time'); + return; + } + + this.kick.time = Date.now() - this.kick.start; + + this.kick.speed = this.kick.distance / this.kick.time; + + this.kick.direction = this.playerRotation.x; + + var v = new THREE.Vector3(0, 0, -1); + + v.multiplyScalar(this.kick.speed); + + v.applyAxisAngle( + new THREE.Vector3(0,1,0), + this.kick.direction + ); + + this.balls.push( + { + ball : this.activeBall, + kick : this.kick, + v : v + } + ); + + this.activeBall = null; + + console.log('kick', this.kick); } - if (canKick) { - console.log('can kick'); + if (canKick && this.activeBall === null) { + + console.log('can kick'); + + this.activeBall = new THREE.Mesh( + this.ballGeometry.instance, + [ + this.materialWhite.instance, + this.materialBlack.instance + ] + ); + + this.activeBall.scale.copy(this.football.instance.scale); + //this.activeBall.scale.copy(this.football.instance.scale); + + this.football.parentScene.instance.add(this.activeBall); } if (y > 0 && canKick) { - - - if (this.movingDown) { - /** - * Do nothing - */ - } else { - - this.timestamp = Date.now(); - console.log('time stamped : ' + this.timestamp); - this.movingDown = true + if (this.kick.start === null) { + this.kick.start = Date.now(); } /** - * Moving down, record the average + * Moving down, record the distance travelled */ - // speed = this.movingAverage(y); + this.kick.distance += Math.abs(y); } if (y < 0) { - this.movingDown = false; + + /** + * We are no longer moving down, also reset our Y distance counter + * @type {boolean} + */ + this.kick = { + start : null, + distance : 0, + time : 0, + speed : 0, + direction : 0 + }; } - - }.bind(this) this.mouseMove.entityLoaded = this; this.touchMove.entityLoaded = this; +this.beforeRender.entityLoaded = this; //@ sourceURL=entityLoaded.js \ No newline at end of file diff --git a/p49pad0i7l.js b/p49pad0i7l.js index 599b3f8..a1bfa14 100644 --- a/p49pad0i7l.js +++ b/p49pad0i7l.js @@ -6,8 +6,8 @@ if (!this.entityLoaded) { this.entityLoaded.move( { source : 'touch', - x : data.meta.totalRight - data.meta.totalLeft, - y : data.meta.totalDown - data.meta.totalUp + x : data.meta.movementX, + y : data.meta.movementY } );