|
-
-
- // // // //
-
-
- ИзменитьРазмерОтрисовщикаThreeJS = мир =>
- {
- 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 = мир =>
- {
- мир.сцена = 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;
- };
|