|
-
-
- // // // //
-
-
- ОтслеживатьНажатияВРисователе = мир =>
- {
- мир.отслеживатьНажатияВРисователе = true;
-
- уведомитьОНажатии = (событие) =>
- {
- if (!мир.отслеживатьНажатияВРисователе)
- {
- return;
- }
-
- var позиция = new THREE.Vector2();
- var ширина = window.innerWidth * мир.масштаб;
- var высота = window.innerHeight * мир.масштаб;
- позиция.x = ((событие.clientX + window.pageXOffset) / ширина ) * 2 - 1;
- позиция.y = - ((событие.clientY + window.pageYOffset) / высота) * 2 + 1;
- мир.позицияНажатияВРисователе = позиция;
- мир.уведомить("нажатие в рисователе");
- };
-
- // Палец.
- window.addEventListener(
- "touchstart",
- function(событие) {
- уведомитьОНажатии(событие.touches[0]);
- }
- );
- // Мышь.
- window.addEventListener(
- "click",
- function(событие) {
- уведомитьОНажатии(событие);
- }
- );
- // iOS.
- // https://stackoverflow.com/a/31459240/3404710
- мир.рисователь.domElement.style.cursor = "pointer";
- };
-
-
- // // // //
-
-
- ЗапуститьРисователя = мир =>
- {
- function отрисовать()
- {
- requestAnimationFrame(отрисовать);
- мир.рисователь.render(мир.сцена, мир.камера);
- }
- отрисовать();
- };
-
-
- // // // //
-
-
- ИзменитьРазмерРисователя = мир =>
- {
- var ширина = window.innerWidth * мир.масштаб;
- var высота = window.innerHeight * мир.масштаб;
- мир.камера.aspect = ширина / высота;
- мир.камера.updateProjectionMatrix();
- мир.рисователь.setSize(ширина, высота);
-
- var размер = мир.масштаб * 100;
- мир.канва.style = `
- position: absolute;
- left: 0;
- top: 0;
- max-width: ${размер}%;
- max-height: ${размер}%;
- width: ${размер}%;
- height: ${размер}%;
- `;
- };
-
-
- // // // //
-
-
- ОтслеживатьИзменениеРазмераОкнаБраузера = мир =>
- {
- window.addEventListener(
- "resize",
- function() {
- мир.уведомить("изменили размер окна браузера");
- }
- );
- };
-
-
- // // // //
-
-
- НастроитьРисователя = мир =>
- {
- мир.сцена = new THREE.Scene();
- мир.камера = new THREE.PerspectiveCamera(45, 1, 0.1, 1000);
- мир.ловец = new THREE.Raycaster();
- мир.модельер = new THREE.GLTFLoader();
- мир.текстурщик = new THREE.TextureLoader();
- мир.масштаб = 1;
- мир.канва = document.createElement("canvas");
- document.body.prepend(мир.канва);
- мир.рисователь = new THREE.WebGLRenderer({canvas: мир.канва, antialias: true});
- };
-
-
- // // // //
-
-
- УстановитьBase64JS = мир =>
- {
- var модуль = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ);
- var содержимое = модуль.содержимое["/base64js.min.js"];
- eval(содержимое);
-
- мир.база64ИзДвоичногоМассива = base64js.fromByteArray;
- мир.база64ВДвоичныйМассив = base64js.toByteArray;
- };
-
-
- // // // //
-
-
- УстановитьThreeJS = мир =>
- {
- var модуль = мир.модули.модульПоУказателю(УКАЗАТЕЛЬ_ЭТОГО_МОДУЛЯ);
- var код = модуль.содержимое["/three.js"];
-
- var скрипт = document.createElement("script");
- скрипт.innerHTML = код;
- document.body.appendChild(скрипт);
- };
|