diff --git a/4.0/игра/140.Тела.js b/4.0/игра/140.Тела.js index f05b50f..351a615 100644 --- a/4.0/игра/140.Тела.js +++ b/4.0/игра/140.Тела.js @@ -1,4 +1,4 @@ -function Тела(физмир) +function Тела(события, физика, физмир) { this.создать = function() { @@ -11,6 +11,7 @@ function Тела(физмир) this.задано = {}; this.тела = {}; this.имена = {}; + события.подписать(this); }; this.именаЧастей = function(за) @@ -44,7 +45,30 @@ function Тела(физмир) this.пересоздатьТело(имя); }; - this.пересоздатьТело = function(имя) { + this.обработатьСобытие = function(событие) + { + let префикс = "физика/"; + if (событие.startsWith(префикс)) + { + let физ = событие.substring(префикс.length); + this.пересоздатьТелаФизики(физ); + } + }; + + this.пересоздатьТелаФизики = function(физ) + { + for (let имя in this.задано) + { + let заданнаяФизика = this.задано[имя]["физика"]; + if (заданнаяФизика && заданнаяФизика == физ) + { + this.пересоздатьТело(имя); + } + } + }; + + this.пересоздатьТело = function(имя) + { // Удаляем старое тело. if (имя in this.тела) { @@ -62,19 +86,15 @@ function Тела(физмир) пр[1] = пр[1] + пр[3] / 2.0; // Параметры тела. var параметры = {}; - /* - * НАДО использовать из ключа физика - * - Object.assign(параметры, ум.физика); - for (var путь in за) + if (за.физика) { - if (путь.startsWith("физика")) + let заф = физика.задано[за.физика]; + for (let параметр in заф) { - var свойство = путь.slice(7); - мир.задатьПолныйКлюч(параметры, свойство, за[путь]); + мир.задатьПолныйКлюч(параметры, параметр, заф[параметр]); } } - */ +/**/console.debug("ИГР Тела.пересоздатьТ имя/параметры", имя, параметры); var тело = null; // Создаём новое составное тело. diff --git a/4.0/игра/700.Игра.js b/4.0/игра/700.Игра.js index 9f59a9b..527979a 100644 --- a/4.0/игра/700.Игра.js +++ b/4.0/игра/700.Игра.js @@ -15,7 +15,7 @@ function Игра() мир.виды = new Виды(мир.события); мир.изображения = new Изображения(мир.события, мир.виды, корень), мир.физика = new Физика(мир.события); - мир.тела = new Тела(мир.физдвижок.world); + мир.тела = new Тела(мир.события, мир.физика, мир.физдвижок.world); мир.слежение = new Слежение(мир.изображения, мир.тела); мир.объекты = new Объекты(мир.состояние); this.ключники = [