2023-02-17 11:06:01 +01:00

82 lines
3.7 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getProximitySpeedFactor = exports.applyPath = exports.spin = exports.applyDistance = void 0;
const tsparticles_engine_1 = require("tsparticles-engine");
function applyDistance(particle) {
const initialPosition = particle.initialPosition, { dx, dy } = (0, tsparticles_engine_1.getDistances)(initialPosition, particle.position), dxFixed = Math.abs(dx), dyFixed = Math.abs(dy), hDistance = particle.retina.maxDistance.horizontal, vDistance = particle.retina.maxDistance.vertical;
if (!hDistance && !vDistance) {
return;
}
if (((hDistance && dxFixed >= hDistance) || (vDistance && dyFixed >= vDistance)) && !particle.misplaced) {
particle.misplaced = (!!hDistance && dxFixed > hDistance) || (!!vDistance && dyFixed > vDistance);
if (hDistance) {
particle.velocity.x = particle.velocity.y / 2 - particle.velocity.x;
}
if (vDistance) {
particle.velocity.y = particle.velocity.x / 2 - particle.velocity.y;
}
}
else if ((!hDistance || dxFixed < hDistance) && (!vDistance || dyFixed < vDistance) && particle.misplaced) {
particle.misplaced = false;
}
else if (particle.misplaced) {
const pos = particle.position, vel = particle.velocity;
if (hDistance && ((pos.x < initialPosition.x && vel.x < 0) || (pos.x > initialPosition.x && vel.x > 0))) {
vel.x *= -(0, tsparticles_engine_1.getRandom)();
}
if (vDistance && ((pos.y < initialPosition.y && vel.y < 0) || (pos.y > initialPosition.y && vel.y > 0))) {
vel.y *= -(0, tsparticles_engine_1.getRandom)();
}
}
}
exports.applyDistance = applyDistance;
function spin(particle, moveSpeed) {
const container = particle.container;
if (!particle.spin) {
return;
}
const updateFunc = {
x: particle.spin.direction === "clockwise" ? Math.cos : Math.sin,
y: particle.spin.direction === "clockwise" ? Math.sin : Math.cos,
};
particle.position.x = particle.spin.center.x + particle.spin.radius * updateFunc.x(particle.spin.angle);
particle.position.y = particle.spin.center.y + particle.spin.radius * updateFunc.y(particle.spin.angle);
particle.spin.radius += particle.spin.acceleration;
const maxCanvasSize = Math.max(container.canvas.size.width, container.canvas.size.height);
if (particle.spin.radius > maxCanvasSize / 2) {
particle.spin.radius = maxCanvasSize / 2;
particle.spin.acceleration *= -1;
}
else if (particle.spin.radius < 0) {
particle.spin.radius = 0;
particle.spin.acceleration *= -1;
}
particle.spin.angle += (moveSpeed / 100) * (1 - particle.spin.radius / maxCanvasSize);
}
exports.spin = spin;
function applyPath(particle, delta) {
var _a;
const particlesOptions = particle.options, pathOptions = particlesOptions.move.path, pathEnabled = pathOptions.enable;
if (!pathEnabled) {
return;
}
if (particle.lastPathTime <= particle.pathDelay) {
particle.lastPathTime += delta.value;
return;
}
const path = (_a = particle.pathGenerator) === null || _a === void 0 ? void 0 : _a.generate(particle);
if (path) {
particle.velocity.addTo(path);
}
if (pathOptions.clamp) {
particle.velocity.x = (0, tsparticles_engine_1.clamp)(particle.velocity.x, -1, 1);
particle.velocity.y = (0, tsparticles_engine_1.clamp)(particle.velocity.y, -1, 1);
}
particle.lastPathTime -= particle.pathDelay;
}
exports.applyPath = applyPath;
function getProximitySpeedFactor(particle) {
return particle.slow.inRange ? particle.slow.factor : 1;
}
exports.getProximitySpeedFactor = getProximitySpeedFactor;