@vived/app 5.1.0 → 5.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/dist/cjs/Callouts/Controller/MouseAddCalloutMC.js.map +1 -1
  2. package/dist/cjs/Callouts/Controller/TouchAddCalloutTC.js.map +1 -1
  3. package/dist/cjs/Hideable/Controllers/HideMC.js.map +1 -1
  4. package/dist/cjs/Hideable/Controllers/HideTC.js.map +1 -1
  5. package/dist/cjs/HoverLabel/Controllers/HoverLabelMouse.js.map +1 -1
  6. package/dist/cjs/HoverLabel/Controllers/HoverLabelTouch.js.map +1 -1
  7. package/dist/cjs/HoverLabel/Controllers/StylusHoverLabel.js.map +1 -1
  8. package/dist/cjs/LabelDrop/Controller/MouseLabelDropAuthor.js.map +1 -1
  9. package/dist/cjs/LabelDrop/Controller/StylusLabelDrop.js.map +1 -1
  10. package/dist/cjs/LabelDrop/Controller/TouchLabelDropAuthor.js.map +1 -1
  11. package/dist/cjs/Landmarks/Controller/MouseLandmark.js.map +1 -1
  12. package/dist/cjs/Landmarks/Controller/TouchLandmark.js.map +1 -1
  13. package/dist/cjs/MouseInput/Entities/MouseInput.js.map +1 -1
  14. package/dist/cjs/MouseInput/Entities/MouseInput.test.js.map +1 -1
  15. package/dist/cjs/MouseInput/Mocks/index.js +18 -0
  16. package/dist/cjs/MouseInput/Mocks/index.js.map +1 -0
  17. package/dist/cjs/MouseInput/index.js +1 -0
  18. package/dist/cjs/MouseInput/index.js.map +1 -1
  19. package/dist/cjs/ObjectPick/Controllers/MouseObjectPickMC.js.map +1 -1
  20. package/dist/cjs/ObjectPick/Controllers/StylusObjectPickSC.js.map +1 -1
  21. package/dist/cjs/ObjectPick/Controllers/TouchObjectPickTC.js.map +1 -1
  22. package/dist/cjs/SceneRoot/Controllers/DoubleTapToFocus.js.map +1 -1
  23. package/dist/cjs/SceneRoot/Controllers/MouseClickToFocus.js.map +1 -1
  24. package/dist/cjs/SceneRoot/Controllers/MouseDoubleClickToRecenter.js.map +1 -1
  25. package/dist/cjs/SceneRoot/Controllers/MouseOrbit.js.map +1 -1
  26. package/dist/cjs/SceneRoot/Controllers/MousePan.js.map +1 -1
  27. package/dist/cjs/SceneRoot/Controllers/MouseRoll.js.map +1 -1
  28. package/dist/cjs/SceneRoot/Controllers/MouseScale.js.map +1 -1
  29. package/dist/cjs/SceneRoot/Controllers/ScaleSceneRootSC.js.map +1 -1
  30. package/dist/cjs/SceneRoot/Controllers/SceneRootMoveSC.js.map +1 -1
  31. package/dist/cjs/SceneRoot/Controllers/TouchOrbit.js.map +1 -1
  32. package/dist/cjs/SceneRoot/Controllers/TouchPan.js.map +1 -1
  33. package/dist/cjs/SceneRoot/Controllers/TouchPinch.js.map +1 -1
  34. package/dist/cjs/SceneRoot/Controllers/TouchScale.js.map +1 -1
  35. package/dist/cjs/Selection/Controller/MouseHoverOnAppObject.js.map +1 -1
  36. package/dist/cjs/Selection/Controller/MousePressOnAppObject.js.map +1 -1
  37. package/dist/cjs/Selection/Controller/MouseSelectAppObject.js.map +1 -1
  38. package/dist/cjs/Selection/Controller/StylusHoverOnAppObjectSC.js.map +1 -1
  39. package/dist/cjs/Selection/Controller/StylusPressOnAppObjectSC.js.map +1 -1
  40. package/dist/cjs/Selection/Controller/StylusSelectAppObjectSC.js.map +1 -1
  41. package/dist/cjs/Selection/Controller/TapToSelectAppObject.js.map +1 -1
  42. package/dist/cjs/Selection/Controller/TouchPressOnAppObject.js.map +1 -1
  43. package/dist/cjs/Stick/Controllers/DoubleClickToStickMC.js.map +1 -1
  44. package/dist/cjs/Stick/Controllers/DoubleTapToStickTC.js.map +1 -1
  45. package/dist/cjs/Stylus/Entity/StylusEntity.js.map +1 -1
  46. package/dist/cjs/Stylus/Entity/StylusEntity.test.js.map +1 -1
  47. package/dist/cjs/TouchController/Entities/TouchInput.js.map +1 -1
  48. package/dist/cjs/TouchController/Entities/TouchInput.test.js.map +1 -1
  49. package/dist/cjs/Transform3D/Controllers/Mouse/DragScaleTransformMC.js.map +1 -1
  50. package/dist/cjs/Transform3D/Controllers/Mouse/MousePanTransformMC.js.map +1 -1
  51. package/dist/cjs/Transform3D/Controllers/Mouse/PanTransformMC.js.map +1 -1
  52. package/dist/cjs/Transform3D/Controllers/Mouse/RollScaleTransformMC.js.map +1 -1
  53. package/dist/cjs/Transform3D/Controllers/Stylus/MoveTransformSC.js.map +1 -1
  54. package/dist/cjs/Transform3D/Controllers/Stylus/PanScaleTransformSC.js.map +1 -1
  55. package/dist/cjs/Transform3D/Controllers/Stylus/PanTransformSC.js.map +1 -1
  56. package/dist/cjs/Transform3D/Controllers/Stylus/ScaleTransformSC.js.map +1 -1
  57. package/dist/cjs/Transform3D/Controllers/Touch/DragScaleTransformTC.js.map +1 -1
  58. package/dist/cjs/Transform3D/Controllers/Touch/PanTransformTC.js.map +1 -1
  59. package/dist/cjs/Transform3D/Controllers/Touch/PinchTransformTC.js.map +1 -1
  60. package/dist/cjs/Transform3D/Controllers/Touch/TouchPanTransformTC.js.map +1 -1
  61. package/dist/esm/Callouts/Controller/MouseAddCalloutMC.js.map +1 -1
  62. package/dist/esm/Callouts/Controller/TouchAddCalloutTC.js.map +1 -1
  63. package/dist/esm/Hideable/Controllers/HideMC.js.map +1 -1
  64. package/dist/esm/Hideable/Controllers/HideTC.js.map +1 -1
  65. package/dist/esm/HoverLabel/Controllers/HoverLabelMouse.js.map +1 -1
  66. package/dist/esm/HoverLabel/Controllers/HoverLabelTouch.js.map +1 -1
  67. package/dist/esm/HoverLabel/Controllers/StylusHoverLabel.js.map +1 -1
  68. package/dist/esm/LabelDrop/Controller/MouseLabelDropAuthor.js.map +1 -1
  69. package/dist/esm/LabelDrop/Controller/StylusLabelDrop.js.map +1 -1
  70. package/dist/esm/LabelDrop/Controller/TouchLabelDropAuthor.js.map +1 -1
  71. package/dist/esm/Landmarks/Controller/MouseLandmark.js.map +1 -1
  72. package/dist/esm/Landmarks/Controller/TouchLandmark.js.map +1 -1
  73. package/dist/esm/MouseInput/Entities/MouseInput.js.map +1 -1
  74. package/dist/esm/MouseInput/Entities/MouseInput.test.js.map +1 -1
  75. package/dist/esm/MouseInput/Mocks/index.js +2 -0
  76. package/dist/esm/MouseInput/Mocks/index.js.map +1 -0
  77. package/dist/esm/MouseInput/index.js +1 -0
  78. package/dist/esm/MouseInput/index.js.map +1 -1
  79. package/dist/esm/ObjectPick/Controllers/MouseObjectPickMC.js.map +1 -1
  80. package/dist/esm/ObjectPick/Controllers/StylusObjectPickSC.js.map +1 -1
  81. package/dist/esm/ObjectPick/Controllers/TouchObjectPickTC.js.map +1 -1
  82. package/dist/esm/SceneRoot/Controllers/DoubleTapToFocus.js.map +1 -1
  83. package/dist/esm/SceneRoot/Controllers/MouseClickToFocus.js.map +1 -1
  84. package/dist/esm/SceneRoot/Controllers/MouseDoubleClickToRecenter.js.map +1 -1
  85. package/dist/esm/SceneRoot/Controllers/MouseOrbit.js.map +1 -1
  86. package/dist/esm/SceneRoot/Controllers/MousePan.js.map +1 -1
  87. package/dist/esm/SceneRoot/Controllers/MouseRoll.js.map +1 -1
  88. package/dist/esm/SceneRoot/Controllers/MouseScale.js.map +1 -1
  89. package/dist/esm/SceneRoot/Controllers/ScaleSceneRootSC.js.map +1 -1
  90. package/dist/esm/SceneRoot/Controllers/SceneRootMoveSC.js.map +1 -1
  91. package/dist/esm/SceneRoot/Controllers/TouchOrbit.js.map +1 -1
  92. package/dist/esm/SceneRoot/Controllers/TouchPan.js.map +1 -1
  93. package/dist/esm/SceneRoot/Controllers/TouchPinch.js.map +1 -1
  94. package/dist/esm/SceneRoot/Controllers/TouchScale.js.map +1 -1
  95. package/dist/esm/Selection/Controller/MouseHoverOnAppObject.js.map +1 -1
  96. package/dist/esm/Selection/Controller/MousePressOnAppObject.js.map +1 -1
  97. package/dist/esm/Selection/Controller/MouseSelectAppObject.js.map +1 -1
  98. package/dist/esm/Selection/Controller/StylusHoverOnAppObjectSC.js.map +1 -1
  99. package/dist/esm/Selection/Controller/StylusPressOnAppObjectSC.js.map +1 -1
  100. package/dist/esm/Selection/Controller/StylusSelectAppObjectSC.js.map +1 -1
  101. package/dist/esm/Selection/Controller/TapToSelectAppObject.js.map +1 -1
  102. package/dist/esm/Selection/Controller/TouchPressOnAppObject.js.map +1 -1
  103. package/dist/esm/Stick/Controllers/DoubleClickToStickMC.js.map +1 -1
  104. package/dist/esm/Stick/Controllers/DoubleTapToStickTC.js.map +1 -1
  105. package/dist/esm/Stylus/Entity/StylusEntity.js.map +1 -1
  106. package/dist/esm/Stylus/Entity/StylusEntity.test.js.map +1 -1
  107. package/dist/esm/TouchController/Entities/TouchInput.js.map +1 -1
  108. package/dist/esm/TouchController/Entities/TouchInput.test.js.map +1 -1
  109. package/dist/esm/Transform3D/Controllers/Mouse/DragScaleTransformMC.js.map +1 -1
  110. package/dist/esm/Transform3D/Controllers/Mouse/MousePanTransformMC.js.map +1 -1
  111. package/dist/esm/Transform3D/Controllers/Mouse/PanTransformMC.js.map +1 -1
  112. package/dist/esm/Transform3D/Controllers/Mouse/RollScaleTransformMC.js.map +1 -1
  113. package/dist/esm/Transform3D/Controllers/Stylus/MoveTransformSC.js.map +1 -1
  114. package/dist/esm/Transform3D/Controllers/Stylus/PanScaleTransformSC.js.map +1 -1
  115. package/dist/esm/Transform3D/Controllers/Stylus/PanTransformSC.js.map +1 -1
  116. package/dist/esm/Transform3D/Controllers/Stylus/ScaleTransformSC.js.map +1 -1
  117. package/dist/esm/Transform3D/Controllers/Touch/DragScaleTransformTC.js.map +1 -1
  118. package/dist/esm/Transform3D/Controllers/Touch/PanTransformTC.js.map +1 -1
  119. package/dist/esm/Transform3D/Controllers/Touch/PinchTransformTC.js.map +1 -1
  120. package/dist/esm/Transform3D/Controllers/Touch/TouchPanTransformTC.js.map +1 -1
  121. package/dist/types/Callouts/Controller/MouseAddCalloutMC.d.ts +2 -2
  122. package/dist/types/Callouts/Controller/MouseAddCalloutMC.d.ts.map +1 -1
  123. package/dist/types/Callouts/Controller/TouchAddCalloutTC.d.ts +2 -2
  124. package/dist/types/Callouts/Controller/TouchAddCalloutTC.d.ts.map +1 -1
  125. package/dist/types/Hideable/Controllers/HideMC.d.ts +2 -2
  126. package/dist/types/Hideable/Controllers/HideMC.d.ts.map +1 -1
  127. package/dist/types/Hideable/Controllers/HideTC.d.ts +2 -2
  128. package/dist/types/Hideable/Controllers/HideTC.d.ts.map +1 -1
  129. package/dist/types/HoverLabel/Controllers/HoverLabelMouse.d.ts +2 -2
  130. package/dist/types/HoverLabel/Controllers/HoverLabelMouse.d.ts.map +1 -1
  131. package/dist/types/HoverLabel/Controllers/HoverLabelTouch.d.ts +2 -2
  132. package/dist/types/HoverLabel/Controllers/HoverLabelTouch.d.ts.map +1 -1
  133. package/dist/types/HoverLabel/Controllers/StylusHoverLabel.d.ts +2 -2
  134. package/dist/types/HoverLabel/Controllers/StylusHoverLabel.d.ts.map +1 -1
  135. package/dist/types/LabelDrop/Controller/MouseLabelDropAuthor.d.ts +2 -2
  136. package/dist/types/LabelDrop/Controller/MouseLabelDropAuthor.d.ts.map +1 -1
  137. package/dist/types/LabelDrop/Controller/StylusLabelDrop.d.ts +2 -2
  138. package/dist/types/LabelDrop/Controller/StylusLabelDrop.d.ts.map +1 -1
  139. package/dist/types/LabelDrop/Controller/TouchLabelDropAuthor.d.ts +2 -2
  140. package/dist/types/LabelDrop/Controller/TouchLabelDropAuthor.d.ts.map +1 -1
  141. package/dist/types/Landmarks/Controller/MouseLandmark.d.ts +2 -2
  142. package/dist/types/Landmarks/Controller/MouseLandmark.d.ts.map +1 -1
  143. package/dist/types/Landmarks/Controller/TouchLandmark.d.ts +2 -2
  144. package/dist/types/Landmarks/Controller/TouchLandmark.d.ts.map +1 -1
  145. package/dist/types/MouseInput/Entities/MouseInput.d.ts +7 -3
  146. package/dist/types/MouseInput/Entities/MouseInput.d.ts.map +1 -1
  147. package/dist/types/MouseInput/Mocks/index.d.ts +2 -0
  148. package/dist/types/MouseInput/Mocks/index.d.ts.map +1 -0
  149. package/dist/types/MouseInput/index.d.ts +1 -0
  150. package/dist/types/MouseInput/index.d.ts.map +1 -1
  151. package/dist/types/ObjectPick/Controllers/MouseObjectPickMC.d.ts +2 -2
  152. package/dist/types/ObjectPick/Controllers/MouseObjectPickMC.d.ts.map +1 -1
  153. package/dist/types/ObjectPick/Controllers/StylusObjectPickSC.d.ts +2 -2
  154. package/dist/types/ObjectPick/Controllers/StylusObjectPickSC.d.ts.map +1 -1
  155. package/dist/types/ObjectPick/Controllers/TouchObjectPickTC.d.ts +2 -2
  156. package/dist/types/ObjectPick/Controllers/TouchObjectPickTC.d.ts.map +1 -1
  157. package/dist/types/SceneRoot/Controllers/DoubleTapToFocus.d.ts +2 -2
  158. package/dist/types/SceneRoot/Controllers/DoubleTapToFocus.d.ts.map +1 -1
  159. package/dist/types/SceneRoot/Controllers/MouseClickToFocus.d.ts +2 -2
  160. package/dist/types/SceneRoot/Controllers/MouseClickToFocus.d.ts.map +1 -1
  161. package/dist/types/SceneRoot/Controllers/MouseDoubleClickToRecenter.d.ts +2 -2
  162. package/dist/types/SceneRoot/Controllers/MouseDoubleClickToRecenter.d.ts.map +1 -1
  163. package/dist/types/SceneRoot/Controllers/MouseOrbit.d.ts +2 -2
  164. package/dist/types/SceneRoot/Controllers/MouseOrbit.d.ts.map +1 -1
  165. package/dist/types/SceneRoot/Controllers/MousePan.d.ts +2 -2
  166. package/dist/types/SceneRoot/Controllers/MousePan.d.ts.map +1 -1
  167. package/dist/types/SceneRoot/Controllers/MouseRoll.d.ts +2 -2
  168. package/dist/types/SceneRoot/Controllers/MouseRoll.d.ts.map +1 -1
  169. package/dist/types/SceneRoot/Controllers/MouseScale.d.ts +2 -2
  170. package/dist/types/SceneRoot/Controllers/MouseScale.d.ts.map +1 -1
  171. package/dist/types/SceneRoot/Controllers/ScaleSceneRootSC.d.ts +2 -2
  172. package/dist/types/SceneRoot/Controllers/ScaleSceneRootSC.d.ts.map +1 -1
  173. package/dist/types/SceneRoot/Controllers/SceneRootMoveSC.d.ts +2 -2
  174. package/dist/types/SceneRoot/Controllers/SceneRootMoveSC.d.ts.map +1 -1
  175. package/dist/types/SceneRoot/Controllers/TouchOrbit.d.ts +2 -2
  176. package/dist/types/SceneRoot/Controllers/TouchOrbit.d.ts.map +1 -1
  177. package/dist/types/SceneRoot/Controllers/TouchPan.d.ts +2 -2
  178. package/dist/types/SceneRoot/Controllers/TouchPan.d.ts.map +1 -1
  179. package/dist/types/SceneRoot/Controllers/TouchPinch.d.ts +2 -2
  180. package/dist/types/SceneRoot/Controllers/TouchPinch.d.ts.map +1 -1
  181. package/dist/types/SceneRoot/Controllers/TouchScale.d.ts +2 -2
  182. package/dist/types/SceneRoot/Controllers/TouchScale.d.ts.map +1 -1
  183. package/dist/types/Selection/Controller/MouseHoverOnAppObject.d.ts +2 -2
  184. package/dist/types/Selection/Controller/MouseHoverOnAppObject.d.ts.map +1 -1
  185. package/dist/types/Selection/Controller/MousePressOnAppObject.d.ts +2 -2
  186. package/dist/types/Selection/Controller/MousePressOnAppObject.d.ts.map +1 -1
  187. package/dist/types/Selection/Controller/MouseSelectAppObject.d.ts +2 -2
  188. package/dist/types/Selection/Controller/MouseSelectAppObject.d.ts.map +1 -1
  189. package/dist/types/Selection/Controller/StylusHoverOnAppObjectSC.d.ts +2 -2
  190. package/dist/types/Selection/Controller/StylusHoverOnAppObjectSC.d.ts.map +1 -1
  191. package/dist/types/Selection/Controller/StylusPressOnAppObjectSC.d.ts +2 -2
  192. package/dist/types/Selection/Controller/StylusPressOnAppObjectSC.d.ts.map +1 -1
  193. package/dist/types/Selection/Controller/StylusSelectAppObjectSC.d.ts +2 -2
  194. package/dist/types/Selection/Controller/StylusSelectAppObjectSC.d.ts.map +1 -1
  195. package/dist/types/Selection/Controller/TapToSelectAppObject.d.ts +2 -2
  196. package/dist/types/Selection/Controller/TapToSelectAppObject.d.ts.map +1 -1
  197. package/dist/types/Selection/Controller/TouchPressOnAppObject.d.ts +2 -2
  198. package/dist/types/Selection/Controller/TouchPressOnAppObject.d.ts.map +1 -1
  199. package/dist/types/Stick/Controllers/DoubleClickToStickMC.d.ts +2 -2
  200. package/dist/types/Stick/Controllers/DoubleClickToStickMC.d.ts.map +1 -1
  201. package/dist/types/Stick/Controllers/DoubleTapToStickTC.d.ts +2 -2
  202. package/dist/types/Stick/Controllers/DoubleTapToStickTC.d.ts.map +1 -1
  203. package/dist/types/Stylus/Entity/StylusEntity.d.ts +6 -2
  204. package/dist/types/Stylus/Entity/StylusEntity.d.ts.map +1 -1
  205. package/dist/types/TouchController/Entities/TouchInput.d.ts +7 -3
  206. package/dist/types/TouchController/Entities/TouchInput.d.ts.map +1 -1
  207. package/dist/types/Transform3D/Controllers/Mouse/DragScaleTransformMC.d.ts +2 -2
  208. package/dist/types/Transform3D/Controllers/Mouse/DragScaleTransformMC.d.ts.map +1 -1
  209. package/dist/types/Transform3D/Controllers/Mouse/MousePanTransformMC.d.ts +2 -2
  210. package/dist/types/Transform3D/Controllers/Mouse/MousePanTransformMC.d.ts.map +1 -1
  211. package/dist/types/Transform3D/Controllers/Mouse/MousePanTransformMC.test.d.ts +1 -1
  212. package/dist/types/Transform3D/Controllers/Mouse/PanTransformMC.d.ts +2 -2
  213. package/dist/types/Transform3D/Controllers/Mouse/PanTransformMC.d.ts.map +1 -1
  214. package/dist/types/Transform3D/Controllers/Mouse/RollScaleTransformMC.d.ts +2 -2
  215. package/dist/types/Transform3D/Controllers/Mouse/RollScaleTransformMC.d.ts.map +1 -1
  216. package/dist/types/Transform3D/Controllers/Stylus/MoveTransformSC.d.ts +2 -2
  217. package/dist/types/Transform3D/Controllers/Stylus/MoveTransformSC.d.ts.map +1 -1
  218. package/dist/types/Transform3D/Controllers/Stylus/PanScaleTransformSC.d.ts +2 -2
  219. package/dist/types/Transform3D/Controllers/Stylus/PanScaleTransformSC.d.ts.map +1 -1
  220. package/dist/types/Transform3D/Controllers/Stylus/PanTransformSC.d.ts +2 -2
  221. package/dist/types/Transform3D/Controllers/Stylus/PanTransformSC.d.ts.map +1 -1
  222. package/dist/types/Transform3D/Controllers/Stylus/ScaleTransformSC.d.ts +2 -2
  223. package/dist/types/Transform3D/Controllers/Stylus/ScaleTransformSC.d.ts.map +1 -1
  224. package/dist/types/Transform3D/Controllers/Touch/DragScaleTransformTC.d.ts +2 -2
  225. package/dist/types/Transform3D/Controllers/Touch/DragScaleTransformTC.d.ts.map +1 -1
  226. package/dist/types/Transform3D/Controllers/Touch/PanTransformTC.d.ts +2 -2
  227. package/dist/types/Transform3D/Controllers/Touch/PanTransformTC.d.ts.map +1 -1
  228. package/dist/types/Transform3D/Controllers/Touch/PinchTransformTC.d.ts +2 -2
  229. package/dist/types/Transform3D/Controllers/Touch/PinchTransformTC.d.ts.map +1 -1
  230. package/dist/types/Transform3D/Controllers/Touch/TouchPanTransformTC.d.ts +2 -2
  231. package/dist/types/Transform3D/Controllers/Touch/TouchPanTransformTC.d.ts.map +1 -1
  232. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MouseDoubleClickToRecenter.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/MouseDoubleClickToRecenter.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,iDAI0B;AAC1B,qDAAoD;AAEpD,MAAa,0BACX,SAAQ,0BAAmB;IAM3B,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,uBAAuB,CAAiB,6BAAc,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IAYD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,0BAA0B,CAAC,IAAI,CAAC,CAAC;QAjB1C,oBAAe,GAAG,GAAG,CAAC;QAMhC,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,kBAAa,GAAG,CAAC,CAAkB,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClB,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC;QAKA,MAAM,UAAU,GAAG,6BAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AA9BH,gEA+BC;AA3BiB,+BAAI,GAAG,4BAA4B,AAA/B,CAAgC","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseController,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { FocusOnPixelUC } from \"../UC/FocusOnPixel\";\n\nexport class MouseDoubleClickToRecenter\n extends AppObjectController\n implements MouseController\n{\n static readonly type = \"MouseDoubleClickToRecenter\";\n protected focusDurationMS = 500;\n\n private get focusUC() {\n return this.getCachedLocalComponent<FocusOnPixelUC>(FocusOnPixelUC.type);\n }\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n onDoubleClick = (e: MouseInputEvent) => {\n if (this.allow(e)) {\n this.focusUC?.centerOnPixel(e.position);\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseDoubleClickToRecenter.type);\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"MouseDoubleClickToRecenter.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/MouseDoubleClickToRecenter.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,iDAI0B;AAC1B,qDAAoD;AAEpD,MAAa,0BACX,SAAQ,0BAAmB;IAM3B,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,uBAAuB,CAAiB,6BAAc,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IAYD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,0BAA0B,CAAC,IAAI,CAAC,CAAC;QAjB1C,oBAAe,GAAG,GAAG,CAAC;QAMhC,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,kBAAa,GAAG,CAAC,CAAkB,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClB,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC;QAKA,MAAM,UAAU,GAAG,6BAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AA9BH,gEA+BC;AA3BiB,+BAAI,GAAG,4BAA4B,AAA/B,CAAgC","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { FocusOnPixelUC } from \"../UC/FocusOnPixel\";\n\nexport class MouseDoubleClickToRecenter\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MouseDoubleClickToRecenter\";\n protected focusDurationMS = 500;\n\n private get focusUC() {\n return this.getCachedLocalComponent<FocusOnPixelUC>(FocusOnPixelUC.type);\n }\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n onDoubleClick = (e: MouseInputEvent) => {\n if (this.allow(e)) {\n this.focusUC?.centerOnPixel(e.position);\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseDoubleClickToRecenter.type);\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MouseOrbit.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/MouseOrbit.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,iDAI0B;AAC1B,uCAAwD;AACxD,yDAAwD;AAExD,MAAa,UAAW,SAAQ,0BAAmB;IAIjD,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,uBAAuB,CACjC,iCAAgB,CAAC,IAAI,CACtB,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,sBAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IA0CD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QArD5B,eAAU,GAAG,KAAK,CAAC;QAY3B,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAC;YAE7B,MAAM,iBAAiB,GAAG,SAAS,CAAC,KAAK,KAAK,iBAAS,CAAC,MAAM,CAAC;YAC/D,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,cAAc;gBAAE,OAAO;YAEjC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,MAAM,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAC;YACjC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YAEnD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,cAAc;gBAAE,OAAO;YACjC,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAE7B,MAAM,eAAe,GAAG,CAAC,CAAC,QAAQ,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEF,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,cAAc;gBAAE,OAAO;YACjC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC;QAKA,MAAM,UAAU,GAAG,6BAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AA/DH,gCAgEC;AA/DiB,eAAI,GAAG,YAAY,AAAf,CAAgB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseController,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport { OrbitSceneRootUC } from \"../UC/OrbitSceneRoot\";\n\nexport class MouseOrbit extends AppObjectController implements MouseController {\n static readonly type = \"MouseOrbit\";\n private isOrbiting = false;\n\n private get orbitSceneRoot() {\n return this.getCachedLocalComponent<OrbitSceneRootUC>(\n OrbitSceneRootUC.type,\n );\n }\n\n private get toolRepo() {\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\n }\n\n allow = (e: MouseInputEvent): boolean => {\n const orbitTool = this.toolRepo?.getTool(\"ORBIT\");\n if (!orbitTool) return false;\n\n const orbitToolIsActive = orbitTool.state === ToolState.ACTIVE;\n if (e.button === 0 && orbitToolIsActive) {\n return true;\n } else if (e.button === 2) {\n return true;\n }\n\n return false;\n };\n\n onDown = (e: MouseInputEvent) => {\n this.isOrbiting = false;\n if (!this.orbitSceneRoot) return;\n\n if (!this.allow(e)) return;\n\n const pixelPosition = e.position;\n this.orbitSceneRoot.initializeOrbit(pixelPosition);\n\n this.isOrbiting = true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.orbitSceneRoot) return;\n if (!this.isOrbiting) return;\n\n const currentPixelPos = e.position;\n this.orbitSceneRoot.doOrbit(currentPixelPos);\n };\n\n onUp = () => {\n if (!this.orbitSceneRoot) return;\n this.orbitSceneRoot.finishOrbit();\n this.isOrbiting = false;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseOrbit.type);\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"MouseOrbit.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/MouseOrbit.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,iDAI0B;AAC1B,uCAAwD;AACxD,yDAAwD;AAExD,MAAa,UACX,SAAQ,0BAAmB;IAM3B,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,uBAAuB,CACjC,iCAAgB,CAAC,IAAI,CACtB,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,sBAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IA0CD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QArD5B,eAAU,GAAG,KAAK,CAAC;QAY3B,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAC;YAE7B,MAAM,iBAAiB,GAAG,SAAS,CAAC,KAAK,KAAK,iBAAS,CAAC,MAAM,CAAC;YAC/D,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,cAAc;gBAAE,OAAO;YAEjC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,MAAM,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAC;YACjC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;YAEnD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,cAAc;gBAAE,OAAO;YACjC,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAE7B,MAAM,eAAe,GAAG,CAAC,CAAC,QAAQ,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEF,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,IAAI,CAAC,cAAc;gBAAE,OAAO;YACjC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC;QAKA,MAAM,UAAU,GAAG,6BAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AAlEH,gCAmEC;AA/DiB,eAAI,GAAG,YAAY,AAAf,CAAgB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport { OrbitSceneRootUC } from \"../UC/OrbitSceneRoot\";\n\nexport class MouseOrbit\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MouseOrbit\";\n private isOrbiting = false;\n\n private get orbitSceneRoot() {\n return this.getCachedLocalComponent<OrbitSceneRootUC>(\n OrbitSceneRootUC.type\n );\n }\n\n private get toolRepo() {\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\n }\n\n allow = (e: MouseInputEvent): boolean => {\n const orbitTool = this.toolRepo?.getTool(\"ORBIT\");\n if (!orbitTool) return false;\n\n const orbitToolIsActive = orbitTool.state === ToolState.ACTIVE;\n if (e.button === 0 && orbitToolIsActive) {\n return true;\n } else if (e.button === 2) {\n return true;\n }\n\n return false;\n };\n\n onDown = (e: MouseInputEvent) => {\n this.isOrbiting = false;\n if (!this.orbitSceneRoot) return;\n\n if (!this.allow(e)) return;\n\n const pixelPosition = e.position;\n this.orbitSceneRoot.initializeOrbit(pixelPosition);\n\n this.isOrbiting = true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.orbitSceneRoot) return;\n if (!this.isOrbiting) return;\n\n const currentPixelPos = e.position;\n this.orbitSceneRoot.doOrbit(currentPixelPos);\n };\n\n onUp = () => {\n if (!this.orbitSceneRoot) return;\n this.orbitSceneRoot.finishOrbit();\n this.isOrbiting = false;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseOrbit.type);\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MousePan.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/MousePan.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,iDAI0B;AAC1B,uCAAwD;AACxD,qDAAoD;AAEpD,MAAa,QAAS,SAAQ,0BAAmB;IAI/C,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,uBAAuB,CAAiB,6BAAc,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,sBAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IAoCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QA7C1B,UAAK,GAAG,KAAK,CAAC;QAUtB,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAE3B,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,KAAK,iBAAS,CAAC,MAAM,CAAC;YAE3D,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,EAAE,CAAC;gBACtC,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YAEnB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC;QAC9B,CAAC,CAAC;QAKA,MAAM,UAAU,GAAG,6BAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AAvDH,4BAwDC;AAvDiB,aAAI,GAAG,UAAU,AAAb,CAAc","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseController,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport { PanSceneRootUC } from \"../UC/PanSceneRoot\";\n\nexport class MousePan extends AppObjectController implements MouseController {\n static readonly type = \"MousePan\";\n private doPan = false;\n\n private get panRootUC() {\n return this.getCachedLocalComponent<PanSceneRootUC>(PanSceneRootUC.type);\n }\n\n private get toolRepo() {\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\n }\n\n allow = (e: MouseInputEvent): boolean => {\n const panTool = this.toolRepo?.getTool(\"PAN\");\n if (!panTool) return false;\n\n const panToolIsActive = panTool.state === ToolState.ACTIVE;\n\n if (e.button === 0 && panToolIsActive) {\n return true;\n } else if (e.button === 1) {\n return true;\n }\n\n return false;\n };\n\n onDown = (e: MouseInputEvent) => {\n this.doPan = false;\n\n if (!this.allow(e)) return;\n\n this.panRootUC?.initializePan(e.position);\n this.doPan = true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.doPan) return;\n this.panRootUC?.doPan(e.position);\n };\n\n onUp = () => {\n this.doPan = false;\n this.panRootUC?.finishPan();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MousePan.type);\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"MousePan.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/MousePan.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,iDAI0B;AAC1B,uCAAwD;AACxD,qDAAoD;AAEpD,MAAa,QAAS,SAAQ,0BAAmB;IAI/C,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,uBAAuB,CAAiB,6BAAc,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,sBAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IAoCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QA7C1B,UAAK,GAAG,KAAK,CAAC;QAUtB,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAE3B,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,KAAK,iBAAS,CAAC,MAAM,CAAC;YAE3D,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,EAAE,CAAC;gBACtC,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YAEnB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC;QAC9B,CAAC,CAAC;QAKA,MAAM,UAAU,GAAG,6BAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AAvDH,4BAwDC;AAvDiB,aAAI,GAAG,UAAU,AAAb,CAAc","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport { PanSceneRootUC } from \"../UC/PanSceneRoot\";\n\nexport class MousePan extends AppObjectController implements MouseEventHandler {\n static readonly type = \"MousePan\";\n private doPan = false;\n\n private get panRootUC() {\n return this.getCachedLocalComponent<PanSceneRootUC>(PanSceneRootUC.type);\n }\n\n private get toolRepo() {\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\n }\n\n allow = (e: MouseInputEvent): boolean => {\n const panTool = this.toolRepo?.getTool(\"PAN\");\n if (!panTool) return false;\n\n const panToolIsActive = panTool.state === ToolState.ACTIVE;\n\n if (e.button === 0 && panToolIsActive) {\n return true;\n } else if (e.button === 1) {\n return true;\n }\n\n return false;\n };\n\n onDown = (e: MouseInputEvent) => {\n this.doPan = false;\n\n if (!this.allow(e)) return;\n\n this.panRootUC?.initializePan(e.position);\n this.doPan = true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.doPan) return;\n this.panRootUC?.doPan(e.position);\n };\n\n onUp = () => {\n this.doPan = false;\n this.panRootUC?.finishPan();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MousePan.type);\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MouseRoll.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/MouseRoll.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,iDAI0B;AAC1B,+FAA8F;AAE9F,MAAa,SAAU,SAAQ,0BAAmB;IAGhD,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,uEAAmC,CAAC,IAAI,CACzC,CAAC;IACJ,CAAC;IAgBD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAfnC,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,YAAO,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC3E,CAAC,CAAC;QAKA,MAAM,UAAU,GAAG,6BAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AAhCH,8BAiCC;AAhCiB,cAAI,GAAG,WAAW,AAAd,CAAe","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseController,\n MouseInputEntity,\n MouseWheelEvent,\n} from \"../../MouseInput\";\nimport { BumpSceneRootScaleAboutPixelPointUC } from \"../UC/BumpSceneRootScaleAboutPixelPoint\";\n\nexport class MouseRoll extends AppObjectController implements MouseController {\n static readonly type = \"MouseRoll\";\n\n private get bumpRootScaleUC() {\n return this.getCachedLocalComponent<BumpSceneRootScaleAboutPixelPointUC>(\n BumpSceneRootScaleAboutPixelPointUC.type,\n );\n }\n\n allow = (e: MouseWheelEvent): boolean => {\n return true;\n };\n\n onWheel = (e: MouseWheelEvent) => {\n if (!this.allow(e)) return;\n\n if (!this.bumpRootScaleUC) {\n return;\n }\n\n this.bumpRootScaleUC.bump(e.event.deltaY > 0 ? \"OUT\" : \"IN\", e.position);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseRoll.type);\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"MouseRoll.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/MouseRoll.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,iDAI0B;AAC1B,+FAA8F;AAE9F,MAAa,SACX,SAAQ,0BAAmB;IAK3B,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,uEAAmC,CAAC,IAAI,CACzC,CAAC;IACJ,CAAC;IAgBD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAfnC,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,YAAO,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC3E,CAAC,CAAC;QAKA,MAAM,UAAU,GAAG,6BAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AAnCH,8BAoCC;AAhCiB,cAAI,GAAG,WAAW,AAAd,CAAe","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseWheelEvent,\n} from \"../../MouseInput\";\nimport { BumpSceneRootScaleAboutPixelPointUC } from \"../UC/BumpSceneRootScaleAboutPixelPoint\";\n\nexport class MouseRoll\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MouseRoll\";\n\n private get bumpRootScaleUC() {\n return this.getCachedLocalComponent<BumpSceneRootScaleAboutPixelPointUC>(\n BumpSceneRootScaleAboutPixelPointUC.type\n );\n }\n\n allow = (e: MouseWheelEvent): boolean => {\n return true;\n };\n\n onWheel = (e: MouseWheelEvent) => {\n if (!this.allow(e)) return;\n\n if (!this.bumpRootScaleUC) {\n return;\n }\n\n this.bumpRootScaleUC.bump(e.event.deltaY > 0 ? \"OUT\" : \"IN\", e.position);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseRoll.type);\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MouseScale.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/MouseScale.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,iDAI0B;AAC1B,uCAAwD;AACxD,iEAAgE;AAEhE,MAAa,UAAW,SAAQ,0BAAmB;IAIjD,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,yCAAoB,CAAC,IAAI,CAC1B,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,sBAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IAoCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QA/C5B,eAAU,GAAG,KAAK,CAAC;QAY3B,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAE5B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,KAAK,iBAAS,CAAC,MAAM,CAAC;YAE7D,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,MAAM,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAC;YACjC,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;YAErD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAC7B,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC;QAEF,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,eAAe,EAAE,aAAa,EAAE,CAAC;QACxC,CAAC,CAAC;QAKA,MAAM,UAAU,GAAG,6BAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AAzDH,gCA0DC;AAzDiB,eAAI,GAAG,YAAY,AAAf,CAAgB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseController,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport { DragScaleSceneRootUC } from \"../UC/DragScaleSceneRoot\";\n\nexport class MouseScale extends AppObjectController implements MouseController {\n static readonly type = \"MouseScale\";\n private isDollying = false;\n\n private get dragScaleRootUC() {\n return this.getCachedLocalComponent<DragScaleSceneRootUC>(\n DragScaleSceneRootUC.type,\n );\n }\n\n private get toolRepo() {\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\n }\n\n allow = (e: MouseInputEvent): boolean => {\n const zoomTool = this.toolRepo?.getTool(\"ZOOM\");\n if (!zoomTool) return false;\n\n const zoomToolIsActive = zoomTool.state === ToolState.ACTIVE;\n\n if (e.button === 0 && zoomToolIsActive) {\n return true;\n }\n\n return false;\n };\n\n onDown = (e: MouseInputEvent) => {\n this.isDollying = false;\n\n if (!this.allow(e)) return;\n\n const pixelPosition = e.position;\n this.dragScaleRootUC?.initializeScale(pixelPosition);\n\n this.isDollying = true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.isDollying) return;\n this.dragScaleRootUC?.doScale(e.position);\n };\n\n onUp = () => {\n this.isDollying = false;\n this.dragScaleRootUC?.finishScaling();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseScale.type);\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"MouseScale.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/MouseScale.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,iDAI0B;AAC1B,uCAAwD;AACxD,iEAAgE;AAEhE,MAAa,UACX,SAAQ,0BAAmB;IAM3B,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,yCAAoB,CAAC,IAAI,CAC1B,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,sBAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IAoCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QA/C5B,eAAU,GAAG,KAAK,CAAC;QAY3B,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAE5B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,KAAK,iBAAS,CAAC,MAAM,CAAC;YAE7D,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,MAAM,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAC;YACjC,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;YAErD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAC7B,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC;QAEF,SAAI,GAAG,GAAG,EAAE;YACV,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,eAAe,EAAE,aAAa,EAAE,CAAC;QACxC,CAAC,CAAC;QAKA,MAAM,UAAU,GAAG,6BAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AA5DH,gCA6DC;AAzDiB,eAAI,GAAG,YAAY,AAAf,CAAgB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport { DragScaleSceneRootUC } from \"../UC/DragScaleSceneRoot\";\n\nexport class MouseScale\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MouseScale\";\n private isDollying = false;\n\n private get dragScaleRootUC() {\n return this.getCachedLocalComponent<DragScaleSceneRootUC>(\n DragScaleSceneRootUC.type\n );\n }\n\n private get toolRepo() {\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\n }\n\n allow = (e: MouseInputEvent): boolean => {\n const zoomTool = this.toolRepo?.getTool(\"ZOOM\");\n if (!zoomTool) return false;\n\n const zoomToolIsActive = zoomTool.state === ToolState.ACTIVE;\n\n if (e.button === 0 && zoomToolIsActive) {\n return true;\n }\n\n return false;\n };\n\n onDown = (e: MouseInputEvent) => {\n this.isDollying = false;\n\n if (!this.allow(e)) return;\n\n const pixelPosition = e.position;\n this.dragScaleRootUC?.initializeScale(pixelPosition);\n\n this.isDollying = true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.isDollying) return;\n this.dragScaleRootUC?.doScale(e.position);\n };\n\n onUp = () => {\n this.isDollying = false;\n this.dragScaleRootUC?.finishScaling();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseScale.type);\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ScaleSceneRootSC.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/ScaleSceneRootSC.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,yCAA8D;AAC9D,uEAAoE;AAEpE,MAAa,gBACX,SAAQ,0BAAmB;IAK3B,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAe,qBAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,qBAAqB;QAC/B,OAAO,IAAI,CAAC,uBAAuB,CACjC,6CAAqB,CAAC,IAAI,CAC3B,CAAC;IACJ,CAAC;IAmCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAlClC,cAAS,GAAG,KAAK,CAAC;QAE1B,UAAK,GAAG,CAAC,MAAc,EAAW,EAAE;YAClC,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,MAAc,EAAE,EAAE;YAChC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,OAAO;YAEhC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;YAErD,IAAI,CAAC,qBAAqB,EAAE,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAClE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC;QAEF,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;YAE5B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;YAErD,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5D,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC,CAAC;QAIA,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;;AApDH,4CAqDC;AAjDiB,qBAAI,GAAG,kBAAkB,AAArB,CAAsB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { StylusController, StylusEntity } from \"../../Stylus\";\nimport { ScaleSceneRootWithRay } from \"../UC/ScaleSceneRootWithRay\";\n\nexport class ScaleSceneRootSC\n extends AppObjectController\n implements StylusController\n{\n static readonly type = \"ScaleSceneRootSC\";\n\n private get stylus() {\n return this.getCachedSingleton<StylusEntity>(StylusEntity.type);\n }\n\n private get scaleSceneRootWithRay() {\n return this.getCachedLocalComponent<ScaleSceneRootWithRay>(\n ScaleSceneRootWithRay.type,\n );\n }\n\n private isScaling = false;\n\n allow = (button: number): boolean => {\n if (button === 1) return true;\n return false;\n };\n\n onButtonDown = (button: number) => {\n this.isScaling = false;\n if (!this.stylus) return;\n if (!this.allow(button)) return;\n\n const pointerRay = this.stylus.pickRay;\n const rayStart = this.stylus.transform.localPosition;\n\n this.scaleSceneRootWithRay?.initializeScale(pointerRay, rayStart);\n this.isScaling = true;\n };\n\n onStylusMove = () => {\n if (!this.stylus) return;\n if (!this.isScaling) return;\n\n const pointerRay = this.stylus.pickRay;\n const rayStart = this.stylus.transform.localPosition;\n\n this.scaleSceneRootWithRay?.doScale(pointerRay, rayStart);\n };\n\n onButtonUp = () => {\n this.isScaling = false;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, ScaleSceneRootSC.type);\n this.stylus?.registerController(this);\n }\n}\n"]}
