From d850811c026fea02fa9b6d0dd3b74fce79f1b8ee 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: Fri, 8 Oct 2021 16:45:27 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BA=D0=BB=D1=8E=D1=87=20=D1=84=D0=B8=D0=B7?= =?UTF-8?q?=D0=B8=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 4.0/игра/120.Физика.js | 29 +++++++++++++++++++---------- 4.0/игра/700.Игра.js | 13 ++++++++++--- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/4.0/игра/120.Физика.js b/4.0/игра/120.Физика.js index 4f8ccbb..d75fc12 100644 --- a/4.0/игра/120.Физика.js +++ b/4.0/игра/120.Физика.js @@ -1,19 +1,28 @@ -function Физика() +function Физика(события) { this.создать = function() { - this.движок = Matter.Engine.create({ - enableSleeping: true, - gravity: { - y: 2, - }, - }); + this.задано = {}; }; - this.обновить = function() { - Matter.Engine.update(this.движок); + this.обработатьКлюч = function(ключ, путь, значение) + { + if (путь[0] != "физика") + { + return; + } + + let имя = путь[1]; + let свойство = путь.slice(2).join("."); + if (!this.задано[имя]) + { + this.задано[имя] = {}; + } + this.задано[имя][свойство] = значение; + + события.уведомить(`физика/${имя}`); }; // Конструктор. this.создать(); -} +}; diff --git a/4.0/игра/700.Игра.js b/4.0/игра/700.Игра.js index d57afb3..9f59a9b 100644 --- a/4.0/игра/700.Игра.js +++ b/4.0/игра/700.Игра.js @@ -2,20 +2,27 @@ function Игра() { this.создать = function() { + мир.физдвижок = Matter.Engine.create({ + enableSleeping: true, + gravity: { + y: 2, + }, + }); var корень = document.getElementById("корень"); мир.события = new События(); мир.состояние = new Состояние(); мир.состояние.обработчик = (к, п, з) => { this.обработатьКлюч(к, п, з) }; - мир.физика = new Физика(); мир.виды = new Виды(мир.события); мир.изображения = new Изображения(мир.события, мир.виды, корень), - мир.тела = new Тела(мир.физика.движок.world); + мир.физика = new Физика(мир.события); + мир.тела = new Тела(мир.физдвижок.world); мир.слежение = new Слежение(мир.изображения, мир.тела); мир.объекты = new Объекты(мир.состояние); this.ключники = [ new Заголовок(), мир.виды, мир.изображения, + мир.физика, мир.тела, мир.слежение, мир.объекты, @@ -38,7 +45,7 @@ function Игра() this.обновить = function() { - мир.физика.обновить(); + Matter.Engine.update(мир.физдвижок); мир.слежение.обновить(); var тут = this;