// // // // СообщитьТекущееЗначениеМасштаба = мир => { UIkit.notification({ message: "🔍 " + мир.масштаб, //status: 'primary', //pos: 'top-right', timeout: 500 }); }; // // // // УменьшитьМасштаб = мир => { мир.масштаб -= 0.5; if (мир.масштаб < 1) { мир.масштаб = 1; } мир.уведомить("изменили масштаб"); }; // // // // УвеличитьМасштаб = мир => { мир.масштаб += 0.5; мир.уведомить("изменили масштаб"); }; // // // // ИзменитьРазмерОтрисовщикаThreeJS = мир => { console.debug("масштаб:", мир.масштаб); var ширина = window.innerWidth * мир.масштаб; var высота = window.innerHeight * мир.масштаб; мир.камера.aspect = ширина / высота; мир.камера.updateProjectionMatrix(); мир.отрисовщик.setSize(ширина, высота); var размер = мир.масштаб * 100; мир.канва.style = ` max-width: ${размер}%; max-height: ${размер}%; width: ${размер}%; height: ${размер}%; `; }; // // // // ЗадатьОтладочныйМасштаб = мир => { мир.масштаб = 3; мир.уведомить("изменили масштаб"); }; // // // // ИсправитьОтслеживаниеНажатийНаIOS = мир => { // https://stackoverflow.com/a/31459240/3404710 мир.отрисовщик.domElement.style.cursor = "pointer"; }; // // // // ОтслеживатьНажатияПальцем = мир => { 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; }; // // // // СоздатьФишкиВСцене = мир => { мир.уведомить("надо создать фишки в сцене"); }; // // // // ЗагрузитьРесурсыСцены = мир => { мир.уведомить("надо загрузить ресурсы сцены"); }; // // // // ПодготовитьСцену = мир => { 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.Group(); мир.сцена.add(мир.корень); }; // // // // СоздатьЗагрузчикТекстур = мир => { мир.загрузчикТекстур = new THREE.TextureLoader(); }; // // // // СоздатьЗагрузчикGLTF = мир => { мир.загрузчикGLTF = new THREE.GLTFLoader(); }; // // // // /* ВстроитьОтрисовщикаThreeJS = мир => { // Задать вид. var css = ` html, body { margin: 0; } `; var вид = document.createElement("style"); вид.innerHTML = css; document.head.appendChild(вид); document.body.appendChild(мир.отрисовщик.domElement); }; */ // // // // Настроить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; };