Files
MYPOM/5.2/игра/240.Столкновения.js

61 lines
1.9 KiB
JavaScript

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.создать();
};