1
+ {"version":3,"file":"ScaleSceneRootSC.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/ScaleSceneRootSC.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,yCAAgE;AAChE,uEAAoE;AAEpE,MAAa,gBACX,SAAQ,0BAAmB;IAK3B,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAe,qBAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,qBAAqB;QAC/B,OAAO,IAAI,CAAC,uBAAuB,CACjC,6CAAqB,CAAC,IAAI,CAC3B,CAAC;IACJ,CAAC;IAmCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAlClC,cAAS,GAAG,KAAK,CAAC;QAE1B,UAAK,GAAG,CAAC,MAAc,EAAW,EAAE;YAClC,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,MAAc,EAAE,EAAE;YAChC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,OAAO;YAEhC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;YAErD,IAAI,CAAC,qBAAqB,EAAE,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAClE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC;QAEF,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;YAE5B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;YAErD,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5D,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC,CAAC;QAIA,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;;AApDH,4CAqDC;AAjDiB,qBAAI,GAAG,kBAAkB,AAArB,CAAsB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { StylusEventHandler, StylusEntity } from \"../../Stylus\";\nimport { ScaleSceneRootWithRay } from \"../UC/ScaleSceneRootWithRay\";\n\nexport class ScaleSceneRootSC\n extends AppObjectController\n implements StylusEventHandler\n{\n static readonly type = \"ScaleSceneRootSC\";\n\n private get stylus() {\n return this.getCachedSingleton<StylusEntity>(StylusEntity.type);\n }\n\n private get scaleSceneRootWithRay() {\n return this.getCachedLocalComponent<ScaleSceneRootWithRay>(\n ScaleSceneRootWithRay.type\n );\n }\n\n private isScaling = false;\n\n allow = (button: number): boolean => {\n if (button === 1) return true;\n return false;\n };\n\n onButtonDown = (button: number) => {\n this.isScaling = false;\n if (!this.stylus) return;\n if (!this.allow(button)) return;\n\n const pointerRay = this.stylus.pickRay;\n const rayStart = this.stylus.transform.localPosition;\n\n this.scaleSceneRootWithRay?.initializeScale(pointerRay, rayStart);\n this.isScaling = true;\n };\n\n onStylusMove = () => {\n if (!this.stylus) return;\n if (!this.isScaling) return;\n\n const pointerRay = this.stylus.pickRay;\n const rayStart = this.stylus.transform.localPosition;\n\n this.scaleSceneRootWithRay?.doScale(pointerRay, rayStart);\n };\n\n onButtonUp = () => {\n this.isScaling = false;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, ScaleSceneRootSC.type);\n this.stylus?.registerController(this);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SceneRootMoveSC.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/SceneRootMoveSC.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,yCAA8D;AAC9D,sFAAmF;AAEnF,MAAa,eACX,SAAQ,0BAAmB;IAK3B,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAe,qBAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,oBAAoB;QAC9B,OAAO,IAAI,CAAC,uBAAuB,CACjC,6CAAqB,CAAC,IAAI,CAC3B,CAAC;IACJ,CAAC;IA+BD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QA9BjC,aAAQ,GAAG,KAAK,CAAC;QAEzB,UAAK,GAAG,CAAC,MAAc,EAAW,EAAE;YAClC,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,MAAc,EAAE,EAAE;YAChC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,OAAO;YAEhC,IAAI,CAAC,oBAAoB,EAAE,UAAU,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAErB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEzB,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC;QACpC,CAAC,CAAC;QAEF,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAC3C,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC;QACpC,CAAC,CAAC;QAIA,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;;AAhDH,0CAiDC;AA7CiB,oBAAI,GAAG,iBAAiB,AAApB,CAAqB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { StylusController, StylusEntity } from \"../../Stylus\";\nimport { StylusMoveTransformUC } from \"../../Transform3D/UC/StylusMoveTransformUC\";\n\nexport class SceneRootMoveSC\n extends AppObjectController\n implements StylusController\n{\n static readonly type = \"SceneRootMoveSC\";\n\n private get stylus() {\n return this.getCachedSingleton<StylusEntity>(StylusEntity.type);\n }\n\n private get stylusRootMovementUC() {\n return this.getCachedLocalComponent<StylusMoveTransformUC>(\n StylusMoveTransformUC.type,\n );\n }\n\n private isMoving = false;\n\n allow = (button: number): boolean => {\n if (button === 2) return true;\n return false;\n };\n\n onButtonDown = (button: number) => {\n this.isMoving = false;\n if (!this.stylus) return;\n if (!this.allow(button)) return;\n\n this.stylusRootMovementUC?.initialize();\n this.isMoving = true;\n };\n\n onButtonUp = () => {\n this.isMoving = true;\n\n if (!this.stylus) return;\n\n this.stylusRootMovementUC?.stop();\n };\n\n onStylusMove = () => {\n if (!this.stylus || !this.isMoving) return;\n this.stylusRootMovementUC?.move();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, SceneRootMoveSC.type);\n this.stylus?.registerController(this);\n }\n}\n"]}
1
+ {"version":3,"file":"SceneRootMoveSC.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/SceneRootMoveSC.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,yCAAgE;AAChE,sFAAmF;AAEnF,MAAa,eACX,SAAQ,0BAAmB;IAK3B,IAAY,MAAM;QAChB,OAAO,IAAI,CAAC,kBAAkB,CAAe,qBAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAY,oBAAoB;QAC9B,OAAO,IAAI,CAAC,uBAAuB,CACjC,6CAAqB,CAAC,IAAI,CAC3B,CAAC;IACJ,CAAC;IA+BD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QA9BjC,aAAQ,GAAG,KAAK,CAAC;QAEzB,UAAK,GAAG,CAAC,MAAc,EAAW,EAAE;YAClC,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,MAAc,EAAE,EAAE;YAChC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,OAAO;YAEhC,IAAI,CAAC,oBAAoB,EAAE,UAAU,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YAErB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEzB,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC;QACpC,CAAC,CAAC;QAEF,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAC3C,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC;QACpC,CAAC,CAAC;QAIA,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;;AAhDH,0CAiDC;AA7CiB,oBAAI,GAAG,iBAAiB,AAApB,CAAqB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { StylusEventHandler, StylusEntity } from \"../../Stylus\";\nimport { StylusMoveTransformUC } from \"../../Transform3D/UC/StylusMoveTransformUC\";\n\nexport class SceneRootMoveSC\n extends AppObjectController\n implements StylusEventHandler\n{\n static readonly type = \"SceneRootMoveSC\";\n\n private get stylus() {\n return this.getCachedSingleton<StylusEntity>(StylusEntity.type);\n }\n\n private get stylusRootMovementUC() {\n return this.getCachedLocalComponent<StylusMoveTransformUC>(\n StylusMoveTransformUC.type\n );\n }\n\n private isMoving = false;\n\n allow = (button: number): boolean => {\n if (button === 2) return true;\n return false;\n };\n\n onButtonDown = (button: number) => {\n this.isMoving = false;\n if (!this.stylus) return;\n if (!this.allow(button)) return;\n\n this.stylusRootMovementUC?.initialize();\n this.isMoving = true;\n };\n\n onButtonUp = () => {\n this.isMoving = true;\n\n if (!this.stylus) return;\n\n this.stylusRootMovementUC?.stop();\n };\n\n onStylusMove = () => {\n if (!this.stylus || !this.isMoving) return;\n this.stylusRootMovementUC?.move();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, SceneRootMoveSC.type);\n this.stylus?.registerController(this);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TouchOrbit.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/TouchOrbit.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,sCAAsC;AACtC,uCAAwD;AACxD,2DAI+B;AAC/B,yDAAwD;AAExD,MAAa,UAAW,SAAQ,0BAAmB;IAMjD,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,uBAAuB,CACjC,iCAAgB,CAAC,IAAI,CACtB,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,sBAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IA6CD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QA1D5B,eAAU,GAAG,KAAK,CAAC;QAEpB,6BAAwB,GAAG,EAAE,CAAC;QAYrC,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAC;YAE7B,MAAM,iBAAiB,GAAG,SAAS,CAAC,KAAK,KAAK,iBAAS,CAAC,MAAM,CAAC;YAE/D,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC;gBAChD,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,cAAO,CAAC,QAAQ,CAC3B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EACrB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CACtB,CAAC,SAAS,CAAC;gBAEZ,IAAI,IAAI,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;oBACzC,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,CAAkB,EAAE,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YACpD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAC7B,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;QACrC,CAAC,CAAC;QAIA,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC;QAE3C,MAAM,UAAU,GAAG,kCAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AArEH,gCAsEC;AArEiB,eAAI,GAAG,YAAY,AAAf,CAAgB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport {\n TouchController,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { OrbitSceneRootUC } from \"../UC/OrbitSceneRoot\";\n\nexport class TouchOrbit extends AppObjectController implements TouchController {\n static readonly type = \"TouchOrbit\";\n private isOrbiting = false;\n\n public ORBIT_FINGER_DISTANCE_PX = 80;\n\n private get orbitSceneRoot() {\n return this.getCachedLocalComponent<OrbitSceneRootUC>(\n OrbitSceneRootUC.type,\n );\n }\n\n private get toolRepo() {\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\n }\n\n allow = (e: TouchInputEvent): boolean => {\n const orbitTool = this.toolRepo?.getTool(\"ORBIT\");\n if (!orbitTool) return false;\n\n const orbitToolIsActive = orbitTool.state === ToolState.ACTIVE;\n\n if (e.touches.length === 1 && orbitToolIsActive) {\n return true;\n } else if (e.touches.length === 2) {\n const dist = Vector2.Subtract(\n e.touches[0].position,\n e.touches[1].position,\n ).magnitued;\n\n if (dist < this.ORBIT_FINGER_DISTANCE_PX) {\n return true;\n }\n }\n\n return false;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n if (!this.allow(e)) {\n this.isOrbiting = false;\n this.orbitSceneRoot?.cancelOrbit();\n return;\n }\n\n this.orbitSceneRoot?.initializeOrbit(e.touchCenter);\n this.isOrbiting = true;\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (!this.isOrbiting) return;\n this.orbitSceneRoot?.doOrbit(e.touchCenter);\n };\n\n onTouchEnd = () => {\n this.isOrbiting = false;\n this.orbitSceneRoot?.finishOrbit();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchOrbit.type);\n const appObjects = appObject.appObjectRepo;\n\n const touchInput = TouchInputEntity.get(appObjects);\n if (touchInput) {\n touchInput.registerController(this);\n } else {\n this.warn(\"Unable to find TouchInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"TouchOrbit.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/TouchOrbit.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,sCAAsC;AACtC,uCAAwD;AACxD,2DAI+B;AAC/B,yDAAwD;AAExD,MAAa,UACX,SAAQ,0BAAmB;IAQ3B,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,uBAAuB,CACjC,iCAAgB,CAAC,IAAI,CACtB,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,sBAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IA6CD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QA1D5B,eAAU,GAAG,KAAK,CAAC;QAEpB,6BAAwB,GAAG,EAAE,CAAC;QAYrC,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAC;YAE7B,MAAM,iBAAiB,GAAG,SAAS,CAAC,KAAK,KAAK,iBAAS,CAAC,MAAM,CAAC;YAE/D,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC;gBAChD,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,cAAO,CAAC,QAAQ,CAC3B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EACrB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CACtB,CAAC,SAAS,CAAC;gBAEZ,IAAI,IAAI,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;oBACzC,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,CAAkB,EAAE,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;gBACnC,OAAO;YACT,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YACpD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAC7B,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;QACrC,CAAC,CAAC;QAIA,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC;QAE3C,MAAM,UAAU,GAAG,kCAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AAxEH,gCAyEC;AArEiB,eAAI,GAAG,YAAY,AAAf,CAAgB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { OrbitSceneRootUC } from \"../UC/OrbitSceneRoot\";\n\nexport class TouchOrbit\n extends AppObjectController\n implements TouchEventHandler\n{\n static readonly type = \"TouchOrbit\";\n private isOrbiting = false;\n\n public ORBIT_FINGER_DISTANCE_PX = 80;\n\n private get orbitSceneRoot() {\n return this.getCachedLocalComponent<OrbitSceneRootUC>(\n OrbitSceneRootUC.type\n );\n }\n\n private get toolRepo() {\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\n }\n\n allow = (e: TouchInputEvent): boolean => {\n const orbitTool = this.toolRepo?.getTool(\"ORBIT\");\n if (!orbitTool) return false;\n\n const orbitToolIsActive = orbitTool.state === ToolState.ACTIVE;\n\n if (e.touches.length === 1 && orbitToolIsActive) {\n return true;\n } else if (e.touches.length === 2) {\n const dist = Vector2.Subtract(\n e.touches[0].position,\n e.touches[1].position\n ).magnitued;\n\n if (dist < this.ORBIT_FINGER_DISTANCE_PX) {\n return true;\n }\n }\n\n return false;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n if (!this.allow(e)) {\n this.isOrbiting = false;\n this.orbitSceneRoot?.cancelOrbit();\n return;\n }\n\n this.orbitSceneRoot?.initializeOrbit(e.touchCenter);\n this.isOrbiting = true;\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (!this.isOrbiting) return;\n this.orbitSceneRoot?.doOrbit(e.touchCenter);\n };\n\n onTouchEnd = () => {\n this.isOrbiting = false;\n this.orbitSceneRoot?.finishOrbit();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchOrbit.type);\n const appObjects = appObject.appObjectRepo;\n\n const touchInput = TouchInputEntity.get(appObjects);\n if (touchInput) {\n touchInput.registerController(this);\n } else {\n this.warn(\"Unable to find TouchInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TouchPan.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/TouchPan.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,sCAAsC;AACtC,uCAAwD;AACxD,2DAI+B;AAC/B,qDAAoD;AAEpD,MAAa,QAAS,SAAQ,0BAAmB;IAO/C,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,uBAAuB,CAAiB,6BAAc,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,sBAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IA8CD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAzD3B,2BAAsB,GAAG,EAAE,CAAC;QAE3B,cAAS,GAAG,KAAK,CAAC;QAU1B,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAE3B,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,KAAK,iBAAS,CAAC,MAAM,CAAC;YAE5D,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,EAAE,CAAC;gBAC/C,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,cAAO,CAAC,QAAQ,CAC3B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EACrB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CACtB,CAAC,SAAS,CAAC;gBAEZ,IAAI,IAAI,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBACvC,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,CAAkB,EAAE,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;YAC5B,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC5C,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QACvC,CAAC,CAAC;QAEF,eAAU,GAAG,CAAC,CAAkB,EAAE,EAAE;YAClC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC;QAC9B,CAAC,CAAC;QAIA,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC;QAE3C,MAAM,UAAU,GAAG,kCAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AArEH,4BAsEC;AArEiB,aAAI,GAAG,UAAU,AAAb,CAAc","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport {\n TouchController,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { PanSceneRootUC } from \"../UC/PanSceneRoot\";\n\nexport class TouchPan extends AppObjectController implements TouchController {\n static readonly type = \"TouchPan\";\n\n public PAN_FINGER_DISTANCE_PX = 80;\n\n private isPanning = false;\n\n private get panRootUC() {\n return this.getCachedLocalComponent<PanSceneRootUC>(PanSceneRootUC.type);\n }\n\n private get toolRepo() {\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\n }\n\n allow = (e: TouchInputEvent): boolean => {\n const panTool = this.toolRepo?.getTool(\"PAN\");\n if (!panTool) return false;\n\n const panToolIsAcvtive = panTool.state === ToolState.ACTIVE;\n\n if (e.touches.length === 1 && panToolIsAcvtive) {\n return true;\n } else if (e.touches.length === 2) {\n const dist = Vector2.Subtract(\n e.touches[0].position,\n e.touches[1].position,\n ).magnitued;\n\n if (dist > this.PAN_FINGER_DISTANCE_PX) {\n return true;\n }\n }\n\n return false;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n if (!this.allow(e)) {\n this.isPanning = false;\n this.panRootUC?.cancelPan();\n return;\n }\n\n this.panRootUC?.initializePan(e.touchCenter);\n this.isPanning = true;\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (!this.isPanning) return;\n const pixelPosition = e.touches[0].position;\n this.panRootUC?.doPan(pixelPosition);\n };\n\n onTouchEnd = (e: TouchInputEvent) => {\n this.isPanning = false;\n this.panRootUC?.finishPan();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchPan.type);\n const appObjects = appObject.appObjectRepo;\n\n const touchInput = TouchInputEntity.get(appObjects);\n if (touchInput) {\n touchInput.registerController(this);\n } else {\n this.warn(\"Unable to find TouchInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"TouchPan.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/TouchPan.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,sCAAsC;AACtC,uCAAwD;AACxD,2DAI+B;AAC/B,qDAAoD;AAEpD,MAAa,QAAS,SAAQ,0BAAmB;IAO/C,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,uBAAuB,CAAiB,6BAAc,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,sBAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IA8CD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QAzD3B,2BAAsB,GAAG,EAAE,CAAC;QAE3B,cAAS,GAAG,KAAK,CAAC;QAU1B,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAE3B,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,KAAK,iBAAS,CAAC,MAAM,CAAC;YAE5D,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,EAAE,CAAC;gBAC/C,OAAO,IAAI,CAAC;YACd,CAAC;iBAAM,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,cAAO,CAAC,QAAQ,CAC3B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EACrB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CACtB,CAAC,SAAS,CAAC;gBAEZ,IAAI,IAAI,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBACvC,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,CAAkB,EAAE,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;YAC5B,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC5C,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QACvC,CAAC,CAAC;QAEF,eAAU,GAAG,CAAC,CAAkB,EAAE,EAAE;YAClC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC;QAC9B,CAAC,CAAC;QAIA,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC;QAE3C,MAAM,UAAU,GAAG,kCAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AArEH,4BAsEC;AArEiB,aAAI,GAAG,UAAU,AAAb,CAAc","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { PanSceneRootUC } from \"../UC/PanSceneRoot\";\n\nexport class TouchPan extends AppObjectController implements TouchEventHandler {\n static readonly type = \"TouchPan\";\n\n public PAN_FINGER_DISTANCE_PX = 80;\n\n private isPanning = false;\n\n private get panRootUC() {\n return this.getCachedLocalComponent<PanSceneRootUC>(PanSceneRootUC.type);\n }\n\n private get toolRepo() {\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\n }\n\n allow = (e: TouchInputEvent): boolean => {\n const panTool = this.toolRepo?.getTool(\"PAN\");\n if (!panTool) return false;\n\n const panToolIsAcvtive = panTool.state === ToolState.ACTIVE;\n\n if (e.touches.length === 1 && panToolIsAcvtive) {\n return true;\n } else if (e.touches.length === 2) {\n const dist = Vector2.Subtract(\n e.touches[0].position,\n e.touches[1].position\n ).magnitued;\n\n if (dist > this.PAN_FINGER_DISTANCE_PX) {\n return true;\n }\n }\n\n return false;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n if (!this.allow(e)) {\n this.isPanning = false;\n this.panRootUC?.cancelPan();\n return;\n }\n\n this.panRootUC?.initializePan(e.touchCenter);\n this.isPanning = true;\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (!this.isPanning) return;\n const pixelPosition = e.touches[0].position;\n this.panRootUC?.doPan(pixelPosition);\n };\n\n onTouchEnd = (e: TouchInputEvent) => {\n this.isPanning = false;\n this.panRootUC?.finishPan();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchPan.type);\n const appObjects = appObject.appObjectRepo;\n\n const touchInput = TouchInputEntity.get(appObjects);\n if (touchInput) {\n touchInput.registerController(this);\n } else {\n this.warn(\"Unable to find TouchInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TouchPinch.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/TouchPinch.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,sCAAsC;AACtC,2DAI+B;AAC/B,yDAAwD;AAExD,MAAa,UAAW,SAAQ,0BAAmB;IAMjD,IAAY,WAAW;QACrB,OAAO,IAAI,CAAC,uBAAuB,CACjC,iCAAgB,CAAC,IAAI,CACtB,CAAC;IACJ,CAAC;IA8CD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAvD5B,eAAU,GAAG,KAAK,CAAC;QAEpB,2BAAsB,GAAG,EAAE,CAAC;QAQnC,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,cAAO,CAAC,QAAQ,CAC3B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EACrB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CACtB,CAAC,SAAS,CAAC;gBAEZ,IAAI,IAAI,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBACvC,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,CAAkB,EAAE,EAAE;YACpC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,WAAW,EAAE,eAAe,CAC/B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EACrB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CACtB,CAAC;YACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAC7B,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YACnC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1E,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC;QAClC,CAAC,CAAC;QAIA,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC;QAE3C,MAAM,UAAU,GAAG,kCAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AAlEH,gCAmEC;AAlEiB,eAAI,GAAG,YAAY,AAAf,CAAgB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport {\n TouchController,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { PinchSceneRootUC } from \"../UC/PinchSceneRoot\";\n\nexport class TouchPinch extends AppObjectController implements TouchController {\n static readonly type = \"TouchPinch\";\n private isPinching = false;\n\n public PAN_FINGER_DISTANCE_PX = 80;\n\n private get pinchRootUC() {\n return this.getCachedLocalComponent<PinchSceneRootUC>(\n PinchSceneRootUC.type,\n );\n }\n\n allow = (e: TouchInputEvent): boolean => {\n if (e.touches.length === 2) {\n const dist = Vector2.Subtract(\n e.touches[0].position,\n e.touches[1].position,\n ).magnitued;\n\n if (dist > this.PAN_FINGER_DISTANCE_PX) {\n return true;\n }\n }\n\n return false;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n this.isPinching = false;\n\n if (e.touches.length !== 2) {\n return;\n }\n\n if (!this.allow(e)) {\n return;\n }\n\n this.pinchRootUC?.initializePinch(\n e.touches[0].position,\n e.touches[1].position,\n );\n this.isPinching = true;\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (!this.isPinching) return;\n if (e.touches.length !== 2) return;\n this.pinchRootUC?.doPinch(e.touches[0].position, e.touches[1].position);\n };\n\n onTouchEnd = () => {\n this.isPinching = false;\n this.pinchRootUC?.finishPinch();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchPinch.type);\n const appObjects = appObject.appObjectRepo;\n\n const touchInput = TouchInputEntity.get(appObjects);\n if (touchInput) {\n touchInput.registerController(this);\n } else {\n this.warn(\"Unable to find TouchInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"TouchPinch.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/TouchPinch.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,sCAAsC;AACtC,2DAI+B;AAC/B,yDAAwD;AAExD,MAAa,UACX,SAAQ,0BAAmB;IAQ3B,IAAY,WAAW;QACrB,OAAO,IAAI,CAAC,uBAAuB,CACjC,iCAAgB,CAAC,IAAI,CACtB,CAAC;IACJ,CAAC;IA8CD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAvD5B,eAAU,GAAG,KAAK,CAAC;QAEpB,2BAAsB,GAAG,EAAE,CAAC;QAQnC,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,cAAO,CAAC,QAAQ,CAC3B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EACrB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CACtB,CAAC,SAAS,CAAC;gBAEZ,IAAI,IAAI,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBACvC,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,CAAkB,EAAE,EAAE;YACpC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,WAAW,EAAE,eAAe,CAC/B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EACrB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CACtB,CAAC;YACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAC7B,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YACnC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1E,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC;QAClC,CAAC,CAAC;QAIA,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC;QAE3C,MAAM,UAAU,GAAG,kCAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AArEH,gCAsEC;AAlEiB,eAAI,GAAG,YAAY,AAAf,CAAgB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { PinchSceneRootUC } from \"../UC/PinchSceneRoot\";\n\nexport class TouchPinch\n extends AppObjectController\n implements TouchEventHandler\n{\n static readonly type = \"TouchPinch\";\n private isPinching = false;\n\n public PAN_FINGER_DISTANCE_PX = 80;\n\n private get pinchRootUC() {\n return this.getCachedLocalComponent<PinchSceneRootUC>(\n PinchSceneRootUC.type\n );\n }\n\n allow = (e: TouchInputEvent): boolean => {\n if (e.touches.length === 2) {\n const dist = Vector2.Subtract(\n e.touches[0].position,\n e.touches[1].position\n ).magnitued;\n\n if (dist > this.PAN_FINGER_DISTANCE_PX) {\n return true;\n }\n }\n\n return false;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n this.isPinching = false;\n\n if (e.touches.length !== 2) {\n return;\n }\n\n if (!this.allow(e)) {\n return;\n }\n\n this.pinchRootUC?.initializePinch(\n e.touches[0].position,\n e.touches[1].position\n );\n this.isPinching = true;\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (!this.isPinching) return;\n if (e.touches.length !== 2) return;\n this.pinchRootUC?.doPinch(e.touches[0].position, e.touches[1].position);\n };\n\n onTouchEnd = () => {\n this.isPinching = false;\n this.pinchRootUC?.finishPinch();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchPinch.type);\n const appObjects = appObject.appObjectRepo;\n\n const touchInput = TouchInputEntity.get(appObjects);\n if (touchInput) {\n touchInput.registerController(this);\n } else {\n this.warn(\"Unable to find TouchInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TouchScale.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/TouchScale.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,uCAAwD;AACxD,2DAI+B;AAC/B,iEAAgE;AAEhE,MAAa,UAAW,SAAQ,0BAAmB;IAIjD,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,yCAAoB,CAAC,IAAI,CAC1B,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,sBAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IA6CD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAxD5B,cAAS,GAAG,KAAK,CAAC;QAY1B,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAE5B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,KAAK,iBAAS,CAAC,MAAM,CAAC;YAE7D,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,EAAE,CAAC;gBAC/C,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,CAAkB,EAAE,EAAE;YACpC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC5C,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;YAErD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;YAC5B,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEnC,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC5C,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,eAAe,EAAE,aAAa,EAAE,CAAC;QACxC,CAAC,CAAC;QAIA,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC;QAE3C,MAAM,UAAU,GAAG,kCAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AAnEH,gCAoEC;AAnEiB,eAAI,GAAG,YAAY,AAAf,CAAgB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport {\n TouchController,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { DragScaleSceneRootUC } from \"../UC/DragScaleSceneRoot\";\n\nexport class TouchScale extends AppObjectController implements TouchController {\n static readonly type = \"TouchScale\";\n private isScaling = false;\n\n private get dragScaleRootUC() {\n return this.getCachedLocalComponent<DragScaleSceneRootUC>(\n DragScaleSceneRootUC.type,\n );\n }\n\n private get toolRepo() {\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\n }\n\n allow = (e: TouchInputEvent): boolean => {\n const zoomTool = this.toolRepo?.getTool(\"ZOOM\");\n if (!zoomTool) return false;\n\n const zoomToolIsActive = zoomTool.state === ToolState.ACTIVE;\n\n if (e.touches.length === 1 && zoomToolIsActive) {\n return true;\n }\n\n return false;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n this.isScaling = false;\n\n if (e.touches.length !== 1) {\n return;\n }\n\n if (!this.allow(e)) {\n return;\n }\n\n const pixelPosition = e.touches[0].position;\n this.dragScaleRootUC?.initializeScale(pixelPosition);\n\n this.isScaling = true;\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (!this.isScaling) return;\n if (e.touches.length !== 1) return;\n\n const pixelPosition = e.touches[0].position;\n this.dragScaleRootUC?.doScale(pixelPosition);\n };\n\n onTouchEnd = () => {\n this.isScaling = false;\n this.dragScaleRootUC?.finishScaling();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchScale.type);\n const appObjects = appObject.appObjectRepo;\n\n const touchInput = TouchInputEntity.get(appObjects);\n if (touchInput) {\n touchInput.registerController(this);\n } else {\n this.warn(\"Unable to find TouchInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"TouchScale.js","sourceRoot":"","sources":["../../../../src/SceneRoot/Controllers/TouchScale.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,uCAAwD;AACxD,2DAI+B;AAC/B,iEAAgE;AAEhE,MAAa,UACX,SAAQ,0BAAmB;IAM3B,IAAY,eAAe;QACzB,OAAO,IAAI,CAAC,uBAAuB,CACjC,yCAAoB,CAAC,IAAI,CAC1B,CAAC;IACJ,CAAC;IAED,IAAY,QAAQ;QAClB,OAAO,IAAI,CAAC,kBAAkB,CAAiB,sBAAc,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IA6CD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAxD5B,cAAS,GAAG,KAAK,CAAC;QAY1B,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAC;YAE5B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,KAAK,iBAAS,CAAC,MAAM,CAAC;YAE7D,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,EAAE,CAAC;gBAC/C,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,CAAkB,EAAE,EAAE;YACpC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC5C,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;YAErD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO;YAC5B,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEnC,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC5C,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,eAAe,EAAE,aAAa,EAAE,CAAC;QACxC,CAAC,CAAC;QAIA,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC;QAE3C,MAAM,UAAU,GAAG,kCAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AAtEH,gCAuEC;AAnEiB,eAAI,GAAG,YAAY,AAAf,CAAgB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { ToolRepository, ToolState } from \"../../Tools\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { DragScaleSceneRootUC } from \"../UC/DragScaleSceneRoot\";\n\nexport class TouchScale\n extends AppObjectController\n implements TouchEventHandler\n{\n static readonly type = \"TouchScale\";\n private isScaling = false;\n\n private get dragScaleRootUC() {\n return this.getCachedLocalComponent<DragScaleSceneRootUC>(\n DragScaleSceneRootUC.type\n );\n }\n\n private get toolRepo() {\n return this.getCachedSingleton<ToolRepository>(ToolRepository.type);\n }\n\n allow = (e: TouchInputEvent): boolean => {\n const zoomTool = this.toolRepo?.getTool(\"ZOOM\");\n if (!zoomTool) return false;\n\n const zoomToolIsActive = zoomTool.state === ToolState.ACTIVE;\n\n if (e.touches.length === 1 && zoomToolIsActive) {\n return true;\n }\n\n return false;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n this.isScaling = false;\n\n if (e.touches.length !== 1) {\n return;\n }\n\n if (!this.allow(e)) {\n return;\n }\n\n const pixelPosition = e.touches[0].position;\n this.dragScaleRootUC?.initializeScale(pixelPosition);\n\n this.isScaling = true;\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (!this.isScaling) return;\n if (e.touches.length !== 1) return;\n\n const pixelPosition = e.touches[0].position;\n this.dragScaleRootUC?.doScale(pixelPosition);\n };\n\n onTouchEnd = () => {\n this.isScaling = false;\n this.dragScaleRootUC?.finishScaling();\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchScale.type);\n const appObjects = appObject.appObjectRepo;\n\n const touchInput = TouchInputEntity.get(appObjects);\n if (touchInput) {\n touchInput.registerController(this);\n } else {\n this.warn(\"Unable to find TouchInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MouseHoverOnAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/MouseHoverOnAppObject.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,2CAAgD;AAChD,iDAI0B;AAC1B,qEAAkE;AAClE,6DAA0D;AAE1D,MAAa,qBACX,SAAQ,0BAAmB;IAsB3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAjBvC,iBAAY,GAA6B,SAAS,CAAC;QAE3D,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAC1B,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO;gBAAE,OAAO;YAE3D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,MAAM,GAAG,GAAG,IAAA,yBAAe,EAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC,CAAC;QAIA,IAAI,CAAC,YAAY,GAAG,2BAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,YAAY,CACnC,mCAAgB,CAAC,IAAI,CACtB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CACV,wIAAwI,CACzI,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,6BAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AA3CH,sDA4CC;AAxCiB,0BAAI,GAAG,uBAAuB,AAA1B,CAA2B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n MouseController,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ZSpaceEntity } from \"../../zSpace/Entities/ZSpaceEntity\";\nimport { HoverAppObjectUC } from \"../UC/HoverAppObjectUC\";\n\nexport class MouseHoverOnAppObject\n extends AppObjectController\n implements MouseController\n{\n static readonly type = \"MouseHoverOnAppObject\";\n\n private hoverUC?: HoverAppObjectUC;\n private zSpaceEntity: ZSpaceEntity | undefined = undefined;\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.hoverUC) return;\n if (this.zSpaceEntity && this.zSpaceEntity.emulate) return;\n\n if (!this.allow(e)) return;\n\n const ray = pixelToSceneRay(e.position, this.appObjects);\n this.hoverUC.tryHoverAppObject(ray);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseHoverOnAppObject.type);\n this.zSpaceEntity = ZSpaceEntity.get(this.appObjects);\n\n this.hoverUC = appObject.getComponent<HoverAppObjectUC>(\n HoverAppObjectUC.type,\n );\n if (!this.hoverUC) {\n console.warn(\n \"MouseHover has been added to an App Object that does not have a HoverAppObjectUC. Add an HoverAppObjectUC before adding the Controller\",\n );\n return;\n }\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"MouseHoverOnAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/MouseHoverOnAppObject.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,2CAAgD;AAChD,iDAI0B;AAC1B,qEAAkE;AAClE,6DAA0D;AAE1D,MAAa,qBACX,SAAQ,0BAAmB;IAsB3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAjBvC,iBAAY,GAA6B,SAAS,CAAC;QAE3D,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,WAAM,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAC1B,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO;gBAAE,OAAO;YAE3D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,MAAM,GAAG,GAAG,IAAA,yBAAe,EAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC,CAAC;QAIA,IAAI,CAAC,YAAY,GAAG,2BAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,YAAY,CACnC,mCAAgB,CAAC,IAAI,CACtB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CACV,wIAAwI,CACzI,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,6BAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AA3CH,sDA4CC;AAxCiB,0BAAI,GAAG,uBAAuB,AAA1B,CAA2B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ZSpaceEntity } from \"../../zSpace/Entities/ZSpaceEntity\";\nimport { HoverAppObjectUC } from \"../UC/HoverAppObjectUC\";\n\nexport class MouseHoverOnAppObject\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MouseHoverOnAppObject\";\n\n private hoverUC?: HoverAppObjectUC;\n private zSpaceEntity: ZSpaceEntity | undefined = undefined;\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.hoverUC) return;\n if (this.zSpaceEntity && this.zSpaceEntity.emulate) return;\n\n if (!this.allow(e)) return;\n\n const ray = pixelToSceneRay(e.position, this.appObjects);\n this.hoverUC.tryHoverAppObject(ray);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseHoverOnAppObject.type);\n this.zSpaceEntity = ZSpaceEntity.get(this.appObjects);\n\n this.hoverUC = appObject.getComponent<HoverAppObjectUC>(\n HoverAppObjectUC.type\n );\n if (!this.hoverUC) {\n console.warn(\n \"MouseHover has been added to an App Object that does not have a HoverAppObjectUC. Add an HoverAppObjectUC before adding the Controller\"\n );\n return;\n }\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MousePressOnAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/MousePressOnAppObject.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectController, Vector2 } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n MouseController,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ZSpaceEntity } from \"../../zSpace/Entities/ZSpaceEntity\";\nimport { PressAppObjectUC } from \"../UC/PressAppObjectUC\";\n\nexport class MousePressOnAppObject\n extends AppObjectController\n implements MouseController\n{\n static readonly type = \"MousePressOnAppObject\";\n static readonly maxTapDistancePx = 5;\n\n private pressUC?: PressAppObjectUC;\n private zSpaceEntity: ZSpaceEntity | undefined = undefined;\n private startPosition: Vector2 = Vector2.Zero();\n private endPosition: Vector2 = Vector2.Zero();\n private pressedID: string | null = null;\n private isPressed: boolean = false;\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n onDown = (e: MouseInputEvent) => {\n if (e.button !== 0) {\n return;\n }\n\n if (!this.pressUC) {\n return;\n }\n\n if (this.zSpaceEntity && this.zSpaceEntity.emulate) return;\n\n if (!this.allow(e)) return;\n\n this.startPosition = e.position as Vector2;\n this.endPosition = this.startPosition;\n this.isPressed = true;\n\n const ray = pixelToSceneRay(e.position, this.appObjects);\n this.pressedID = this.pressUC?.tryPressAppObject(ray);\n };\n\n onUp = (e: MouseInputEvent) => {\n this.isPressed = false;\n\n if (e.button !== 0) {\n return;\n }\n\n if (!this.pressUC) {\n return;\n }\n\n // Set pressedID to null\n this.pressUC.pressAppObject(this.pressedID, this.isPressed);\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.pressUC) {\n return;\n }\n\n if (this.isPressed) {\n this.endPosition = e.position as Vector2;\n\n const movement = Vector2.Subtract(\n this.startPosition,\n this.endPosition,\n ).magnitued;\n\n if (movement > MousePressOnAppObject.maxTapDistancePx) {\n // Set pressedID to null\n this.pressUC.pressAppObject(null, this.isPressed);\n }\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MousePressOnAppObject.type);\n this.zSpaceEntity = ZSpaceEntity.get(this.appObjects);\n\n this.pressUC = appObject.getComponent<PressAppObjectUC>(\n PressAppObjectUC.type,\n );\n if (!this.pressUC) {\n console.warn(\n \"MousePress has been added to an App Object that does not have a PressAppObjectUC. Add a PressAppObjectUC before adding the Controller.\",\n );\n return;\n }\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"MousePressOnAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/MousePressOnAppObject.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectController, Vector2 } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ZSpaceEntity } from \"../../zSpace/Entities/ZSpaceEntity\";\nimport { PressAppObjectUC } from \"../UC/PressAppObjectUC\";\n\nexport class MousePressOnAppObject\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MousePressOnAppObject\";\n static readonly maxTapDistancePx = 5;\n\n private pressUC?: PressAppObjectUC;\n private zSpaceEntity: ZSpaceEntity | undefined = undefined;\n private startPosition: Vector2 = Vector2.Zero();\n private endPosition: Vector2 = Vector2.Zero();\n private pressedID: string | null = null;\n private isPressed: boolean = false;\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n onDown = (e: MouseInputEvent) => {\n if (e.button !== 0) {\n return;\n }\n\n if (!this.pressUC) {\n return;\n }\n\n if (this.zSpaceEntity && this.zSpaceEntity.emulate) return;\n\n if (!this.allow(e)) return;\n\n this.startPosition = e.position as Vector2;\n this.endPosition = this.startPosition;\n this.isPressed = true;\n\n const ray = pixelToSceneRay(e.position, this.appObjects);\n this.pressedID = this.pressUC?.tryPressAppObject(ray);\n };\n\n onUp = (e: MouseInputEvent) => {\n this.isPressed = false;\n\n if (e.button !== 0) {\n return;\n }\n\n if (!this.pressUC) {\n return;\n }\n\n // Set pressedID to null\n this.pressUC.pressAppObject(this.pressedID, this.isPressed);\n };\n\n onMove = (e: MouseInputEvent) => {\n if (!this.pressUC) {\n return;\n }\n\n if (this.isPressed) {\n this.endPosition = e.position as Vector2;\n\n const movement = Vector2.Subtract(\n this.startPosition,\n this.endPosition\n ).magnitued;\n\n if (movement > MousePressOnAppObject.maxTapDistancePx) {\n // Set pressedID to null\n this.pressUC.pressAppObject(null, this.isPressed);\n }\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MousePressOnAppObject.type);\n this.zSpaceEntity = ZSpaceEntity.get(this.appObjects);\n\n this.pressUC = appObject.getComponent<PressAppObjectUC>(\n PressAppObjectUC.type\n );\n if (!this.pressUC) {\n console.warn(\n \"MousePress has been added to an App Object that does not have a PressAppObjectUC. Add a PressAppObjectUC before adding the Controller.\"\n );\n return;\n }\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MouseSelectAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/MouseSelectAppObject.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,2CAAgD;AAChD,iDAI0B;AAC1B,qEAAkE;AAClE,+DAA4D;AAE5D,MAAa,oBACX,SAAQ,0BAAmB;IA6B3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAxBtC,iBAAY,GAA6B,SAAS,CAAC;QAE3D,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,YAAO,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO;gBAAE,OAAO;YAE3D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,MAAM,GAAG,GAAG,IAAA,yBAAe,EAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC,CAAC;QAIA,IAAI,CAAC,YAAY,GAAG,2BAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,YAAY,CACpC,qCAAiB,CAAC,IAAI,CACvB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CACV,2IAA2I,CAC5I,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,6BAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AAlDH,oDAmDC;AA/CiB,yBAAI,GAAG,sBAAsB,AAAzB,CAA0B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n MouseController,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ZSpaceEntity } from \"../../zSpace/Entities/ZSpaceEntity\";\nimport { SelectAppObjectUC } from \"../UC/SelectAppObjectUC\";\n\nexport class MouseSelectAppObject\n extends AppObjectController\n implements MouseController\n{\n static readonly type = \"MouseSelectAppObject\";\n\n private selectUC?: SelectAppObjectUC;\n private zSpaceEntity: ZSpaceEntity | undefined = undefined;\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n onClick = (e: MouseInputEvent) => {\n if (!this.selectUC) {\n return;\n }\n\n if (e.button !== 0) {\n return;\n }\n\n if (this.zSpaceEntity && this.zSpaceEntity.emulate) return;\n\n if (!this.allow(e)) return;\n\n const ray = pixelToSceneRay(e.position, this.appObjects);\n this.selectUC.trySelectAppObject(ray);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseSelectAppObject.type);\n this.zSpaceEntity = ZSpaceEntity.get(this.appObjects);\n\n this.selectUC = appObject.getComponent<SelectAppObjectUC>(\n SelectAppObjectUC.type,\n );\n if (!this.selectUC) {\n console.warn(\n \"MouseSelect has been added to an App Object that does not have a SelectAppObjectUC. Add a SelectAppObjectUC before adding the Controller.\",\n );\n return;\n }\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"MouseSelectAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/MouseSelectAppObject.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,2CAAgD;AAChD,iDAI0B;AAC1B,qEAAkE;AAClE,+DAA4D;AAE5D,MAAa,oBACX,SAAQ,0BAAmB;IA6B3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAxBtC,iBAAY,GAA6B,SAAS,CAAC;QAE3D,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,YAAO,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO;gBAAE,OAAO;YAE3D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO;YAE3B,MAAM,GAAG,GAAG,IAAA,yBAAe,EAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC,CAAC;QAIA,IAAI,CAAC,YAAY,GAAG,2BAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtD,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,YAAY,CACpC,qCAAiB,CAAC,IAAI,CACvB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CACV,2IAA2I,CAC5I,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,6BAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AAlDH,oDAmDC;AA/CiB,yBAAI,GAAG,sBAAsB,AAAzB,CAA0B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { ZSpaceEntity } from \"../../zSpace/Entities/ZSpaceEntity\";\nimport { SelectAppObjectUC } from \"../UC/SelectAppObjectUC\";\n\nexport class MouseSelectAppObject\n extends AppObjectController\n implements MouseEventHandler\n{\n static readonly type = \"MouseSelectAppObject\";\n\n private selectUC?: SelectAppObjectUC;\n private zSpaceEntity: ZSpaceEntity | undefined = undefined;\n\n allow = (e: MouseInputEvent): boolean => {\n return true;\n };\n\n onClick = (e: MouseInputEvent) => {\n if (!this.selectUC) {\n return;\n }\n\n if (e.button !== 0) {\n return;\n }\n\n if (this.zSpaceEntity && this.zSpaceEntity.emulate) return;\n\n if (!this.allow(e)) return;\n\n const ray = pixelToSceneRay(e.position, this.appObjects);\n this.selectUC.trySelectAppObject(ray);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, MouseSelectAppObject.type);\n this.zSpaceEntity = ZSpaceEntity.get(this.appObjects);\n\n this.selectUC = appObject.getComponent<SelectAppObjectUC>(\n SelectAppObjectUC.type\n );\n if (!this.selectUC) {\n console.warn(\n \"MouseSelect has been added to an App Object that does not have a SelectAppObjectUC. Add a SelectAppObjectUC before adding the Controller.\"\n );\n return;\n }\n\n const mouseInput = MouseInputEntity.get(this.appObjects);\n if (mouseInput) {\n mouseInput.registerController(this);\n } else {\n this.warn(\"Unable to find MouseInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"StylusHoverOnAppObjectSC.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/StylusHoverOnAppObjectSC.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,yCAA8D;AAC9D,6DAA0D;AAE1D,MAAa,wBACX,SAAQ,0BAAmB;IAuB3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAjBlD,UAAK,GAAG,GAAY,EAAE;YACpB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEzB,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAE1B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBAAE,OAAO;YAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAEvC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC,CAAC;QAKA,IAAI,CAAC,MAAM,GAAG,qBAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,YAAY,CACnC,mCAAgB,CAAC,IAAI,CACtB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CACV,uGAAuG,CACxG,CAAC;QACJ,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CACV,2EAA2E,CAC5E,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;;AAhDH,4DAiDC;AA7CiB,6BAAI,GAAG,0BAA0B,AAA7B,CAA8B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { StylusController, StylusEntity } from \"../../Stylus\";\nimport { HoverAppObjectUC } from \"../UC/HoverAppObjectUC\";\n\nexport class StylusHoverOnAppObjectSC\n extends AppObjectController\n implements StylusController\n{\n static readonly type = \"StylusHoverOnAppObjectSC\";\n private stylus?: StylusEntity;\n private hoverUC?: HoverAppObjectUC;\n\n allow = (): boolean => {\n return true;\n };\n\n onStylusMove = () => {\n if (!this.stylus) return;\n\n if (!this.hoverUC) return;\n\n if (!this.allow()) return;\n\n const pointerRay = this.stylus.pickRay;\n\n this.hoverUC.tryHoverAppObject(pointerRay);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StylusHoverOnAppObjectSC.type);\n\n this.stylus = StylusEntity.get(this.appObjects);\n if (!this.stylus) {\n this.warn(\"Unable to find StylusEntity\");\n return;\n }\n\n this.hoverUC = appObject.getComponent<HoverAppObjectUC>(\n HoverAppObjectUC.type,\n );\n\n if (!this.stylus) {\n console.warn(\n \"StylusInputPointer Controller has been added to an app object that does not have a ZSpaceStylusEntity\",\n );\n } else if (!this.hoverUC) {\n console.warn(\n \"HoverAppObjectUC has not been found on any objects in the app object repo\",\n );\n } else {\n this.stylus.registerController(this);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"StylusHoverOnAppObjectSC.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/StylusHoverOnAppObjectSC.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,yCAAgE;AAChE,6DAA0D;AAE1D,MAAa,wBACX,SAAQ,0BAAmB;IAuB3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAjBlD,UAAK,GAAG,GAAY,EAAE;YACpB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEzB,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAE1B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBAAE,OAAO;YAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAEvC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC,CAAC;QAKA,IAAI,CAAC,MAAM,GAAG,qBAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,YAAY,CACnC,mCAAgB,CAAC,IAAI,CACtB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CACV,uGAAuG,CACxG,CAAC;QACJ,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CACV,2EAA2E,CAC5E,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;;AAhDH,4DAiDC;AA7CiB,6BAAI,GAAG,0BAA0B,AAA7B,CAA8B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { StylusEventHandler, StylusEntity } from \"../../Stylus\";\nimport { HoverAppObjectUC } from \"../UC/HoverAppObjectUC\";\n\nexport class StylusHoverOnAppObjectSC\n extends AppObjectController\n implements StylusEventHandler\n{\n static readonly type = \"StylusHoverOnAppObjectSC\";\n private stylus?: StylusEntity;\n private hoverUC?: HoverAppObjectUC;\n\n allow = (): boolean => {\n return true;\n };\n\n onStylusMove = () => {\n if (!this.stylus) return;\n\n if (!this.hoverUC) return;\n\n if (!this.allow()) return;\n\n const pointerRay = this.stylus.pickRay;\n\n this.hoverUC.tryHoverAppObject(pointerRay);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StylusHoverOnAppObjectSC.type);\n\n this.stylus = StylusEntity.get(this.appObjects);\n if (!this.stylus) {\n this.warn(\"Unable to find StylusEntity\");\n return;\n }\n\n this.hoverUC = appObject.getComponent<HoverAppObjectUC>(\n HoverAppObjectUC.type\n );\n\n if (!this.stylus) {\n console.warn(\n \"StylusInputPointer Controller has been added to an app object that does not have a ZSpaceStylusEntity\"\n );\n } else if (!this.hoverUC) {\n console.warn(\n \"HoverAppObjectUC has not been found on any objects in the app object repo\"\n );\n } else {\n this.stylus.registerController(this);\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"StylusPressOnAppObjectSC.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/StylusPressOnAppObjectSC.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectController, Vector3 } from \"@vived/core\";\nimport { StylusController, StylusEntity } from \"../../Stylus\";\nimport { PressAppObjectUC } from \"../UC/PressAppObjectUC\";\n\nexport class StylusPressOnAppObjectSC\n extends AppObjectController\n implements StylusController\n{\n static readonly type = \"StylusPressOnAppObjectSC\";\n static readonly maxTapDistancePx = 5;\n\n private stylus?: StylusEntity;\n private pressUC?: PressAppObjectUC;\n private startPosition: Vector3 = Vector3.Zero();\n private endPosition: Vector3 = Vector3.Zero();\n private pressedID: string | null = null;\n private isPressed: boolean = false;\n\n allow = (button: number): boolean => {\n return true;\n };\n\n onButtonDown = (button: number) => {\n if (!this.stylus) return;\n if (!this.pressUC) return;\n\n if (!this.allow(button)) return;\n\n this.startPosition = this.stylus.transform.localPosition as Vector3;\n this.endPosition = this.startPosition;\n this.isPressed = true;\n\n this.pressedID = this.pressUC?.tryPressAppObject(this.stylus.pickRay);\n };\n\n onButtonUp = (button: number) => {\n this.isPressed = false;\n\n if (button !== 0) return;\n\n if (!this.pressUC) return;\n\n // Set pressedID to null\n this.pressUC.pressAppObject(this.pressedID, this.isPressed);\n };\n\n onStylusMove = () => {\n if (!this.pressUC) {\n return;\n }\n\n if (this.isPressed) {\n this.endPosition = this.stylus?.transform.localPosition as Vector3;\n\n const movement = Vector3.Subtract(\n this.startPosition,\n this.endPosition,\n ).magnitude;\n\n if (movement > StylusPressOnAppObjectSC.maxTapDistancePx) {\n // Set pressedID to null\n this.pressUC.pressAppObject(null, this.isPressed);\n }\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StylusPressOnAppObjectSC.type);\n\n this.stylus = StylusEntity.get(this.appObjects);\n if (!this.stylus) {\n this.error(\"Unable to find StylusEntity\");\n return;\n }\n\n this.pressUC = appObject.getComponent<PressAppObjectUC>(\n PressAppObjectUC.type,\n );\n\n if (!this.pressUC) {\n this.error(\"Unable to get PressAppObjectUC from the App Object\");\n return;\n }\n\n this.stylus.registerController(this);\n }\n}\n"]}
1
+ {"version":3,"file":"StylusPressOnAppObjectSC.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/StylusPressOnAppObjectSC.ts"],"names":[],"mappings":";;;AAAA,sCAAsE;AACtE,yCAAgE;AAChE,6DAA0D;AAE1D,MAAa,wBACX,SAAQ,0BAAmB;IA6D3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAtD1C,kBAAa,GAAY,cAAO,CAAC,IAAI,EAAE,CAAC;QACxC,gBAAW,GAAY,cAAO,CAAC,IAAI,EAAE,CAAC;QACtC,cAAS,GAAkB,IAAI,CAAC;QAChC,cAAS,GAAY,KAAK,CAAC;QAEnC,UAAK,GAAG,CAAC,MAAc,EAAW,EAAE;YAClC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,MAAc,EAAE,EAAE;YAChC,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAE1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAAE,OAAO;YAEhC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAwB,CAAC;YACpE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC;YACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxE,CAAC,CAAC;QAEF,eAAU,GAAG,CAAC,MAAc,EAAE,EAAE;YAC9B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEzB,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAE1B,wBAAwB;YACxB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9D,CAAC,CAAC;QAEF,iBAAY,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO;YACT,CAAC;YAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,aAAwB,CAAC;gBAEnE,MAAM,QAAQ,GAAG,cAAO,CAAC,QAAQ,CAC/B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,WAAW,CACjB,CAAC,SAAS,CAAC;gBAEZ,IAAI,QAAQ,GAAG,wBAAwB,CAAC,gBAAgB,EAAE,CAAC;oBACzD,wBAAwB;oBACxB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAKA,IAAI,CAAC,MAAM,GAAG,qBAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,YAAY,CACnC,mCAAgB,CAAC,IAAI,CACtB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;;AAjFH,4DAkFC;AA9EiB,6BAAI,GAAG,0BAA0B,AAA7B,CAA8B;AAClC,yCAAgB,GAAG,CAAC,AAAJ,CAAK","sourcesContent":["import { AppObject, AppObjectController, Vector3 } from \"@vived/core\";\nimport { StylusEventHandler, StylusEntity } from \"../../Stylus\";\nimport { PressAppObjectUC } from \"../UC/PressAppObjectUC\";\n\nexport class StylusPressOnAppObjectSC\n extends AppObjectController\n implements StylusEventHandler\n{\n static readonly type = \"StylusPressOnAppObjectSC\";\n static readonly maxTapDistancePx = 5;\n\n private stylus?: StylusEntity;\n private pressUC?: PressAppObjectUC;\n private startPosition: Vector3 = Vector3.Zero();\n private endPosition: Vector3 = Vector3.Zero();\n private pressedID: string | null = null;\n private isPressed: boolean = false;\n\n allow = (button: number): boolean => {\n return true;\n };\n\n onButtonDown = (button: number) => {\n if (!this.stylus) return;\n if (!this.pressUC) return;\n\n if (!this.allow(button)) return;\n\n this.startPosition = this.stylus.transform.localPosition as Vector3;\n this.endPosition = this.startPosition;\n this.isPressed = true;\n\n this.pressedID = this.pressUC?.tryPressAppObject(this.stylus.pickRay);\n };\n\n onButtonUp = (button: number) => {\n this.isPressed = false;\n\n if (button !== 0) return;\n\n if (!this.pressUC) return;\n\n // Set pressedID to null\n this.pressUC.pressAppObject(this.pressedID, this.isPressed);\n };\n\n onStylusMove = () => {\n if (!this.pressUC) {\n return;\n }\n\n if (this.isPressed) {\n this.endPosition = this.stylus?.transform.localPosition as Vector3;\n\n const movement = Vector3.Subtract(\n this.startPosition,\n this.endPosition\n ).magnitude;\n\n if (movement > StylusPressOnAppObjectSC.maxTapDistancePx) {\n // Set pressedID to null\n this.pressUC.pressAppObject(null, this.isPressed);\n }\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StylusPressOnAppObjectSC.type);\n\n this.stylus = StylusEntity.get(this.appObjects);\n if (!this.stylus) {\n this.error(\"Unable to find StylusEntity\");\n return;\n }\n\n this.pressUC = appObject.getComponent<PressAppObjectUC>(\n PressAppObjectUC.type\n );\n\n if (!this.pressUC) {\n this.error(\"Unable to get PressAppObjectUC from the App Object\");\n return;\n }\n\n this.stylus.registerController(this);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"StylusSelectAppObjectSC.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/StylusSelectAppObjectSC.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,yCAA8D;AAC9D,8BAA0C;AAE1C,MAAa,uBACX,SAAQ,0BAAmB;IAyB3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAnBjD,UAAK,GAAG,GAAY,EAAE;YACpB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,kBAAa,GAAG,CAAC,MAAc,EAAE,EAAE;YACjC,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEzB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEzB,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAE3B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBAAE,OAAO;YAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAEvC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC,CAAC;QAKA,IAAI,CAAC,MAAM,GAAG,qBAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,YAAY,CACpC,sBAAiB,CAAC,IAAI,CACvB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;;AA5CH,0DA6CC;AAzCiB,4BAAI,GAAG,yBAAyB,AAA5B,CAA6B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { StylusController, StylusEntity } from \"../../Stylus\";\nimport { SelectAppObjectUC } from \"../UC\";\n\nexport class StylusSelectAppObjectSC\n extends AppObjectController\n implements StylusController\n{\n static readonly type = \"StylusSelectAppObjectSC\";\n private stylus?: StylusEntity;\n private selectUC?: SelectAppObjectUC;\n\n allow = (): boolean => {\n return true;\n };\n\n onButtonClick = (button: number) => {\n if (button !== 0) return;\n\n if (!this.stylus) return;\n\n if (!this.selectUC) return;\n\n if (!this.allow()) return;\n\n const pointerRay = this.stylus.pickRay;\n\n this.selectUC.trySelectAppObject(pointerRay);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StylusSelectAppObjectSC.type);\n\n this.stylus = StylusEntity.get(this.appObjects);\n if (!this.stylus) {\n this.error(\"Unable to find StylusEntity\");\n return;\n }\n\n this.selectUC = appObject.getComponent<SelectAppObjectUC>(\n SelectAppObjectUC.type,\n );\n\n if (!this.selectUC) {\n this.error(\"Added to an App Object that does not have SelectAppObjectUC\");\n return;\n }\n this.stylus.registerController(this);\n }\n}\n"]}
1
+ {"version":3,"file":"StylusSelectAppObjectSC.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/StylusSelectAppObjectSC.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,yCAAgE;AAChE,8BAA0C;AAE1C,MAAa,uBACX,SAAQ,0BAAmB;IAyB3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAnBjD,UAAK,GAAG,GAAY,EAAE;YACpB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,kBAAa,GAAG,CAAC,MAAc,EAAE,EAAE;YACjC,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEzB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEzB,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAE3B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBAAE,OAAO;YAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAEvC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC,CAAC;QAKA,IAAI,CAAC,MAAM,GAAG,qBAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,YAAY,CACpC,sBAAiB,CAAC,IAAI,CACvB,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;;AA5CH,0DA6CC;AAzCiB,4BAAI,GAAG,yBAAyB,AAA5B,CAA6B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { StylusEventHandler, StylusEntity } from \"../../Stylus\";\nimport { SelectAppObjectUC } from \"../UC\";\n\nexport class StylusSelectAppObjectSC\n extends AppObjectController\n implements StylusEventHandler\n{\n static readonly type = \"StylusSelectAppObjectSC\";\n private stylus?: StylusEntity;\n private selectUC?: SelectAppObjectUC;\n\n allow = (): boolean => {\n return true;\n };\n\n onButtonClick = (button: number) => {\n if (button !== 0) return;\n\n if (!this.stylus) return;\n\n if (!this.selectUC) return;\n\n if (!this.allow()) return;\n\n const pointerRay = this.stylus.pickRay;\n\n this.selectUC.trySelectAppObject(pointerRay);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, StylusSelectAppObjectSC.type);\n\n this.stylus = StylusEntity.get(this.appObjects);\n if (!this.stylus) {\n this.error(\"Unable to find StylusEntity\");\n return;\n }\n\n this.selectUC = appObject.getComponent<SelectAppObjectUC>(\n SelectAppObjectUC.type\n );\n\n if (!this.selectUC) {\n this.error(\"Added to an App Object that does not have SelectAppObjectUC\");\n return;\n }\n this.stylus.registerController(this);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TapToSelectAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/TapToSelectAppObject.ts"],"names":[],"mappings":";;;AAAA,sCAAsE;AACtE,2CAAgD;AAChD,2DAI+B;AAC/B,+DAA4D;AAE5D,MAAa,oBACX,SAAQ,0BAAmB;IA2D3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QArDtC,kBAAa,GAAY,cAAO,CAAC,IAAI,EAAE,CAAC;QACxC,gBAAW,GAAY,cAAO,CAAC,IAAI,EAAE,CAAC;QACtC,eAAU,GAAY,KAAK,CAAC;QAEpC,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,CAAkB,EAAE,EAAE;YACpC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAmB,CAAC;YACtD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC;YACtC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAmB,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,MAAM,QAAQ,GAAG,cAAO,CAAC,QAAQ,CAC/B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,WAAW,CACjB,CAAC,SAAS,CAAC;YAEZ,IAAI,QAAQ,IAAI,oBAAoB,CAAC,gBAAgB,EAAE,CAAC;gBACtD,MAAM,GAAG,GAAG,IAAA,yBAAe,EAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC/D,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC;QAKA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,YAAY,CACpC,qCAAiB,CAAC,IAAI,CACvB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CACV,2IAA2I,CAC5I,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,kCAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AA/EH,oDAgFC;AA5EiB,yBAAI,GAAG,sBAAsB,AAAzB,CAA0B;AAC9B,qCAAgB,GAAG,CAAC,AAAJ,CAAK","sourcesContent":["import { AppObject, AppObjectController, Vector2 } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n TouchController,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { SelectAppObjectUC } from \"../UC/SelectAppObjectUC\";\n\nexport class TapToSelectAppObject\n extends AppObjectController\n implements TouchController\n{\n static readonly type = \"TapToSelectAppObject\";\n static readonly maxTapDistancePx = 5;\n\n private selectUC?: SelectAppObjectUC;\n private startPosition: Vector2 = Vector2.Zero();\n private endPosition: Vector2 = Vector2.Zero();\n private doTouchEnd: boolean = false;\n\n allow = (e: TouchInputEvent): boolean => {\n return true;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n this.doTouchEnd = false;\n\n if (e.touches.length !== 1) {\n return;\n }\n\n if (!this.allow(e)) {\n return;\n }\n\n this.startPosition = e.touches[0].position as Vector2;\n this.endPosition = this.startPosition;\n this.doTouchEnd = true;\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (e.touches.length === 1) {\n this.endPosition = e.touches[0].position as Vector2;\n } else {\n this.doTouchEnd = false;\n }\n };\n\n onTouchEnd = () => {\n if (!this.doTouchEnd) {\n return;\n }\n\n if (!this.selectUC) {\n return;\n }\n\n const movement = Vector2.Subtract(\n this.startPosition,\n this.endPosition,\n ).magnitued;\n\n if (movement <= TapToSelectAppObject.maxTapDistancePx) {\n const ray = pixelToSceneRay(this.endPosition, this.appObjects);\n this.selectUC?.trySelectAppObject(ray);\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TapToSelectAppObject.type);\n\n this.selectUC = appObject.getComponent<SelectAppObjectUC>(\n SelectAppObjectUC.type,\n );\n if (!this.selectUC) {\n console.warn(\n \"MouseSelect has been added to an App Object that does not have a SelectAppObjectUC. Add a SelectAppObjectUC before adding the Controller.\",\n );\n return;\n }\n\n const touchInput = TouchInputEntity.get(this.appObjects);\n if (touchInput) {\n touchInput.registerController(this);\n } else {\n this.warn(\"Unable to find TouchInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"TapToSelectAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/TapToSelectAppObject.ts"],"names":[],"mappings":";;;AAAA,sCAAsE;AACtE,2CAAgD;AAChD,2DAI+B;AAC/B,+DAA4D;AAE5D,MAAa,oBACX,SAAQ,0BAAmB;IA2D3B,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QArDtC,kBAAa,GAAY,cAAO,CAAC,IAAI,EAAE,CAAC;QACxC,gBAAW,GAAY,cAAO,CAAC,IAAI,EAAE,CAAC;QACtC,eAAU,GAAY,KAAK,CAAC;QAEpC,UAAK,GAAG,CAAC,CAAkB,EAAW,EAAE;YACtC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,iBAAY,GAAG,CAAC,CAAkB,EAAE,EAAE;YACpC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAmB,CAAC;YACtD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC;YACtC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC;QAEF,gBAAW,GAAG,CAAC,CAAkB,EAAE,EAAE;YACnC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAmB,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC;QAEF,eAAU,GAAG,GAAG,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YAED,MAAM,QAAQ,GAAG,cAAO,CAAC,QAAQ,CAC/B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,WAAW,CACjB,CAAC,SAAS,CAAC;YAEZ,IAAI,QAAQ,IAAI,oBAAoB,CAAC,gBAAgB,EAAE,CAAC;gBACtD,MAAM,GAAG,GAAG,IAAA,yBAAe,EAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC/D,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC;QAKA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,YAAY,CACpC,qCAAiB,CAAC,IAAI,CACvB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CACV,2IAA2I,CAC5I,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,kCAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;;AA/EH,oDAgFC;AA5EiB,yBAAI,GAAG,sBAAsB,AAAzB,CAA0B;AAC9B,qCAAgB,GAAG,CAAC,AAAJ,CAAK","sourcesContent":["import { AppObject, AppObjectController, Vector2 } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { SelectAppObjectUC } from \"../UC/SelectAppObjectUC\";\n\nexport class TapToSelectAppObject\n extends AppObjectController\n implements TouchEventHandler\n{\n static readonly type = \"TapToSelectAppObject\";\n static readonly maxTapDistancePx = 5;\n\n private selectUC?: SelectAppObjectUC;\n private startPosition: Vector2 = Vector2.Zero();\n private endPosition: Vector2 = Vector2.Zero();\n private doTouchEnd: boolean = false;\n\n allow = (e: TouchInputEvent): boolean => {\n return true;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n this.doTouchEnd = false;\n\n if (e.touches.length !== 1) {\n return;\n }\n\n if (!this.allow(e)) {\n return;\n }\n\n this.startPosition = e.touches[0].position as Vector2;\n this.endPosition = this.startPosition;\n this.doTouchEnd = true;\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (e.touches.length === 1) {\n this.endPosition = e.touches[0].position as Vector2;\n } else {\n this.doTouchEnd = false;\n }\n };\n\n onTouchEnd = () => {\n if (!this.doTouchEnd) {\n return;\n }\n\n if (!this.selectUC) {\n return;\n }\n\n const movement = Vector2.Subtract(\n this.startPosition,\n this.endPosition\n ).magnitued;\n\n if (movement <= TapToSelectAppObject.maxTapDistancePx) {\n const ray = pixelToSceneRay(this.endPosition, this.appObjects);\n this.selectUC?.trySelectAppObject(ray);\n }\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TapToSelectAppObject.type);\n\n this.selectUC = appObject.getComponent<SelectAppObjectUC>(\n SelectAppObjectUC.type\n );\n if (!this.selectUC) {\n console.warn(\n \"MouseSelect has been added to an App Object that does not have a SelectAppObjectUC. Add a SelectAppObjectUC before adding the Controller.\"\n );\n return;\n }\n\n const touchInput = TouchInputEntity.get(this.appObjects);\n if (touchInput) {\n touchInput.registerController(this);\n } else {\n this.warn(\"Unable to find TouchInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"TouchPressOnAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/TouchPressOnAppObject.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectController, Vector2 } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n TouchController,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { PressAppObjectUC } from \"../UC/PressAppObjectUC\";\n\nexport class TouchPressOnAppObject\n extends AppObjectController\n implements TouchController\n{\n static readonly type = \"TouchPressOnAppObject\";\n static readonly maxTapDistancePx = 5;\n\n private pressUC?: PressAppObjectUC;\n private startPosition: Vector2 = Vector2.Zero();\n private endPosition: Vector2 = Vector2.Zero();\n private doTouchEnd: boolean = false;\n private pressedID: string | null = null;\n private isPressed: boolean = false;\n\n allow = (e: TouchInputEvent): boolean => {\n return true;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n this.doTouchEnd = false;\n this.isPressed = true;\n\n if (!this.pressUC) {\n return;\n }\n\n if (e.touches.length !== 1) {\n return;\n }\n\n if (!this.allow(e)) {\n return;\n }\n\n this.startPosition = e.touches[0].position as Vector2;\n this.endPosition = this.startPosition;\n this.doTouchEnd = true;\n\n const ray = pixelToSceneRay(this.endPosition, this.appObjects);\n this.pressedID = this.pressUC?.tryPressAppObject(ray);\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (e.touches.length === 1) {\n this.endPosition = e.touches[0].position as Vector2;\n\n const movement = Vector2.Subtract(\n this.startPosition,\n this.endPosition,\n ).magnitued;\n\n if (movement > TouchPressOnAppObject.maxTapDistancePx) {\n this.pressUC?.pressAppObject(null, true);\n }\n } else {\n this.pressUC?.pressAppObject(null, true);\n this.doTouchEnd = false;\n }\n };\n\n onTouchEnd = () => {\n if (!this.doTouchEnd) {\n return;\n }\n this.isPressed = false;\n\n this.pressUC?.pressAppObject(this.pressedID, this.isPressed);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchPressOnAppObject.type);\n\n this.pressUC = appObject.getComponent<PressAppObjectUC>(\n PressAppObjectUC.type,\n );\n if (!this.pressUC) {\n console.warn(\n \"TouchPress has been added to an App Object that does not have a PressAppObjectUC. Add a PressAppObjectUC before adding the Controller.\",\n );\n return;\n }\n\n const touchInput = TouchInputEntity.get(this.appObjects);\n if (touchInput) {\n touchInput.registerController(this);\n } else {\n this.warn(\"Unable to find TouchInputEntity\");\n }\n }\n}\n"]}
1
+ {"version":3,"file":"TouchPressOnAppObject.js","sourceRoot":"","sources":["../../../../src/Selection/Controller/TouchPressOnAppObject.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectController, Vector2 } from \"@vived/core\";\nimport { pixelToSceneRay } from \"../../Babylon\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { PressAppObjectUC } from \"../UC/PressAppObjectUC\";\n\nexport class TouchPressOnAppObject\n extends AppObjectController\n implements TouchEventHandler\n{\n static readonly type = \"TouchPressOnAppObject\";\n static readonly maxTapDistancePx = 5;\n\n private pressUC?: PressAppObjectUC;\n private startPosition: Vector2 = Vector2.Zero();\n private endPosition: Vector2 = Vector2.Zero();\n private doTouchEnd: boolean = false;\n private pressedID: string | null = null;\n private isPressed: boolean = false;\n\n allow = (e: TouchInputEvent): boolean => {\n return true;\n };\n\n onTouchStart = (e: TouchInputEvent) => {\n this.doTouchEnd = false;\n this.isPressed = true;\n\n if (!this.pressUC) {\n return;\n }\n\n if (e.touches.length !== 1) {\n return;\n }\n\n if (!this.allow(e)) {\n return;\n }\n\n this.startPosition = e.touches[0].position as Vector2;\n this.endPosition = this.startPosition;\n this.doTouchEnd = true;\n\n const ray = pixelToSceneRay(this.endPosition, this.appObjects);\n this.pressedID = this.pressUC?.tryPressAppObject(ray);\n };\n\n onTouchMove = (e: TouchInputEvent) => {\n if (e.touches.length === 1) {\n this.endPosition = e.touches[0].position as Vector2;\n\n const movement = Vector2.Subtract(\n this.startPosition,\n this.endPosition\n ).magnitued;\n\n if (movement > TouchPressOnAppObject.maxTapDistancePx) {\n this.pressUC?.pressAppObject(null, true);\n }\n } else {\n this.pressUC?.pressAppObject(null, true);\n this.doTouchEnd = false;\n }\n };\n\n onTouchEnd = () => {\n if (!this.doTouchEnd) {\n return;\n }\n this.isPressed = false;\n\n this.pressUC?.pressAppObject(this.pressedID, this.isPressed);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, TouchPressOnAppObject.type);\n\n this.pressUC = appObject.getComponent<PressAppObjectUC>(\n PressAppObjectUC.type\n );\n if (!this.pressUC) {\n console.warn(\n \"TouchPress has been added to an App Object that does not have a PressAppObjectUC. Add a PressAppObjectUC before adding the Controller.\"\n );\n return;\n }\n\n const touchInput = TouchInputEntity.get(this.appObjects);\n if (touchInput) {\n touchInput.registerController(this);\n } else {\n this.warn(\"Unable to find TouchInputEntity\");\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DoubleClickToStickMC.js","sourceRoot":"","sources":["../../../../src/Stick/Controllers/DoubleClickToStickMC.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,sCAAsC;AACtC,iDAI0B;AAC1B,oEAAiE;AAEjE,MAAa,oBACX,SAAQ,0BAAmB;IAY3B,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,6BAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,yCAAmB,CAAC,IAAI,CACzB,EAAE,YAAY,CAAC;IAClB,CAAC;IAyCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAzDrC,mBAAc,GAAG,GAAG,CAAC;QACrB,uBAAkB,GAAG,CAAC,CAAC;QAExB,oBAAe,GAAY,cAAO,CAAC,IAAI,EAAE,CAAC;QAC1C,qBAAgB,GAAW,CAAC,CAAC;QAC7B,eAAU,GAAG,CAAC,CAAC;QAYvB,YAAO,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YACtC,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,QAAQ,CAAC;gBAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrC,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,cAAO,CAAC,QAAQ,CAC/B,IAAI,CAAC,eAAe,EACpB,CAAC,CAAC,QAAQ,CACX,CAAC,SAAS,CAAC;gBAEZ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAEtD,IACE,UAAU,IAAI,IAAI,CAAC,cAAc;oBACjC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EACnC,CAAC;oBACD,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACrC,CAAC;gBAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC;QAEM,sBAAiB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,eAAe,GAAG,cAAO,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACtB,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;;AAjEH,oDAkEC;AA9DQ,yBAAI,GAAG,sBAAsB,AAAzB,CAA0B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport {\n MouseController,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { TryStickAppObjectUC } from \"../UCs/TryStickAppObjectUC\";\n\nexport class DoubleClickToStickMC\n extends AppObjectController\n implements MouseController\n{\n static type = \"DoubleClickToStickMC\";\n\n readonly maxClickTimeMS = 300;\n readonly maxClickDistancePx = 5;\n\n private initialClickPos: Vector2 = Vector2.Zero();\n private initialClickTime: number = 0;\n private clickCount = 0;\n\n private get mouseInput() {\n return this.getCachedSingleton<MouseInputEntity>(MouseInputEntity.type);\n }\n\n private get tryStickSceneMesh() {\n return this.getCachedSingleton<TryStickAppObjectUC>(\n TryStickAppObjectUC.type,\n )?.tryWithPixel;\n }\n\n onClick = (e: MouseInputEvent) => {\n if (!this.tryStickSceneMesh) {\n this.error(\"Missing Component\");\n return;\n }\n if (e.button !== 0) {\n this.cancelDoubleClick();\n return;\n }\n\n this.clickCount = 1 + this.clickCount;\n if (this.clickCount === 1) {\n this.initialClickPos = e.position;\n this.initialClickTime = Date.now();\n } else if (this.clickCount === 2) {\n const movement = Vector2.Subtract(\n this.initialClickPos,\n e.position,\n ).magnitued;\n\n const passedTime = Date.now() - this.initialClickTime;\n\n if (\n passedTime <= this.maxClickTimeMS &&\n movement <= this.maxClickDistancePx\n ) {\n this.tryStickSceneMesh(e.position);\n }\n\n this.cancelDoubleClick();\n }\n };\n\n private cancelDoubleClick = () => {\n this.initialClickPos = Vector2.Zero();\n this.initialClickTime = 0;\n this.clickCount = 0;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, DoubleClickToStickMC.type);\n this.mouseInput?.registerController(this);\n }\n}\n"]}
1
+ {"version":3,"file":"DoubleClickToStickMC.js","sourceRoot":"","sources":["../../../../src/Stick/Controllers/DoubleClickToStickMC.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,sCAAsC;AACtC,iDAI0B;AAC1B,oEAAiE;AAEjE,MAAa,oBACX,SAAQ,0BAAmB;IAY3B,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,6BAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,yCAAmB,CAAC,IAAI,CACzB,EAAE,YAAY,CAAC;IAClB,CAAC;IAyCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAzDrC,mBAAc,GAAG,GAAG,CAAC;QACrB,uBAAkB,GAAG,CAAC,CAAC;QAExB,oBAAe,GAAY,cAAO,CAAC,IAAI,EAAE,CAAC;QAC1C,qBAAgB,GAAW,CAAC,CAAC;QAC7B,eAAU,GAAG,CAAC,CAAC;QAYvB,YAAO,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,OAAO;YACT,CAAC;YAED,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YACtC,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,QAAQ,CAAC;gBAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrC,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,cAAO,CAAC,QAAQ,CAC/B,IAAI,CAAC,eAAe,EACpB,CAAC,CAAC,QAAQ,CACX,CAAC,SAAS,CAAC;gBAEZ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAEtD,IACE,UAAU,IAAI,IAAI,CAAC,cAAc;oBACjC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EACnC,CAAC;oBACD,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACrC,CAAC;gBAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC;QAEM,sBAAiB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,eAAe,GAAG,cAAO,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACtB,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;;AAjEH,oDAkEC;AA9DQ,yBAAI,GAAG,sBAAsB,AAAzB,CAA0B","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport {\n MouseEventHandler,\n MouseInputEntity,\n MouseInputEvent,\n} from \"../../MouseInput\";\nimport { TryStickAppObjectUC } from \"../UCs/TryStickAppObjectUC\";\n\nexport class DoubleClickToStickMC\n extends AppObjectController\n implements MouseEventHandler\n{\n static type = \"DoubleClickToStickMC\";\n\n readonly maxClickTimeMS = 300;\n readonly maxClickDistancePx = 5;\n\n private initialClickPos: Vector2 = Vector2.Zero();\n private initialClickTime: number = 0;\n private clickCount = 0;\n\n private get mouseInput() {\n return this.getCachedSingleton<MouseInputEntity>(MouseInputEntity.type);\n }\n\n private get tryStickSceneMesh() {\n return this.getCachedSingleton<TryStickAppObjectUC>(\n TryStickAppObjectUC.type\n )?.tryWithPixel;\n }\n\n onClick = (e: MouseInputEvent) => {\n if (!this.tryStickSceneMesh) {\n this.error(\"Missing Component\");\n return;\n }\n if (e.button !== 0) {\n this.cancelDoubleClick();\n return;\n }\n\n this.clickCount = 1 + this.clickCount;\n if (this.clickCount === 1) {\n this.initialClickPos = e.position;\n this.initialClickTime = Date.now();\n } else if (this.clickCount === 2) {\n const movement = Vector2.Subtract(\n this.initialClickPos,\n e.position\n ).magnitued;\n\n const passedTime = Date.now() - this.initialClickTime;\n\n if (\n passedTime <= this.maxClickTimeMS &&\n movement <= this.maxClickDistancePx\n ) {\n this.tryStickSceneMesh(e.position);\n }\n\n this.cancelDoubleClick();\n }\n };\n\n private cancelDoubleClick = () => {\n this.initialClickPos = Vector2.Zero();\n this.initialClickTime = 0;\n this.clickCount = 0;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, DoubleClickToStickMC.type);\n this.mouseInput?.registerController(this);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DoubleTapToStickTC.js","sourceRoot":"","sources":["../../../../src/Stick/Controllers/DoubleTapToStickTC.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,sCAAsC;AACtC,2DAI+B;AAC/B,oEAAiE;AAEjE,MAAa,kBACX,SAAQ,0BAAmB;IAY3B,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,kCAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,yCAAmB,CAAC,IAAI,CACzB,EAAE,YAAY,CAAC;IAClB,CAAC;IAkCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAlDnC,cAAS,GAAG,GAAG,CAAC;QAChB,qBAAgB,GAAG,EAAE,CAAC;QAEvB,oBAAe,GAAY,cAAO,CAAC,IAAI,EAAE,CAAC;QAC1C,qBAAgB,GAAW,CAAC,CAAC;QAC7B,aAAQ,GAAG,CAAC,CAAC;QAYrB,UAAK,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC;gBACrC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrC,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,cAAO,CAAC,QAAQ,CAC/B,IAAI,CAAC,eAAe,EACpB,CAAC,CAAC,WAAW,CACd,CAAC,SAAS,CAAC;gBAEZ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAEtD,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,IAAI,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBACxC,CAAC;gBAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,CAAC;QACH,CAAC,CAAC;QAEM,oBAAe,GAAG,GAAG,EAAE;YAC7B,IAAI,CAAC,eAAe,GAAG,cAAO,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;;AA1DH,gDA2DC;AAvDQ,uBAAI,GAAG,oBAAoB,AAAvB,CAAwB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport {\n TouchController,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { TryStickAppObjectUC } from \"../UCs/TryStickAppObjectUC\";\n\nexport class DoubleTapToStickTC\n extends AppObjectController\n implements TouchController\n{\n static type = \"DoubleTapToStickTC\";\n\n readonly tapTimeMS = 300;\n readonly maxTapDistancePx = 30;\n\n private initialTouchPos: Vector2 = Vector2.Zero();\n private initialTouchTime: number = 0;\n private tapCount = 0;\n\n private get touchInput() {\n return this.getCachedSingleton<TouchInputEntity>(TouchInputEntity.type);\n }\n\n private get tryStickSceneMesh() {\n return this.getCachedSingleton<TryStickAppObjectUC>(\n TryStickAppObjectUC.type,\n )?.tryWithPixel;\n }\n\n onTap = (e: TouchInputEvent) => {\n if (!this.tryStickSceneMesh) {\n this.error(\"Missing Component\");\n return;\n }\n\n this.tapCount = 1 + this.tapCount;\n if (this.tapCount === 1) {\n this.initialTouchPos = e.touchCenter;\n this.initialTouchTime = Date.now();\n } else if (this.tapCount === 2) {\n const movement = Vector2.Subtract(\n this.initialTouchPos,\n e.touchCenter,\n ).magnitued;\n\n const passedTime = Date.now() - this.initialTouchTime;\n\n if (passedTime <= this.tapTimeMS && movement <= this.maxTapDistancePx) {\n this.tryStickSceneMesh(e.touchCenter);\n }\n\n this.cancelDoubleTap();\n }\n };\n\n private cancelDoubleTap = () => {\n this.initialTouchPos = Vector2.Zero();\n this.initialTouchTime = 0;\n this.tapCount = 0;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, DoubleTapToStickTC.type);\n this.touchInput?.registerController(this);\n }\n}\n"]}
1
+ {"version":3,"file":"DoubleTapToStickTC.js","sourceRoot":"","sources":["../../../../src/Stick/Controllers/DoubleTapToStickTC.ts"],"names":[],"mappings":";;;AAAA,sCAA6D;AAC7D,sCAAsC;AACtC,2DAI+B;AAC/B,oEAAiE;AAEjE,MAAa,kBACX,SAAQ,0BAAmB;IAY3B,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,kBAAkB,CAAmB,kCAAgB,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,kBAAkB,CAC5B,yCAAmB,CAAC,IAAI,CACzB,EAAE,YAAY,CAAC;IAClB,CAAC;IAkCD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAlDnC,cAAS,GAAG,GAAG,CAAC;QAChB,qBAAgB,GAAG,EAAE,CAAC;QAEvB,oBAAe,GAAY,cAAO,CAAC,IAAI,EAAE,CAAC;QAC1C,qBAAgB,GAAW,CAAC,CAAC;QAC7B,aAAQ,GAAG,CAAC,CAAC;QAYrB,UAAK,GAAG,CAAC,CAAkB,EAAE,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC;gBACrC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrC,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,cAAO,CAAC,QAAQ,CAC/B,IAAI,CAAC,eAAe,EACpB,CAAC,CAAC,WAAW,CACd,CAAC,SAAS,CAAC;gBAEZ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAEtD,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,IAAI,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBACxC,CAAC;gBAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,CAAC;QACH,CAAC,CAAC;QAEM,oBAAe,GAAG,GAAG,EAAE;YAC7B,IAAI,CAAC,eAAe,GAAG,cAAO,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC;QAIA,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;;AA1DH,gDA2DC;AAvDQ,uBAAI,GAAG,oBAAoB,AAAvB,CAAwB","sourcesContent":["import { AppObject, AppObjectController } from \"@vived/core\";\nimport { Vector2 } from \"@vived/core\";\nimport {\n TouchEventHandler,\n TouchInputEntity,\n TouchInputEvent,\n} from \"../../TouchController\";\nimport { TryStickAppObjectUC } from \"../UCs/TryStickAppObjectUC\";\n\nexport class DoubleTapToStickTC\n extends AppObjectController\n implements TouchEventHandler\n{\n static type = \"DoubleTapToStickTC\";\n\n readonly tapTimeMS = 300;\n readonly maxTapDistancePx = 30;\n\n private initialTouchPos: Vector2 = Vector2.Zero();\n private initialTouchTime: number = 0;\n private tapCount = 0;\n\n private get touchInput() {\n return this.getCachedSingleton<TouchInputEntity>(TouchInputEntity.type);\n }\n\n private get tryStickSceneMesh() {\n return this.getCachedSingleton<TryStickAppObjectUC>(\n TryStickAppObjectUC.type\n )?.tryWithPixel;\n }\n\n onTap = (e: TouchInputEvent) => {\n if (!this.tryStickSceneMesh) {\n this.error(\"Missing Component\");\n return;\n }\n\n this.tapCount = 1 + this.tapCount;\n if (this.tapCount === 1) {\n this.initialTouchPos = e.touchCenter;\n this.initialTouchTime = Date.now();\n } else if (this.tapCount === 2) {\n const movement = Vector2.Subtract(\n this.initialTouchPos,\n e.touchCenter\n ).magnitued;\n\n const passedTime = Date.now() - this.initialTouchTime;\n\n if (passedTime <= this.tapTimeMS && movement <= this.maxTapDistancePx) {\n this.tryStickSceneMesh(e.touchCenter);\n }\n\n this.cancelDoubleTap();\n }\n };\n\n private cancelDoubleTap = () => {\n this.initialTouchPos = Vector2.Zero();\n this.initialTouchTime = 0;\n this.tapCount = 0;\n };\n\n constructor(appObject: AppObject) {\n super(appObject, DoubleTapToStickTC.type);\n this.touchInput?.registerController(this);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"StylusEntity.js","sourceRoot":"","sources":["../../../../src/Stylus/Entity/StylusEntity.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppObject,\n AppObjectEntity,\n AppObjectRepo,\n getSingletonComponent,\n Matrix,\n MemoizedBoolean,\n ParametricLine,\n Vector3,\n} from \"@vived/core\";\nimport { Transform3D } from \"../../Transform3D\";\n\nexport interface StylusController {\n onButtonDown?: (button: number) => void;\n onButtonUp?: (button: number) => void;\n onButtonClick?: (button: number) => void;\n onStylusMove?: (transform: Transform3D) => void;\n}\n\nexport abstract class StylusEntity extends AppObjectEntity {\n static readonly type = \"StylusEntity\";\n\n static clickMovementThreshold: number = 0.32;\n static clickTimeThresholdMS: number = 350;\n\n abstract registerController: (controller: StylusController) => void;\n abstract updateButtonState: (button: number, isPressed: boolean) => void;\n abstract getButtonState(button: number): boolean;\n\n abstract readonly transform: Transform3D;\n\n abstract get isInUse(): boolean;\n abstract get pickRay(): ParametricLine;\n\n static get(appObjects: AppObjectRepo): StylusEntity | undefined {\n return getSingletonComponent(StylusEntity.type, appObjects);\n }\n}\n\nexport function makeStylusEntity(appObj: AppObject): StylusEntity {\n return new StylusImp(appObj);\n}\n\nclass StylusImp extends StylusEntity {\n private controllers: StylusController[] = [];\n private buttonStates = [false, false, false];\n\n private lassPressedButton?: number;\n private pressPosition = Vector3.Zero();\n private pressTime = 0;\n\n registerController = (controller: StylusController): void => {\n this.controllers.push(controller);\n };\n\n updateButtonState = (button: number, isPressed: boolean): void => {\n if (this.buttonStates[button] === isPressed) return;\n\n this.controllers.forEach((controller) => {\n if (isPressed) {\n if (controller.onButtonDown) {\n controller.onButtonDown(button);\n }\n this.lassPressedButton = button;\n this.pressPosition = this.transform.localPosition;\n this.pressTime = Date.now();\n } else {\n if (controller.onButtonUp) {\n controller.onButtonUp(button);\n }\n\n if (this.isClick(button) && controller.onButtonClick) {\n controller.onButtonClick(button);\n }\n }\n });\n\n this.buttonStates[button] = isPressed;\n this.notifyOnChange();\n };\n\n getButtonState = (button: number): boolean => {\n if (button < 0 || button >= this.buttonStates.length) {\n return false;\n } else {\n return this.buttonStates[button];\n }\n };\n\n private isClick = (button: number): boolean => {\n const buttonIsCorrect = button === this.lassPressedButton;\n\n const movement = Vector3.Subtract(\n this.transform.localPosition,\n this.pressPosition,\n ).magnitude;\n const movementIsSmallEnough =\n movement < StylusEntity.clickMovementThreshold;\n\n const passedTime = Date.now() - this.pressTime;\n const pressTimeIsShortEnough =\n passedTime < StylusEntity.clickTimeThresholdMS;\n\n if (buttonIsCorrect && movementIsSmallEnough && pressTimeIsShortEnough) {\n return true;\n } else {\n return false;\n }\n };\n\n readonly transform: Transform3D;\n\n private onTransformUpdate = () => {\n this.checkIfStylusIsInUse(this.transform.worldMatrix);\n\n this.controllers.forEach((controller) => {\n if (controller.onStylusMove) {\n controller.onStylusMove(this.transform);\n }\n });\n this.notifyOnChange();\n };\n\n get pickRay(): ParametricLine {\n return ParametricLine.FromPointDirection(\n this.transform.worldPosition,\n this.transform.localDirectionToWorld(Vector3.Forward()),\n );\n }\n\n private memoizedIsInUse = new MemoizedBoolean(false, this.notifyOnChange);\n get isInUse(): boolean {\n return this.memoizedIsInUse.val;\n }\n\n private checkIfStylusIsInUse(worldMatrix: Matrix) {\n const m = worldMatrix.m;\n if (\n m[1] === 0 &&\n m[2] === 0 &&\n m[3] === 0 &&\n m[4] === 0 &&\n m[7] === 0 &&\n m[8] === 0 &&\n m[11] === 0 &&\n m[12] === 0 &&\n m[15] === 1\n ) {\n this.memoizedIsInUse.val = false;\n } else {\n this.memoizedIsInUse.val = true;\n }\n }\n\n constructor(appObject: AppObject) {\n super(appObject, StylusEntity.type);\n this.transform = Transform3D.addIfMissing(appObject);\n this.transform.addChangeObserver(this.onTransformUpdate);\n }\n}\n"]}
1
+ {"version":3,"file":"StylusEntity.js","sourceRoot":"","sources":["../../../../src/Stylus/Entity/StylusEntity.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppObject,\n AppObjectEntity,\n AppObjectRepo,\n getSingletonComponent,\n Matrix,\n MemoizedBoolean,\n ParametricLine,\n Vector3,\n} from \"@vived/core\";\nimport { Transform3D } from \"../../Transform3D\";\n\nexport interface StylusEventHandler {\n onButtonDown?: (button: number) => void;\n onButtonUp?: (button: number) => void;\n onButtonClick?: (button: number) => void;\n onStylusMove?: (transform: Transform3D) => void;\n}\n\n/**\n * @deprecated Use StylusEventHandler instead\n */\nexport type StylusController = StylusEventHandler;\n\nexport abstract class StylusEntity extends AppObjectEntity {\n static readonly type = \"StylusEntity\";\n\n static clickMovementThreshold: number = 0.32;\n static clickTimeThresholdMS: number = 350;\n\n abstract registerController: (controller: StylusEventHandler) => void;\n abstract updateButtonState: (button: number, isPressed: boolean) => void;\n abstract getButtonState(button: number): boolean;\n\n abstract readonly transform: Transform3D;\n\n abstract get isInUse(): boolean;\n abstract get pickRay(): ParametricLine;\n\n static get(appObjects: AppObjectRepo): StylusEntity | undefined {\n return getSingletonComponent(StylusEntity.type, appObjects);\n }\n}\n\nexport function makeStylusEntity(appObj: AppObject): StylusEntity {\n return new StylusImp(appObj);\n}\n\nclass StylusImp extends StylusEntity {\n private controllers: StylusEventHandler[] = [];\n private buttonStates = [false, false, false];\n\n private lassPressedButton?: number;\n private pressPosition = Vector3.Zero();\n private pressTime = 0;\n\n registerController = (controller: StylusEventHandler): void => {\n this.controllers.push(controller);\n };\n\n updateButtonState = (button: number, isPressed: boolean): void => {\n if (this.buttonStates[button] === isPressed) return;\n\n this.controllers.forEach((controller) => {\n if (isPressed) {\n if (controller.onButtonDown) {\n controller.onButtonDown(button);\n }\n this.lassPressedButton = button;\n this.pressPosition = this.transform.localPosition;\n this.pressTime = Date.now();\n } else {\n if (controller.onButtonUp) {\n controller.onButtonUp(button);\n }\n\n if (this.isClick(button) && controller.onButtonClick) {\n controller.onButtonClick(button);\n }\n }\n });\n\n this.buttonStates[button] = isPressed;\n this.notifyOnChange();\n };\n\n getButtonState = (button: number): boolean => {\n if (button < 0 || button >= this.buttonStates.length) {\n return false;\n } else {\n return this.buttonStates[button];\n }\n };\n\n private isClick = (button: number): boolean => {\n const buttonIsCorrect = button === this.lassPressedButton;\n\n const movement = Vector3.Subtract(\n this.transform.localPosition,\n this.pressPosition\n ).magnitude;\n const movementIsSmallEnough =\n movement < StylusEntity.clickMovementThreshold;\n\n const passedTime = Date.now() - this.pressTime;\n const pressTimeIsShortEnough =\n passedTime < StylusEntity.clickTimeThresholdMS;\n\n if (buttonIsCorrect && movementIsSmallEnough && pressTimeIsShortEnough) {\n return true;\n } else {\n return false;\n }\n };\n\n readonly transform: Transform3D;\n\n private onTransformUpdate = () => {\n this.checkIfStylusIsInUse(this.transform.worldMatrix);\n\n this.controllers.forEach((controller) => {\n if (controller.onStylusMove) {\n controller.onStylusMove(this.transform);\n }\n });\n this.notifyOnChange();\n };\n\n get pickRay(): ParametricLine {\n return ParametricLine.FromPointDirection(\n this.transform.worldPosition,\n this.transform.localDirectionToWorld(Vector3.Forward())\n );\n }\n\n private memoizedIsInUse = new MemoizedBoolean(false, this.notifyOnChange);\n get isInUse(): boolean {\n return this.memoizedIsInUse.val;\n }\n\n private checkIfStylusIsInUse(worldMatrix: Matrix) {\n const m = worldMatrix.m;\n if (\n m[1] === 0 &&\n m[2] === 0 &&\n m[3] === 0 &&\n m[4] === 0 &&\n m[7] === 0 &&\n m[8] === 0 &&\n m[11] === 0 &&\n m[12] === 0 &&\n m[15] === 1\n ) {\n this.memoizedIsInUse.val = false;\n } else {\n this.memoizedIsInUse.val = true;\n }\n }\n\n constructor(appObject: AppObject) {\n super(appObject, StylusEntity.type);\n this.transform = Transform3D.addIfMissing(appObject);\n this.transform.addChangeObserver(this.onTransformUpdate);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"StylusEntity.test.js","sourceRoot":"","sources":["../../../../src/Stylus/Entity/StylusEntity.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { Angle, ParametricLine, Quaternion, Vector3 } from \"@vived/core\";\nimport {\n makeStylusEntity,\n StylusController,\n StylusEntity,\n} from \"./StylusEntity\";\n\nclass MockController implements StylusController {\n onButtonDown = jest.fn();\n onButtonUp = jest.fn();\n onStylusMove = jest.fn();\n onButtonClick = jest.fn();\n}\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const stylusAO = appObjects.getOrCreate(\"stylus\");\n\n const stylus = makeStylusEntity(stylusAO);\n const observer = jest.fn();\n stylus.addChangeObserver(observer);\n const controller = new MockController();\n stylus.registerController(controller);\n\n return { stylus, controller, observer };\n}\n\ndescribe(\"Stylus Entity\", () => {\n it(\"Forwards a press to the controller\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.updateButtonState(1, true);\n\n expect(controller.onButtonDown).toHaveBeenCalledWith(1);\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonUp).toHaveBeenCalledWith(1);\n });\n\n it(\"Only forwards if there is a change\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.updateButtonState(1, false);\n stylus.updateButtonState(1, false);\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonUp).not.toHaveBeenCalled();\n\n stylus.updateButtonState(1, true);\n\n controller.onButtonDown.mockClear();\n\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(1, true);\n\n expect(controller.onButtonUp).not.toHaveBeenCalled();\n });\n\n it(\"Forms the parametric line as expected\", () => {\n const { stylus } = makeTestRig();\n\n stylus.transform.localPosition = Vector3.Zero();\n stylus.transform.localRotation = Quaternion.Identity();\n\n let rayPoint = ParametricLine.GetPointAtDistance(stylus.pickRay, 1);\n let expectedPoint = new Vector3(0, 0, 1);\n expect(Vector3.Close(rayPoint, expectedPoint)).toBeTruthy();\n\n stylus.transform.localRotation = Quaternion.FromAngleAxis(\n Vector3.Up(),\n Angle.FromDegrees(90),\n );\n\n rayPoint = ParametricLine.GetPointAtDistance(stylus.pickRay, 1);\n expectedPoint = new Vector3(1, 0, 0);\n expect(Vector3.Close(rayPoint, expectedPoint)).toBeTruthy();\n\n stylus.transform.localPosition = new Vector3(1, 2, 3);\n\n rayPoint = ParametricLine.GetPointAtDistance(stylus.pickRay, 1);\n expectedPoint = new Vector3(2, 2, 3);\n expect(Vector3.Close(rayPoint, expectedPoint)).toBeTruthy();\n });\n\n it(\"Triggers the controller move when the transform position changes\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.transform.localPosition = new Vector3(1, 2, 3);\n\n expect(controller.onStylusMove).toHaveBeenCalled();\n });\n\n it(\"Triggers the controller move when the transform rotation changes\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.transform.localRotation = new Quaternion(1, 2, 3, 4);\n\n expect(controller.onStylusMove).toHaveBeenCalled();\n });\n\n it(\"Triggers a button click\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).toHaveBeenCalledWith(1);\n });\n\n it(\"Does not click if a different button is pressed\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(0, true);\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).not.toHaveBeenCalled();\n\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(2, false);\n\n expect(controller.onButtonClick).not.toHaveBeenCalled();\n });\n\n it(\"Does click if there is a little movement\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.transform.localPosition = Vector3.Zero();\n stylus.updateButtonState(1, true);\n\n stylus.transform.localPosition = new Vector3(\n StylusEntity.clickMovementThreshold * 0.99,\n 0,\n 0,\n );\n\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).toHaveBeenCalled();\n });\n\n it(\"Does not click if the movement is too great\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.transform.localPosition = Vector3.Zero();\n stylus.updateButtonState(1, true);\n\n stylus.transform.localPosition = new Vector3(\n StylusEntity.clickMovementThreshold,\n 0,\n 0,\n );\n\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).not.toHaveBeenCalled();\n });\n\n it(\"Does click if a little time passed\", () => {\n const { stylus, controller } = makeTestRig();\n\n const mockDateNow = jest.fn();\n Date.now = mockDateNow;\n mockDateNow.mockReturnValue(0);\n\n stylus.updateButtonState(1, true);\n\n mockDateNow.mockReturnValue(StylusEntity.clickTimeThresholdMS - 1);\n\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).toHaveBeenCalled();\n });\n\n it(\"Does not click if too much time passed\", () => {\n const { stylus, controller } = makeTestRig();\n\n const mockDateNow = jest.fn();\n Date.now = mockDateNow;\n mockDateNow.mockReturnValue(0);\n\n stylus.updateButtonState(1, true);\n\n mockDateNow.mockReturnValue(StylusEntity.clickTimeThresholdMS + 1);\n\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).not.toHaveBeenCalled();\n });\n\n it(\"Sets is in use to false\", () => {\n const { stylus } = makeTestRig();\n stylus.transform.worldPosition = Vector3.Zero();\n stylus.transform.worldRotation = Quaternion.Identity();\n stylus.transform.notifyOnChange();\n expect(stylus.isInUse).toEqual(false);\n });\n\n it(\"Sets is in use to true\", () => {\n const { stylus } = makeTestRig();\n stylus.transform.worldPosition = Vector3.One();\n stylus.transform.worldRotation = new Quaternion(1, 1, 1, 1);\n stylus.transform.notifyOnChange();\n expect(stylus.isInUse).toEqual(true);\n });\n\n it(\"Returns correct button states\", () => {\n const { stylus } = makeTestRig();\n\n expect(stylus.getButtonState(0)).toBeFalsy();\n expect(stylus.getButtonState(1)).toBeFalsy();\n expect(stylus.getButtonState(2)).toBeFalsy();\n\n expect(stylus.getButtonState(-1)).toBeFalsy();\n expect(stylus.getButtonState(3)).toBeFalsy();\n\n stylus.updateButtonState(0, true);\n expect(stylus.getButtonState(0)).toBeTruthy();\n expect(stylus.getButtonState(1)).toBeFalsy();\n expect(stylus.getButtonState(2)).toBeFalsy();\n\n stylus.updateButtonState(0, false);\n expect(stylus.getButtonState(0)).toBeFalsy();\n\n stylus.updateButtonState(1, true);\n expect(stylus.getButtonState(1)).toBeTruthy();\n\n stylus.updateButtonState(2, true);\n expect(stylus.getButtonState(2)).toBeTruthy();\n });\n});\n"]}
1
+ {"version":3,"file":"StylusEntity.test.js","sourceRoot":"","sources":["../../../../src/Stylus/Entity/StylusEntity.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { Angle, ParametricLine, Quaternion, Vector3 } from \"@vived/core\";\nimport {\n makeStylusEntity,\n StylusEventHandler,\n StylusEntity,\n} from \"./StylusEntity\";\n\nclass MockController implements StylusEventHandler {\n onButtonDown = jest.fn();\n onButtonUp = jest.fn();\n onStylusMove = jest.fn();\n onButtonClick = jest.fn();\n}\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const stylusAO = appObjects.getOrCreate(\"stylus\");\n\n const stylus = makeStylusEntity(stylusAO);\n const observer = jest.fn();\n stylus.addChangeObserver(observer);\n const controller = new MockController();\n stylus.registerController(controller);\n\n return { stylus, controller, observer };\n}\n\ndescribe(\"Stylus Entity\", () => {\n it(\"Forwards a press to the controller\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.updateButtonState(1, true);\n\n expect(controller.onButtonDown).toHaveBeenCalledWith(1);\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonUp).toHaveBeenCalledWith(1);\n });\n\n it(\"Only forwards if there is a change\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.updateButtonState(1, false);\n stylus.updateButtonState(1, false);\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonUp).not.toHaveBeenCalled();\n\n stylus.updateButtonState(1, true);\n\n controller.onButtonDown.mockClear();\n\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(1, true);\n\n expect(controller.onButtonUp).not.toHaveBeenCalled();\n });\n\n it(\"Forms the parametric line as expected\", () => {\n const { stylus } = makeTestRig();\n\n stylus.transform.localPosition = Vector3.Zero();\n stylus.transform.localRotation = Quaternion.Identity();\n\n let rayPoint = ParametricLine.GetPointAtDistance(stylus.pickRay, 1);\n let expectedPoint = new Vector3(0, 0, 1);\n expect(Vector3.Close(rayPoint, expectedPoint)).toBeTruthy();\n\n stylus.transform.localRotation = Quaternion.FromAngleAxis(\n Vector3.Up(),\n Angle.FromDegrees(90)\n );\n\n rayPoint = ParametricLine.GetPointAtDistance(stylus.pickRay, 1);\n expectedPoint = new Vector3(1, 0, 0);\n expect(Vector3.Close(rayPoint, expectedPoint)).toBeTruthy();\n\n stylus.transform.localPosition = new Vector3(1, 2, 3);\n\n rayPoint = ParametricLine.GetPointAtDistance(stylus.pickRay, 1);\n expectedPoint = new Vector3(2, 2, 3);\n expect(Vector3.Close(rayPoint, expectedPoint)).toBeTruthy();\n });\n\n it(\"Triggers the controller move when the transform position changes\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.transform.localPosition = new Vector3(1, 2, 3);\n\n expect(controller.onStylusMove).toHaveBeenCalled();\n });\n\n it(\"Triggers the controller move when the transform rotation changes\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.transform.localRotation = new Quaternion(1, 2, 3, 4);\n\n expect(controller.onStylusMove).toHaveBeenCalled();\n });\n\n it(\"Triggers a button click\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).toHaveBeenCalledWith(1);\n });\n\n it(\"Does not click if a different button is pressed\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(0, true);\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).not.toHaveBeenCalled();\n\n stylus.updateButtonState(1, true);\n stylus.updateButtonState(2, false);\n\n expect(controller.onButtonClick).not.toHaveBeenCalled();\n });\n\n it(\"Does click if there is a little movement\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.transform.localPosition = Vector3.Zero();\n stylus.updateButtonState(1, true);\n\n stylus.transform.localPosition = new Vector3(\n StylusEntity.clickMovementThreshold * 0.99,\n 0,\n 0\n );\n\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).toHaveBeenCalled();\n });\n\n it(\"Does not click if the movement is too great\", () => {\n const { stylus, controller } = makeTestRig();\n\n stylus.transform.localPosition = Vector3.Zero();\n stylus.updateButtonState(1, true);\n\n stylus.transform.localPosition = new Vector3(\n StylusEntity.clickMovementThreshold,\n 0,\n 0\n );\n\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).not.toHaveBeenCalled();\n });\n\n it(\"Does click if a little time passed\", () => {\n const { stylus, controller } = makeTestRig();\n\n const mockDateNow = jest.fn();\n Date.now = mockDateNow;\n mockDateNow.mockReturnValue(0);\n\n stylus.updateButtonState(1, true);\n\n mockDateNow.mockReturnValue(StylusEntity.clickTimeThresholdMS - 1);\n\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).toHaveBeenCalled();\n });\n\n it(\"Does not click if too much time passed\", () => {\n const { stylus, controller } = makeTestRig();\n\n const mockDateNow = jest.fn();\n Date.now = mockDateNow;\n mockDateNow.mockReturnValue(0);\n\n stylus.updateButtonState(1, true);\n\n mockDateNow.mockReturnValue(StylusEntity.clickTimeThresholdMS + 1);\n\n stylus.updateButtonState(1, false);\n\n expect(controller.onButtonClick).not.toHaveBeenCalled();\n });\n\n it(\"Sets is in use to false\", () => {\n const { stylus } = makeTestRig();\n stylus.transform.worldPosition = Vector3.Zero();\n stylus.transform.worldRotation = Quaternion.Identity();\n stylus.transform.notifyOnChange();\n expect(stylus.isInUse).toEqual(false);\n });\n\n it(\"Sets is in use to true\", () => {\n const { stylus } = makeTestRig();\n stylus.transform.worldPosition = Vector3.One();\n stylus.transform.worldRotation = new Quaternion(1, 1, 1, 1);\n stylus.transform.notifyOnChange();\n expect(stylus.isInUse).toEqual(true);\n });\n\n it(\"Returns correct button states\", () => {\n const { stylus } = makeTestRig();\n\n expect(stylus.getButtonState(0)).toBeFalsy();\n expect(stylus.getButtonState(1)).toBeFalsy();\n expect(stylus.getButtonState(2)).toBeFalsy();\n\n expect(stylus.getButtonState(-1)).toBeFalsy();\n expect(stylus.getButtonState(3)).toBeFalsy();\n\n stylus.updateButtonState(0, true);\n expect(stylus.getButtonState(0)).toBeTruthy();\n expect(stylus.getButtonState(1)).toBeFalsy();\n expect(stylus.getButtonState(2)).toBeFalsy();\n\n stylus.updateButtonState(0, false);\n expect(stylus.getButtonState(0)).toBeFalsy();\n\n stylus.updateButtonState(1, true);\n expect(stylus.getButtonState(1)).toBeTruthy();\n\n stylus.updateButtonState(2, true);\n expect(stylus.getButtonState(2)).toBeTruthy();\n });\n});\n"]}