101 lines
3.5 KiB
JavaScript
101 lines
3.5 KiB
JavaScript
мж.задатьНейтральныйМатериал = 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];
|
||
};
|