/*!
* Dashcore - HTML Startup Template, v2.0.0
* Horizontal random bubbles variations.
* Copyright © 2019 5Studios.net
* https://5studios.net
* Credits to: https://codepen.io/lokesh
*/
"use strict";
(function($, global, $scope) {
$scope.SCROLL_SPEED = .3;
$scope.NOISE_SPEED = .004;
$scope.NOISE_AMOUNT = 5;
$scope.CANVAS_WIDTH = 2800;
$scope.bubbles = [
{ s: 0.6, x: 1134, y: 45 },
{ s: 0.6, x: 1620, y: 271 },
{ s: 0.6, x: 1761, y: 372 },
{ s: 0.6, x: 2499, y: 79 },
{ s: 0.6, x: 2704, y: 334 },
{ s: 0.6, x: 2271, y: 356 },
{ s: 0.6, x: 795, y: 226 },
{ s: 0.6, x: 276, y: 256 },
{ s: 0.6, x: 1210, y: 365 },
{ s: 0.6, x: 444, y: 193 },
{ s: 0.6, x: 2545, y: 387 },
{ s: 0.8, x: 1303, y: 193 },
{ s: 0.8, x: 907, y: 88 },
{ s: 0.8, x: 633, y: 320 },
{ s: 0.8, x: 323, y: 60 },
{ s: 0.8, x: 129, y: 357 },
{ s: 0.8, x: 1440, y: 342 },
{ s: 0.8, x: 1929, y: 293 },
{ s: 0.8, x: 2135, y: 198 },
{ s: 0.8, x: 2276, y: 82 },
{ s: 0.8, x: 2654, y: 182 },
{ s: 0.8, x: 2783, y: 60 },
{ x: 1519, y: 118 },
{ x: 1071, y: 233 },
{ x: 1773, y: 148 },
{ x: 2098, y: 385 },
{ x: 2423, y: 244 },
{ x: 901, y: 385 },
{ x: 624, y: 111 },
{ x: 75, y: 103 },
{ x: 413, y: 367 },
{ x: 2895, y: 271 },
{ x: 1990, y: 75 }
];
$scope.bubblesEl = document.querySelector(".bubbles-container");
// For perlin noise
$scope.noise = new Noise(Math.floor(Math.random() * 64000));
function Bubbles(specs) {
var instance = this;
instance.bubbles = [];
specs.forEach(function(spec, index) {
instance.bubbles.push(new Bubble(index, spec.x, spec.y, spec.s));
});
requestAnimationFrame(instance.update.bind(instance));
}
function Bubble(index, x, y, s) {
if (s === undefined) { s = 1; }
this.index = index;
this.x = x;
this.y = y;
this.scale = s;
this.noiseSeedX = Math.floor(Math.random() * 64000);
this.noiseSeedY = Math.floor(Math.random() * 64000);
this.el = document.createElement("div");
this.el.className = "bubble bubble-" + (this.index + 1);
$scope.bubblesEl.appendChild(this.el);
}
Bubbles.prototype.update = function() {
this.bubbles.forEach(function(bubble) { bubble.update(); });
this.raf = requestAnimationFrame(this.update.bind(this));
};
Bubble.prototype.update = function() {
this.noiseSeedX += $scope.NOISE_SPEED;
this.noiseSeedY += $scope.NOISE_SPEED;
var randomX = $scope.noise.simplex2(this.noiseSeedX, 0);
var randomY = $scope.noise.simplex2(this.noiseSeedY, 0);
this.x -= $scope.SCROLL_SPEED;
this.xWithNoise = this.x + randomX * $scope.NOISE_AMOUNT;
this.yWithNoise = this.y + randomY * $scope.NOISE_AMOUNT;
if (this.x < -200) {
this.x = $scope.CANVAS_WIDTH;
}
this.el.style.transform = "translate(" + this.xWithNoise + "px, " + this.yWithNoise + "px) scale(" + this.scale + ")";
};
$(function() {
if ($scope.bubblesEl) {
new Bubbles($scope.bubbles);
}
});
}(jQuery, this, {}));