@vived/app 4.2.0 → 4.3.0

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 (312) hide show
  1. package/lib/AppObjectComponents/ChannelModel/Entities/ChannelModel.d.ts +42 -0
  2. package/lib/AppObjectComponents/ChannelModel/Entities/ChannelModel.js +99 -0
  3. package/lib/AppObjectComponents/ChannelModel/Entities/ChannelModelRepo.d.ts +12 -0
  4. package/lib/AppObjectComponents/ChannelModel/Entities/ChannelModelRepo.js +45 -0
  5. package/lib/AppObjectComponents/ChannelModel/index.d.ts +2 -0
  6. package/lib/AppObjectComponents/ChannelModel/index.js +14 -0
  7. package/lib/AppObjectComponents/Dispatcher/Entities/AppDispatcher.d.ts +16 -0
  8. package/lib/AppObjectComponents/Dispatcher/Entities/AppDispatcher.js +40 -0
  9. package/lib/AppObjectComponents/Dispatcher/Factories/makeBasicDispatcher.d.ts +5 -0
  10. package/lib/AppObjectComponents/Dispatcher/Factories/makeBasicDispatcher.js +25 -0
  11. package/lib/AppObjectComponents/Dispatcher/UC/DispatchStartZSpaceUC.d.ts +10 -0
  12. package/lib/AppObjectComponents/Dispatcher/UC/DispatchStartZSpaceUC.js +44 -0
  13. package/lib/AppObjectComponents/Dispatcher/UC/DispatchStopZSpaceUC.d.ts +10 -0
  14. package/lib/AppObjectComponents/Dispatcher/UC/DispatchStopZSpaceUC.js +44 -0
  15. package/lib/AppObjectComponents/Dispatcher/UC/GoToNextStateUC.d.ts +10 -0
  16. package/lib/AppObjectComponents/Dispatcher/UC/GoToNextStateUC.js +44 -0
  17. package/lib/AppObjectComponents/Dispatcher/UC/GoToPreviousStateUC.d.ts +10 -0
  18. package/lib/AppObjectComponents/Dispatcher/UC/GoToPreviousStateUC.js +44 -0
  19. package/lib/AppObjectComponents/Dispatcher/UC/HasNextStateUC.d.ts +10 -0
  20. package/lib/AppObjectComponents/Dispatcher/UC/HasNextStateUC.js +54 -0
  21. package/lib/AppObjectComponents/Dispatcher/UC/HasPreviousStateUC.d.ts +10 -0
  22. package/lib/AppObjectComponents/Dispatcher/UC/HasPreviousStateUC.js +54 -0
  23. package/lib/AppObjectComponents/Dispatcher/UC/IsZSpaceAvailableUC.d.ts +10 -0
  24. package/lib/AppObjectComponents/Dispatcher/UC/IsZSpaceAvailableUC.js +54 -0
  25. package/lib/AppObjectComponents/Dispatcher/index.d.ts +9 -0
  26. package/lib/AppObjectComponents/Dispatcher/index.js +21 -0
  27. package/lib/AppObjectComponents/Enablement/Entities/EnablablementEntity.d.ts +16 -0
  28. package/lib/AppObjectComponents/Enablement/Entities/EnablablementEntity.js +28 -0
  29. package/lib/AppObjectComponents/Enablement/PM/EnablableStatePM.d.ts +14 -0
  30. package/lib/AppObjectComponents/Enablement/PM/EnablableStatePM.js +41 -0
  31. package/lib/AppObjectComponents/Enablement/index.d.ts +2 -0
  32. package/lib/AppObjectComponents/Enablement/index.js +14 -0
  33. package/lib/AppObjectComponents/Hideable/Entities/Hideable.d.ts +10 -0
  34. package/lib/AppObjectComponents/Hideable/Entities/Hideable.js +31 -0
  35. package/lib/AppObjectComponents/Hideable/PresentationManagers/IsHiddenPM.d.ts +12 -0
  36. package/lib/AppObjectComponents/Hideable/PresentationManagers/IsHiddenPM.js +43 -0
  37. package/lib/AppObjectComponents/Hideable/index.d.ts +2 -0
  38. package/lib/AppObjectComponents/Hideable/index.js +14 -0
  39. package/lib/AppObjectComponents/Label/Entities/Label.d.ts +17 -0
  40. package/lib/AppObjectComponents/Label/Entities/Label.js +58 -0
  41. package/lib/AppObjectComponents/Label/PresentationManagers/LabelPM.d.ts +19 -0
  42. package/lib/AppObjectComponents/Label/PresentationManagers/LabelPM.js +62 -0
  43. package/lib/AppObjectComponents/Label/index.d.ts +2 -0
  44. package/lib/AppObjectComponents/Label/index.js +14 -0
  45. package/lib/AppObjectComponents/Mesh/Entities/Mesh.d.ts +21 -0
  46. package/lib/AppObjectComponents/Mesh/Entities/Mesh.js +45 -0
  47. package/lib/AppObjectComponents/Mesh/index.d.ts +1 -0
  48. package/lib/{Components/Tools/Factory → AppObjectComponents/Mesh}/index.js +1 -2
  49. package/lib/AppObjectComponents/OverlayColor/Entities/OverlayColor.d.ts +25 -0
  50. package/lib/AppObjectComponents/OverlayColor/Entities/OverlayColor.js +59 -0
  51. package/lib/AppObjectComponents/OverlayColor/PresentationManagers/OverlayColorPM.d.ts +13 -0
  52. package/lib/AppObjectComponents/OverlayColor/PresentationManagers/OverlayColorPM.js +43 -0
  53. package/lib/AppObjectComponents/OverlayColor/index.d.ts +2 -0
  54. package/lib/AppObjectComponents/OverlayColor/index.js +14 -0
  55. package/lib/AppObjectComponents/SceneRoot/Entities/SceneRoot.d.ts +31 -0
  56. package/lib/AppObjectComponents/SceneRoot/Entities/SceneRoot.js +106 -0
  57. package/lib/AppObjectComponents/SceneRoot/UC/SerializeSceneRoot.d.ts +31 -0
  58. package/lib/AppObjectComponents/SceneRoot/UC/SerializeSceneRoot.js +109 -0
  59. package/lib/AppObjectComponents/SceneRoot/index.d.ts +2 -0
  60. package/lib/AppObjectComponents/SceneRoot/index.js +14 -0
  61. package/lib/AppObjectComponents/StoredView/Entities/StoredView.d.ts +13 -0
  62. package/lib/AppObjectComponents/StoredView/Entities/StoredView.js +64 -0
  63. package/lib/AppObjectComponents/StoredView/UC/SerializeStoredView.d.ts +27 -0
  64. package/lib/AppObjectComponents/StoredView/UC/SerializeStoredView.js +82 -0
  65. package/lib/AppObjectComponents/StoredView/index.d.ts +2 -0
  66. package/lib/AppObjectComponents/StoredView/index.js +14 -0
  67. package/lib/AppObjectComponents/Transform3D/Entities/Transform3D.d.ts +45 -0
  68. package/lib/AppObjectComponents/Transform3D/Entities/Transform3D.js +226 -0
  69. package/lib/AppObjectComponents/Transform3D/PresentationManagers/CanBeStuckPM.d.ts +12 -0
  70. package/lib/AppObjectComponents/Transform3D/PresentationManagers/CanBeStuckPM.js +46 -0
  71. package/lib/AppObjectComponents/Transform3D/PresentationManagers/Transform3DPM.d.ts +19 -0
  72. package/lib/AppObjectComponents/Transform3D/PresentationManagers/Transform3DPM.js +60 -0
  73. package/lib/AppObjectComponents/Transform3D/UseCases/PeelTransform3D.d.ts +20 -0
  74. package/lib/AppObjectComponents/Transform3D/UseCases/PeelTransform3D.js +67 -0
  75. package/lib/AppObjectComponents/Transform3D/UseCases/StickTransform3D.d.ts +14 -0
  76. package/lib/AppObjectComponents/Transform3D/UseCases/StickTransform3D.js +53 -0
  77. package/lib/AppObjectComponents/Transform3D/index.d.ts +5 -0
  78. package/lib/AppObjectComponents/Transform3D/index.js +17 -0
  79. package/lib/AppObjectComponents/index.d.ts +10 -0
  80. package/lib/AppObjectComponents/index.js +22 -0
  81. package/lib/Components/Dispatcher/UC/RestoreCurrentStateUC.d.ts +10 -0
  82. package/lib/Components/Dispatcher/UC/RestoreCurrentStateUC.js +35 -0
  83. package/lib/Components/Dispatcher/UC/index.d.ts +1 -0
  84. package/lib/Components/Dispatcher/UC/index.js +1 -0
  85. package/lib/Controllers/HoverLabelMouse.d.ts +10 -0
  86. package/lib/Controllers/HoverLabelMouse.js +23 -0
  87. package/lib/Controllers/HoverLabelTouch.d.ts +14 -0
  88. package/lib/Controllers/HoverLabelTouch.js +41 -0
  89. package/lib/Controllers/ToolHotkeys.d.ts +6 -0
  90. package/lib/Controllers/ToolHotkeys.js +25 -0
  91. package/lib/Controllers/index.d.ts +3 -0
  92. package/lib/Controllers/index.js +15 -0
  93. package/lib/Entities/AppBoundary.d.ts +6 -0
  94. package/lib/Entities/AppBoundary.js +2 -0
  95. package/lib/Entities/AppDispatcher.d.ts +63 -0
  96. package/lib/Entities/AppDispatcher.js +336 -0
  97. package/lib/Entities/AppHandler.d.ts +20 -0
  98. package/lib/Entities/AppHandler.js +94 -0
  99. package/lib/Entities/Babylon.d.ts +48 -0
  100. package/lib/Entities/Babylon.js +146 -0
  101. package/lib/Entities/BaseApp.d.ts +9 -0
  102. package/lib/Entities/BaseApp.js +30 -0
  103. package/lib/Entities/DevicePreview.d.ts +11 -0
  104. package/lib/Entities/DevicePreview.js +49 -0
  105. package/lib/Entities/FocusCamera.d.ts +70 -0
  106. package/lib/Entities/FocusCamera.js +272 -0
  107. package/lib/Entities/FramedScreen.d.ts +15 -0
  108. package/lib/Entities/FramedScreen.js +58 -0
  109. package/lib/Entities/FramedScreenContainer.d.ts +12 -0
  110. package/lib/Entities/FramedScreenContainer.js +41 -0
  111. package/lib/Entities/HoverLabels.d.ts +42 -0
  112. package/lib/Entities/HoverLabels.js +82 -0
  113. package/lib/Entities/KeyboardInput.d.ts +13 -0
  114. package/lib/Entities/KeyboardInput.js +68 -0
  115. package/lib/Entities/Memoized/MemoizedAngle.d.ts +9 -0
  116. package/lib/Entities/Memoized/MemoizedAngle.js +22 -0
  117. package/lib/Entities/Memoized/MemoizedBoolean.d.ts +8 -0
  118. package/lib/Entities/Memoized/MemoizedBoolean.js +22 -0
  119. package/lib/Entities/Memoized/MemoizedColor.d.ts +9 -0
  120. package/lib/Entities/Memoized/MemoizedColor.js +23 -0
  121. package/lib/Entities/Memoized/MemoizedNumber.d.ts +8 -0
  122. package/lib/Entities/Memoized/MemoizedNumber.js +22 -0
  123. package/lib/Entities/Memoized/MemoizedQuaternion.d.ts +9 -0
  124. package/lib/Entities/Memoized/MemoizedQuaternion.js +23 -0
  125. package/lib/Entities/Memoized/MemoizedString.d.ts +8 -0
  126. package/lib/Entities/Memoized/MemoizedString.js +22 -0
  127. package/lib/Entities/Memoized/MemoizedVector2.d.ts +9 -0
  128. package/lib/Entities/Memoized/MemoizedVector2.js +23 -0
  129. package/lib/Entities/Memoized/MemoizedVector3.d.ts +9 -0
  130. package/lib/Entities/Memoized/MemoizedVector3.js +23 -0
  131. package/lib/Entities/MeshModel.d.ts +68 -0
  132. package/lib/Entities/MeshModel.js +174 -0
  133. package/lib/Entities/ModelObject.d.ts +10 -0
  134. package/lib/Entities/ModelObject.js +42 -0
  135. package/lib/Entities/MouseInput.d.ts +21 -0
  136. package/lib/Entities/MouseInput.js +127 -0
  137. package/lib/Entities/ObservableEntityRepo.d.ts +20 -0
  138. package/lib/Entities/ObservableEntityRepo.js +80 -0
  139. package/lib/Entities/QuestionChallenge.d.ts +21 -0
  140. package/lib/Entities/QuestionChallenge.js +103 -0
  141. package/lib/Entities/QuestionChallengeAnswer.d.ts +32 -0
  142. package/lib/Entities/QuestionChallengeAnswer.js +51 -0
  143. package/lib/Entities/SceneModel.d.ts +85 -0
  144. package/lib/Entities/SceneModel.js +202 -0
  145. package/lib/Entities/SceneModelMesh.d.ts +40 -0
  146. package/lib/Entities/SceneModelMesh.js +75 -0
  147. package/lib/Entities/SceneModelRepo.d.ts +11 -0
  148. package/lib/Entities/SceneModelRepo.js +48 -0
  149. package/lib/Entities/SceneObject.d.ts +23 -0
  150. package/lib/Entities/SceneObject.js +79 -0
  151. package/lib/Entities/SceneObjectsRepo.d.ts +12 -0
  152. package/lib/Entities/SceneObjectsRepo.js +58 -0
  153. package/lib/Entities/SceneRoot.d.ts +29 -0
  154. package/lib/Entities/SceneRoot.js +145 -0
  155. package/lib/Entities/StateMachine.d.ts +29 -0
  156. package/lib/Entities/StateMachine.js +98 -0
  157. package/lib/Entities/Tool.d.ts +81 -0
  158. package/lib/Entities/Tool.js +94 -0
  159. package/lib/Entities/ToolRepository.d.ts +46 -0
  160. package/lib/Entities/ToolRepository.js +118 -0
  161. package/lib/Entities/TouchInput.d.ts +28 -0
  162. package/lib/Entities/TouchInput.js +144 -0
  163. package/lib/Entities/UndoRedo.d.ts +22 -0
  164. package/lib/Entities/UndoRedo.js +61 -0
  165. package/lib/PresentationManagers/DevicePreviewPM.d.ts +14 -0
  166. package/lib/PresentationManagers/DevicePreviewPM.js +30 -0
  167. package/lib/PresentationManagers/FocusCameraPM.d.ts +15 -0
  168. package/lib/PresentationManagers/FocusCameraPM.js +31 -0
  169. package/lib/PresentationManagers/FocusCameraPosRotPM.d.ts +13 -0
  170. package/lib/PresentationManagers/FocusCameraPosRotPM.js +28 -0
  171. package/lib/PresentationManagers/FramedScreenContainerPM.d.ts +18 -0
  172. package/lib/PresentationManagers/FramedScreenContainerPM.js +55 -0
  173. package/lib/PresentationManagers/HasRedoPM.d.ts +9 -0
  174. package/lib/PresentationManagers/HasRedoPM.js +22 -0
  175. package/lib/PresentationManagers/HasUndoPM.d.ts +9 -0
  176. package/lib/PresentationManagers/HasUndoPM.js +22 -0
  177. package/lib/PresentationManagers/HoverLabels/AllowHoverLabelPM.d.ts +9 -0
  178. package/lib/PresentationManagers/HoverLabels/AllowHoverLabelPM.js +19 -0
  179. package/lib/PresentationManagers/HoverLabels/HoverLabelPM.d.ts +17 -0
  180. package/lib/PresentationManagers/HoverLabels/HoverLabelPM.js +32 -0
  181. package/lib/PresentationManagers/HoverLabels/index.d.ts +2 -0
  182. package/lib/PresentationManagers/HoverLabels/index.js +14 -0
  183. package/lib/PresentationManagers/IsAuthoringPM.d.ts +9 -0
  184. package/lib/PresentationManagers/IsAuthoringPM.js +20 -0
  185. package/lib/PresentationManagers/PresentationManager.d.ts +8 -0
  186. package/lib/PresentationManagers/PresentationManager.js +16 -0
  187. package/lib/PresentationManagers/QuestionChallenge/AuthorQuestionChallengeAnswerPM.d.ts +24 -0
  188. package/lib/PresentationManagers/QuestionChallenge/AuthorQuestionChallengeAnswerPM.js +65 -0
  189. package/lib/PresentationManagers/QuestionChallenge/AuthorQuestionChallengePM.d.ts +17 -0
  190. package/lib/PresentationManagers/QuestionChallenge/AuthorQuestionChallengePM.js +46 -0
  191. package/lib/PresentationManagers/QuestionChallenge/QuestionChallengeAnswerPM.d.ts +17 -0
  192. package/lib/PresentationManagers/QuestionChallenge/QuestionChallengeAnswerPM.js +51 -0
  193. package/lib/PresentationManagers/QuestionChallenge/QuestionChallengePM.d.ts +15 -0
  194. package/lib/PresentationManagers/QuestionChallenge/QuestionChallengePM.js +34 -0
  195. package/lib/PresentationManagers/QuestionChallenge/index.d.ts +4 -0
  196. package/lib/PresentationManagers/QuestionChallenge/index.js +16 -0
  197. package/lib/PresentationManagers/SceneModel/SceneMeshOverlayPM.d.ts +15 -0
  198. package/lib/PresentationManagers/SceneModel/SceneMeshOverlayPM.js +34 -0
  199. package/lib/PresentationManagers/SceneModel/SceneModelPM.d.ts +15 -0
  200. package/lib/PresentationManagers/SceneModel/SceneModelPM.js +36 -0
  201. package/lib/PresentationManagers/SceneModel/index.d.ts +1 -0
  202. package/lib/PresentationManagers/SceneModel/index.js +13 -0
  203. package/lib/PresentationManagers/SceneObject/SceneObjectPM.d.ts +22 -0
  204. package/lib/PresentationManagers/SceneObject/SceneObjectPM.js +57 -0
  205. package/lib/PresentationManagers/SceneObject/index.d.ts +1 -0
  206. package/lib/PresentationManagers/SceneObject/index.js +13 -0
  207. package/lib/PresentationManagers/ShowBabylonInspectorPM.d.ts +9 -0
  208. package/lib/PresentationManagers/ShowBabylonInspectorPM.js +24 -0
  209. package/lib/PresentationManagers/ToolPM.d.ts +17 -0
  210. package/lib/PresentationManagers/ToolPM.js +35 -0
  211. package/lib/PresentationManagers/TransformNodePM.d.ts +14 -0
  212. package/lib/PresentationManagers/TransformNodePM.js +23 -0
  213. package/lib/PresentationManagers/index.d.ts +13 -0
  214. package/lib/PresentationManagers/index.js +25 -0
  215. package/lib/UseCases/FocusCamera/BumpDollyFocusCamera.d.ts +17 -0
  216. package/lib/UseCases/FocusCamera/BumpDollyFocusCamera.js +64 -0
  217. package/lib/UseCases/FocusCamera/LerpFocusCamera.d.ts +36 -0
  218. package/lib/UseCases/FocusCamera/LerpFocusCamera.js +71 -0
  219. package/lib/UseCases/FocusCamera/PinchDollyFocusCamera.d.ts +11 -0
  220. package/lib/UseCases/FocusCamera/PinchDollyFocusCamera.js +36 -0
  221. package/lib/UseCases/FocusCamera/PixelDollyFocusCamera.d.ts +11 -0
  222. package/lib/UseCases/FocusCamera/PixelDollyFocusCamera.js +36 -0
  223. package/lib/UseCases/FocusCamera/PixelOrbitFocusCamera.d.ts +11 -0
  224. package/lib/UseCases/FocusCamera/PixelOrbitFocusCamera.js +26 -0
  225. package/lib/UseCases/FocusCamera/PixelPlanePanFocusCamera.d.ts +11 -0
  226. package/lib/UseCases/FocusCamera/PixelPlanePanFocusCamera.js +33 -0
  227. package/lib/UseCases/FocusCamera/SerializeFocusCamera.d.ts +22 -0
  228. package/lib/UseCases/FocusCamera/SerializeFocusCamera.js +81 -0
  229. package/lib/UseCases/FocusCamera/index.d.ts +7 -0
  230. package/lib/UseCases/FocusCamera/index.js +19 -0
  231. package/lib/UseCases/Handlers/DisposeAppBase.d.ts +8 -0
  232. package/lib/UseCases/Handlers/DisposeAppBase.js +24 -0
  233. package/lib/UseCases/Handlers/SetAppStateBase.d.ts +10 -0
  234. package/lib/UseCases/Handlers/SetAppStateBase.js +32 -0
  235. package/lib/UseCases/Handlers/SetDevicePreviewBase.d.ts +10 -0
  236. package/lib/UseCases/Handlers/SetDevicePreviewBase.js +32 -0
  237. package/lib/UseCases/Handlers/SetIsAuthoringBase.d.ts +10 -0
  238. package/lib/UseCases/Handlers/SetIsAuthoringBase.js +32 -0
  239. package/lib/UseCases/Handlers/ShowBabylonInspectorBase.d.ts +10 -0
  240. package/lib/UseCases/Handlers/ShowBabylonInspectorBase.js +32 -0
  241. package/lib/UseCases/Handlers/StartAppBase.d.ts +10 -0
  242. package/lib/UseCases/Handlers/StartAppBase.js +32 -0
  243. package/lib/UseCases/Handlers/StartZSpaceBase.d.ts +10 -0
  244. package/lib/UseCases/Handlers/StartZSpaceBase.js +35 -0
  245. package/lib/UseCases/Handlers/StopAppBase.d.ts +8 -0
  246. package/lib/UseCases/Handlers/StopAppBase.js +24 -0
  247. package/lib/UseCases/Handlers/StopZSpaceBase.d.ts +8 -0
  248. package/lib/UseCases/Handlers/StopZSpaceBase.js +24 -0
  249. package/lib/UseCases/Handlers/index.d.ts +9 -0
  250. package/lib/UseCases/Handlers/index.js +21 -0
  251. package/lib/UseCases/HoverLabels/SerializeAllowHoverLabel.d.ts +14 -0
  252. package/lib/UseCases/HoverLabels/SerializeAllowHoverLabel.js +35 -0
  253. package/lib/UseCases/HoverLabels/trySetHoverLabel.d.ts +3 -0
  254. package/lib/UseCases/HoverLabels/trySetHoverLabel.js +12 -0
  255. package/lib/UseCases/LerpVector3.d.ts +26 -0
  256. package/lib/UseCases/LerpVector3.js +66 -0
  257. package/lib/UseCases/QuestionChallenge/SerializeQuestionChallenge.d.ts +25 -0
  258. package/lib/UseCases/QuestionChallenge/SerializeQuestionChallenge.js +70 -0
  259. package/lib/UseCases/QuestionChallenge/index.d.ts +4 -0
  260. package/lib/UseCases/QuestionChallenge/index.js +16 -0
  261. package/lib/UseCases/QuestionChallenge/setQuesionChallengeAnswerFeedback.d.ts +2 -0
  262. package/lib/UseCases/QuestionChallenge/setQuesionChallengeAnswerFeedback.js +16 -0
  263. package/lib/UseCases/QuestionChallenge/setQuesionChallengeAnswerText.d.ts +2 -0
  264. package/lib/UseCases/QuestionChallenge/setQuesionChallengeAnswerText.js +16 -0
  265. package/lib/UseCases/QuestionChallenge/toggleQuesionChallengeAnswerIsCorrect.d.ts +2 -0
  266. package/lib/UseCases/QuestionChallenge/toggleQuesionChallengeAnswerIsCorrect.js +16 -0
  267. package/lib/UseCases/SceneModel/SerializeActiveModel.d.ts +18 -0
  268. package/lib/UseCases/SceneModel/SerializeActiveModel.js +74 -0
  269. package/lib/UseCases/SceneModel/SetMeshesEnabledHook.d.ts +7 -0
  270. package/lib/UseCases/SceneModel/SetMeshesEnabledHook.js +22 -0
  271. package/lib/UseCases/SceneModel/SetSceneModelMeshOverlayColor.d.ts +2 -0
  272. package/lib/UseCases/SceneModel/SetSceneModelMeshOverlayColor.js +13 -0
  273. package/lib/UseCases/SceneModel/index.d.ts +5 -0
  274. package/lib/UseCases/SceneModel/index.js +17 -0
  275. package/lib/UseCases/SceneModel/loadNewModel.d.ts +2 -0
  276. package/lib/UseCases/SceneModel/loadNewModel.js +84 -0
  277. package/lib/UseCases/SceneModel/modelDataLoader.d.ts +3 -0
  278. package/lib/UseCases/SceneModel/modelDataLoader.js +33 -0
  279. package/lib/UseCases/SceneObjects/PeelSceneObject.d.ts +18 -0
  280. package/lib/UseCases/SceneObjects/PeelSceneObject.js +61 -0
  281. package/lib/UseCases/SceneObjects/index.d.ts +1 -0
  282. package/lib/UseCases/SceneObjects/index.js +13 -0
  283. package/lib/UseCases/SceneRoot/SerializeSceneRoot.d.ts +33 -0
  284. package/lib/UseCases/SceneRoot/SerializeSceneRoot.js +67 -0
  285. package/lib/UseCases/SceneRoot/index.d.ts +2 -0
  286. package/lib/UseCases/SceneRoot/index.js +14 -0
  287. package/lib/UseCases/SceneRoot/setupSceneRoot.d.ts +2 -0
  288. package/lib/UseCases/SceneRoot/setupSceneRoot.js +11 -0
  289. package/lib/UseCases/index.d.ts +7 -0
  290. package/lib/UseCases/index.js +19 -0
  291. package/lib/UseCases/setDevicePreview.d.ts +2 -0
  292. package/lib/UseCases/setDevicePreview.js +14 -0
  293. package/lib/UseCases/setupStandardAppObjects.d.ts +2 -0
  294. package/lib/UseCases/setupStandardAppObjects.js +10 -0
  295. package/package.json +1 -1
  296. package/lib/Components/App/UC/submitError.d.ts +0 -2
  297. package/lib/Components/App/UC/submitError.js +0 -28
  298. package/lib/Components/App/UC/submitFatal.d.ts +0 -2
  299. package/lib/Components/App/UC/submitFatal.js +0 -28
  300. package/lib/Components/App/UC/submitLog.d.ts +0 -2
  301. package/lib/Components/App/UC/submitLog.js +0 -28
  302. package/lib/Components/App/UC/submitWarning.d.ts +0 -2
  303. package/lib/Components/App/UC/submitWarning.js +0 -28
  304. package/lib/Components/Camera/Factory/CameraFactoryImp.d.ts +0 -4
  305. package/lib/Components/Camera/Factory/CameraFactoryImp.js +0 -25
  306. package/lib/Components/Dispatcher/Mocks/MockLogUC.d.ts +0 -10
  307. package/lib/Components/Dispatcher/Mocks/MockLogUC.js +0 -14
  308. package/lib/Components/Tools/Factory/index.d.ts +0 -2
  309. package/lib/Components/Tools/Factory/setupTool.d.ts +0 -3
  310. package/lib/Components/Tools/Factory/setupTool.js +0 -12
  311. package/lib/Components/Tools/Factory/setupToolRepo.d.ts +0 -4
  312. package/lib/Components/Tools/Factory/setupToolRepo.js +0 -13
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObservableEntityRepo = void 0;
4
+ const ObservableEntity_1 = require("./ObservableEntity");
5
+ const ObserverList_1 = require("./ObserverList");
6
+ class ObservableEntityRepo extends ObservableEntity_1.ObservableEntity {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.entityLookup = new Map();
10
+ this.onEntityAddedObservers = new ObserverList_1.ObserverList();
11
+ this.addEntityAddedObserver = (observer) => {
12
+ this.onEntityAddedObservers.add(observer);
13
+ };
14
+ this.removeEntityAddedObserver = (observer) => {
15
+ this.onEntityAddedObservers.remove(observer);
16
+ };
17
+ this.onEntityRemovedObservers = new ObserverList_1.ObserverList();
18
+ this.addEntityRemovedObserver = (observer) => {
19
+ this.onEntityRemovedObservers.add(observer);
20
+ };
21
+ this.removeEntityRemovedObserver = (observer) => {
22
+ this.onEntityRemovedObservers.remove(observer);
23
+ };
24
+ this.has = (id) => {
25
+ return this.entityLookup.has(id);
26
+ };
27
+ this.add = (id, entity) => {
28
+ const existing = this.entityLookup.get(id);
29
+ if (existing) {
30
+ existing.removeObserver(this.notify);
31
+ }
32
+ this.entityLookup.set(id, entity);
33
+ entity.addObserver(this.notify);
34
+ this.notify();
35
+ this.onEntityAddedObservers.notify(entity);
36
+ };
37
+ this.remove = (id) => {
38
+ const existing = this.entityLookup.get(id);
39
+ if (!existing)
40
+ return;
41
+ this.entityLookup.delete(id);
42
+ existing.removeObserver(this.notify);
43
+ this.notify();
44
+ this.onEntityRemovedObservers.notify(existing);
45
+ };
46
+ this.clear = () => {
47
+ if (this.entityLookup.size === 0)
48
+ return;
49
+ this.entityLookup.forEach((entity) => {
50
+ entity.removeObserver(this.notify);
51
+ this.onEntityRemovedObservers.notify(entity);
52
+ });
53
+ this.entityLookup.clear();
54
+ this.notify();
55
+ };
56
+ this.get = (id) => {
57
+ return this.entityLookup.get(id);
58
+ };
59
+ this.getAll = () => {
60
+ return Array.from(this.entityLookup.values());
61
+ };
62
+ this.set = (entities) => {
63
+ if (this.entityLookup.size === 0 && entities.length === 0) {
64
+ return;
65
+ }
66
+ this.entityLookup.forEach((entity) => {
67
+ entity.removeObserver(this.notify);
68
+ this.onEntityRemovedObservers.notify(entity);
69
+ });
70
+ this.entityLookup.clear();
71
+ entities.forEach((e) => {
72
+ this.entityLookup.set(e.id, e.entity);
73
+ e.entity.addObserver(this.notify);
74
+ this.onEntityAddedObservers.notify(e.entity);
75
+ });
76
+ this.notify();
77
+ };
78
+ }
79
+ }
80
+ exports.ObservableEntityRepo = ObservableEntityRepo;
@@ -0,0 +1,21 @@
1
+ import { QuestionChallengeAnswer } from "./QuestionChallengeAnswer";
2
+ export declare type OnQuestionChallengeChange = () => void;
3
+ export interface QuestionChallenge {
4
+ gotItRight: boolean;
5
+ tries: number;
6
+ text: string;
7
+ addAnswer: (answer: QuestionChallengeAnswer) => void;
8
+ removeAnswer: (id: string) => void;
9
+ getAnswer: (id: string) => QuestionChallengeAnswer | undefined;
10
+ getAllAnswers: () => QuestionChallengeAnswer[];
11
+ hasAnswer: (id: string) => boolean;
12
+ createAnswer: (text: string) => QuestionChallengeAnswer;
13
+ removeAllAnswers: () => void;
14
+ setDefaultState: () => void;
15
+ reset: () => void;
16
+ submitAnswer: (id: string) => void;
17
+ setIDGenerator: (generator: () => string) => void;
18
+ addObserver: (observer: OnQuestionChallengeChange) => void;
19
+ removeObserver: (observer: OnQuestionChallengeChange) => void;
20
+ }
21
+ export declare function makeQuestionChallenge(): QuestionChallenge;
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeQuestionChallenge = void 0;
4
+ const _1 = require(".");
5
+ const QuestionChallengeAnswer_1 = require("./QuestionChallengeAnswer");
6
+ function makeQuestionChallenge() {
7
+ return new QuestionChallengeImp();
8
+ }
9
+ exports.makeQuestionChallenge = makeQuestionChallenge;
10
+ class QuestionChallengeImp {
11
+ constructor() {
12
+ this.answerLookup = new Map();
13
+ this.observers = new _1.ObserverList();
14
+ this._tries = 0;
15
+ this._gotItRight = false;
16
+ this.memoizedText = new _1.MemoizedString("", this.observers.notify);
17
+ this.generateID = () => {
18
+ const randomNumber = Math.random() * Date.now();
19
+ return `${randomNumber}`;
20
+ };
21
+ this.setIDGenerator = (generator) => {
22
+ this.generateID = generator;
23
+ };
24
+ this.getAllAnswers = () => {
25
+ return Array.from(this.answerLookup.values());
26
+ };
27
+ this.addAnswer = (answer) => {
28
+ if (this.answerLookup.has(answer.id)) {
29
+ console.warn(`Answer with ID ${answer.id} already exists. Overwriting`);
30
+ }
31
+ this.answerLookup.set(answer.id, answer);
32
+ this.reset();
33
+ };
34
+ this.removeAnswer = (id) => {
35
+ const answer = this.answerLookup.get(id);
36
+ if (!answer)
37
+ return;
38
+ this.answerLookup.delete(id);
39
+ this.reset();
40
+ };
41
+ this.getAnswer = (id) => {
42
+ return this.answerLookup.get(id);
43
+ };
44
+ this.hasAnswer = (id) => {
45
+ return this.answerLookup.has(id);
46
+ };
47
+ this.reset = () => {
48
+ this._gotItRight = false;
49
+ this._tries = 0;
50
+ this.answerLookup.forEach((ans) => (ans.showFeedback = false));
51
+ this.observers.notify();
52
+ };
53
+ this.submitAnswer = (id) => {
54
+ const ans = this.getAnswer(id);
55
+ if (!ans) {
56
+ console.warn(`[Question Challenge] Unable to find answer by ID: ${id}`);
57
+ return;
58
+ }
59
+ this._tries++;
60
+ ans.showFeedback = true;
61
+ this._gotItRight = ans.isCorrect;
62
+ this.observers.notify();
63
+ };
64
+ this.createAnswer = (text) => {
65
+ const id = this.generateID();
66
+ const answer = QuestionChallengeAnswer_1.makeQuestionChallengeAnswer(id);
67
+ answer.text = text;
68
+ this.addAnswer(answer);
69
+ return answer;
70
+ };
71
+ this.removeAllAnswers = () => {
72
+ const allAnswers = Array.from(this.answerLookup.keys());
73
+ allAnswers.forEach((id) => this.removeAnswer(id));
74
+ this.reset();
75
+ };
76
+ this.setDefaultState = () => {
77
+ this.removeAllAnswers();
78
+ const trueAnswer = this.createAnswer("True");
79
+ trueAnswer.isCorrect = true;
80
+ this.createAnswer("False");
81
+ this.memoizedText.setValQuietly("True / False question text");
82
+ this.reset();
83
+ };
84
+ this.addObserver = (observer) => {
85
+ this.observers.add(observer);
86
+ };
87
+ this.removeObserver = (observer) => {
88
+ this.observers.remove(observer);
89
+ };
90
+ }
91
+ get tries() {
92
+ return this._tries;
93
+ }
94
+ get gotItRight() {
95
+ return this._gotItRight;
96
+ }
97
+ get text() {
98
+ return this.memoizedText.val;
99
+ }
100
+ set text(val) {
101
+ this.memoizedText.val = val;
102
+ }
103
+ }
@@ -0,0 +1,32 @@
1
+ export declare type OnQuestionAnswerChange = () => void;
2
+ export interface QuestionChallengeAnswer {
3
+ id: string;
4
+ text: string;
5
+ isCorrect: boolean;
6
+ feedbackText: string;
7
+ showFeedback: boolean;
8
+ addObserver(observer: OnQuestionAnswerChange): void;
9
+ removeObserver(observer: OnQuestionAnswerChange): void;
10
+ }
11
+ export declare function makeQuestionChallengeAnswer(id: string): QuestionChallengeAnswerImp;
12
+ declare class QuestionChallengeAnswerImp implements QuestionChallengeAnswer {
13
+ private observers;
14
+ private _id;
15
+ get id(): string;
16
+ private memoizedText;
17
+ get text(): string;
18
+ set text(val: string);
19
+ private memoizedFeedback;
20
+ get feedbackText(): string;
21
+ set feedbackText(val: string);
22
+ private memoizedIsCorrect;
23
+ get isCorrect(): boolean;
24
+ set isCorrect(val: boolean);
25
+ private memoizedShowFeedback;
26
+ get showFeedback(): boolean;
27
+ set showFeedback(val: boolean);
28
+ addObserver(observer: OnQuestionAnswerChange): void;
29
+ removeObserver(observer: OnQuestionAnswerChange): void;
30
+ constructor(id: string);
31
+ }
32
+ export {};
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeQuestionChallengeAnswer = void 0;
4
+ const _1 = require(".");
5
+ function makeQuestionChallengeAnswer(id) {
6
+ return new QuestionChallengeAnswerImp(id);
7
+ }
8
+ exports.makeQuestionChallengeAnswer = makeQuestionChallengeAnswer;
9
+ class QuestionChallengeAnswerImp {
10
+ constructor(id) {
11
+ this.observers = new _1.ObserverList();
12
+ this.memoizedText = new _1.MemoizedString("Answer", this.observers.notify);
13
+ this.memoizedFeedback = new _1.MemoizedString("", this.observers.notify);
14
+ this.memoizedIsCorrect = new _1.MemoizedBoolean(false, this.observers.notify);
15
+ this.memoizedShowFeedback = new _1.MemoizedBoolean(false, this.observers.notify);
16
+ this._id = id;
17
+ }
18
+ get id() {
19
+ return this._id;
20
+ }
21
+ get text() {
22
+ return this.memoizedText.val;
23
+ }
24
+ set text(val) {
25
+ this.memoizedText.val = val;
26
+ }
27
+ get feedbackText() {
28
+ return this.memoizedFeedback.val;
29
+ }
30
+ set feedbackText(val) {
31
+ this.memoizedFeedback.val = val;
32
+ }
33
+ get isCorrect() {
34
+ return this.memoizedIsCorrect.val;
35
+ }
36
+ set isCorrect(val) {
37
+ this.memoizedIsCorrect.val = val;
38
+ }
39
+ get showFeedback() {
40
+ return this.memoizedShowFeedback.val;
41
+ }
42
+ set showFeedback(val) {
43
+ this.memoizedShowFeedback.val = val;
44
+ }
45
+ addObserver(observer) {
46
+ this.observers.add(observer);
47
+ }
48
+ removeObserver(observer) {
49
+ this.observers.remove(observer);
50
+ }
51
+ }
@@ -0,0 +1,85 @@
1
+ import { Quaternion, Vector3 } from "../ValueObjects";
2
+ import { ObservableEntity } from "./ObservableEntity";
3
+ import { SceneModelMesh, SceneModelObjectDTOv1, SceneModelObjectDTOv0 } from "./SceneModelMesh";
4
+ export declare enum SceneModelState {
5
+ INIT = "Initialized",
6
+ LOADING = "Loading",
7
+ READY = "Ready",
8
+ ERROR = "Error"
9
+ }
10
+ export declare abstract class SceneModel extends ObservableEntity {
11
+ abstract readonly id: string;
12
+ abstract name: string;
13
+ abstract state: SceneModelState;
14
+ abstract error: Error | undefined;
15
+ abstract bounds_min: Vector3;
16
+ abstract bounds_max: Vector3;
17
+ abstract defaultPosition: Vector3;
18
+ abstract defaultRotation: Quaternion;
19
+ abstract defaultScale: number;
20
+ abstract hasMesh(id: string): boolean;
21
+ abstract getMeshById(id: string): SceneModelMesh | undefined;
22
+ abstract getMeshByPath(path: string): SceneModelMesh | undefined;
23
+ abstract addMesh(object: SceneModelMesh): void;
24
+ abstract removeMesh(id: string): void;
25
+ abstract getAllMeshes(): SceneModelMesh[];
26
+ abstract applyData(data: SceneModelDTO): void;
27
+ abstract toData(): SceneModelDTO;
28
+ }
29
+ export declare function makeSceneModel(id: string): SceneModel;
30
+ export declare type SceneModelDTO = SceneModelDTOV0 | SceneModelDTOv1;
31
+ export interface SceneModelDTOV0 {
32
+ version: number;
33
+ objects: SceneModelObjectDTOv0[];
34
+ name: string;
35
+ description: string;
36
+ bounds_min: {
37
+ x: number;
38
+ y: number;
39
+ z: number;
40
+ };
41
+ bounds_max: {
42
+ x: number;
43
+ y: number;
44
+ z: number;
45
+ };
46
+ defaultPosition: {
47
+ x: number;
48
+ y: number;
49
+ z: number;
50
+ };
51
+ defaultRotation: {
52
+ x: number;
53
+ y: number;
54
+ z: number;
55
+ w: number;
56
+ };
57
+ defaultScale: number;
58
+ }
59
+ export interface SceneModelDTOv1 {
60
+ version: number;
61
+ objects: SceneModelObjectDTOv1[];
62
+ name: string;
63
+ bounds_min: {
64
+ x: number;
65
+ y: number;
66
+ z: number;
67
+ };
68
+ bounds_max: {
69
+ x: number;
70
+ y: number;
71
+ z: number;
72
+ };
73
+ defaultPosition: {
74
+ x: number;
75
+ y: number;
76
+ z: number;
77
+ };
78
+ defaultRotation: {
79
+ x: number;
80
+ y: number;
81
+ z: number;
82
+ w: number;
83
+ };
84
+ defaultScale: number;
85
+ }
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeSceneModel = exports.SceneModel = exports.SceneModelState = void 0;
4
+ const ValueObjects_1 = require("../ValueObjects");
5
+ const MemoizedNumber_1 = require("./Memoized/MemoizedNumber");
6
+ const MemoizedQuaternion_1 = require("./Memoized/MemoizedQuaternion");
7
+ const MemoizedString_1 = require("./Memoized/MemoizedString");
8
+ const MemoizedVector3_1 = require("./Memoized/MemoizedVector3");
9
+ const ObservableEntity_1 = require("./ObservableEntity");
10
+ const SceneModelMesh_1 = require("./SceneModelMesh");
11
+ var SceneModelState;
12
+ (function (SceneModelState) {
13
+ SceneModelState["INIT"] = "Initialized";
14
+ SceneModelState["LOADING"] = "Loading";
15
+ SceneModelState["READY"] = "Ready";
16
+ SceneModelState["ERROR"] = "Error";
17
+ })(SceneModelState = exports.SceneModelState || (exports.SceneModelState = {}));
18
+ class SceneModel extends ObservableEntity_1.ObservableEntity {
19
+ }
20
+ exports.SceneModel = SceneModel;
21
+ function makeSceneModel(id) {
22
+ return new SceneModelImp(id);
23
+ }
24
+ exports.makeSceneModel = makeSceneModel;
25
+ class SceneModelImp extends SceneModel {
26
+ constructor(id) {
27
+ super();
28
+ this._name = new MemoizedString_1.MemoizedString("", this.notify);
29
+ this._boundsMin = new MemoizedVector3_1.MemoizedVector3(ValueObjects_1.Vector3.Zero(), this.notify);
30
+ this._boundsMax = new MemoizedVector3_1.MemoizedVector3(ValueObjects_1.Vector3.Zero(), this.notify);
31
+ this._defaultPosition = new MemoizedVector3_1.MemoizedVector3(ValueObjects_1.Vector3.Zero(), this.notify);
32
+ this._defaultRotation = new MemoizedQuaternion_1.MemoizedQuaternion(ValueObjects_1.Quaternion.Identity(), this.notify);
33
+ this._defaultScale = new MemoizedNumber_1.MemoizedNumber(1, this.notify);
34
+ this._state = new MemoizedString_1.MemoizedString(SceneModelState.INIT, this.notify);
35
+ this.sceneModelObjectLookup = new Map();
36
+ this.hasMesh = (id) => {
37
+ return this.sceneModelObjectLookup.has(id);
38
+ };
39
+ this.getMeshById = (id) => {
40
+ return this.sceneModelObjectLookup.get(id);
41
+ };
42
+ this.getMeshByPath = (path) => {
43
+ let rVal;
44
+ this.sceneModelObjectLookup.forEach((sceneModelObject) => {
45
+ if (sceneModelObject.hasMeshPath(path)) {
46
+ rVal = sceneModelObject;
47
+ }
48
+ });
49
+ return rVal;
50
+ };
51
+ this.addMesh = (object) => {
52
+ if (this.sceneModelObjectLookup.has(object.id)) {
53
+ const orig = this.sceneModelObjectLookup.get(object.id);
54
+ orig === null || orig === void 0 ? void 0 : orig.removeObserver(this.notify);
55
+ }
56
+ this.sceneModelObjectLookup.set(object.id, object);
57
+ object.addObserver(this.notify);
58
+ this.notify();
59
+ };
60
+ this.removeMesh = (id) => {
61
+ const orig = this.sceneModelObjectLookup.get(id);
62
+ if (orig) {
63
+ this.sceneModelObjectLookup.delete(id);
64
+ orig.removeObserver(this.notify);
65
+ this.notify();
66
+ }
67
+ };
68
+ this.getAllMeshes = () => {
69
+ return Array.from(this.sceneModelObjectLookup.values());
70
+ };
71
+ this.applyData = (data) => {
72
+ if (data.version === 0) {
73
+ this.applyDataV0(data);
74
+ }
75
+ else if (data.version === 1) {
76
+ this.applyDataV1(data);
77
+ }
78
+ else {
79
+ throw new Error(`applyData unsupported version number: ${data.version}`);
80
+ }
81
+ };
82
+ this.toData = () => {
83
+ const data = {
84
+ version: 1,
85
+ bounds_max: this.bounds_max.dto,
86
+ bounds_min: this.bounds_min.dto,
87
+ defaultPosition: this.defaultPosition.dto,
88
+ defaultRotation: this.defaultRotation.dto,
89
+ defaultScale: this.defaultScale,
90
+ name: this.name,
91
+ objects: this.getAllMeshes().map((obj) => obj.toData()),
92
+ };
93
+ return data;
94
+ };
95
+ this.id = id;
96
+ }
97
+ get name() {
98
+ return this._name.val;
99
+ }
100
+ set name(name) {
101
+ this._name.val = name;
102
+ }
103
+ get bounds_min() {
104
+ return this._boundsMin.val;
105
+ }
106
+ set bounds_min(bounds_min) {
107
+ this._boundsMin.val = bounds_min;
108
+ }
109
+ get bounds_max() {
110
+ return this._boundsMax.val;
111
+ }
112
+ set bounds_max(bounds_max) {
113
+ this._boundsMax.val = bounds_max;
114
+ }
115
+ get defaultPosition() {
116
+ return this._defaultPosition.val;
117
+ }
118
+ set defaultPosition(position) {
119
+ this._defaultPosition.val = position;
120
+ }
121
+ get defaultRotation() {
122
+ return this._defaultRotation.val;
123
+ }
124
+ set defaultRotation(rotation) {
125
+ this._defaultRotation.val = rotation;
126
+ }
127
+ get defaultScale() {
128
+ return this._defaultScale.val;
129
+ }
130
+ set defaultScale(scale) {
131
+ this._defaultScale.val = scale;
132
+ }
133
+ get state() {
134
+ return this._state.val;
135
+ }
136
+ set state(val) {
137
+ this._state.val = val;
138
+ }
139
+ get error() {
140
+ return this._error;
141
+ }
142
+ set error(val) {
143
+ this._error = val;
144
+ this._state.val = SceneModelState.ERROR;
145
+ }
146
+ applyDataV0(data) {
147
+ this._name.setValQuietly(data.name);
148
+ this._boundsMin.setValQuietly(ValueObjects_1.Vector3.FromDTO(data.bounds_min));
149
+ this._boundsMax.setValQuietly(ValueObjects_1.Vector3.FromDTO(data.bounds_max));
150
+ this._defaultPosition.setValQuietly(ValueObjects_1.Vector3.FromDTO(data.defaultPosition));
151
+ this._defaultScale.setValQuietly(data.defaultScale);
152
+ this._defaultRotation.setValQuietly(ValueObjects_1.Quaternion.FromDTO(data.defaultRotation));
153
+ const objectsToKeep = [];
154
+ data.objects.forEach((objectDTO) => {
155
+ const existingObj = this.sceneModelObjectLookup.get(objectDTO.id);
156
+ if (existingObj) {
157
+ existingObj.applyData(objectDTO);
158
+ }
159
+ else {
160
+ const newObj = SceneModelMesh_1.makeSceneModelMesh(objectDTO.id);
161
+ newObj.applyData(objectDTO);
162
+ this.addMesh(newObj);
163
+ }
164
+ objectsToKeep.push(objectDTO.id);
165
+ });
166
+ const allObjects = Array.from(this.sceneModelObjectLookup.keys());
167
+ allObjects.forEach((obj) => {
168
+ if (!objectsToKeep.includes(obj)) {
169
+ this.removeMesh(obj);
170
+ }
171
+ });
172
+ this.notify();
173
+ }
174
+ applyDataV1(data) {
175
+ this._name.setValQuietly(data.name);
176
+ this._boundsMin.setValQuietly(ValueObjects_1.Vector3.FromDTO(data.bounds_min));
177
+ this._boundsMax.setValQuietly(ValueObjects_1.Vector3.FromDTO(data.bounds_max));
178
+ this._defaultPosition.setValQuietly(ValueObjects_1.Vector3.FromDTO(data.defaultPosition));
179
+ this._defaultScale.setValQuietly(data.defaultScale);
180
+ this._defaultRotation.setValQuietly(ValueObjects_1.Quaternion.FromDTO(data.defaultRotation));
181
+ const objectsToKeep = [];
182
+ data.objects.forEach((objectDTO) => {
183
+ const existingObj = this.sceneModelObjectLookup.get(objectDTO.id);
184
+ if (existingObj) {
185
+ existingObj.applyData(objectDTO);
186
+ }
187
+ else {
188
+ const newObj = SceneModelMesh_1.makeSceneModelMesh(objectDTO.id);
189
+ newObj.applyData(objectDTO);
190
+ this.addMesh(newObj);
191
+ }
192
+ objectsToKeep.push(objectDTO.id);
193
+ });
194
+ const allObjects = Array.from(this.sceneModelObjectLookup.keys());
195
+ allObjects.forEach((obj) => {
196
+ if (!objectsToKeep.includes(obj)) {
197
+ this.removeMesh(obj);
198
+ }
199
+ });
200
+ this.notify();
201
+ }
202
+ }
@@ -0,0 +1,40 @@
1
+ import { ObservableEntity } from "./ObservableEntity";
2
+ export declare abstract class SceneModelMesh extends ObservableEntity {
3
+ abstract readonly id: string;
4
+ abstract label: string;
5
+ abstract meshPaths: string[];
6
+ abstract addMeshPath(path: string): void;
7
+ abstract hasMeshPath(path: string): boolean;
8
+ abstract removeMeshPath(path: string): void;
9
+ abstract toData(): SceneModelObjectDTO;
10
+ abstract applyData(data: SceneModelObjectDTO): void;
11
+ }
12
+ export declare function makeSceneModelMesh(id: string): SceneModelMeshImp;
13
+ declare class SceneModelMeshImp extends SceneModelMesh {
14
+ readonly id: string;
15
+ private _meshPaths;
16
+ get meshPaths(): string[];
17
+ set meshPaths(paths: string[]);
18
+ private memoizedLabel;
19
+ get label(): string;
20
+ set label(val: string);
21
+ addMeshPath: (path: string) => void;
22
+ hasMeshPath: (path: string) => boolean;
23
+ removeMeshPath: (path: string) => void;
24
+ toData: () => SceneModelObjectDTO;
25
+ applyData: (data: SceneModelObjectDTO) => void;
26
+ constructor(id: string);
27
+ }
28
+ export declare type SceneModelObjectDTO = SceneModelObjectDTOv0 | SceneModelObjectDTOv1;
29
+ export interface SceneModelObjectDTOv1 {
30
+ version: number;
31
+ id: string;
32
+ meshPaths: string[];
33
+ label: string;
34
+ }
35
+ export interface SceneModelObjectDTOv0 {
36
+ id: string;
37
+ meshPaths: string[];
38
+ label: string;
39
+ }
40
+ export {};
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeSceneModelMesh = exports.SceneModelMesh = void 0;
4
+ const MemoizedString_1 = require("./Memoized/MemoizedString");
5
+ const ObservableEntity_1 = require("./ObservableEntity");
6
+ class SceneModelMesh extends ObservableEntity_1.ObservableEntity {
7
+ }
8
+ exports.SceneModelMesh = SceneModelMesh;
9
+ function makeSceneModelMesh(id) {
10
+ return new SceneModelMeshImp(id);
11
+ }
12
+ exports.makeSceneModelMesh = makeSceneModelMesh;
13
+ class SceneModelMeshImp extends SceneModelMesh {
14
+ constructor(id) {
15
+ super();
16
+ this._meshPaths = [];
17
+ this.memoizedLabel = new MemoizedString_1.MemoizedString("", this.notify);
18
+ this.addMeshPath = (path) => {
19
+ if (this._meshPaths.includes(path))
20
+ return;
21
+ this._meshPaths.push(path);
22
+ this.notify();
23
+ };
24
+ this.hasMeshPath = (path) => {
25
+ return this._meshPaths.includes(path);
26
+ };
27
+ this.removeMeshPath = (path) => {
28
+ const index = this._meshPaths.indexOf(path);
29
+ if (index >= 0) {
30
+ this._meshPaths.splice(index, 1);
31
+ this.notify();
32
+ }
33
+ };
34
+ this.toData = () => {
35
+ const dto = {
36
+ version: 1,
37
+ id: this.id,
38
+ label: this.label,
39
+ meshPaths: [...this._meshPaths],
40
+ };
41
+ return dto;
42
+ };
43
+ this.applyData = (data) => {
44
+ this.label = data.label;
45
+ this.meshPaths = data.meshPaths;
46
+ };
47
+ this.id = id;
48
+ }
49
+ get meshPaths() {
50
+ return [...this._meshPaths];
51
+ }
52
+ set meshPaths(paths) {
53
+ let pathsHaveChanged = false;
54
+ if (paths.length !== this._meshPaths.length) {
55
+ pathsHaveChanged = true;
56
+ }
57
+ else {
58
+ paths.forEach((path, i) => {
59
+ if (path !== this._meshPaths[i]) {
60
+ pathsHaveChanged = true;
61
+ }
62
+ });
63
+ }
64
+ if (!pathsHaveChanged)
65
+ return;
66
+ this._meshPaths = paths;
67
+ this.notify();
68
+ }
69
+ get label() {
70
+ return this.memoizedLabel.val;
71
+ }
72
+ set label(val) {
73
+ this.memoizedLabel.val = val;
74
+ }
75
+ }