StubCameraPointersInput.ts 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. import { Nullable } from "../../types";
  2. import { Camera } from "../../Cameras/camera";
  3. import { CameraInputTypes } from "../../Cameras/cameraInputsManager";
  4. import { PointerTouch } from "../../Events/pointerEvents";
  5. import { BaseCameraPointersInput } from "../../Cameras/Inputs/BaseCameraPointersInput";
  6. /**
  7. * Mock class to be used by UnitTests.
  8. */
  9. export class StubCameraPointersInput extends BaseCameraPointersInput {
  10. /**
  11. * Defines the camera the input is attached to.
  12. */
  13. public camera: Camera;
  14. /**
  15. * Count how many times callback methods are called.
  16. */
  17. public countOnDoubleTap: number;
  18. public countOnTouch: number;
  19. public countOnMultiTouch: number;
  20. public countOnContextMenu: number;
  21. public countOnButtonDown: number;
  22. public countOnButtonUp: number;
  23. public countOnLostFocus: number;
  24. /**
  25. * Store arguments of last callback methods.
  26. */
  27. public lastOnDoubleTap: any;
  28. public lastOnTouch: any;
  29. public lastOnMultiTouch: any;
  30. public lastOnContextMenu: any;
  31. public lastOnButtonDown: any;
  32. public lastOnButtonUp: any;
  33. /**
  34. * Store arguments when callback methods are called.
  35. */
  36. public valuesOnDoubleTap: any[];
  37. public valuesOnTouch: any[];
  38. public valuesOnMultiTouch: any[];
  39. public valuesOnContextMenu: any[];
  40. public valuesOnButtonDown: any[];
  41. public valuesOnButtonUp: any[];
  42. public reset(): void {
  43. this.countOnDoubleTap = 0;
  44. this.countOnTouch = 0;
  45. this.countOnMultiTouch = 0;
  46. this.countOnContextMenu = 0;
  47. this.countOnButtonDown = 0;
  48. this.countOnButtonUp = 0;
  49. this.countOnLostFocus = 0;
  50. this.valuesOnDoubleTap = [];
  51. this.valuesOnTouch = [];
  52. this.valuesOnMultiTouch = [];
  53. this.valuesOnContextMenu = [];
  54. this.valuesOnButtonDown = [];
  55. this.valuesOnButtonUp = [];
  56. this.lastOnDoubleTap = undefined;
  57. this.lastOnTouch = undefined;
  58. this.lastOnMultiTouch = undefined;
  59. this.lastOnContextMenu = undefined;
  60. this.lastOnButtonDown = undefined;
  61. this.lastOnButtonUp = undefined;
  62. }
  63. constructor() {
  64. super();
  65. this.reset();
  66. }
  67. /**
  68. * The class name of the current input.
  69. */
  70. protected _className = "StubCameraPointersInput";
  71. /**
  72. * Called on pointer POINTERDOUBLETAP event.
  73. * Override this method to provide functionality on POINTERDOUBLETAP event.
  74. */
  75. protected onDoubleTap(type: string) {
  76. this.countOnDoubleTap++;
  77. this.valuesOnDoubleTap.push(type);
  78. this.lastOnDoubleTap = type;
  79. }
  80. /**
  81. * Called on pointer POINTERMOVE event if only a single touch is active.
  82. * Override this method to provide functionality.
  83. */
  84. protected onTouch(
  85. point: Nullable<PointerTouch>,
  86. offsetX: number,
  87. offsetY: number):
  88. void {
  89. this.countOnTouch++;
  90. this.lastOnTouch = {point, offsetX, offsetY};
  91. this.valuesOnTouch.push(this.lastOnTouch);
  92. }
  93. /**
  94. * Called on pointer POINTERMOVE event if multiple touches are active.
  95. * Override this method to provide functionality.
  96. */
  97. protected onMultiTouch(
  98. pointA: Nullable<PointerTouch>,
  99. pointB: Nullable<PointerTouch>,
  100. previousPinchSquaredDistance: number,
  101. pinchSquaredDistance: number,
  102. previousMultiTouchPanPosition: Nullable<PointerTouch>,
  103. multiTouchPanPosition: Nullable<PointerTouch>):
  104. void {
  105. this.countOnMultiTouch++;
  106. this.lastOnMultiTouch = {
  107. pointA,
  108. pointB,
  109. previousPinchSquaredDistance,
  110. pinchSquaredDistance,
  111. previousMultiTouchPanPosition,
  112. multiTouchPanPosition,
  113. };
  114. this.valuesOnMultiTouch.push(this.lastOnMultiTouch);
  115. }
  116. /**
  117. * Called on JS contextmenu event.
  118. * Override this method to provide functionality.
  119. */
  120. protected onContextMenu(evt: PointerEvent): void {
  121. evt.preventDefault();
  122. this.countOnContextMenu++;
  123. this.lastOnContextMenu = evt;
  124. this.valuesOnContextMenu.push(evt);
  125. }
  126. /**
  127. * Called each time a new POINTERDOWN event occurs. Ie, for each button
  128. * press.
  129. * Override this method to provide functionality.
  130. */
  131. protected onButtonDown(evt: PointerEvent, buttonCount: number): void {
  132. this.countOnButtonDown++;
  133. this.lastOnButtonDown = {evt, buttonCount};
  134. this.valuesOnButtonDown.push(this.lastOnButtonDown);
  135. }
  136. /**
  137. * Called each time a new POINTERUP event occurs. Ie, for each button
  138. * release.
  139. * Override this method to provide functionality.
  140. */
  141. protected onButtonUp(evt: PointerEvent, buttonCount: number): void {
  142. this.countOnButtonUp++;
  143. this.lastOnButtonUp = {evt, buttonCount};
  144. this.valuesOnButtonUp.push(this.lastOnButtonUp);
  145. }
  146. /**
  147. * Called when window becomes inactive.
  148. * Override this method to provide functionality.
  149. */
  150. protected onLostFocus(): void {
  151. this.countOnLostFocus++;
  152. }
  153. }
  154. (<any>CameraInputTypes)["StubCameraPointersInput"] = StubCameraPointersInput;