Files
mahjong-scena/пуск|run.js

234 lines
5.0 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.

// // // //
ВыбратьРаскладкуX = мир =>
{
мир.выбраннаяРаскладка = "X_shaped";
мир.уведомить("выбрали раскладку");
};
// // // //
ИзменитьРазмерОтрисовщикаThreeJS = мир =>
{
var ширина = window.innerWidth * мир.масштаб;
var высота = window.innerHeight * мир.масштаб;
мир.камера.aspect = ширина / высота;
мир.камера.updateProjectionMatrix();
мир.отрисовщик.setSize(ширина, высота);
var размер = мир.масштаб * 100;
мир.канва.style = `
max-width: ${размер}%;
max-height: ${размер}%;
width: ${размер}%;
height: ${размер}%;
`;
};
// // // //
ЗадатьОтладочныйМасштаб = мир =>
{
мир.масштаб = 3;
мир.уведомить("изменили масштаб");
};
// // // //
ВключитьОтслеживаниеНажатий = мир =>
{
мир.отслеживатьНажатия = true;
};
// // // //
ОтключитьОтслеживаниеНажатий = мир =>
{
мир.отслеживатьНажатия = false;
};
// // // //
ИсправитьОтслеживаниеНажатийНаIOS = мир =>
{
// https://stackoverflow.com/a/31459240/3404710
мир.отрисовщик.domElement.style.cursor = "pointer";
};
// // // //
ПодготовитьсяКОтслеживаниюНажатий = мир =>
{
мир.отслеживатьНажатия = false;
// Палец.
window.addEventListener(
"touchstart",
function(событие) {
сообщитьОНажатии(мир, событие.touches[0]);
}
);
// Мышь.
window.addEventListener(
"click",
function(событие) {
сообщитьОНажатии(мир, событие);
}
);
};
// // // //
ЦентрироватьСцену = мир =>
{
var мин = {
"x": 0,
"z": 0,
};
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 - мин.x) / 2;
мир.корень.position.z -= (макс.z - мин.z) / 2;
};
// // // //
РазобратьРаскладкуKMahjongg = мир =>
{
мир.раскладкаKMahjongg.позиции = разобратьРаскладкуKMahjongg(мир.раскладкаKMahjongg.содержимое);
};
// // // //
ЗагрузитьРесурсыСцены = мир =>
{
мир.уведомить("надо загрузить ресурсы сцены");
};
// // // //
ПодготовитьСцену = мир =>
{
var коэффициент = 2;
var расстояние = 14;
мир.камера.position.y = расстояние * коэффициент;
мир.камера.position.z = расстояние;
мир.камера.lookAt(new THREE.Vector3(0, 0, 0));
мир.свет = new THREE.DirectionalLight(0xffffff, 1);
мир.свет.position.set(-0.5, 1, 0.5).normalize();
мир.сцена.add(мир.свет);
};
// // // //
СоздатьЗагрузчикТекстур = мир =>
{
мир.загрузчикТекстур = new THREE.TextureLoader();
};
// // // //
СоздатьЗагрузчикGLTF = мир =>
{
мир.загрузчикGLTF = new THREE.GLTFLoader();
};
// // // //
НастроитьThreeJS = мир =>
{
мир.сцена = new THREE.Scene();
мир.сцена.background = new THREE.Color(0xFFFFFF);
мир.камера = new THREE.PerspectiveCamera(45, 1, 0.1, 1000);
мир.ловецНажатий = new THREE.Raycaster();
мир.отрисовщик = new THREE.WebGLRenderer({canvas: мир.канва, antialias: true});
};
// // // //
СоздатьКанвуThreeJS = мир =>
{
мир.канва = document.createElement("canvas");
мир.канва.id = "канва-threejs";
мир.канва.style = `
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
`;
var первый = document.body.firstChild;
if (первый)
{
document.body.insertBefore(мир.канва, первый);
}
else
{
document.body.appendChild(мир.канва);
}
};
// // // //
СоздатьМасштаб = мир =>
{
мир.масштаб = 1;
};