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