СцЕНа МАджонга
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
3.2KB

  1. СкрытьУбранныеФишкиВСцене = мир =>
  2. {
  3. for (var номер in мир.убранныеФишкиМаджонга)
  4. {
  5. var н = мир.убранныеФишкиМаджонга[номер];
  6. // Перемещаем фишку на другой слой для исключения из отрисовки и выбора.
  7. var ф = мир.фишкиСцены[н];
  8. ф.layers.set(1);
  9. }
  10. }
  11. // // // //
  12. ВыделитьВыбранныеФишкиВСцене = мир =>
  13. {
  14. for (var номер in мир.выбранныеФишкиМаджонга)
  15. {
  16. var н = мир.выбранныеФишкиМаджонга[номер];
  17. var ф = мир.фишкиСцены[н];
  18. var г = мир.фишкиМаджонга[н]["🚩"];
  19. var м = мир.выбранныеМатериалыФишекСцены[г];
  20. ф.material = м;
  21. }
  22. };
  23. // // // //
  24. ЗадатьМатериалыФишкамСцены = мир =>
  25. {
  26. for (var н in мир.фишкиСцены)
  27. {
  28. var ф = мир.фишкиСцены[н];
  29. var г = мир.фишкиМаджонга[н]["🚩"];
  30. var м = мир.материалыФишекСцены[г];
  31. ф.material = м;
  32. }
  33. };
  34. // // // //
  35. УбратьСтарыеФишкиСцены = мир =>
  36. {
  37. if (мир.сценаМаджонга.children.length)
  38. {
  39. мир.сценаМаджонга.remove(мир.кореньСценыМаджонга);
  40. }
  41. мир.кореньСценыМаджонга = new THREE.Group();
  42. мир.сценаМаджонга.add(мир.кореньСценыМаджонга);
  43. мир.фишкиСцены = [];
  44. };
  45. // // // //
  46. СоздатьНовыеФишкиСцены = мир =>
  47. {
  48. var фишка = мир.модельФишкиСцены;
  49. var границы = фишка.geometry.boundingBox;
  50. var размеры = [
  51. (границы.max.x - границы.min.x) / 2,
  52. (границы.max.z - границы.min.z) / 2,
  53. //границы.max.y - границы.min.y,
  54. ];
  55. var отступ = мир.отступМеждуФишкамиСцены;
  56. for (var номер in мир.фишкиМаджонга)
  57. {
  58. // Узел сцены.
  59. var фм = мир.фишкиМаджонга[номер];
  60. var ф = фишка.clone();
  61. ф.userData = номер;
  62. мир.фишкиСцены.push(ф);
  63. мир.кореньСценыМаджонга.add(ф);
  64. // Расположение.
  65. var п = фм["📍"];
  66. var слой = п[0];
  67. var ряд = п[1];
  68. var столбец = п[2];
  69. ф.position.x = столбец * (размеры[0] + отступ);
  70. ф.position.z = ряд * (размеры[1] + отступ);
  71. ф.position.y = слой;
  72. }
  73. };
  74. // // // //
  75. СоздатьФишкиВСцене = мир =>
  76. {
  77. мир.уведомить("надо создать фишки в сцене");
  78. };
  79. // // // //
  80. ПодготовитьСценуМаджонга = мир =>
  81. {
  82. мир.сценаМаджонга = new THREE.Group();
  83. мир.отступМеждуФишкамиСцены = 0.02;
  84. };