Основа Маджонга | Mahjong's base
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

150 řádky
3.5KB

  1. const ИМЯ = "ОМ | MB";
  2. const БАЗА = "https://git.opengamestudio.org/mahjong/mahjong-modeli-models/raw/branch/master/";
  3. const ИМЯ_МОДУЛЯ_РЕСУРСОВ = "Ресурсы Маджонга | Mahjong resources";
  4. // // // //
  5. ВключитьКэшированиеРесурсовThreeJSДляЗагрузкиРесурсовИзМодулей = мир =>
  6. {
  7. THREE.Cache.enabled = true;
  8. };
  9. // // // //
  10. УбратьПереворотТекстурыФишки = мир =>
  11. {
  12. мир.текстураФишки.flipY = false;
  13. };
  14. // // // //
  15. ПовернутьФишку = мир =>
  16. {
  17. мир.модельФишки.rotation.x += 0.03;
  18. мир.модельФишки.rotation.y += 0.02;
  19. };
  20. // // // //
  21. Отладка = мир =>
  22. {
  23. console.debug("Отладка", Date());
  24. };
  25. // // // //
  26. ЗапуститьТаймерПоворотаФишки = мир =>
  27. {
  28. setInterval(
  29. function() {
  30. мир.уведомить("поворот фишки");
  31. },
  32. 60
  33. );
  34. };
  35. // // // //
  36. ПодготовитьСцену = мир =>
  37. {
  38. мир.камера.position.z = 10;
  39. мир.свет = new THREE.DirectionalLight(0xffffff, 1);
  40. мир.свет.position.set(-0.5, 0.5, 1).normalize();
  41. мир.сцена.add(мир.свет);
  42. };
  43. // // // //
  44. СоздатьФишку = мир =>
  45. {
  46. мир.сцена.add(мир.модельФишки);
  47. var материал = new THREE.MeshLambertMaterial({map: мир.текстураФишки});
  48. мир.модельФишки.traverse(function(ребёнок) {
  49. if (ребёнок.isMesh)
  50. {
  51. ребёнок.material = материал;
  52. }
  53. });
  54. };
  55. // // // //
  56. ЗагрузитьТекстуруФишкиИзМодуля = мир =>
  57. {
  58. var модуль = мир.модули.модульПоИмени(ИМЯ_МОДУЛЯ_РЕСУРСОВ);
  59. var ресурс = "/текстура.png";
  60. var содержимое = модуль.содержимое[ресурс];
  61. var b64 = base64js.fromByteArray(new Uint8Array(содержимое));
  62. var адрес = `data:image/png;base64,${b64}`;
  63. мир.загрузчикТекстур.load(
  64. адрес,
  65. function(текстура) {
  66. мир.текстураФишки = текстура;
  67. мир.уведомить("загрузили текстуру фишки из модуля");
  68. },
  69. null,
  70. function(error) {
  71. console.error("ОШИБКА | ERROR", error);
  72. }
  73. );
  74. };
  75. // // // //
  76. СоздатьЗагрузчикТекстур = мир =>
  77. {
  78. мир.загрузчикТекстур = new THREE.TextureLoader();
  79. };
  80. // // // //
  81. ЗагрузитьМодельФишки = мир =>
  82. {
  83. var модуль = мир.модули.модульПоИмени(ИМЯ_МОДУЛЯ_РЕСУРСОВ);
  84. var ресурс = "/фишка.gltf";
  85. var адрес = `${window.location.origin}${ресурс}`;
  86. THREE.Cache.add(адрес, модуль.содержимое[ресурс]);
  87. мир.загрузчикGLTF.load(
  88. адрес,
  89. function(gltf) {
  90. мир.модельФишки = gltf.scene;
  91. мир.уведомить("загрузили модель фишки");
  92. },
  93. null,
  94. function(error) {
  95. console.error("ОШИБКА | ERROR", error);
  96. }
  97. );
  98. };
  99. // // // //
  100. СоздатьЗагрузчикGLTF = мир =>
  101. {
  102. мир.загрузчикGLTF = new THREE.GLTFLoader();
  103. };