babylon.freecamera.input.mouse.js 4.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
  2. var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
  3. if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
  4. else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  5. return c > 3 && r && Object.defineProperty(target, key, r), r;
  6. };
  7. var BABYLON;
  8. (function (BABYLON) {
  9. var FreeCameraMouseInput = (function () {
  10. function FreeCameraMouseInput() {
  11. this.angularSensibility = 2000.0;
  12. }
  13. FreeCameraMouseInput.prototype.attachControl = function (element, noPreventDefault) {
  14. var _this = this;
  15. var previousPosition;
  16. if (this._onMouseDown === undefined) {
  17. var camera = this.camera;
  18. var engine = this.camera.getEngine();
  19. this._onMouseDown = function (evt) {
  20. previousPosition = {
  21. x: evt.clientX,
  22. y: evt.clientY
  23. };
  24. if (!noPreventDefault) {
  25. evt.preventDefault();
  26. }
  27. };
  28. this._onMouseUp = function (evt) {
  29. previousPosition = null;
  30. if (!noPreventDefault) {
  31. evt.preventDefault();
  32. }
  33. };
  34. this._onMouseOut = function (evt) {
  35. previousPosition = null;
  36. if (!noPreventDefault) {
  37. evt.preventDefault();
  38. }
  39. };
  40. this._onMouseMove = function (evt) {
  41. if (!previousPosition && !engine.isPointerLock) {
  42. return;
  43. }
  44. var offsetX;
  45. var offsetY;
  46. if (!engine.isPointerLock) {
  47. offsetX = evt.clientX - previousPosition.x;
  48. offsetY = evt.clientY - previousPosition.y;
  49. }
  50. else {
  51. offsetX = evt.movementX || evt.mozMovementX || evt.webkitMovementX || evt.msMovementX || 0;
  52. offsetY = evt.movementY || evt.mozMovementY || evt.webkitMovementY || evt.msMovementY || 0;
  53. }
  54. camera.cameraRotation.y += offsetX / _this.angularSensibility;
  55. camera.cameraRotation.x += offsetY / _this.angularSensibility;
  56. previousPosition = {
  57. x: evt.clientX,
  58. y: evt.clientY
  59. };
  60. if (!noPreventDefault) {
  61. evt.preventDefault();
  62. }
  63. };
  64. }
  65. element.addEventListener("mousedown", this._onMouseDown, false);
  66. element.addEventListener("mouseup", this._onMouseUp, false);
  67. element.addEventListener("mouseout", this._onMouseOut, false);
  68. element.addEventListener("mousemove", this._onMouseMove, false);
  69. };
  70. FreeCameraMouseInput.prototype.detachControl = function (element) {
  71. if (this._onMouseDown && element) {
  72. element.removeEventListener("mousedown", this._onMouseDown);
  73. element.removeEventListener("mouseup", this._onMouseUp);
  74. element.removeEventListener("mouseout", this._onMouseOut);
  75. element.removeEventListener("mousemove", this._onMouseMove);
  76. }
  77. };
  78. FreeCameraMouseInput.prototype.getTypeName = function () {
  79. return "FreeCameraMouseInput";
  80. };
  81. FreeCameraMouseInput.prototype.getSimpleName = function () {
  82. return "mouse";
  83. };
  84. __decorate([
  85. BABYLON.serialize()
  86. ], FreeCameraMouseInput.prototype, "angularSensibility", void 0);
  87. return FreeCameraMouseInput;
  88. })();
  89. BABYLON.FreeCameraMouseInput = FreeCameraMouseInput;
  90. BABYLON.CameraInputTypes["FreeCameraMouseInput"] = FreeCameraMouseInput;
  91. })(BABYLON || (BABYLON = {}));