added cascade collision and deleted attributes observer

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2022-11-22 08:55:45 +10:00
parent f820bd215e
commit bc449cd86a

View File

@ -240,25 +240,8 @@ class graph {
); );
} }
// Инициализация ссылки на обрабатываемый объект // Обработка столкновений
const _this = this; this.collision(this.operator.nodes);
// Инициализация наблюдателя
this.#observer = new MutationObserver(function (mutations) {
for (const mutation of mutations) {
if (mutation.type === "attributes") {
// Запись параметра в инстанцию бегущей строки
_this.collision(_this.operator.nodes);
}
}
});
// Активация наблюдения
this.observer.observe(this.element, {
attributes: true,
attributeFilter: ["data-graph-x", "data-graph-y"],
attributeOldValue: true
});
} }
collision(nodes) { collision(nodes) {
@ -302,19 +285,15 @@ class graph {
// Реинициализация вектора между узлами // Реинициализация вектора между узлами
between = new victor(x1 - x2, y1 - y2); between = new victor(x1 - x2, y1 - y2);
// Проверка на столкновение узлов
if ( if (
between.length() > node.diameter / 2 + this.diameter / 2 || between.length() > node.diameter / 2 + this.diameter / 2 ||
--iterations === 0 --iterations === 0
) )
break; break;
console.log(node.diameter, this.diameter); // Инициализация координат вектора (узла с которым произошло столкновение)
let vector = new victor(x1, y1)
// let b = new victor(x1, y1).add(
// new victor((vic.x * 2) / 100, (vic.y * 2) / 100)
// );
let b = new victor(x1, y1)
.add(new victor(between.x, between.y).norm().unfloat()) .add(new victor(between.x, between.y).norm().unfloat())
.subtract( .subtract(
new victor( new victor(
@ -323,8 +302,8 @@ class graph {
) )
); );
node.element.style.left = b.x + "px"; // Перемещение узла с которым произошло столкновение
node.element.style.top = b.y + "px"; node.move(vector.x, vector.y);
} while (between.length() <= node.diameter / 2 + this.diameter / 2); } while (between.length() <= node.diameter / 2 + this.diameter / 2);
} }
} }