const ИМЯ = "ОМ | MB"; const БАЗА = "https://git.opengamestudio.org/mahjong/mahjong-modeli-models/raw/branch/master/"; const ИМЯ_МОДУЛЯ_РЕСУРСОВ = "Ресурсы Маджонга | Mahjong resources"; // // // // ВключитьКэшированиеРесурсовThreeJSДляЗагрузкиРесурсовИзМодулей = мир => { THREE.Cache.enabled = true; }; // // // // УбратьПереворотТекстурыФишки = мир => { мир.текстураФишки.flipY = false; }; // // // // ПовернутьФишку = мир => { мир.модельФишки.rotation.x += 0.03; мир.модельФишки.rotation.y += 0.02; }; // // // // Отладка = мир => { console.debug("Отладка", Date()); }; // // // // ЗапуститьТаймерПоворотаФишки = мир => { setInterval( function() { мир.уведомить("поворот фишки"); }, 60 ); }; // // // // ПодготовитьСцену = мир => { мир.камера.position.z = 10; мир.свет = new THREE.DirectionalLight(0xffffff, 1); мир.свет.position.set(-0.5, 0.5, 1).normalize(); мир.сцена.add(мир.свет); }; // // // // СоздатьФишку = мир => { мир.сцена.add(мир.модельФишки); var материал = new THREE.MeshLambertMaterial({map: мир.текстураФишки}); мир.модельФишки.traverse(function(ребёнок) { if (ребёнок.isMesh) { ребёнок.material = материал; } }); }; // // // // ЗагрузитьТекстуруФишкиИзМодуля = мир => { var модуль = мир.модули.модульПоИмени(ИМЯ_МОДУЛЯ_РЕСУРСОВ); var ресурс = "/текстура.png"; var содержимое = модуль.содержимое[ресурс]; var b64 = base64js.fromByteArray(new Uint8Array(содержимое)); var адрес = `data:image/png;base64,${b64}`; мир.загрузчикТекстур.load( адрес, function(текстура) { мир.текстураФишки = текстура; мир.уведомить("загрузили текстуру фишки из модуля"); }, null, function(error) { console.error("ОШИБКА | ERROR", error); } ); }; // // // // СоздатьЗагрузчикТекстур = мир => { мир.загрузчикТекстур = new THREE.TextureLoader(); }; // // // // ЗагрузитьМодельФишки = мир => { var модуль = мир.модули.модульПоИмени(ИМЯ_МОДУЛЯ_РЕСУРСОВ); var ресурс = "/фишка.gltf"; var адрес = `${window.location.origin}${ресурс}`; THREE.Cache.add(адрес, модуль.содержимое[ресурс]); мир.загрузчикGLTF.load( адрес, function(gltf) { мир.модельФишки = gltf.scene; мир.уведомить("загрузили модель фишки"); }, null, function(error) { console.error("ОШИБКА | ERROR", error); } ); }; // // // // СоздатьЗагрузчикGLTF = мир => { мир.загрузчикGLTF = new THREE.GLTFLoader(); };