added cascade collision and deleted attributes observer
This commit is contained in:
parent
f820bd215e
commit
bc449cd86a
35
graph.js
35
graph.js
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue