babylon.actionManager.js 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. var BABYLON;
  2. (function (BABYLON) {
  3. var ActionEvent = (function () {
  4. function ActionEvent(source, pointerX, pointerY, meshUnderPointer, sourceEvent) {
  5. this.source = source;
  6. this.pointerX = pointerX;
  7. this.pointerY = pointerY;
  8. this.meshUnderPointer = meshUnderPointer;
  9. this.sourceEvent = sourceEvent;
  10. }
  11. ActionEvent.CreateNew = function (source, evt) {
  12. var scene = source.getScene();
  13. return new ActionEvent(source, scene.pointerX, scene.pointerY, scene.meshUnderPointer, evt);
  14. };
  15. ActionEvent.CreateNewFromScene = function (scene, evt) {
  16. return new ActionEvent(null, scene.pointerX, scene.pointerY, scene.meshUnderPointer, evt);
  17. };
  18. return ActionEvent;
  19. })();
  20. BABYLON.ActionEvent = ActionEvent;
  21. var ActionManager = (function () {
  22. function ActionManager(scene) {
  23. // Members
  24. this.actions = new Array();
  25. this._scene = scene;
  26. scene._actionManagers.push(this);
  27. }
  28. Object.defineProperty(ActionManager, "NothingTrigger", {
  29. get: function () {
  30. return ActionManager._NothingTrigger;
  31. },
  32. enumerable: true,
  33. configurable: true
  34. });
  35. Object.defineProperty(ActionManager, "OnPickTrigger", {
  36. get: function () {
  37. return ActionManager._OnPickTrigger;
  38. },
  39. enumerable: true,
  40. configurable: true
  41. });
  42. Object.defineProperty(ActionManager, "OnLeftPickTrigger", {
  43. get: function () {
  44. return ActionManager._OnLeftPickTrigger;
  45. },
  46. enumerable: true,
  47. configurable: true
  48. });
  49. Object.defineProperty(ActionManager, "OnRightPickTrigger", {
  50. get: function () {
  51. return ActionManager._OnRightPickTrigger;
  52. },
  53. enumerable: true,
  54. configurable: true
  55. });
  56. Object.defineProperty(ActionManager, "OnCenterPickTrigger", {
  57. get: function () {
  58. return ActionManager._OnCenterPickTrigger;
  59. },
  60. enumerable: true,
  61. configurable: true
  62. });
  63. Object.defineProperty(ActionManager, "OnPointerOverTrigger", {
  64. get: function () {
  65. return ActionManager._OnPointerOverTrigger;
  66. },
  67. enumerable: true,
  68. configurable: true
  69. });
  70. Object.defineProperty(ActionManager, "OnPointerOutTrigger", {
  71. get: function () {
  72. return ActionManager._OnPointerOutTrigger;
  73. },
  74. enumerable: true,
  75. configurable: true
  76. });
  77. Object.defineProperty(ActionManager, "OnEveryFrameTrigger", {
  78. get: function () {
  79. return ActionManager._OnEveryFrameTrigger;
  80. },
  81. enumerable: true,
  82. configurable: true
  83. });
  84. Object.defineProperty(ActionManager, "OnIntersectionEnterTrigger", {
  85. get: function () {
  86. return ActionManager._OnIntersectionEnterTrigger;
  87. },
  88. enumerable: true,
  89. configurable: true
  90. });
  91. Object.defineProperty(ActionManager, "OnIntersectionExitTrigger", {
  92. get: function () {
  93. return ActionManager._OnIntersectionExitTrigger;
  94. },
  95. enumerable: true,
  96. configurable: true
  97. });
  98. Object.defineProperty(ActionManager, "OnKeyDownTrigger", {
  99. get: function () {
  100. return ActionManager._OnKeyDownTrigger;
  101. },
  102. enumerable: true,
  103. configurable: true
  104. });
  105. Object.defineProperty(ActionManager, "OnKeyUpTrigger", {
  106. get: function () {
  107. return ActionManager._OnKeyUpTrigger;
  108. },
  109. enumerable: true,
  110. configurable: true
  111. });
  112. // Methods
  113. ActionManager.prototype.dispose = function () {
  114. var index = this._scene._actionManagers.indexOf(this);
  115. if (index > -1) {
  116. this._scene._actionManagers.splice(index, 1);
  117. }
  118. };
  119. ActionManager.prototype.getScene = function () {
  120. return this._scene;
  121. };
  122. ActionManager.prototype.hasSpecificTriggers = function (triggers) {
  123. for (var index = 0; index < this.actions.length; index++) {
  124. var action = this.actions[index];
  125. if (triggers.indexOf(action.trigger) > -1) {
  126. return true;
  127. }
  128. }
  129. return false;
  130. };
  131. Object.defineProperty(ActionManager.prototype, "hasPointerTriggers", {
  132. get: function () {
  133. for (var index = 0; index < this.actions.length; index++) {
  134. var action = this.actions[index];
  135. if (action.trigger >= ActionManager._OnPickTrigger && action.trigger <= ActionManager._OnPointerOutTrigger) {
  136. return true;
  137. }
  138. }
  139. return false;
  140. },
  141. enumerable: true,
  142. configurable: true
  143. });
  144. Object.defineProperty(ActionManager.prototype, "hasPickTriggers", {
  145. get: function () {
  146. for (var index = 0; index < this.actions.length; index++) {
  147. var action = this.actions[index];
  148. if (action.trigger >= ActionManager._OnPickTrigger && action.trigger <= ActionManager._OnCenterPickTrigger) {
  149. return true;
  150. }
  151. }
  152. return false;
  153. },
  154. enumerable: true,
  155. configurable: true
  156. });
  157. ActionManager.prototype.registerAction = function (action) {
  158. if (action.trigger === ActionManager.OnEveryFrameTrigger) {
  159. if (this.getScene().actionManager !== this) {
  160. BABYLON.Tools.Warn("OnEveryFrameTrigger can only be used with scene.actionManager");
  161. return null;
  162. }
  163. }
  164. this.actions.push(action);
  165. action._actionManager = this;
  166. action._prepare();
  167. return action;
  168. };
  169. ActionManager.prototype.processTrigger = function (trigger, evt) {
  170. for (var index = 0; index < this.actions.length; index++) {
  171. var action = this.actions[index];
  172. if (action.trigger === trigger) {
  173. if (trigger === ActionManager.OnKeyUpTrigger || trigger === ActionManager.OnKeyDownTrigger) {
  174. var parameter = action.getTriggerParameter();
  175. if (parameter) {
  176. if (evt.sourceEvent.key !== parameter) {
  177. continue;
  178. }
  179. }
  180. }
  181. action._executeCurrent(evt);
  182. }
  183. }
  184. };
  185. ActionManager.prototype._getEffectiveTarget = function (target, propertyPath) {
  186. var properties = propertyPath.split(".");
  187. for (var index = 0; index < properties.length - 1; index++) {
  188. target = target[properties[index]];
  189. }
  190. return target;
  191. };
  192. ActionManager.prototype._getProperty = function (propertyPath) {
  193. var properties = propertyPath.split(".");
  194. return properties[properties.length - 1];
  195. };
  196. // Statics
  197. ActionManager._NothingTrigger = 0;
  198. ActionManager._OnPickTrigger = 1;
  199. ActionManager._OnLeftPickTrigger = 2;
  200. ActionManager._OnRightPickTrigger = 3;
  201. ActionManager._OnCenterPickTrigger = 4;
  202. ActionManager._OnPointerOverTrigger = 5;
  203. ActionManager._OnPointerOutTrigger = 6;
  204. ActionManager._OnEveryFrameTrigger = 7;
  205. ActionManager._OnIntersectionEnterTrigger = 8;
  206. ActionManager._OnIntersectionExitTrigger = 9;
  207. ActionManager._OnKeyDownTrigger = 10;
  208. ActionManager._OnKeyUpTrigger = 11;
  209. return ActionManager;
  210. })();
  211. BABYLON.ActionManager = ActionManager;
  212. })(BABYLON || (BABYLON = {}));
  213. //# sourceMappingURL=babylon.actionManager.js.map