Files
mjs/400.столкновения.js
2021-08-24 14:51:01 +03:00

74 lines
2.0 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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