From 420d737d7637cafbb38d822aa159c2c20fb498f5 Mon Sep 17 00:00:00 2001 From: Michael Kapelko Date: Sat, 7 Sep 2019 22:20:46 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BA=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- код/2019-09-07.js | 100 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 код/2019-09-07.js diff --git a/код/2019-09-07.js b/код/2019-09-07.js new file mode 100644 index 0000000..60256af --- /dev/null +++ b/код/2019-09-07.js @@ -0,0 +1,100 @@ +мж.задатьНейтральныйМатериал = function() +{ + var мат = муром.материалы.создатьМатериал("N"); + var изо = муром.ресурсы.ресурс("tex.stub"); + мат.задатьТекстуру("image", изо); + var вер = муром.ресурсы.ресурс("ver").содержимое; + var фра = муром.ресурсы.ресурс("fra").содержимое; + мат.задатьШейдеры(вер, фра); + мж.сцена.задатьМатериал(мат); +}; + +мж.разобратьРаскладку = function() +{ + eval(муром.ресурсы.ресурс("Layout").содержимое); + + var содержимое = муром.ресурсы.ресурс("lay").содержимое; + мж.раскладка = new Раскладка(); + мж.раскладка.разобрать(содержимое); +}; + +мж.фишки = []; +мж.создатьФишки = function() +{ + eval(муром.ресурсы.ресурс("Tile").содержимое); + + for (var номер in мж.раскладка.позиции) + { + var ф = new Фишка(); + ф.позиция = мж.раскладка.позиции[номер]; + мж.фишки.push(ф); + } +}; + +мж.размерФишки = { + "ширина": 2.0, + "высота": 3.0, + "глубина": 1.0, +}; +мж.создатьУзлыФишек = function() +{ + const шагФишки = 2.0; + const коэффициенты = { + "x": мж.размерФишки.ширина / шагФишки, + "y": -мж.размерФишки.высота / шагФишки, + "z": мж.размерФишки.глубина, + }; + var мод = муром.ресурсы.ресурс("mod"); + + for (var номер in мж.фишки) + { + var имя = номер.toString(); + var узел = муром.узлы.создатьУзел(имя, мод); + мж.сцена.добавитьДитя(узел); + + var ф = мж.фишки[номер]; + var п = ф.позиция; + узел.позиция = [ + п[2] * коэффициенты.x, + п[1] * коэффициенты.y, + п[0] * коэффициенты.z, + ]; + ф.узел = узел; + } +}; + +мж.центрироватьСцену = function() +{ + var границы = { + "лево": 1000, + "право": -1000, + "верх": -1000, + "низ": 1000, + }; + for (var номер in мж.фишки) + { + const ф = мж.фишки[номер]; + const x = ф.узел.позиция[0]; + const y = ф.узел.позиция[1]; + if (x < границы.лево) + { + границы.лево = x; + } + if (x > границы.право) + { + границы.право = x; + } + if (y < границы.низ) + { + границы.низ = y; + } + if (y > границы.верх) + { + границы.верх = y; + } + } + + const ширина = границы.право - границы.лево + мж.размерФишки.ширина; + const высота = границы.верх - границы.низ + мж.размерФишки.высота; + мж.сцена.позиция = [-ширина / 2.0, 0, высота / 2.0]; +};