Files
CEHMA/🎬.js

123 lines
3.6 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.

СоздатьОтладочнуюСферуВЦентреКорня = мир =>
{
var форма = new THREE.SphereBufferGeometry(0.5, 32, 32);
var сфера = new THREE.Mesh(форма);
сфера.material = new THREE.MeshLambertMaterial({ color: 0xAA00AA });
мир.кореньСценыМаджонга.add(сфера);
};
// // // //
ЦентрироватьФишкиСцены = мир =>
{
var мин = {
"x": 1000000,
"z": 1000000,
};
var макс = {
"x": 0,
"z": 0,
};
for (var номер in мир.фишкиСцены)
{
const ф = мир.фишкиСцены[номер];
if (ф.position.x < мин.x)
{
мин.x = ф.position.x;
}
if (ф.position.x > макс.x)
{
макс.x = ф.position.x;
}
if (ф.position.z < мин.z)
{
мин.z = ф.position.z;
}
if (ф.position.z > макс.z)
{
макс.z = ф.position.z;
}
}
// Убираем пустоту слева.
мир.кореньСценыМаджонга.position.x -= мин.x;
мир.кореньСценыМаджонга.position.z -= мин.z;
// Центрируем остаток.
мир.кореньСценыМаджонга.position.x -= (макс.x - мин.x) / 2;
мир.кореньСценыМаджонга.position.z -= (макс.z - мин.z) / 2;
};
// // // //
ЗадатьМатериалыФишкамСцены = мир =>
{
for (var н in мир.фишкиСцены)
{
var ф = мир.фишкиСцены[н];
var г = мир.фишкиМаджонга[н]["🚩"];
var м = мир.материалыФишекСцены[г];
ф.material = м;
}
};
// // // //
УбратьСтарыеФишкиСцены = мир =>
{
if (мир.сценаМаджонга.children.length)
{
мир.сценаМаджонга.remove(мир.кореньСценыМаджонга);
}
мир.кореньСценыМаджонга = new THREE.Group();
мир.сценаМаджонга.add(мир.кореньСценыМаджонга);
мир.фишкиСцены = [];
};
// // // //
СоздатьНовыеФишкиСцены = мир =>
{
var фишка = мир.модельФишкиСцены;
var границы = фишка.geometry.boundingBox;
var размеры = [
(границы.max.x - границы.min.x) / 2,
(границы.max.z - границы.min.z) / 2,
(границы.max.y - границы.min.y),
];
var отступ = мир.отступМеждуФишкамиСцены;
for (var номер in мир.фишкиМаджонга)
{
// Узел сцены.
var фм = мир.фишкиМаджонга[номер];
var ф = фишка.clone();
ф.userData = номер;
мир.фишкиСцены.push(ф);
мир.кореньСценыМаджонга.add(ф);
// Расположение.
var п = фм["📍"];
var слой = п[0];
var ряд = п[1];
var столбец = п[2];
ф.position.x = столбец * (размеры[0] + отступ);
ф.position.z = ряд * (размеры[1] + отступ);
ф.position.y = слой * (размеры[2] + отступ);
}
};
// // // //
ПодготовитьСценуМаджонга = мир =>
{
мир.сценаМаджонга = new THREE.Group();
мир.отступМеждуФишкамиСцены = 0.02;
};