/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* Ball.js :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: edbernar diffTop) speed *= -1; if (this.interval) clearInterval(this.interval); this.interval = setInterval(() => { this.object.position.y += speed; if ((speed > 0 && this.object.position.y >= this.limits.up) || (speed < 0 && this.object.position.y <= this.limits.down)) { clearInterval(this.interval); this.interval = null; if (speed > 0) this.setPosition(this.object.position.x, this.limits.up, this.object.position.z); else this.setPosition(this.object.position.x, this.limits.down, this.object.position.z); } speed -= speed * slower; }, 10); } updatePos(content) { this.lastTime = new Date().getTime(); this.lastPos = [content.pos[0], this.object.position.y, content.pos[1]]; this.velocity = content.velocity; } update() { const deltaTime = ((new Date().getTime()) - this.lastTime) / 1000; const x = this.lastPos[0] + (deltaTime * this.velocity[0]); const z = this.lastPos[2] + (deltaTime * this.velocity[1]); this.object.position.set(x, this.object.position.y, z); } dispose() { if (this.interval) clearInterval(this.interval); this.interval = null; if (this.object) { if (this.object.geometry) this.object.geometry.dispose(); if (this.object.material) this.object.material.dispose(); if (this.object.texture) this.object.texture.dispose(); } this.object = null; } } export { Ball };