|
- function Столкновения(события, тела, физдвижок)
- {
- this.создать = function()
- {
- this.задано = {};
- Matter.Events.on(
- физдвижок,
- "collisionActive",
- (событие) => { this.обработатьСтолкновение(событие) }
- );
- };
-
- this.обработатьКлюч = function(ключ, путь, значение)
- {
- if (путь[0] != "столкновения")
- {
- return;
- }
-
- let имя = путь[1];
- let свойство = путь.slice(2).join(".");
- if (!this.задано[имя])
- {
- this.задано[имя] = {};
- }
- this.задано[имя][свойство] = значение;
- };
-
- this.обработатьСтолкновение = function(событие)
- {
- for (var имя in this.задано)
- {
- var ст = this.задано[имя];
- var имя1 = ст["тела.0"];
- var имя2 = ст["тела.1"];
- if (!имя1 || !имя2 || !ст.событие)
- {
- continue;
- }
-
- var пары = событие.pairs;
- for (var номер in пары)
- {
- var пара = пары[номер];
- var п1 = тела.имена[пара.bodyA.id];
- var п2 = тела.имена[пара.bodyB.id];
- if (
- !((имя1 == п1) && (имя2 == п2)) &&
- !((имя1 == п2) && (имя2 == п1))
- ) {
- continue;
- }
- мир.события.уведомить(ст.событие);
- }
- }
- };
-
- // Конструктор.
- this.создать();
- };
|