Сцена Маджонга | Mahjong scene
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
3.3KB

  1. // // // //
  2. ИсправитьОтслеживаниеНажатийНаIOS = мир =>
  3. {
  4. // https://stackoverflow.com/a/31459240/3404710
  5. мир.отрисовщик.domElement.style.cursor = "pointer";
  6. };
  7. // // // //
  8. ОтслеживатьНажатияПальцем = мир =>
  9. {
  10. window.addEventListener(
  11. "touchstart",
  12. function(событие) {
  13. var позиция = new THREE.Vector2();
  14. позиция.x = (событие.touches[0].clientX / window.innerWidth) * 2 - 1;
  15. позиция.y = - (событие.touches[0].clientY / window.innerHeight) * 2 + 1;
  16. мир.позицияНажатия = позиция;
  17. мир.уведомить("нажали");
  18. }
  19. );
  20. };
  21. // // // //
  22. ОтслеживатьНажатияМышью = мир =>
  23. {
  24. window.addEventListener(
  25. "click",
  26. function(событие) {
  27. var позиция = new THREE.Vector2();
  28. позиция.x = (событие.clientX / window.innerWidth) * 2 - 1;
  29. позиция.y = - (событие.clientY / window.innerHeight) * 2 + 1;
  30. мир.позицияНажатия = позиция;
  31. мир.уведомить("нажали");
  32. }
  33. );
  34. };
  35. // // // //
  36. ЦентрироватьСцену = мир =>
  37. {
  38. var мин = {
  39. "x": 0,
  40. "z": 0,
  41. };
  42. var макс = {
  43. "x": 0,
  44. "z": 0,
  45. };
  46. for (var номер in мир.фишки)
  47. {
  48. const фишка = мир.фишки[номер];
  49. if (фишка.position.x < мин.x)
  50. {
  51. мин.x = фишка.position.x;
  52. }
  53. if (фишка.position.x > макс.x)
  54. {
  55. макс.x = фишка.position.x;
  56. }
  57. if (фишка.position.z < мин.z)
  58. {
  59. мин.z = фишка.position.z;
  60. }
  61. if (фишка.position.z > макс.z)
  62. {
  63. макс.z = фишка.position.z;
  64. }
  65. }
  66. мир.корень.position.x -= (макс.x - мин.x) / 2;
  67. мир.корень.position.z -= (макс.z - мин.z) / 2;
  68. };
  69. // // // //
  70. СоздатьФишкиВСцене = мир =>
  71. {
  72. мир.уведомить("надо создать фишки в сцене");
  73. };
  74. // // // //
  75. ЗагрузитьРесурсыСцены = мир =>
  76. {
  77. мир.уведомить("надо загрузить ресурсы сцены");
  78. };
  79. // // // //
  80. ПодготовитьСцену = мир =>
  81. {
  82. var коэффициент = 2;
  83. var расстояние = 6;
  84. мир.камера.position.y = расстояние * коэффициент;
  85. мир.камера.position.z = расстояние;
  86. мир.камера.lookAt(new THREE.Vector3(0, 0, 0));
  87. мир.свет = new THREE.DirectionalLight(0xffffff, 1);
  88. мир.свет.position.set(-0.5, 1, 0.5).normalize();
  89. мир.сцена.add(мир.свет);
  90. мир.корень = new THREE.Group();
  91. мир.сцена.add(мир.корень);
  92. };
  93. // // // //
  94. СоздатьЗагрузчикТекстур = мир =>
  95. {
  96. мир.загрузчикТекстур = new THREE.TextureLoader();
  97. };
  98. // // // //
  99. СоздатьЗагрузчикGLTF = мир =>
  100. {
  101. мир.загрузчикGLTF = new THREE.GLTFLoader();
  102. };