Дополнения к МУРОМУ | MUROM additions
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

190 lines
4.5KB

  1. // Уведомитель.
  2. var Уведомитель = Reporter;
  3. Reporter.prototype.уведомить = function()
  4. {
  5. this.report();
  6. }
  7. Reporter.prototype.подписать = function(функция)
  8. {
  9. this.subscribe(функция);
  10. }
  11. // Подписать сразу несколько функций за один вызов.
  12. Reporter.prototype.подписатьМного = function(funcs)
  13. {
  14. this.subscribeMany(funcs);
  15. }
  16. var муром = {};
  17. // Камера.
  18. муром.камера = {};
  19. Object.defineProperty(муром.камера, "цветОчистки", {
  20. get: function()
  21. {
  22. return murom.camera.clearColor;
  23. },
  24. set: function(values)
  25. {
  26. murom.camera.clearColor = values;
  27. }
  28. });
  29. Object.defineProperty(муром.камера, "позиция", {
  30. get: function()
  31. {
  32. return murom.camera.position;
  33. },
  34. set: function(values)
  35. {
  36. murom.camera.position = values;
  37. }
  38. });
  39. Object.defineProperty(муром.камера, "вращение", {
  40. get: function()
  41. {
  42. return murom.camera.rotation;
  43. },
  44. set: function(values)
  45. {
  46. murom.camera.rotation = values;
  47. }
  48. });
  49. муром.камера.узелВПозиции = function(позиция, маска)
  50. {
  51. return murom.camera.nodeAtPosition(позиция, маска);
  52. }
  53. // Мышь.
  54. муром.мышь = {};
  55. Object.defineProperty(муром.мышь, "нажатыеКнопки", {
  56. get: function()
  57. {
  58. return murom.mouse.pressedButtons;
  59. }
  60. });
  61. Object.defineProperty(муром.мышь, "позиция", {
  62. get: function()
  63. {
  64. return murom.mouse.position;
  65. }
  66. });
  67. муром.мышь.позицияИзменилась = new Уведомитель();
  68. murom.mouse.positionChanged.subscribe(function(){
  69. муром.мышь.позицияИзменилась.уведомить();
  70. });
  71. муром.мышь.нажатыеКнопкиИзменились = new Уведомитель();
  72. murom.mouse.pressedButtonsChanged.subscribe(function(){
  73. муром.мышь.нажатыеКнопкиИзменились.уведомить();
  74. });
  75. // Узел.
  76. Object.defineProperty(Node.prototype, "имя", {
  77. get: function()
  78. {
  79. return this.name;
  80. }
  81. });
  82. Object.defineProperty(Node.prototype, "позиция", {
  83. get: function()
  84. {
  85. return this.position;
  86. },
  87. set: function(values)
  88. {
  89. this.position = values;
  90. }
  91. });
  92. Object.defineProperty(Node.prototype, "вращение", {
  93. get: function()
  94. {
  95. return this.rotation;
  96. },
  97. set: function(values)
  98. {
  99. this.rotation = values;
  100. }
  101. });
  102. Node.prototype.добавитьДитя = function(дитя)
  103. {
  104. this.addChild(дитя);
  105. }
  106. Node.prototype.задатьМаску = function(маска)
  107. {
  108. this.setMask(маска);
  109. }
  110. Node.prototype.задатьМатериал = function(материал)
  111. {
  112. this.setMaterial(материал);
  113. }
  114. // Узлы.
  115. муром.узлы = {};
  116. муром.узлы.узел = function(имя)
  117. {
  118. return murom.nodes.node(имя);
  119. }
  120. муром.узлы.создатьСферу = function(имя, радиус)
  121. {
  122. return murom.nodes.createSphere(имя, радиус);
  123. }
  124. муром.узлы.создатьУзел = function(имя, модель)
  125. {
  126. return murom.nodes.createNode(имя, модель);
  127. }
  128. // Материал.
  129. Material.prototype.задатьШейдеры = function(вершинный, фрагментный)
  130. {
  131. this.setShaders(вершинный, фрагментный);
  132. }
  133. Material.prototype.задатьЮниформ = function(имя, значение)
  134. {
  135. this.setUniform(имя, значение)
  136. }
  137. Material.prototype.задатьТекстуру = function(имяЮниформа, текстура)
  138. {
  139. this.setTexture(имяЮниформа, текстура)
  140. }
  141. // Материалы.
  142. муром.материалы = {};
  143. муром.материалы.создатьМатериал = function(имя)
  144. {
  145. return murom.materials.createMaterial(имя);
  146. }
  147. // Ресурс.
  148. Object.defineProperty(Resource.prototype, "имя", {
  149. get: function()
  150. {
  151. return this.name;
  152. }
  153. });
  154. Object.defineProperty(Resource.prototype, "содержимое", {
  155. get: function()
  156. {
  157. return this.contents;
  158. }
  159. });
  160. // Ресурсы.
  161. муром.ресурсы = {};
  162. муром.ресурсы.получить = function(ресурсы, отклик)
  163. {
  164. murom.resources.get(ресурсы, отклик);
  165. }
  166. муром.ресурсы.ресурс = function(имя)
  167. {
  168. return murom.resources.resource(имя);
  169. }