- const ИМЯ = "ОМ | MB";
- const ИМЯ_МОДУЛЯ_РЕСУРСОВ = "Ресурсы Маджонга | Mahjong resources";
-
-
- // // // //
-
-
- ЦентрироватьСцену = мир =>
- {
- // мир.корень.position
- };
-
- // // // //
-
-
- ОтобразитьРаскладкуОднойФишкой = мир =>
- {
- var границы = мир.фишка.geometry.boundingBox;
- var размеры = [
- (границы.max.x - границы.min.x) / 2,
- (границы.max.z - границы.min.z) / 2,
- границы.max.y - границы.min.y,
- ];
-
- const позиции = мир.раскладкаKMahjongg.позиции;
- мир.фишки = [];
- for (var номер in позиции)
- {
- var фишка = мир.фишка.clone();
- мир.фишки.push(фишка);
- мир.корень.add(фишка);
-
- var позиция = позиции[номер];
- var слой = позиция[0];
- var ряд = позиция[1];
- var столбец = позиция[2];
- фишка.position.x = столбец * размеры[0];
- фишка.position.z = ряд * размеры[1];
- фишка.position.y = слой;
-
- }
- };
-
-
- // // // //
-
-
- ЗагрузитьРаскладку = мир =>
- {
- var модуль = мир.модули.модульПоИмени(ИМЯ_МОДУЛЯ_РЕСУРСОВ);
- //var ресурс = "/cat.layout";
- var ресурс = "/X_shaped.layout";
- var содержимое = модуль.содержимое[ресурс];
- мир.раскладкаKMahjongg = {
- "содержимое": содержимое,
- };
- };
-
-
- // // // //
-
-
- ПовернутьФишку = мир =>
- {
- мир.фишка.rotation.x += 0.03;
- мир.фишка.rotation.y += 0.02;
- };
-
-
- // // // //
-
-
- Отладка = мир =>
- {
- console.debug("Отладка", Date());
- };
-
-
- // // // //
-
-
- ЗапуститьТаймерПоворотаФишки = мир =>
- {
- setInterval(
- function() {
- мир.уведомить("поворот фишки");
- },
- 60
- );
-
- };
-
-
- // // // //
-
-
- ПодготовитьСцену = мир =>
- {
- var коэффициент = 2;
- var расстояние = 20;
- мир.камера.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.Group();
- мир.сцена.add(мир.корень);
- };
-
-
- // // // //
-
-
- ПодготовитьФишку = мир =>
- {
- var материал = new THREE.MeshLambertMaterial({map: мир.текстураФишки});
- мир.фишка.material = материал;
- };
-
-
- // // // //
-
-
- ЗагрузитьТекстуруФишкиИзМодуля = мир =>
- {
- var модуль = мир.модули.модульПоИмени(ИМЯ_МОДУЛЯ_РЕСУРСОВ);
- var ресурс = "/текстура.png";
- var содержимое = модуль.содержимое[ресурс];
- var b64 = base64js.fromByteArray(new Uint8Array(содержимое));
- var адрес = `data:image/png;base64,${b64}`;
- мир.загрузчикТекстур.load(
- адрес,
- function(текстура) {
- мир.текстураФишки = текстура;
- мир.текстураФишки.flipY = false;
- мир.уведомить("загрузили текстуру фишки из модуля");
- },
- null,
- function(error) {
- console.error("ОШИБКА | ERROR", error);
- }
- );
- };
-
-
- // // // //
-
-
- СоздатьЗагрузчикТекстур = мир =>
- {
- мир.загрузчикТекстур = new THREE.TextureLoader();
- };
-
-
- // // // //
-
-
- ЗагрузитьФишку = мир =>
- {
- var модуль = мир.модули.модульПоИмени(ИМЯ_МОДУЛЯ_РЕСУРСОВ);
- var ресурс = "/фишка.gltf";
- var адрес = `${window.location.origin}${ресурс}`;
- THREE.Cache.enabled = true;
- THREE.Cache.add(адрес, модуль.содержимое[ресурс]);
- мир.загрузчикGLTF.load(
- адрес,
- function(gltf) {
- // Вычленяем Mesh.
- gltf.scene.traverse(function(ребёнок) {
- if (ребёнок.isMesh)
- {
- мир.фишка = ребёнок;
- }
- });
- мир.уведомить("загрузили фишку");
- },
- null,
- function(error) {
- console.error("ОШИБКА | ERROR", error);
- }
- );
- };
-
-
- // // // //
-
-
- СоздатьЗагрузчикGLTF = мир =>
- {
- мир.загрузчикGLTF = new THREE.GLTFLoader();
- };
-
|