Files
__01/🏁.js

206 lines
5.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const РЕСУРСЫ = "https://git.opengamestudio.org/PuCOBATEJlb/PECYPCbl/raw/branch/master/0000";
const ФИШКА = "/фишка.gltf";
const ТЕМА_ОТЛАДОЧНАЯ = "https://git.opengamestudio.org/MAOH/MAOH_TEMA_OTAK/raw/branch/master/0000";
// // // //
СкрытьУбранныеФишки = мир =>
{
for (var номер in мир.убранныеФишкиМаджонга)
{
var н = мир.убранныеФишкиМаджонга[номер];
// Перемещаем фишку на другой слой для исключения её из отрисовки и выбора.
var ф = мир.фишки[н];
ф.layers.set(1);
}
}
// // // //
ЗадатьФишкуДляВыбора = мир =>
{
var номер = мир.выбранныйУзел.userData;
мир.фишкаМаджонгаДляВыбора = номер;
}
// // // //
ПодготовитьФишкиКВыбору = мир =>
{
мир.выборныеУзлы = мир.фишки;
мир.задержкаОтображенияВыбранныхФишек = 0;
};
// // // //
ВыделитьВыбранныеФишки = мир =>
{
for (var номер in мир.выбранныеФишкиМаджонга)
{
var н = мир.выбранныеФишкиМаджонга[номер];
var ф = мир.фишки[н];
var г = мир.фишкиМаджонга[н]["🚩"];
var м = мир.выбранныеМатериалы[г];
ф.material = м;
}
};
// // // //
ЗадатьМатериалыФишкам = мир =>
{
for (var н in мир.фишки)
{
var ф = мир.фишки[н];
var г = мир.фишкиМаджонга[н]["🚩"];
var м = мир.материалы[г];
ф.material = м;
}
};
// // // //
СоздатьФишки = мир =>
{
var фишка = мир.полигональныеСетки[РЕСУРСЫ][ФИШКА];
var границы = фишка.geometry.boundingBox;
var размеры = [
(границы.max.x - границы.min.x) / 2,
(границы.max.z - границы.min.z) / 2,
//границы.max.y - границы.min.y,
];
var отступ = 0.02;
мир.фишки = [];
for (var номер in мир.фишкиМаджонга)
{
// Узел сцены.
var фм = мир.фишкиМаджонга[номер];
var ф = фишка.clone();
ф.userData = номер;
мир.фишки.push(ф);
мир.сцена.add(ф);
// Расположение.
var позиция = фм["📍"];
/*
var слой = позиция[0];
var ряд = позиция[1];
var столбец = позиция[2];
*/
var слой = 0;
var ряд = позиция[0];
var столбец = позиция[1];
ф.position.x = столбец * (размеры[0] + отступ);
ф.position.z = ряд * (размеры[1] + отступ);
ф.position.y = слой;
}
};
// // // //
ЗадатьФишки = мир =>
{
мир.фишкиМаджонга = [
{
"📍": [0, 0],
"🚩": 0,
},
{
"📍": [2, 0],
"🚩": 0,
},
{
"📍": [0, 2],
"🚩": 1,
},
];
};
// // // //
СоздатьПримерСцены = мир =>
{
мир.сцена.background = new THREE.Color(0xFFFFFF);
мир.камера.position.y = 10;
мир.камера.position.z = 5;
мир.камера.lookAt(new THREE.Vector3(0, 0, 0));
мир.свет = new THREE.DirectionalLight(0xFFFFFF, 1);
мир.свет.position.set(-0.5, 1, 0.5).normalize();
мир.сцена.add(мир.свет);
};
// // // //
СоздатьМатериалыФишек = мир =>
{
мир.материалы = [];
мир.выбранныеМатериалы = [];
var текстуры = мир.текстуры[ТЕМА_ОТЛАДОЧНАЯ];
for (var имя in текстуры)
{
var текстура = текстуры[имя];
var материал = new THREE.MeshLambertMaterial({
map: текстура,
color: new THREE.Color(0xAAAAAA),
});
мир.материалы.push(материал);
var выбранныйМатериал = new THREE.MeshLambertMaterial({
map: текстура,
color: new THREE.Color(0xFFFFFF),
});
мир.выбранныеМатериалы.push(выбранныйМатериал);
}
};
// // // //
ПодготовитьсяКЗагрузкеРесурсов = мир =>
{
мир.полигональныеСетки = {
[РЕСУРСЫ]: {
[ФИШКА]: null,
},
};
мир.текстуры = {
[ТЕМА_ОТЛАДОЧНАЯ]: { },
};
var м = мир.модули.модульПоУказателю(ТЕМА_ОТЛАДОЧНАЯ);
var файлы = Object.keys(м.структура).sort();
for (var номер in файлы)
{
var файл = файлы[номер];
мир.текстуры[ТЕМА_ОТЛАДОЧНАЯ][файл] = null;
}
};
// // // //
СкрытьКрутилку = мир =>
{
document.getElementById("крутилка").style.display = "none";
};