From 9f3a410f297fabc02d397e7954accce3aad9f36e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=9A=D0=B0=D0=BF?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BA=D0=BE?= Date: Wed, 20 Oct 2021 16:37:04 +0300 Subject: [PATCH] .. --- 4.1/игра/240.Столкновения.js | 36 +++++++++++++++++++- 4.1/игра/700.Игра.js | 2 +- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/4.1/игра/240.Столкновения.js b/4.1/игра/240.Столкновения.js index bcf5198..69d1f5d 100644 --- a/4.1/игра/240.Столкновения.js +++ b/4.1/игра/240.Столкновения.js @@ -1,8 +1,13 @@ -function Столкновения(события) +function Столкновения(события, тела, физдвижок) { this.создать = function() { this.задано = {}; + Matter.Events.on( + физдвижок, + "collisionActive", + (событие) => { this.обработатьСтолкновение(событие) } + ); }; this.обработатьКлюч = function(ключ, путь, значение) @@ -21,6 +26,35 @@ function Столкновения(события) 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.создать(); }; diff --git a/4.1/игра/700.Игра.js b/4.1/игра/700.Игра.js index f778a89..cbbd686 100644 --- a/4.1/игра/700.Игра.js +++ b/4.1/игра/700.Игра.js @@ -20,7 +20,7 @@ function Игра() мир.объекты = new Объекты(мир.состояние); мир.сцена = new Сцена(мир.состояние, мир.события, мир.тела); мир.мышь = new Мышь(мир.события); - мир.столкновения = new Столкновения(мир.события); + мир.столкновения = new Столкновения(мир.события, мир.тела, мир.физдвижок); this.ключники = [ new Заголовок(), мир.виды,