@dreamerbird/camera-studio 0.0.0-stage → 0.1.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 (830) hide show
  1. package/assets/models/Y Bot.glb +0 -0
  2. package/assets/poseThumbs/qbx-hands-01-base-base-l.png +0 -0
  3. package/assets/poseThumbs/qbx-hands-01-base-base-r.png +0 -0
  4. package/assets/poseThumbs/qbx-hands-01-base-point-relaxed-l.png +0 -0
  5. package/assets/poseThumbs/qbx-hands-01-base-point-relaxed-r.png +0 -0
  6. package/assets/poseThumbs/qbx-hands-01-base-point-straight-l.png +0 -0
  7. package/assets/poseThumbs/qbx-hands-01-base-point-straight-r.png +0 -0
  8. package/assets/poseThumbs/qbx-hands-01-base-relaxed-01-l.png +0 -0
  9. package/assets/poseThumbs/qbx-hands-01-base-relaxed-01-r.png +0 -0
  10. package/assets/poseThumbs/qbx-hands-01-base-relaxed-02-l.png +0 -0
  11. package/assets/poseThumbs/qbx-hands-01-base-relaxed-02-r.png +0 -0
  12. package/assets/poseThumbs/qbx-hands-01-base-relaxed-03-l.png +0 -0
  13. package/assets/poseThumbs/qbx-hands-01-base-relaxed-03-r.png +0 -0
  14. package/assets/poseThumbs/qbx-hands-01-base-relaxed-04-l.png +0 -0
  15. package/assets/poseThumbs/qbx-hands-01-base-relaxed-04-r.png +0 -0
  16. package/assets/poseThumbs/qbx-hands-01-base-relaxed-05-l.png +0 -0
  17. package/assets/poseThumbs/qbx-hands-01-base-relaxed-05-r.png +0 -0
  18. package/assets/poseThumbs/qbx-hands-01-base-relaxed-06-l.png +0 -0
  19. package/assets/poseThumbs/qbx-hands-01-base-relaxed-06-r.png +0 -0
  20. package/assets/poseThumbs/qbx-hands-02-other-bowl-l.png +0 -0
  21. package/assets/poseThumbs/qbx-hands-02-other-bowl-r.png +0 -0
  22. package/assets/poseThumbs/qbx-hands-02-other-card-l.png +0 -0
  23. package/assets/poseThumbs/qbx-hands-02-other-card-r.png +0 -0
  24. package/assets/poseThumbs/qbx-hands-02-other-claw-l.png +0 -0
  25. package/assets/poseThumbs/qbx-hands-02-other-claw-r.png +0 -0
  26. package/assets/poseThumbs/qbx-hands-02-other-fist-l.png +0 -0
  27. package/assets/poseThumbs/qbx-hands-02-other-fist-r.png +0 -0
  28. package/assets/poseThumbs/qbx-hands-02-other-grip-l.png +0 -0
  29. package/assets/poseThumbs/qbx-hands-02-other-grip-r.png +0 -0
  30. package/assets/poseThumbs/qbx-hands-02-other-ko-l.png +0 -0
  31. package/assets/poseThumbs/qbx-hands-02-other-ko-r.png +0 -0
  32. package/assets/poseThumbs/qbx-hands-02-other-nail-check-01-l.png +0 -0
  33. package/assets/poseThumbs/qbx-hands-02-other-nail-check-01-r.png +0 -0
  34. package/assets/poseThumbs/qbx-hands-02-other-nail-check-02-l.png +0 -0
  35. package/assets/poseThumbs/qbx-hands-02-other-nail-check-02-r.png +0 -0
  36. package/assets/poseThumbs/qbx-hands-02-other-offer-l.png +0 -0
  37. package/assets/poseThumbs/qbx-hands-02-other-offer-r.png +0 -0
  38. package/assets/poseThumbs/qbx-hands-02-other-push-l.png +0 -0
  39. package/assets/poseThumbs/qbx-hands-02-other-push-r.png +0 -0
  40. package/assets/poseThumbs/qbx-hands-02-other-push-the-button-l.png +0 -0
  41. package/assets/poseThumbs/qbx-hands-02-other-push-the-button-r.png +0 -0
  42. package/assets/poseThumbs/qbx-hands-02-other-scratch-l.png +0 -0
  43. package/assets/poseThumbs/qbx-hands-02-other-scratch-r.png +0 -0
  44. package/assets/poseThumbs/qbx-hands-02-other-spread-l.png +0 -0
  45. package/assets/poseThumbs/qbx-hands-02-other-spread-r.png +0 -0
  46. package/assets/poseThumbs/qbx-hands-02-other-write-l.png +0 -0
  47. package/assets/poseThumbs/qbx-hands-02-other-write-r.png +0 -0
  48. package/assets/poseThumbs/qbx-hands-03-signs-cobblepot-l.png +0 -0
  49. package/assets/poseThumbs/qbx-hands-03-signs-cobblepot-r.png +0 -0
  50. package/assets/poseThumbs/qbx-hands-03-signs-fingers-crossed-l.png +0 -0
  51. package/assets/poseThumbs/qbx-hands-03-signs-fingers-crossed-r.png +0 -0
  52. package/assets/poseThumbs/qbx-hands-03-signs-five-l.png +0 -0
  53. package/assets/poseThumbs/qbx-hands-03-signs-five-r.png +0 -0
  54. package/assets/poseThumbs/qbx-hands-03-signs-four-l.png +0 -0
  55. package/assets/poseThumbs/qbx-hands-03-signs-four-r.png +0 -0
  56. package/assets/poseThumbs/qbx-hands-03-signs-four-ring-l.png +0 -0
  57. package/assets/poseThumbs/qbx-hands-03-signs-four-ring-r.png +0 -0
  58. package/assets/poseThumbs/qbx-hands-03-signs-fu-l.png +0 -0
  59. package/assets/poseThumbs/qbx-hands-03-signs-fu-r.png +0 -0
  60. package/assets/poseThumbs/qbx-hands-03-signs-index-l.png +0 -0
  61. package/assets/poseThumbs/qbx-hands-03-signs-index-r.png +0 -0
  62. package/assets/poseThumbs/qbx-hands-03-signs-martian-reactor-switch-l.png +0 -0
  63. package/assets/poseThumbs/qbx-hands-03-signs-martian-reactor-switch-r.png +0 -0
  64. package/assets/poseThumbs/qbx-hands-03-signs-one-does-not-simply-l.png +0 -0
  65. package/assets/poseThumbs/qbx-hands-03-signs-one-does-not-simply-r.png +0 -0
  66. package/assets/poseThumbs/qbx-hands-03-signs-peace-flipped-r.png +0 -0
  67. package/assets/poseThumbs/qbx-hands-03-signs-peace-flipped.png +0 -0
  68. package/assets/poseThumbs/qbx-hands-03-signs-peace-l.png +0 -0
  69. package/assets/poseThumbs/qbx-hands-03-signs-peace-r.png +0 -0
  70. package/assets/poseThumbs/qbx-hands-03-signs-perfect-l.png +0 -0
  71. package/assets/poseThumbs/qbx-hands-03-signs-perfect-r.png +0 -0
  72. package/assets/poseThumbs/qbx-hands-03-signs-pinky-swear-l.png +0 -0
  73. package/assets/poseThumbs/qbx-hands-03-signs-pinky-swear-r.png +0 -0
  74. package/assets/poseThumbs/qbx-hands-03-signs-rock-out-l.png +0 -0
  75. package/assets/poseThumbs/qbx-hands-03-signs-rock-out-r.png +0 -0
  76. package/assets/poseThumbs/qbx-hands-03-signs-scout-salute-l.png +0 -0
  77. package/assets/poseThumbs/qbx-hands-03-signs-scout-salute-r.png +0 -0
  78. package/assets/poseThumbs/qbx-hands-03-signs-spock-l.png +0 -0
  79. package/assets/poseThumbs/qbx-hands-03-signs-spock-r.png +0 -0
  80. package/assets/poseThumbs/qbx-hands-03-signs-stop-l.png +0 -0
  81. package/assets/poseThumbs/qbx-hands-03-signs-stop-r.png +0 -0
  82. package/assets/poseThumbs/qbx-hands-03-signs-surf-s-up-flipped-l.png +0 -0
  83. package/assets/poseThumbs/qbx-hands-03-signs-surf-s-up-flipped-r.png +0 -0
  84. package/assets/poseThumbs/qbx-hands-03-signs-surf-s-up-l.png +0 -0
  85. package/assets/poseThumbs/qbx-hands-03-signs-surf-s-up-r.png +0 -0
  86. package/assets/poseThumbs/qbx-hands-03-signs-three-hicox-l.png +0 -0
  87. package/assets/poseThumbs/qbx-hands-03-signs-three-hicox-r.png +0 -0
  88. package/assets/poseThumbs/qbx-hands-03-signs-three-l.png +0 -0
  89. package/assets/poseThumbs/qbx-hands-03-signs-three-r.png +0 -0
  90. package/assets/poseThumbs/qbx-hands-03-signs-three-ring-l.png +0 -0
  91. package/assets/poseThumbs/qbx-hands-03-signs-three-ring-r.png +0 -0
  92. package/assets/poseThumbs/qbx-hands-03-signs-thumbs-up-l.png +0 -0
  93. package/assets/poseThumbs/qbx-hands-03-signs-thumbs-up-r.png +0 -0
  94. package/assets/poseThumbs/qbx-hands-04-weapons-detonator-l.png +0 -0
  95. package/assets/poseThumbs/qbx-hands-04-weapons-detonator-r.png +0 -0
  96. package/assets/poseThumbs/qbx-hands-04-weapons-grip-sword-l.png +0 -0
  97. package/assets/poseThumbs/qbx-hands-04-weapons-grip-sword-r.png +0 -0
  98. package/assets/poseThumbs/qbx-hands-04-weapons-gun-01-l.png +0 -0
  99. package/assets/poseThumbs/qbx-hands-04-weapons-gun-01-r.png +0 -0
  100. package/assets/poseThumbs/qbx-hands-04-weapons-gun-02-l.png +0 -0
  101. package/assets/poseThumbs/qbx-hands-04-weapons-gun-02-r.png +0 -0
  102. package/assets/poseThumbs/qbx-hands-04-weapons-gun-03-l-cock-the-hammer.png +0 -0
  103. package/assets/poseThumbs/qbx-hands-04-weapons-gun-03-r-cock-the-hammer.png +0 -0
  104. package/assets/poseThumbs/qbx-hands-04-weapons-hadoken-l.png +0 -0
  105. package/assets/poseThumbs/qbx-hands-04-weapons-hadoken-r.png +0 -0
  106. package/assets/poseThumbs/qbx-hands-04-weapons-pistol-double-l.png +0 -0
  107. package/assets/poseThumbs/qbx-hands-04-weapons-pistol-double-r.png +0 -0
  108. package/assets/poseThumbs/qbx-hands-04-weapons-pistol-l.png +0 -0
  109. package/assets/poseThumbs/qbx-hands-04-weapons-pistol-r.png +0 -0
  110. package/assets/poseThumbs/qbx-hands-04-weapons-throw-l.png +0 -0
  111. package/assets/poseThumbs/qbx-hands-04-weapons-throw-r.png +0 -0
  112. package/dist/Anchors.d.ts +11 -0
  113. package/dist/Anchors.d.ts.map +1 -0
  114. package/dist/Anchors.js +315 -0
  115. package/dist/App.hostFlows.test.d.ts +2 -0
  116. package/dist/App.hostFlows.test.d.ts.map +1 -0
  117. package/dist/App.hostFlows.test.js +48 -0
  118. package/dist/CameraPath.d.ts +130 -0
  119. package/dist/CameraPath.d.ts.map +1 -0
  120. package/dist/CameraPath.js +920 -0
  121. package/dist/CameraScene.d.ts +45 -0
  122. package/dist/CameraScene.d.ts.map +1 -0
  123. package/dist/CameraScene.js +1716 -0
  124. package/dist/CameraScene.test.d.ts +2 -0
  125. package/dist/CameraScene.test.d.ts.map +1 -0
  126. package/dist/CameraScene.test.js +259 -0
  127. package/dist/PathPresetDropRig.d.ts +27 -0
  128. package/dist/PathPresetDropRig.d.ts.map +1 -0
  129. package/dist/PathPresetDropRig.js +192 -0
  130. package/dist/PathPresetThumb.d.ts +11 -0
  131. package/dist/PathPresetThumb.d.ts.map +1 -0
  132. package/dist/PathPresetThumb.js +85 -0
  133. package/dist/PipCameraSelector.d.ts +15 -0
  134. package/dist/PipCameraSelector.d.ts.map +1 -0
  135. package/dist/PipCameraSelector.js +92 -0
  136. package/dist/PlacementManager.d.ts +252 -0
  137. package/dist/PlacementManager.d.ts.map +1 -0
  138. package/dist/PlacementManager.js +1525 -0
  139. package/dist/ShotCamera.d.ts +21 -0
  140. package/dist/ShotCamera.d.ts.map +1 -0
  141. package/dist/ShotCamera.js +568 -0
  142. package/dist/TopToolbar.d.ts +43 -0
  143. package/dist/TopToolbar.d.ts.map +1 -0
  144. package/dist/TopToolbar.js +167 -0
  145. package/dist/TopToolbar.test.d.ts +2 -0
  146. package/dist/TopToolbar.test.d.ts.map +1 -0
  147. package/dist/TopToolbar.test.js +107 -0
  148. package/dist/agent/api.d.ts +95 -0
  149. package/dist/agent/api.d.ts.map +1 -0
  150. package/dist/agent/api.js +337 -0
  151. package/dist/agent/api.test.d.ts +2 -0
  152. package/dist/agent/api.test.d.ts.map +1 -0
  153. package/dist/agent/api.test.js +907 -0
  154. package/dist/agent/bridgeClient.d.ts +62 -0
  155. package/dist/agent/bridgeClient.d.ts.map +1 -0
  156. package/dist/agent/bridgeClient.js +277 -0
  157. package/dist/agent/bridgeClient.test.d.ts +2 -0
  158. package/dist/agent/bridgeClient.test.d.ts.map +1 -0
  159. package/dist/agent/bridgeClient.test.js +413 -0
  160. package/dist/agent/bridgeFiles.d.ts +33 -0
  161. package/dist/agent/bridgeFiles.d.ts.map +1 -0
  162. package/dist/agent/bridgeFiles.js +193 -0
  163. package/dist/agent/bridgeFiles.test.d.ts +2 -0
  164. package/dist/agent/bridgeFiles.test.d.ts.map +1 -0
  165. package/dist/agent/bridgeFiles.test.js +220 -0
  166. package/dist/agent/commands/anchors.d.ts +43 -0
  167. package/dist/agent/commands/anchors.d.ts.map +1 -0
  168. package/dist/agent/commands/anchors.js +331 -0
  169. package/dist/agent/commands/anchors.test.d.ts +2 -0
  170. package/dist/agent/commands/anchors.test.d.ts.map +1 -0
  171. package/dist/agent/commands/anchors.test.js +447 -0
  172. package/dist/agent/commands/animations.d.ts +47 -0
  173. package/dist/agent/commands/animations.d.ts.map +1 -0
  174. package/dist/agent/commands/animations.js +245 -0
  175. package/dist/agent/commands/animations.test.d.ts +2 -0
  176. package/dist/agent/commands/animations.test.d.ts.map +1 -0
  177. package/dist/agent/commands/animations.test.js +426 -0
  178. package/dist/agent/commands/assets.d.ts +34 -0
  179. package/dist/agent/commands/assets.d.ts.map +1 -0
  180. package/dist/agent/commands/assets.js +367 -0
  181. package/dist/agent/commands/assets.test.d.ts +2 -0
  182. package/dist/agent/commands/assets.test.d.ts.map +1 -0
  183. package/dist/agent/commands/assets.test.js +405 -0
  184. package/dist/agent/commands/bindings.realStudio.test.d.ts +21 -0
  185. package/dist/agent/commands/bindings.realStudio.test.d.ts.map +1 -0
  186. package/dist/agent/commands/bindings.realStudio.test.js +281 -0
  187. package/dist/agent/commands/cameras.d.ts +65 -0
  188. package/dist/agent/commands/cameras.d.ts.map +1 -0
  189. package/dist/agent/commands/cameras.js +498 -0
  190. package/dist/agent/commands/cameras.test.d.ts +2 -0
  191. package/dist/agent/commands/cameras.test.d.ts.map +1 -0
  192. package/dist/agent/commands/cameras.test.js +560 -0
  193. package/dist/agent/commands/delete.test.d.ts +2 -0
  194. package/dist/agent/commands/delete.test.d.ts.map +1 -0
  195. package/dist/agent/commands/delete.test.js +518 -0
  196. package/dist/agent/commands/exports.d.ts +12 -0
  197. package/dist/agent/commands/exports.d.ts.map +1 -0
  198. package/dist/agent/commands/exports.js +132 -0
  199. package/dist/agent/commands/exports.test.d.ts +2 -0
  200. package/dist/agent/commands/exports.test.d.ts.map +1 -0
  201. package/dist/agent/commands/exports.test.js +402 -0
  202. package/dist/agent/commands/history.d.ts +17 -0
  203. package/dist/agent/commands/history.d.ts.map +1 -0
  204. package/dist/agent/commands/history.js +96 -0
  205. package/dist/agent/commands/history.test.d.ts +2 -0
  206. package/dist/agent/commands/history.test.d.ts.map +1 -0
  207. package/dist/agent/commands/history.test.js +140 -0
  208. package/dist/agent/commands/jobs.d.ts +23 -0
  209. package/dist/agent/commands/jobs.d.ts.map +1 -0
  210. package/dist/agent/commands/jobs.js +66 -0
  211. package/dist/agent/commands/keyframes.d.ts +42 -0
  212. package/dist/agent/commands/keyframes.d.ts.map +1 -0
  213. package/dist/agent/commands/keyframes.js +310 -0
  214. package/dist/agent/commands/keyframes.realStudio.test.d.ts +11 -0
  215. package/dist/agent/commands/keyframes.realStudio.test.d.ts.map +1 -0
  216. package/dist/agent/commands/keyframes.realStudio.test.js +95 -0
  217. package/dist/agent/commands/keyframes.test.d.ts +2 -0
  218. package/dist/agent/commands/keyframes.test.d.ts.map +1 -0
  219. package/dist/agent/commands/keyframes.test.js +474 -0
  220. package/dist/agent/commands/models.d.ts +34 -0
  221. package/dist/agent/commands/models.d.ts.map +1 -0
  222. package/dist/agent/commands/models.js +137 -0
  223. package/dist/agent/commands/models.test.d.ts +2 -0
  224. package/dist/agent/commands/models.test.d.ts.map +1 -0
  225. package/dist/agent/commands/models.test.js +268 -0
  226. package/dist/agent/commands/objects.d.ts +4 -0
  227. package/dist/agent/commands/objects.d.ts.map +1 -0
  228. package/dist/agent/commands/objects.js +182 -0
  229. package/dist/agent/commands/objects.test.d.ts +2 -0
  230. package/dist/agent/commands/objects.test.d.ts.map +1 -0
  231. package/dist/agent/commands/objects.test.js +316 -0
  232. package/dist/agent/commands/paths.d.ts +111 -0
  233. package/dist/agent/commands/paths.d.ts.map +1 -0
  234. package/dist/agent/commands/paths.js +576 -0
  235. package/dist/agent/commands/paths.test.d.ts +2 -0
  236. package/dist/agent/commands/paths.test.d.ts.map +1 -0
  237. package/dist/agent/commands/paths.test.js +773 -0
  238. package/dist/agent/commands/poses.d.ts +101 -0
  239. package/dist/agent/commands/poses.d.ts.map +1 -0
  240. package/dist/agent/commands/poses.js +500 -0
  241. package/dist/agent/commands/poses.realStudio.test.d.ts +15 -0
  242. package/dist/agent/commands/poses.realStudio.test.d.ts.map +1 -0
  243. package/dist/agent/commands/poses.realStudio.test.js +161 -0
  244. package/dist/agent/commands/poses.test.d.ts +2 -0
  245. package/dist/agent/commands/poses.test.d.ts.map +1 -0
  246. package/dist/agent/commands/poses.test.js +735 -0
  247. package/dist/agent/commands/project.d.ts +12 -0
  248. package/dist/agent/commands/project.d.ts.map +1 -0
  249. package/dist/agent/commands/project.js +42 -0
  250. package/dist/agent/commands/project.test.d.ts +2 -0
  251. package/dist/agent/commands/project.test.d.ts.map +1 -0
  252. package/dist/agent/commands/project.test.js +125 -0
  253. package/dist/agent/commands/revision.realStudio.test.d.ts +14 -0
  254. package/dist/agent/commands/revision.realStudio.test.d.ts.map +1 -0
  255. package/dist/agent/commands/revision.realStudio.test.js +129 -0
  256. package/dist/agent/commands/scene.d.ts +32 -0
  257. package/dist/agent/commands/scene.d.ts.map +1 -0
  258. package/dist/agent/commands/scene.js +100 -0
  259. package/dist/agent/commands/scene.test.d.ts +2 -0
  260. package/dist/agent/commands/scene.test.d.ts.map +1 -0
  261. package/dist/agent/commands/scene.test.js +147 -0
  262. package/dist/agent/commands/selection.d.ts +21 -0
  263. package/dist/agent/commands/selection.d.ts.map +1 -0
  264. package/dist/agent/commands/selection.js +101 -0
  265. package/dist/agent/commands/selection.test.d.ts +2 -0
  266. package/dist/agent/commands/selection.test.d.ts.map +1 -0
  267. package/dist/agent/commands/selection.test.js +173 -0
  268. package/dist/agent/commands/sequence.d.ts +25 -0
  269. package/dist/agent/commands/sequence.d.ts.map +1 -0
  270. package/dist/agent/commands/sequence.js +174 -0
  271. package/dist/agent/commands/sequence.test.d.ts +2 -0
  272. package/dist/agent/commands/sequence.test.d.ts.map +1 -0
  273. package/dist/agent/commands/sequence.test.js +264 -0
  274. package/dist/agent/commands/ui.d.ts +40 -0
  275. package/dist/agent/commands/ui.d.ts.map +1 -0
  276. package/dist/agent/commands/ui.js +166 -0
  277. package/dist/agent/commands/view.d.ts +61 -0
  278. package/dist/agent/commands/view.d.ts.map +1 -0
  279. package/dist/agent/commands/view.js +229 -0
  280. package/dist/agent/commands/view.test.d.ts +2 -0
  281. package/dist/agent/commands/view.test.d.ts.map +1 -0
  282. package/dist/agent/commands/view.test.js +347 -0
  283. package/dist/agent/contractCoverage.test.d.ts +2 -0
  284. package/dist/agent/contractCoverage.test.d.ts.map +1 -0
  285. package/dist/agent/contractCoverage.test.js +87 -0
  286. package/dist/agent/deleteHandlers.d.ts +61 -0
  287. package/dist/agent/deleteHandlers.d.ts.map +1 -0
  288. package/dist/agent/deleteHandlers.js +41 -0
  289. package/dist/agent/errors.d.ts +24 -0
  290. package/dist/agent/errors.d.ts.map +1 -0
  291. package/dist/agent/errors.js +59 -0
  292. package/dist/agent/errors.test.d.ts +2 -0
  293. package/dist/agent/errors.test.d.ts.map +1 -0
  294. package/dist/agent/errors.test.js +25 -0
  295. package/dist/agent/expectedCommands.d.ts +9 -0
  296. package/dist/agent/expectedCommands.d.ts.map +1 -0
  297. package/dist/agent/expectedCommands.js +79 -0
  298. package/dist/agent/jobs.d.ts +52 -0
  299. package/dist/agent/jobs.d.ts.map +1 -0
  300. package/dist/agent/jobs.js +175 -0
  301. package/dist/agent/jobs.test.d.ts +2 -0
  302. package/dist/agent/jobs.test.d.ts.map +1 -0
  303. package/dist/agent/jobs.test.js +281 -0
  304. package/dist/agent/keyframeTracks.d.ts +57 -0
  305. package/dist/agent/keyframeTracks.d.ts.map +1 -0
  306. package/dist/agent/keyframeTracks.js +127 -0
  307. package/dist/agent/objectIds.d.ts +7 -0
  308. package/dist/agent/objectIds.d.ts.map +1 -0
  309. package/dist/agent/objectIds.js +20 -0
  310. package/dist/agent/objectIds.test.d.ts +2 -0
  311. package/dist/agent/objectIds.test.d.ts.map +1 -0
  312. package/dist/agent/objectIds.test.js +10 -0
  313. package/dist/agent/objectResolver.d.ts +34 -0
  314. package/dist/agent/objectResolver.d.ts.map +1 -0
  315. package/dist/agent/objectResolver.js +112 -0
  316. package/dist/agent/pathCommands.d.ts +78 -0
  317. package/dist/agent/pathCommands.d.ts.map +1 -0
  318. package/dist/agent/pathCommands.js +240 -0
  319. package/dist/agent/propAccess.d.ts +42 -0
  320. package/dist/agent/propAccess.d.ts.map +1 -0
  321. package/dist/agent/propAccess.js +181 -0
  322. package/dist/agent/registerCommands.d.ts +9 -0
  323. package/dist/agent/registerCommands.d.ts.map +1 -0
  324. package/dist/agent/registerCommands.js +77 -0
  325. package/dist/agent/registry.d.ts +33 -0
  326. package/dist/agent/registry.d.ts.map +1 -0
  327. package/dist/agent/registry.js +55 -0
  328. package/dist/agent/registry.test.d.ts +2 -0
  329. package/dist/agent/registry.test.d.ts.map +1 -0
  330. package/dist/agent/registry.test.js +106 -0
  331. package/dist/agent/runtime/animationStatus.d.ts +25 -0
  332. package/dist/agent/runtime/animationStatus.d.ts.map +1 -0
  333. package/dist/agent/runtime/animationStatus.js +13 -0
  334. package/dist/agent/runtime/cameraLifecycle.d.ts +37 -0
  335. package/dist/agent/runtime/cameraLifecycle.d.ts.map +1 -0
  336. package/dist/agent/runtime/cameraLifecycle.js +112 -0
  337. package/dist/agent/runtime/directorView.d.ts +42 -0
  338. package/dist/agent/runtime/directorView.d.ts.map +1 -0
  339. package/dist/agent/runtime/directorView.js +27 -0
  340. package/dist/agent/runtime/exportRuntime.d.ts +95 -0
  341. package/dist/agent/runtime/exportRuntime.d.ts.map +1 -0
  342. package/dist/agent/runtime/exportRuntime.js +227 -0
  343. package/dist/agent/runtime/objectRuntime.d.ts +26 -0
  344. package/dist/agent/runtime/objectRuntime.d.ts.map +1 -0
  345. package/dist/agent/runtime/objectRuntime.js +29 -0
  346. package/dist/agent/runtime/pathRuntime.d.ts +21 -0
  347. package/dist/agent/runtime/pathRuntime.d.ts.map +1 -0
  348. package/dist/agent/runtime/pathRuntime.js +13 -0
  349. package/dist/agent/runtime/placementLifecycle.d.ts +34 -0
  350. package/dist/agent/runtime/placementLifecycle.d.ts.map +1 -0
  351. package/dist/agent/runtime/placementLifecycle.js +63 -0
  352. package/dist/agent/runtime/placementLifecycle.test.d.ts +2 -0
  353. package/dist/agent/runtime/placementLifecycle.test.d.ts.map +1 -0
  354. package/dist/agent/runtime/placementLifecycle.test.js +68 -0
  355. package/dist/agent/runtime/poseSessionRuntime.d.ts +17 -0
  356. package/dist/agent/runtime/poseSessionRuntime.d.ts.map +1 -0
  357. package/dist/agent/runtime/poseSessionRuntime.js +64 -0
  358. package/dist/agent/runtime.d.ts +67 -0
  359. package/dist/agent/runtime.d.ts.map +1 -0
  360. package/dist/agent/runtime.js +214 -0
  361. package/dist/agent/runtime.test.d.ts +2 -0
  362. package/dist/agent/runtime.test.d.ts.map +1 -0
  363. package/dist/agent/runtime.test.js +142 -0
  364. package/dist/agent/sequenceLength.d.ts +20 -0
  365. package/dist/agent/sequenceLength.d.ts.map +1 -0
  366. package/dist/agent/sequenceLength.js +18 -0
  367. package/dist/agent/types.d.ts +70 -0
  368. package/dist/agent/types.d.ts.map +1 -0
  369. package/dist/agent/types.js +6 -0
  370. package/dist/agent/validation.d.ts +7 -0
  371. package/dist/agent/validation.d.ts.map +1 -0
  372. package/dist/agent/validation.js +39 -0
  373. package/dist/aimTargets.d.ts +128 -0
  374. package/dist/aimTargets.d.ts.map +1 -0
  375. package/dist/aimTargets.js +367 -0
  376. package/dist/aimTargets.test.d.ts +2 -0
  377. package/dist/aimTargets.test.d.ts.map +1 -0
  378. package/dist/aimTargets.test.js +84 -0
  379. package/dist/anchorParenting.test.d.ts +2 -0
  380. package/dist/anchorParenting.test.d.ts.map +1 -0
  381. package/dist/anchorParenting.test.js +87 -0
  382. package/dist/anchorsRegistry.d.ts +45 -0
  383. package/dist/anchorsRegistry.d.ts.map +1 -0
  384. package/dist/anchorsRegistry.js +101 -0
  385. package/dist/anchorsRegistry.test.d.ts +2 -0
  386. package/dist/anchorsRegistry.test.d.ts.map +1 -0
  387. package/dist/anchorsRegistry.test.js +29 -0
  388. package/dist/assetLibrary/AssetLibraryPanel.d.ts +35 -0
  389. package/dist/assetLibrary/AssetLibraryPanel.d.ts.map +1 -0
  390. package/dist/assetLibrary/AssetLibraryPanel.js +544 -0
  391. package/dist/assetLibrary/AssetLibraryPanel.viewer.test.d.ts +2 -0
  392. package/dist/assetLibrary/AssetLibraryPanel.viewer.test.d.ts.map +1 -0
  393. package/dist/assetLibrary/AssetLibraryPanel.viewer.test.js +133 -0
  394. package/dist/assetLibrary/ModelPickerSlot.d.ts +24 -0
  395. package/dist/assetLibrary/ModelPickerSlot.d.ts.map +1 -0
  396. package/dist/assetLibrary/ModelPickerSlot.js +32 -0
  397. package/dist/assetLibrary/catalogThumbs.d.ts +7 -0
  398. package/dist/assetLibrary/catalogThumbs.d.ts.map +1 -0
  399. package/dist/assetLibrary/catalogThumbs.js +75 -0
  400. package/dist/assetLibrary/classify.d.ts +14 -0
  401. package/dist/assetLibrary/classify.d.ts.map +1 -0
  402. package/dist/assetLibrary/classify.js +43 -0
  403. package/dist/assetLibrary/classify.test.d.ts +2 -0
  404. package/dist/assetLibrary/classify.test.d.ts.map +1 -0
  405. package/dist/assetLibrary/classify.test.js +44 -0
  406. package/dist/assetLibrary/contract.indexeddb.test.d.ts +2 -0
  407. package/dist/assetLibrary/contract.indexeddb.test.d.ts.map +1 -0
  408. package/dist/assetLibrary/contract.indexeddb.test.js +10 -0
  409. package/dist/assetLibrary/contractTests.d.ts +12 -0
  410. package/dist/assetLibrary/contractTests.d.ts.map +1 -0
  411. package/dist/assetLibrary/contractTests.js +51 -0
  412. package/dist/assetLibrary/dispose.d.ts +4 -0
  413. package/dist/assetLibrary/dispose.d.ts.map +1 -0
  414. package/dist/assetLibrary/dispose.js +21 -0
  415. package/dist/assetLibrary/draco.d.ts +6 -0
  416. package/dist/assetLibrary/draco.d.ts.map +1 -0
  417. package/dist/assetLibrary/draco.js +45 -0
  418. package/dist/assetLibrary/draco.test.d.ts +2 -0
  419. package/dist/assetLibrary/draco.test.d.ts.map +1 -0
  420. package/dist/assetLibrary/draco.test.js +93 -0
  421. package/dist/assetLibrary/exportGLB.d.ts +20 -0
  422. package/dist/assetLibrary/exportGLB.d.ts.map +1 -0
  423. package/dist/assetLibrary/exportGLB.js +83 -0
  424. package/dist/assetLibrary/exportGLB.test.d.ts +2 -0
  425. package/dist/assetLibrary/exportGLB.test.d.ts.map +1 -0
  426. package/dist/assetLibrary/exportGLB.test.js +73 -0
  427. package/dist/assetLibrary/gltfLoader.d.ts +8 -0
  428. package/dist/assetLibrary/gltfLoader.d.ts.map +1 -0
  429. package/dist/assetLibrary/gltfLoader.js +11 -0
  430. package/dist/assetLibrary/hash.d.ts +7 -0
  431. package/dist/assetLibrary/hash.d.ts.map +1 -0
  432. package/dist/assetLibrary/hash.js +17 -0
  433. package/dist/assetLibrary/importModelFile.d.ts +5 -0
  434. package/dist/assetLibrary/importModelFile.d.ts.map +1 -0
  435. package/dist/assetLibrary/importModelFile.js +19 -0
  436. package/dist/assetLibrary/importModelFile.test.d.ts +2 -0
  437. package/dist/assetLibrary/importModelFile.test.d.ts.map +1 -0
  438. package/dist/assetLibrary/importModelFile.test.js +77 -0
  439. package/dist/assetLibrary/importPipeline.d.ts +61 -0
  440. package/dist/assetLibrary/importPipeline.d.ts.map +1 -0
  441. package/dist/assetLibrary/importPipeline.js +253 -0
  442. package/dist/assetLibrary/importPipeline.test.d.ts +2 -0
  443. package/dist/assetLibrary/importPipeline.test.d.ts.map +1 -0
  444. package/dist/assetLibrary/importPipeline.test.js +188 -0
  445. package/dist/assetLibrary/indexedDBBackend.d.ts +31 -0
  446. package/dist/assetLibrary/indexedDBBackend.d.ts.map +1 -0
  447. package/dist/assetLibrary/indexedDBBackend.js +134 -0
  448. package/dist/assetLibrary/indexedDBBackend.test.d.ts +2 -0
  449. package/dist/assetLibrary/indexedDBBackend.test.d.ts.map +1 -0
  450. package/dist/assetLibrary/indexedDBBackend.test.js +148 -0
  451. package/dist/assetLibrary/legacySeedCleanup.d.ts +19 -0
  452. package/dist/assetLibrary/legacySeedCleanup.d.ts.map +1 -0
  453. package/dist/assetLibrary/legacySeedCleanup.js +50 -0
  454. package/dist/assetLibrary/legacySeedCleanup.test.d.ts +2 -0
  455. package/dist/assetLibrary/legacySeedCleanup.test.d.ts.map +1 -0
  456. package/dist/assetLibrary/legacySeedCleanup.test.js +74 -0
  457. package/dist/assetLibrary/library.d.ts +122 -0
  458. package/dist/assetLibrary/library.d.ts.map +1 -0
  459. package/dist/assetLibrary/library.js +424 -0
  460. package/dist/assetLibrary/library.test.d.ts +2 -0
  461. package/dist/assetLibrary/library.test.d.ts.map +1 -0
  462. package/dist/assetLibrary/library.test.js +520 -0
  463. package/dist/assetLibrary/options.d.ts +9 -0
  464. package/dist/assetLibrary/options.d.ts.map +1 -0
  465. package/dist/assetLibrary/options.js +20 -0
  466. package/dist/assetLibrary/options.test.d.ts +2 -0
  467. package/dist/assetLibrary/options.test.d.ts.map +1 -0
  468. package/dist/assetLibrary/options.test.js +70 -0
  469. package/dist/assetLibrary/pose.d.ts +15 -0
  470. package/dist/assetLibrary/pose.d.ts.map +1 -0
  471. package/dist/assetLibrary/pose.js +41 -0
  472. package/dist/assetLibrary/pose.test.d.ts +2 -0
  473. package/dist/assetLibrary/pose.test.d.ts.map +1 -0
  474. package/dist/assetLibrary/pose.test.js +45 -0
  475. package/dist/assetLibrary/poseThumbnail.d.ts +30 -0
  476. package/dist/assetLibrary/poseThumbnail.d.ts.map +1 -0
  477. package/dist/assetLibrary/poseThumbnail.js +144 -0
  478. package/dist/assetLibrary/poseThumbnail.test.d.ts +2 -0
  479. package/dist/assetLibrary/poseThumbnail.test.d.ts.map +1 -0
  480. package/dist/assetLibrary/poseThumbnail.test.js +111 -0
  481. package/dist/assetLibrary/rig.d.ts +14 -0
  482. package/dist/assetLibrary/rig.d.ts.map +1 -0
  483. package/dist/assetLibrary/rig.js +33 -0
  484. package/dist/assetLibrary/rig.test.d.ts +2 -0
  485. package/dist/assetLibrary/rig.test.d.ts.map +1 -0
  486. package/dist/assetLibrary/rig.test.js +55 -0
  487. package/dist/assetLibrary/seedAssetsManifest.d.ts +24 -0
  488. package/dist/assetLibrary/seedAssetsManifest.d.ts.map +1 -0
  489. package/dist/assetLibrary/seedAssetsManifest.js +347 -0
  490. package/dist/assetLibrary/seedBuiltinPoses.d.ts +29 -0
  491. package/dist/assetLibrary/seedBuiltinPoses.d.ts.map +1 -0
  492. package/dist/assetLibrary/seedBuiltinPoses.js +114 -0
  493. package/dist/assetLibrary/seedBuiltinPoses.test.d.ts +2 -0
  494. package/dist/assetLibrary/seedBuiltinPoses.test.d.ts.map +1 -0
  495. package/dist/assetLibrary/seedBuiltinPoses.test.js +176 -0
  496. package/dist/assetLibrary/seedPoses.d.ts +8 -0
  497. package/dist/assetLibrary/seedPoses.d.ts.map +1 -0
  498. package/dist/assetLibrary/seedPoses.js +2414 -0
  499. package/dist/assetLibrary/seedPosesDpl.d.ts +8 -0
  500. package/dist/assetLibrary/seedPosesDpl.d.ts.map +1 -0
  501. package/dist/assetLibrary/seedPosesDpl.js +11660 -0
  502. package/dist/assetLibrary/seedPosesQbx.d.ts +8 -0
  503. package/dist/assetLibrary/seedPosesQbx.d.ts.map +1 -0
  504. package/dist/assetLibrary/seedPosesQbx.js +5612 -0
  505. package/dist/assetLibrary/seedPosesQbx.test.d.ts +2 -0
  506. package/dist/assetLibrary/seedPosesQbx.test.d.ts.map +1 -0
  507. package/dist/assetLibrary/seedPosesQbx.test.js +181 -0
  508. package/dist/assetLibrary/source.d.ts +45 -0
  509. package/dist/assetLibrary/source.d.ts.map +1 -0
  510. package/dist/assetLibrary/source.js +11 -0
  511. package/dist/assetLibrary/source.test.d.ts +2 -0
  512. package/dist/assetLibrary/source.test.d.ts.map +1 -0
  513. package/dist/assetLibrary/source.test.js +28 -0
  514. package/dist/assetLibrary/staticCatalogSource.d.ts +48 -0
  515. package/dist/assetLibrary/staticCatalogSource.d.ts.map +1 -0
  516. package/dist/assetLibrary/staticCatalogSource.js +140 -0
  517. package/dist/assetLibrary/staticCatalogSource.test.d.ts +2 -0
  518. package/dist/assetLibrary/staticCatalogSource.test.d.ts.map +1 -0
  519. package/dist/assetLibrary/staticCatalogSource.test.js +154 -0
  520. package/dist/assetLibrary/thumbnail.d.ts +14 -0
  521. package/dist/assetLibrary/thumbnail.d.ts.map +1 -0
  522. package/dist/assetLibrary/thumbnail.js +70 -0
  523. package/dist/assetLibrary/types.d.ts +54 -0
  524. package/dist/assetLibrary/types.d.ts.map +1 -0
  525. package/dist/assetLibrary/types.js +1 -0
  526. package/dist/assetLibrary/useModelThumbUrl.d.ts +10 -0
  527. package/dist/assetLibrary/useModelThumbUrl.d.ts.map +1 -0
  528. package/dist/assetLibrary/useModelThumbUrl.js +56 -0
  529. package/dist/boneAnchorWiring.test.d.ts +2 -0
  530. package/dist/boneAnchorWiring.test.d.ts.map +1 -0
  531. package/dist/boneAnchorWiring.test.js +173 -0
  532. package/dist/boneAnchors.d.ts +30 -0
  533. package/dist/boneAnchors.d.ts.map +1 -0
  534. package/dist/boneAnchors.js +111 -0
  535. package/dist/boneAnchors.test.d.ts +2 -0
  536. package/dist/boneAnchors.test.d.ts.map +1 -0
  537. package/dist/boneAnchors.test.js +98 -0
  538. package/dist/bootstrap.d.ts +37 -0
  539. package/dist/bootstrap.d.ts.map +1 -0
  540. package/dist/bootstrap.js +394 -0
  541. package/dist/bootstrap.test.d.ts +2 -0
  542. package/dist/bootstrap.test.d.ts.map +1 -0
  543. package/dist/bootstrap.test.js +647 -0
  544. package/dist/cameraRegistry.d.ts +65 -0
  545. package/dist/cameraRegistry.d.ts.map +1 -0
  546. package/dist/cameraRegistry.js +151 -0
  547. package/dist/cameraRegistry.test.d.ts +2 -0
  548. package/dist/cameraRegistry.test.d.ts.map +1 -0
  549. package/dist/cameraRegistry.test.js +68 -0
  550. package/dist/config.d.ts +92 -0
  551. package/dist/config.d.ts.map +1 -0
  552. package/dist/config.js +1 -0
  553. package/dist/contextMenu.d.ts +16 -0
  554. package/dist/contextMenu.d.ts.map +1 -0
  555. package/dist/contextMenu.js +10 -0
  556. package/dist/dropPoint.d.ts +61 -0
  557. package/dist/dropPoint.d.ts.map +1 -0
  558. package/dist/dropPoint.js +97 -0
  559. package/dist/dropPoint.test.d.ts +2 -0
  560. package/dist/dropPoint.test.d.ts.map +1 -0
  561. package/dist/dropPoint.test.js +174 -0
  562. package/dist/editorOnly.d.ts +6 -0
  563. package/dist/editorOnly.d.ts.map +1 -0
  564. package/dist/editorOnly.js +32 -0
  565. package/dist/errors.d.ts +24 -0
  566. package/dist/errors.d.ts.map +1 -0
  567. package/dist/errors.js +13 -0
  568. package/dist/gestureProps.d.ts +99 -0
  569. package/dist/gestureProps.d.ts.map +1 -0
  570. package/dist/gestureProps.js +118 -0
  571. package/dist/gestureProps.test.d.ts +2 -0
  572. package/dist/gestureProps.test.d.ts.map +1 -0
  573. package/dist/gestureProps.test.js +182 -0
  574. package/dist/gesturePropsEditor.d.ts +27 -0
  575. package/dist/gesturePropsEditor.d.ts.map +1 -0
  576. package/dist/gesturePropsEditor.js +121 -0
  577. package/dist/getDeep.d.ts +8 -0
  578. package/dist/getDeep.d.ts.map +1 -0
  579. package/dist/getDeep.js +15 -0
  580. package/dist/gizmoRegistry.test.d.ts +2 -0
  581. package/dist/gizmoRegistry.test.d.ts.map +1 -0
  582. package/dist/gizmoRegistry.test.js +40 -0
  583. package/dist/hostFlows.d.ts +55 -0
  584. package/dist/hostFlows.d.ts.map +1 -0
  585. package/dist/hostFlows.js +77 -0
  586. package/dist/hostFlows.test.d.ts +2 -0
  587. package/dist/hostFlows.test.d.ts.map +1 -0
  588. package/dist/hostFlows.test.js +191 -0
  589. package/dist/i18n.d.ts +26 -0
  590. package/dist/i18n.d.ts.map +1 -0
  591. package/dist/i18n.js +271 -0
  592. package/dist/i18n.test.d.ts +2 -0
  593. package/dist/i18n.test.d.ts.map +1 -0
  594. package/dist/i18n.test.js +41 -0
  595. package/dist/index.d.ts +42 -0
  596. package/dist/index.d.ts.map +1 -0
  597. package/dist/index.js +11 -0
  598. package/dist/menuModel.d.ts +51 -0
  599. package/dist/menuModel.d.ts.map +1 -0
  600. package/dist/menuModel.js +111 -0
  601. package/dist/menuModel.test.d.ts +2 -0
  602. package/dist/menuModel.test.d.ts.map +1 -0
  603. package/dist/menuModel.test.js +197 -0
  604. package/dist/modalGrab.d.ts +29 -0
  605. package/dist/modalGrab.d.ts.map +1 -0
  606. package/dist/modalGrab.js +127 -0
  607. package/dist/outlineObjectMenu.d.ts +41 -0
  608. package/dist/outlineObjectMenu.d.ts.map +1 -0
  609. package/dist/outlineObjectMenu.js +58 -0
  610. package/dist/outlineObjectMenu.test.d.ts +2 -0
  611. package/dist/outlineObjectMenu.test.d.ts.map +1 -0
  612. package/dist/outlineObjectMenu.test.js +83 -0
  613. package/dist/pathBinding.d.ts +16 -0
  614. package/dist/pathBinding.d.ts.map +1 -0
  615. package/dist/pathBinding.js +19 -0
  616. package/dist/pathBinding.test.d.ts +2 -0
  617. package/dist/pathBinding.test.d.ts.map +1 -0
  618. package/dist/pathBinding.test.js +14 -0
  619. package/dist/pathModel.d.ts +123 -0
  620. package/dist/pathModel.d.ts.map +1 -0
  621. package/dist/pathModel.js +343 -0
  622. package/dist/pathModel.test.d.ts +2 -0
  623. package/dist/pathModel.test.d.ts.map +1 -0
  624. package/dist/pathModel.test.js +394 -0
  625. package/dist/pathPresets.d.ts +38 -0
  626. package/dist/pathPresets.d.ts.map +1 -0
  627. package/dist/pathPresets.js +180 -0
  628. package/dist/pathPresets.test.d.ts +2 -0
  629. package/dist/pathPresets.test.d.ts.map +1 -0
  630. package/dist/pathPresets.test.js +154 -0
  631. package/dist/pathRegistry.d.ts +46 -0
  632. package/dist/pathRegistry.d.ts.map +1 -0
  633. package/dist/pathRegistry.js +105 -0
  634. package/dist/pathRegistry.test.d.ts +2 -0
  635. package/dist/pathRegistry.test.d.ts.map +1 -0
  636. package/dist/pathRegistry.test.js +23 -0
  637. package/dist/pickerRegistry.d.ts +49 -0
  638. package/dist/pickerRegistry.d.ts.map +1 -0
  639. package/dist/pickerRegistry.js +17 -0
  640. package/dist/pickerRegistry.test.d.ts +2 -0
  641. package/dist/pickerRegistry.test.d.ts.map +1 -0
  642. package/dist/pickerRegistry.test.js +31 -0
  643. package/dist/pipLayout.d.ts +7 -0
  644. package/dist/pipLayout.d.ts.map +1 -0
  645. package/dist/pipLayout.js +58 -0
  646. package/dist/placementKey.test.d.ts +2 -0
  647. package/dist/placementKey.test.d.ts.map +1 -0
  648. package/dist/placementKey.test.js +32 -0
  649. package/dist/placementPoseProps.d.ts +29 -0
  650. package/dist/placementPoseProps.d.ts.map +1 -0
  651. package/dist/placementPoseProps.js +43 -0
  652. package/dist/placementPoseProps.test.d.ts +2 -0
  653. package/dist/placementPoseProps.test.d.ts.map +1 -0
  654. package/dist/placementPoseProps.test.js +35 -0
  655. package/dist/poseMode/PoseModeBar.d.ts +18 -0
  656. package/dist/poseMode/PoseModeBar.d.ts.map +1 -0
  657. package/dist/poseMode/PoseModeBar.js +127 -0
  658. package/dist/poseMode/PoseModeRig.d.ts +9 -0
  659. package/dist/poseMode/PoseModeRig.d.ts.map +1 -0
  660. package/dist/poseMode/PoseModeRig.js +300 -0
  661. package/dist/poseMode/PosePickerFrame.d.ts +42 -0
  662. package/dist/poseMode/PosePickerFrame.d.ts.map +1 -0
  663. package/dist/poseMode/PosePickerFrame.js +164 -0
  664. package/dist/poseMode/PosePropEditor.d.ts +30 -0
  665. package/dist/poseMode/PosePropEditor.d.ts.map +1 -0
  666. package/dist/poseMode/PosePropEditor.js +139 -0
  667. package/dist/poseMode/controlSpec.d.ts +26 -0
  668. package/dist/poseMode/controlSpec.d.ts.map +1 -0
  669. package/dist/poseMode/controlSpec.js +157 -0
  670. package/dist/poseMode/controlSpec.test.d.ts +2 -0
  671. package/dist/poseMode/controlSpec.test.d.ts.map +1 -0
  672. package/dist/poseMode/controlSpec.test.js +196 -0
  673. package/dist/poseMode/dragState.d.ts +16 -0
  674. package/dist/poseMode/dragState.d.ts.map +1 -0
  675. package/dist/poseMode/dragState.js +15 -0
  676. package/dist/poseMode/dragState.test.d.ts +2 -0
  677. package/dist/poseMode/dragState.test.d.ts.map +1 -0
  678. package/dist/poseMode/dragState.test.js +23 -0
  679. package/dist/poseMode/poseDisplayText.d.ts +18 -0
  680. package/dist/poseMode/poseDisplayText.d.ts.map +1 -0
  681. package/dist/poseMode/poseDisplayText.js +13 -0
  682. package/dist/poseMode/poseDisplayText.test.d.ts +2 -0
  683. package/dist/poseMode/poseDisplayText.test.d.ts.map +1 -0
  684. package/dist/poseMode/poseDisplayText.test.js +35 -0
  685. package/dist/poseMode/poseExitGuard.d.ts +8 -0
  686. package/dist/poseMode/poseExitGuard.d.ts.map +1 -0
  687. package/dist/poseMode/poseExitGuard.js +13 -0
  688. package/dist/poseMode/poseExitGuard.test.d.ts +2 -0
  689. package/dist/poseMode/poseExitGuard.test.d.ts.map +1 -0
  690. package/dist/poseMode/poseExitGuard.test.js +41 -0
  691. package/dist/poseMode/poseFrame.d.ts +11 -0
  692. package/dist/poseMode/poseFrame.d.ts.map +1 -0
  693. package/dist/poseMode/poseFrame.js +7 -0
  694. package/dist/poseMode/poseFrame.test.d.ts +2 -0
  695. package/dist/poseMode/poseFrame.test.d.ts.map +1 -0
  696. package/dist/poseMode/poseFrame.test.js +25 -0
  697. package/dist/poseMode/poseInterpolate.d.ts +4 -0
  698. package/dist/poseMode/poseInterpolate.d.ts.map +1 -0
  699. package/dist/poseMode/poseInterpolate.js +75 -0
  700. package/dist/poseMode/poseInterpolate.test.d.ts +2 -0
  701. package/dist/poseMode/poseInterpolate.test.d.ts.map +1 -0
  702. package/dist/poseMode/poseInterpolate.test.js +61 -0
  703. package/dist/poseMode/poseLibResolve.d.ts +9 -0
  704. package/dist/poseMode/poseLibResolve.d.ts.map +1 -0
  705. package/dist/poseMode/poseLibResolve.js +49 -0
  706. package/dist/poseMode/poseLibResolve.test.d.ts +2 -0
  707. package/dist/poseMode/poseLibResolve.test.d.ts.map +1 -0
  708. package/dist/poseMode/poseLibResolve.test.js +59 -0
  709. package/dist/poseMode/poseMigration.d.ts +5 -0
  710. package/dist/poseMode/poseMigration.d.ts.map +1 -0
  711. package/dist/poseMode/poseMigration.js +16 -0
  712. package/dist/poseMode/poseMigration.test.d.ts +2 -0
  713. package/dist/poseMode/poseMigration.test.d.ts.map +1 -0
  714. package/dist/poseMode/poseMigration.test.js +25 -0
  715. package/dist/poseMode/poseOptions.d.ts +45 -0
  716. package/dist/poseMode/poseOptions.d.ts.map +1 -0
  717. package/dist/poseMode/poseOptions.js +39 -0
  718. package/dist/poseMode/poseOptions.test.d.ts +2 -0
  719. package/dist/poseMode/poseOptions.test.d.ts.map +1 -0
  720. package/dist/poseMode/poseOptions.test.js +83 -0
  721. package/dist/poseMode/poseOverride.d.ts +13 -0
  722. package/dist/poseMode/poseOverride.d.ts.map +1 -0
  723. package/dist/poseMode/poseOverride.js +26 -0
  724. package/dist/poseMode/poseOverride.test.d.ts +2 -0
  725. package/dist/poseMode/poseOverride.test.d.ts.map +1 -0
  726. package/dist/poseMode/poseOverride.test.js +23 -0
  727. package/dist/poseMode/poseRetarget.d.ts +17 -0
  728. package/dist/poseMode/poseRetarget.d.ts.map +1 -0
  729. package/dist/poseMode/poseRetarget.js +53 -0
  730. package/dist/poseMode/poseRetarget.test.d.ts +2 -0
  731. package/dist/poseMode/poseRetarget.test.d.ts.map +1 -0
  732. package/dist/poseMode/poseRetarget.test.js +88 -0
  733. package/dist/poseMode/poseSession.d.ts +58 -0
  734. package/dist/poseMode/poseSession.d.ts.map +1 -0
  735. package/dist/poseMode/poseSession.js +183 -0
  736. package/dist/poseMode/poseSession.test.d.ts +2 -0
  737. package/dist/poseMode/poseSession.test.d.ts.map +1 -0
  738. package/dist/poseMode/poseSession.test.js +159 -0
  739. package/dist/poseMode/poseSessionHooks.test.d.ts +2 -0
  740. package/dist/poseMode/poseSessionHooks.test.d.ts.map +1 -0
  741. package/dist/poseMode/poseSessionHooks.test.js +49 -0
  742. package/dist/poseMode/poseTrack.d.ts +30 -0
  743. package/dist/poseMode/poseTrack.d.ts.map +1 -0
  744. package/dist/poseMode/poseTrack.js +155 -0
  745. package/dist/poseMode/poseTrack.test.d.ts +2 -0
  746. package/dist/poseMode/poseTrack.test.d.ts.map +1 -0
  747. package/dist/poseMode/poseTrack.test.js +84 -0
  748. package/dist/poseMode/poseValue.d.ts +22 -0
  749. package/dist/poseMode/poseValue.d.ts.map +1 -0
  750. package/dist/poseMode/poseValue.js +73 -0
  751. package/dist/poseMode/poseValue.test.d.ts +2 -0
  752. package/dist/poseMode/poseValue.test.d.ts.map +1 -0
  753. package/dist/poseMode/poseValue.test.js +62 -0
  754. package/dist/poseMode/savePose.d.ts +23 -0
  755. package/dist/poseMode/savePose.d.ts.map +1 -0
  756. package/dist/poseMode/savePose.js +29 -0
  757. package/dist/poseMode/selectionModes.d.ts +14 -0
  758. package/dist/poseMode/selectionModes.d.ts.map +1 -0
  759. package/dist/poseMode/selectionModes.js +39 -0
  760. package/dist/poseMode/selectionModes.test.d.ts +2 -0
  761. package/dist/poseMode/selectionModes.test.d.ts.map +1 -0
  762. package/dist/poseMode/selectionModes.test.js +91 -0
  763. package/dist/poseNameMessages.d.ts +13 -0
  764. package/dist/poseNameMessages.d.ts.map +1 -0
  765. package/dist/poseNameMessages.js +370 -0
  766. package/dist/poseNames.d.ts +14 -0
  767. package/dist/poseNames.d.ts.map +1 -0
  768. package/dist/poseNames.js +21 -0
  769. package/dist/poseNames.test.d.ts +2 -0
  770. package/dist/poseNames.test.d.ts.map +1 -0
  771. package/dist/poseNames.test.js +41 -0
  772. package/dist/poseStatusText.d.ts +2 -0
  773. package/dist/poseStatusText.d.ts.map +1 -0
  774. package/dist/poseStatusText.js +11 -0
  775. package/dist/poseStatusText.test.d.ts +2 -0
  776. package/dist/poseStatusText.test.d.ts.map +1 -0
  777. package/dist/poseStatusText.test.js +21 -0
  778. package/dist/presetThumbGeometry.d.ts +26 -0
  779. package/dist/presetThumbGeometry.d.ts.map +1 -0
  780. package/dist/presetThumbGeometry.js +103 -0
  781. package/dist/presetThumbGeometry.test.d.ts +2 -0
  782. package/dist/presetThumbGeometry.test.d.ts.map +1 -0
  783. package/dist/presetThumbGeometry.test.js +83 -0
  784. package/dist/selectionOutline.d.ts +42 -0
  785. package/dist/selectionOutline.d.ts.map +1 -0
  786. package/dist/selectionOutline.js +174 -0
  787. package/dist/selectionOutline.test.d.ts +2 -0
  788. package/dist/selectionOutline.test.d.ts.map +1 -0
  789. package/dist/selectionOutline.test.js +58 -0
  790. package/dist/smoke.test.d.ts +1 -0
  791. package/dist/smoke.test.d.ts.map +1 -0
  792. package/dist/smoke.test.js +17 -0
  793. package/dist/uiConfig.d.ts +16 -0
  794. package/dist/uiConfig.d.ts.map +1 -0
  795. package/dist/uiConfig.js +13 -0
  796. package/dist/uiConfig.test.d.ts +2 -0
  797. package/dist/uiConfig.test.d.ts.map +1 -0
  798. package/dist/uiConfig.test.js +98 -0
  799. package/dist/undoShortcuts.d.ts +28 -0
  800. package/dist/undoShortcuts.d.ts.map +1 -0
  801. package/dist/undoShortcuts.js +59 -0
  802. package/dist/undoShortcuts.test.d.ts +2 -0
  803. package/dist/undoShortcuts.test.d.ts.map +1 -0
  804. package/dist/undoShortcuts.test.js +37 -0
  805. package/dist/useCameraStudio.d.ts +3 -0
  806. package/dist/useCameraStudio.d.ts.map +1 -0
  807. package/dist/useCameraStudio.js +86 -0
  808. package/dist/version.d.ts +2 -0
  809. package/dist/version.d.ts.map +1 -0
  810. package/dist/version.js +11 -0
  811. package/dist/videoExport/BlobCollectSink.d.ts +25 -0
  812. package/dist/videoExport/BlobCollectSink.d.ts.map +1 -0
  813. package/dist/videoExport/BlobCollectSink.js +56 -0
  814. package/dist/videoExport/BlobCollectSink.test.d.ts +2 -0
  815. package/dist/videoExport/BlobCollectSink.test.d.ts.map +1 -0
  816. package/dist/videoExport/BlobCollectSink.test.js +78 -0
  817. package/dist/videoExport/encoder.d.ts +34 -0
  818. package/dist/videoExport/encoder.d.ts.map +1 -0
  819. package/dist/videoExport/encoder.js +61 -0
  820. package/dist/videoExport/encoder.test.d.ts +2 -0
  821. package/dist/videoExport/encoder.test.d.ts.map +1 -0
  822. package/dist/videoExport/encoder.test.js +21 -0
  823. package/dist/videoExport/exporter.d.ts +24 -0
  824. package/dist/videoExport/exporter.d.ts.map +1 -0
  825. package/dist/videoExport/exporter.js +74 -0
  826. package/dist/videoExport/sinks.d.ts +55 -0
  827. package/dist/videoExport/sinks.d.ts.map +1 -0
  828. package/dist/videoExport/sinks.js +69 -0
  829. package/package.json +59 -3
  830. package/README.md +0 -3
@@ -0,0 +1,65 @@
1
+ import type { ISheet, ISheetObject } from '@dreamerbird/core';
2
+ import type { Object3D } from 'three';
3
+ /** 注册表对象的 theatre key(大纲顶层 "Cameras" 行,和 Placements 同款) */
4
+ export declare const CAMERAS_REGISTRY_KEY = "Cameras";
5
+ /**
6
+ * 一台相机 = 一个 theatre 对象;旧清单里的 targetKey 解析时忽略
7
+ * (不做迁移,老相机自由朝向)
8
+ */
9
+ export type CameraEntry = {
10
+ cameraKey: string;
11
+ };
12
+ /** 新相机的初始取景(添加时从导演视角捕获,组件挂载后消费) */
13
+ export type CameraSeed = {
14
+ position: {
15
+ x: number;
16
+ y: number;
17
+ z: number;
18
+ };
19
+ rotation: {
20
+ x: number;
21
+ y: number;
22
+ z: number;
23
+ };
24
+ };
25
+ export declare function getCamerasRegistry(sheet: ISheet): ISheetObject<{
26
+ list: import("@dreamerbird/core").PropTypeConfig_String;
27
+ }>;
28
+ /** 解析清单 JSON;坏数据一律回退空(注册表是底账,勿手改) */
29
+ export declare function parseCameraEntries(json: string): CameraEntry[];
30
+ export declare function readCameraEntries(registry: ISheetObject<any>): CameraEntry[];
31
+ /**
32
+ * 多相机(P2)的命名:第一台 Shot Camera,之后 Shot Camera 2 / 3…。
33
+ * 顶层扁平后无前缀隔离,编号要同时避开注册表已用 key 和全场景已占用
34
+ * 路径(放置模型可能叫 "Shot Camera 2.fbx" 这种,探测只查不建)
35
+ */
36
+ export declare function nextCameraEntry(sheet: ISheet, existing: readonly CameraEntry[]): CameraEntry;
37
+ /** 界面显示名:旧状态(套文件夹时期)的 key 去掉 " / Camera" 后缀;
38
+ * 扁平化后的新 key 无后缀,原样即显示名 */
39
+ export declare function cameraDisplayName(cameraKey: string): string;
40
+ /** 响应式读相机清单:scrub 提交/撤销/同步都会触发 onValuesChange */
41
+ export declare function useCamerasList(sheet: ISheet): CameraEntry[];
42
+ export declare function stashCameraSeed(cameraKey: string, seed: CameraSeed): void;
43
+ export declare function consumeCameraSeed(cameraKey: string): CameraSeed | undefined;
44
+ /** 添加相机:注册表加一行(App 按清单渲染,组件挂载即创建对象) */
45
+ export declare function addCameraToRegistry(sheet: ISheet, entry: CameraEntry, seed?: CameraSeed): void;
46
+ /**
47
+ * 删除相机:单个事务完成 forgetObject + 注册表移除 = 一步撤销
48
+ * (2026-10-19,Task 14 合并;原先两个事务两步撤销)。
49
+ *
50
+ * forgetObject 走 stateEditors 按地址清持久数据(静态覆盖 + 时间轴
51
+ * 轨道,同步到所有客户端):不再要求挂载中的对象句柄——注册表有条目
52
+ * 但组件未挂载(或已脱离对象表)的相机同样真删,不静默跳过
53
+ * (schema 编辑器对无持久数据的对象先查后删,幂等不抛)。
54
+ * 注册表行移除 → 组件卸载 → detachObject → 大纲行消失。
55
+ */
56
+ export declare function removeCamera(sheet: ISheet, entry: CameraEntry): void;
57
+ /**
58
+ * 活动相机推导(2026-10-19,Task 14 抽成纯函数):activeCameraKey 失效
59
+ * (被删/对端同步)时顺位清单第一台,空清单为 null。CameraScene 的
60
+ * 活动相机、objects.delete 的「删除活动相机按现有规则回退」共用。
61
+ */
62
+ export declare function resolveActiveCamera(cameras: readonly CameraEntry[], activeCameraKey: string | null): CameraEntry | null;
63
+ export declare function registerShotCameraObject(cameraKey: string, obj: Object3D | null): void;
64
+ export declare function getShotCameraObjects(): ReadonlyMap<string, Object3D>;
65
+ //# sourceMappingURL=cameraRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cameraRegistry.d.ts","sourceRoot":"","sources":["../src/cameraRegistry.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAC,MAAM,EAAE,YAAY,EAAC,MAAM,mBAAmB,CAAA;AAM3D,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,OAAO,CAAA;AAGnC,2DAA2D;AAC3D,eAAO,MAAM,oBAAoB,YAAY,CAAA;AAE7C;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAAA;AAE7C,mCAAmC;AACnC,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAA;IAC3C,QAAQ,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAA;CAC5C,CAAA;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM;;GAO/C;AAED,qCAAqC;AACrC,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAgB9D;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,WAAW,EAAE,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,SAAS,WAAW,EAAE,GAC/B,WAAW,CAQb;AAED;4BAC4B;AAC5B,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,iDAAiD;AACjD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAU3D;AAQD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,QAElE;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAI3E;AAED,uCAAuC;AACvC,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,WAAW,EAClB,IAAI,CAAC,EAAE,UAAU,QAclB;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,QAoB7D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,WAAW,EAAE,EAC/B,eAAe,EAAE,MAAM,GAAG,IAAI,GAC7B,WAAW,GAAG,IAAI,CAIpB;AAKD,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,QAAQ,GAAG,IAAI,GACnB,IAAI,CAMN;AAED,wBAAgB,oBAAoB,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAEpE"}
@@ -0,0 +1,151 @@
1
+ // packages/camera-studio/src/cameraRegistry.ts
2
+ /**
3
+ * 相机注册表:场景里有几台相机 = 注册表清单里有几行,每台相机是一个
4
+ * theatre 对象。照搬放置模型(Placements)的注册表模式,结构天然支持
5
+ * 多相机;P1 在工具条上限一台。
6
+ *
7
+ * 生命周期:添加 = 注册表加一行(App 按清单渲染 ShotCamera,组件挂载
8
+ * 即创建对象、大纲行出现);删除 = forgetObject 清持久数据 + 注册表
9
+ * 移除(组件卸载 → detachObject → 大纲行消失)。
10
+ */
11
+ import { getStudioSync, types as t, val } from '@dreamerbird/core';
12
+ // 内部 Studio 通道:合并事务需要 stateEditors.forgetObject(按地址清持久
13
+ // 数据,不要求对象已挂载)——与 keyframeTracks/poseTrack 同先例
14
+ import getStudio from '@dreamerbird/studio/getStudio';
15
+ import { useEffect, useMemo, useState } from 'react';
16
+ import { notifyTargetRegistryChange, sheetObjectExists } from './aimTargets';
17
+ /** 注册表对象的 theatre key(大纲顶层 "Cameras" 行,和 Placements 同款) */
18
+ export const CAMERAS_REGISTRY_KEY = 'Cameras';
19
+ export function getCamerasRegistry(sheet) {
20
+ // 注册表只是存数据的对象,不出现在大纲树
21
+ return sheet.object(CAMERAS_REGISTRY_KEY, { list: t.string('[]') }, { hideFromOutline: true });
22
+ }
23
+ /** 解析清单 JSON;坏数据一律回退空(注册表是底账,勿手改) */
24
+ export function parseCameraEntries(json) {
25
+ try {
26
+ const list = JSON.parse(json);
27
+ if (!Array.isArray(list))
28
+ return [];
29
+ return list
30
+ .filter((item) => typeof item === 'object' &&
31
+ item !== null &&
32
+ typeof item.cameraKey === 'string' &&
33
+ item.cameraKey.length > 0)
34
+ .map((item) => ({ cameraKey: item.cameraKey }));
35
+ }
36
+ catch {
37
+ return [];
38
+ }
39
+ }
40
+ export function readCameraEntries(registry) {
41
+ return parseCameraEntries(val(registry.props.list));
42
+ }
43
+ /**
44
+ * 多相机(P2)的命名:第一台 Shot Camera,之后 Shot Camera 2 / 3…。
45
+ * 顶层扁平后无前缀隔离,编号要同时避开注册表已用 key 和全场景已占用
46
+ * 路径(放置模型可能叫 "Shot Camera 2.fbx" 这种,探测只查不建)
47
+ */
48
+ export function nextCameraEntry(sheet, existing) {
49
+ const used = new Set(existing.map((e) => e.cameraKey));
50
+ for (let n = 1;; n++) {
51
+ const cameraKey = n === 1 ? 'Shot Camera' : `Shot Camera ${n}`;
52
+ if (!used.has(cameraKey) && !sheetObjectExists(sheet, cameraKey)) {
53
+ return { cameraKey };
54
+ }
55
+ }
56
+ }
57
+ /** 界面显示名:旧状态(套文件夹时期)的 key 去掉 " / Camera" 后缀;
58
+ * 扁平化后的新 key 无后缀,原样即显示名 */
59
+ export function cameraDisplayName(cameraKey) {
60
+ return cameraKey.replace(/ \/ Camera$/, '');
61
+ }
62
+ /** 响应式读相机清单:scrub 提交/撤销/同步都会触发 onValuesChange */
63
+ export function useCamerasList(sheet) {
64
+ const registry = useMemo(() => getCamerasRegistry(sheet), [sheet]);
65
+ const [list, setList] = useState(() => readCameraEntries(registry));
66
+ useEffect(() => {
67
+ setList(readCameraEntries(registry));
68
+ return registry.onValuesChange(() => setList(readCameraEntries(registry)));
69
+ }, [registry]);
70
+ return list;
71
+ }
72
+ /**
73
+ * 新相机的取景种子:组件挂载前对象还不存在,没法直接写属性——
74
+ * 添加时先把种子存这里,ShotCamera 挂载后消费一次。
75
+ */
76
+ const pendingSeeds = new Map();
77
+ export function stashCameraSeed(cameraKey, seed) {
78
+ pendingSeeds.set(cameraKey, seed);
79
+ }
80
+ export function consumeCameraSeed(cameraKey) {
81
+ const seed = pendingSeeds.get(cameraKey);
82
+ pendingSeeds.delete(cameraKey);
83
+ return seed;
84
+ }
85
+ /** 添加相机:注册表加一行(App 按清单渲染,组件挂载即创建对象) */
86
+ export function addCameraToRegistry(sheet, entry, seed) {
87
+ const studio = getStudioSync();
88
+ if (!studio)
89
+ return;
90
+ const registry = getCamerasRegistry(sheet);
91
+ const list = readCameraEntries(registry);
92
+ // 连击/重入防护:同一 cameraKey 已存在就不重复提交
93
+ if (list.some((e) => e.cameraKey === entry.cameraKey))
94
+ return;
95
+ const scrub = studio.scrub();
96
+ scrub.capture(({ set }) => set(registry.props.list, JSON.stringify([...list, entry])));
97
+ scrub.commit();
98
+ if (seed)
99
+ stashCameraSeed(entry.cameraKey, seed);
100
+ }
101
+ /**
102
+ * 删除相机:单个事务完成 forgetObject + 注册表移除 = 一步撤销
103
+ * (2026-10-19,Task 14 合并;原先两个事务两步撤销)。
104
+ *
105
+ * forgetObject 走 stateEditors 按地址清持久数据(静态覆盖 + 时间轴
106
+ * 轨道,同步到所有客户端):不再要求挂载中的对象句柄——注册表有条目
107
+ * 但组件未挂载(或已脱离对象表)的相机同样真删,不静默跳过
108
+ * (schema 编辑器对无持久数据的对象先查后删,幂等不抛)。
109
+ * 注册表行移除 → 组件卸载 → detachObject → 大纲行消失。
110
+ */
111
+ export function removeCamera(sheet, entry) {
112
+ const studio = getStudio();
113
+ if (!studio)
114
+ return;
115
+ // 没来得及挂载消费掉的取景种子一并清掉,不留残留
116
+ pendingSeeds.delete(entry.cameraKey);
117
+ const registry = getCamerasRegistry(sheet);
118
+ const list = readCameraEntries(registry);
119
+ studio.transaction(({ set, stateEditors }) => {
120
+ stateEditors.coreByProject.historic.sheetsById.forgetObject({
121
+ projectId: sheet.address.projectId,
122
+ sheetId: sheet.address.sheetId,
123
+ // 业务 key 跨适配层边界按不透明字符串传递,此处回到 core 的名义类型
124
+ // (同 keyframeTracks 的 trackId as SequenceTrackId)
125
+ objectKey: entry.cameraKey,
126
+ });
127
+ set(registry.props.list, JSON.stringify(list.filter((e) => e.cameraKey !== entry.cameraKey)));
128
+ });
129
+ }
130
+ /**
131
+ * 活动相机推导(2026-10-19,Task 14 抽成纯函数):activeCameraKey 失效
132
+ * (被删/对端同步)时顺位清单第一台,空清单为 null。CameraScene 的
133
+ * 活动相机、objects.delete 的「删除活动相机按现有规则回退」共用。
134
+ */
135
+ export function resolveActiveCamera(cameras, activeCameraKey) {
136
+ return (cameras.find((e) => e.cameraKey === activeCameraKey) ?? cameras[0] ?? null);
137
+ }
138
+ /** 拍摄相机的 cameraKey → three 相机对象(锚点父级绑定的 camera: 解析用) */
139
+ const shotCameraObjects = new Map();
140
+ export function registerShotCameraObject(cameraKey, obj) {
141
+ if (obj)
142
+ shotCameraObjects.set(cameraKey, obj);
143
+ else
144
+ shotCameraObjects.delete(cameraKey);
145
+ // 与 registerAnchorObject 同机制:登记表变更广播,ShotCamera 等的
146
+ // 瞄准/父级解析随挂载/注销即时翻正(循环 import 仅运行时调用,安全)
147
+ notifyTargetRegistryChange();
148
+ }
149
+ export function getShotCameraObjects() {
150
+ return shotCameraObjects;
151
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cameraRegistry.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cameraRegistry.test.d.ts","sourceRoot":"","sources":["../src/cameraRegistry.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,68 @@
1
+ // packages/camera-studio/src/cameraRegistry.test.ts
2
+ import { setPrivateAPI } from '@dreamerbird/core/privateAPIs';
3
+ import { nextCameraEntry, parseCameraEntries, cameraDisplayName, stashCameraSeed, consumeCameraSeed, } from './cameraRegistry';
4
+ describe('parseCameraEntries', () => {
5
+ test('解析合法清单;坏 JSON/非数组回退空', () => {
6
+ expect(parseCameraEntries('[]')).toEqual([]);
7
+ const one = [
8
+ { cameraKey: 'Shot Camera / Camera', targetKey: 'Shot Camera / Target' },
9
+ ];
10
+ // 旧格式宽容解析:targetKey 被忽略
11
+ expect(parseCameraEntries(JSON.stringify(one))).toEqual([
12
+ { cameraKey: 'Shot Camera / Camera' },
13
+ ]);
14
+ expect(parseCameraEntries('not json')).toEqual([]);
15
+ expect(parseCameraEntries('{"a":1}')).toEqual([]);
16
+ });
17
+ test('过滤畸形项', () => {
18
+ expect(parseCameraEntries('[{"cameraKey":"A","targetKey":"B"},{"foo":"bar"},{"cameraKey":1,"targetKey":"T"}]')).toEqual([{ cameraKey: 'A' }]);
19
+ });
20
+ });
21
+ describe('cameraDisplayName', () => {
22
+ test('旧格式(套文件夹时期)的 key 去掉 " / Camera" 后缀', () => {
23
+ expect(cameraDisplayName('Shot Camera / Camera')).toBe('Shot Camera');
24
+ expect(cameraDisplayName('Shot Camera 3 / Camera')).toBe('Shot Camera 3');
25
+ });
26
+ test('扁平化后的新 key 无后缀,原样即显示名', () => {
27
+ expect(cameraDisplayName('Shot Camera')).toBe('Shot Camera');
28
+ expect(cameraDisplayName('Shot Camera 2')).toBe('Shot Camera 2');
29
+ expect(cameraDisplayName('')).toBe('');
30
+ });
31
+ });
32
+ describe('nextCameraEntry', () => {
33
+ // 顶层扁平化后的命名:第一台 Shot Camera,之后 Shot Camera 2/3…;
34
+ // 编号同时避开注册表已用 key 与全场景已占用路径(sheetObjectExists 探测)
35
+ test('空清单给第一台', () => {
36
+ expect(nextCameraEntry({}, [])).toEqual({ cameraKey: 'Shot Camera' });
37
+ });
38
+ test('占用后递增编号,跳过已用的', () => {
39
+ const existing = [{ cameraKey: 'Shot Camera' }, { cameraKey: 'Shot Camera 3' }];
40
+ expect(nextCameraEntry({}, existing)).toEqual({
41
+ cameraKey: 'Shot Camera 2',
42
+ });
43
+ });
44
+ test('旧格式(套文件夹)key 不占新名:新旧路径不同,第一台仍给 Shot Camera', () => {
45
+ expect(nextCameraEntry({}, [{ cameraKey: 'Shot Camera / Camera' }])).toEqual({
46
+ cameraKey: 'Shot Camera',
47
+ });
48
+ });
49
+ test('全场景路径被占(如模型叫了 Shot Camera.fbx)时跳过', () => {
50
+ const sheet = { type: 'Sheet' };
51
+ setPrivateAPI(sheet, {
52
+ getObject: (key) => (key === 'Shot Camera' ? {} : undefined),
53
+ });
54
+ expect(nextCameraEntry(sheet, [])).toEqual({ cameraKey: 'Shot Camera 2' });
55
+ });
56
+ });
57
+ describe('相机取景种子', () => {
58
+ test('consume 一次性:取走就没', () => {
59
+ const seed = {
60
+ position: { x: 1, y: 2, z: 3 },
61
+ rotation: { x: 0, y: 0, z: 0 },
62
+ };
63
+ stashCameraSeed('Shot Camera / Camera', seed);
64
+ expect(consumeCameraSeed('Shot Camera / Camera')).toEqual(seed);
65
+ expect(consumeCameraSeed('Shot Camera / Camera')).toBeUndefined();
66
+ expect(consumeCameraSeed('没存过的')).toBeUndefined();
67
+ });
68
+ });
@@ -0,0 +1,92 @@
1
+ /**
2
+ * 宿主可见的配置与句柄类型(spec §3 逐字为宿主所见形态)。
3
+ *
4
+ * CameraFlows 类型取自 ./hostFlows(定义所在);简报草样写 './App',
5
+ * 但 App.tsx 只默认导出组件、不转出口该类型,从定义处引入才编译得过。
6
+ */
7
+ import type { IProject } from '@dreamerbird/core';
8
+ import type { WritableLibrarySource } from './assetLibrary/source';
9
+ import type { CameraStudioErrorHandler } from './errors';
10
+ import type { CameraFlows } from './hostFlows';
11
+ import type { CameraStudioApi } from './agent/api';
12
+ /**
13
+ * Agent 桥接连接配置(spec §10.3/§10.4,Task 6)。
14
+ * 浏览器默认不连接桥接:只有宿主显式配置本项才启动桥接客户端;
15
+ * 配置变化按既有 boot 规则处理(重挂告警,换配置需整页刷新)。
16
+ */
17
+ export type CameraStudioAgentBridgeConfig = {
18
+ /** 桥接 WebSocket 地址,如 ws://127.0.0.1:43110 */
19
+ url: string;
20
+ /**
21
+ * Bearer 凭据:WebSocket subprotocol(token.<encoded>)与桥接 HTTP
22
+ * 文件传输(Authorization)共用;绝不写入日志
23
+ */
24
+ token: string;
25
+ /** 桥接 HTTP 地址(二进制 File/Blob ↔ fileId 适配),如 http://127.0.0.1:43110 */
26
+ httpUrl: string;
27
+ };
28
+ /** Agent JS API 配置(spec §7;首 boot 锁定,重挂换配置不生效) */
29
+ export type CameraStudioAgentConfig = {
30
+ /**
31
+ * 场景 ready 后把 api 挂载为 window.__cameraStudioApi(浏览器默认不挂,
32
+ * 不连接桥接);会话拆解时删除。缺省 false
33
+ */
34
+ exposeGlobal?: boolean;
35
+ /** 本机桥接连接;缺省不连接(浏览器默认不连桥接) */
36
+ bridge?: CameraStudioAgentBridgeConfig;
37
+ };
38
+ export interface CameraStudioConfig {
39
+ /** id 字符串(getProject)或 IProject 实例;缺省 'Space' */
40
+ project?: string | IProject;
41
+ /** 场景状态宿主接管;传了即关 theatre 本地持久化 */
42
+ state?: {
43
+ initialState?: unknown;
44
+ onStateChange?: (content: unknown) => void;
45
+ /** onStateChange 节流,缺省 1000ms(尾部触发,卸载时 flush) */
46
+ throttleMs?: number;
47
+ };
48
+ /** 宿主错误提示入口:库存储/启动清理/视频导出错误统一上告;不传保持内置提示行为 */
49
+ onError?: CameraStudioErrorHandler;
50
+ /** 可写源实例 | 「namespace」内置 IDB 简写(库名 toybox-asset-library[-namespace],
51
+ 不带 namespace 与现状一字不差) | false 纯查看器(仅内置目录);缺省 = 现状 */
52
+ storage?: WritableLibrarySource | {
53
+ namespace?: string;
54
+ } | false;
55
+ /** 内置目录文件根;缺省包内 assets */
56
+ assets?: {
57
+ baseUrl?: string;
58
+ };
59
+ /** 协作端点;缺省 false(关) */
60
+ sync?: {
61
+ serverUrl?: string;
62
+ } | false;
63
+ ui?: {
64
+ portalContainer?: HTMLElement;
65
+ zIndexBase?: number;
66
+ locale?: string;
67
+ /** 隐藏 studio 左上角带 logo 的整条 LeftStrip(应用 logo + 工作区按钮) */
68
+ hideLeftStrip?: boolean;
69
+ };
70
+ flows?: {
71
+ onFlows?: (flows: CameraFlows) => void;
72
+ };
73
+ /** Agent JS API 行为配置;缺省不挂 window 全局 */
74
+ agent?: CameraStudioAgentConfig;
75
+ }
76
+ /** CameraScene 的 props 形态(T9 落地组件);对宿主不透明,不解构 */
77
+ export type CameraSceneProps = {
78
+ project: IProject;
79
+ onFlows?: (flows: CameraFlows) => void;
80
+ onError?: CameraStudioErrorHandler;
81
+ };
82
+ export interface CameraStudioHandle {
83
+ ready: boolean;
84
+ error: Error | undefined;
85
+ sceneProps: CameraSceneProps;
86
+ /**
87
+ * Agent JS API 门面(spec §7):模块级单例,首帧即稳定(后续 render
88
+ * 同一对象);`api.ready` 在 project+studio+Scene Runtime 就位后兑现
89
+ */
90
+ api: CameraStudioApi;
91
+ }
92
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,uBAAuB,CAAA;AAChE,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,UAAU,CAAA;AACtD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,aAAa,CAAA;AAEhD;;;;GAIG;AACH,MAAM,MAAM,6BAA6B,GAAG;IAC1C,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAA;IACX;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,kDAAkD;AAClD,MAAM,MAAM,uBAAuB,GAAG;IACpC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,6BAA6B,CAAA;CACvC,CAAA;AAED,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IAC3B,kCAAkC;IAClC,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,OAAO,CAAA;QACtB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;QAC1C,iDAAiD;QACjD,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;IACD,8CAA8C;IAC9C,OAAO,CAAC,EAAE,wBAAwB,CAAA;IAClC;4DACwD;IACxD,OAAO,CAAC,EAAE,qBAAqB,GAAG;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAC,GAAG,KAAK,CAAA;IAC9D,0BAA0B;IAC1B,MAAM,CAAC,EAAE;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAC,CAAA;IAC3B,uBAAuB;IACvB,IAAI,CAAC,EAAE;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAC,GAAG,KAAK,CAAA;IACnC,EAAE,CAAC,EAAE;QACH,eAAe,CAAC,EAAE,WAAW,CAAA;QAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,yDAAyD;QACzD,aAAa,CAAC,EAAE,OAAO,CAAA;KACxB,CAAA;IACD,KAAK,CAAC,EAAE;QAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;KAAC,CAAA;IAChD,uCAAuC;IACvC,KAAK,CAAC,EAAE,uBAAuB,CAAA;CAChC;AAED,iDAAiD;AACjD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,QAAQ,CAAA;IACjB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IACtC,OAAO,CAAC,EAAE,wBAAwB,CAAA;CACnC,CAAA;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,EAAE,KAAK,GAAG,SAAS,CAAA;IACxB,UAAU,EAAE,gBAAgB,CAAA;IAC5B;;;OAGG;IACH,GAAG,EAAE,eAAe,CAAA;CACrB"}
package/dist/config.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 画布右键菜单的统一出口:studio ContextMenu 的薄封装。
3
+ * 样式/定位/点外关闭/Esc 关闭全部交给 studio 实现,
4
+ * 这里只把"光标位置 + 菜单项 + 关闭回调"对齐过去。
5
+ */
6
+ import React from 'react';
7
+ import type { ContextMenuItem } from '@dreamerbird/studio/uiComponents/chordial/chordialInternals';
8
+ export declare function CanvasContextMenu({ position, items, onClose, }: {
9
+ position: {
10
+ x: number;
11
+ y: number;
12
+ };
13
+ items: ContextMenuItem[];
14
+ onClose: () => void;
15
+ }): React.JSX.Element;
16
+ //# sourceMappingURL=contextMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextMenu.d.ts","sourceRoot":"","sources":["../src/contextMenu.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,6DAA6D,CAAA;AAEhG,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,KAAK,EACL,OAAO,GACR,EAAE;IACD,QAAQ,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAA;IAChC,KAAK,EAAE,eAAe,EAAE,CAAA;IACxB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,qBAQA"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 画布右键菜单的统一出口:studio ContextMenu 的薄封装。
3
+ * 样式/定位/点外关闭/Esc 关闭全部交给 studio 实现,
4
+ * 这里只把"光标位置 + 菜单项 + 关闭回调"对齐过去。
5
+ */
6
+ import React from 'react';
7
+ import ContextMenu from '@dreamerbird/studio/uiComponents/simpleContextMenu/ContextMenu/ContextMenu';
8
+ export function CanvasContextMenu({ position, items, onClose, }) {
9
+ return (React.createElement(ContextMenu, { items: items, clickPoint: { clientX: position.x, clientY: position.y }, onRequestClose: onClose }));
10
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * 指针位置 → 场景落点:登记过的物体表面优先,y=0 地面(数学平面,无限大)
3
+ * 兜底,视线朝天/贴地时退到"前方 30 个单位、压到地面"——任何视角都有落点。
4
+ * 从 PlacementRigCore 抽出,模型放置幽灵和路径预设落点标记共用。
5
+ *
6
+ * 不用不可见网格接事件:视线与地面平行时网格永远打不中,事件根本不触发。
7
+ */
8
+ import { Vector3 } from 'three';
9
+ import type { Camera, Object3D, Raycaster } from 'three';
10
+ export declare function computeDropPoint(raycaster: Raycaster, camera: Camera, surfaces: Iterable<Object3D>, rect: {
11
+ left: number;
12
+ top: number;
13
+ width: number;
14
+ height: number;
15
+ }, clientX: number, clientY: number,
16
+ /** 表面分支胜出时回填命中的登记根(命中网格往上走到 surfaces 里的祖先) */
17
+ out?: {
18
+ surfaceRoot: Object3D | null;
19
+ }): Vector3;
20
+ /**
21
+ * 指针位置 → 视平面落点(Blender G 抓取的默认语义):指针射线与
22
+ * 「过锚点、垂直于视线的平面」求交。视平面随相机倾斜,指针上移 =
23
+ * 世界里升高,高度自由;顶视时平面水平,退化为纯水平移动(同 Blender
24
+ * 顶视图里 G 只能平移)。射线与平面平行/平面退到相机身后时返回 null,
25
+ * 调用方保持上一帧点位不动。
26
+ */
27
+ export declare function computeViewPlanePoint(raycaster: Raycaster, camera: Camera, rect: {
28
+ left: number;
29
+ top: number;
30
+ width: number;
31
+ height: number;
32
+ }, clientX: number, clientY: number,
33
+ /** 视平面锚点:决定平面的深度和基准高度(拖动开始时的落点) */
34
+ anchor: Vector3): Vector3 | null;
35
+ /**
36
+ * 竖直轴向约束(Blender 拖动中按 Z):锁定基准点的 x/z,指针控制 y。
37
+ * 取「过基准点的竖直线」与指针射线的最近点参数——射线到轴线的垂足即
38
+ * 手感上"指针所指的高度"。视线与竖直轴平行(正顶/正仰视)时无解,返回
39
+ * null,调用方保持上一帧点位。
40
+ */
41
+ export declare function computeVerticalConstraintPoint(raycaster: Raycaster, camera: Camera, rect: {
42
+ left: number;
43
+ top: number;
44
+ width: number;
45
+ height: number;
46
+ }, clientX: number, clientY: number,
47
+ /** 约束基准点:x/z 被锁定为它,y 从它起算 */
48
+ base: Vector3): Vector3 | null;
49
+ /**
50
+ * 水平面约束(Blender 拖动中按 Shift+Z):锁定基准点的 y,指针在
51
+ * 水平面内自由移动 x/z。视线与水平面平行时无解,返回 null。
52
+ */
53
+ export declare function computeHorizontalConstraintPoint(raycaster: Raycaster, camera: Camera, rect: {
54
+ left: number;
55
+ top: number;
56
+ width: number;
57
+ height: number;
58
+ }, clientX: number, clientY: number,
59
+ /** 约束基准点:y 被锁定为它 */
60
+ base: Vector3): Vector3 | null;
61
+ //# sourceMappingURL=dropPoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropPoint.d.ts","sourceRoot":"","sources":["../src/dropPoint.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAiB,OAAO,EAAC,MAAM,OAAO,CAAA;AAC7C,OAAO,KAAK,EAAC,MAAM,EAAQ,QAAQ,EAAE,SAAS,EAAC,MAAM,OAAO,CAAA;AAI5D,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAC5B,IAAI,EAAE;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,EAChE,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM;AACf,8CAA8C;AAC9C,GAAG,CAAC,EAAE;IAAC,WAAW,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAC,GACnC,OAAO,CAmCT;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,EAChE,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM;AACf,mCAAmC;AACnC,MAAM,EAAE,OAAO,GACd,OAAO,GAAG,IAAI,CAShB;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,EAChE,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM;AACf,6BAA6B;AAC7B,IAAI,EAAE,OAAO,GACZ,OAAO,GAAG,IAAI,CAkBhB;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,EAChE,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM;AACf,oBAAoB;AACpB,IAAI,EAAE,OAAO,GACZ,OAAO,GAAG,IAAI,CAQhB"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * 指针位置 → 场景落点:登记过的物体表面优先,y=0 地面(数学平面,无限大)
3
+ * 兜底,视线朝天/贴地时退到"前方 30 个单位、压到地面"——任何视角都有落点。
4
+ * 从 PlacementRigCore 抽出,模型放置幽灵和路径预设落点标记共用。
5
+ *
6
+ * 不用不可见网格接事件:视线与地面平行时网格永远打不中,事件根本不触发。
7
+ */
8
+ import { Plane, Vector2, Vector3 } from 'three';
9
+ const GROUND_PLANE = new Plane(new Vector3(0, 1, 0), 0);
10
+ export function computeDropPoint(raycaster, camera, surfaces, rect, clientX, clientY,
11
+ /** 表面分支胜出时回填命中的登记根(命中网格往上走到 surfaces 里的祖先) */
12
+ out) {
13
+ const ndc = new Vector2(((clientX - rect.left) / rect.width) * 2 - 1, -((clientY - rect.top) / rect.height) * 2 + 1);
14
+ raycaster.setFromCamera(ndc, camera);
15
+ // 表面优先:只对登记过的落点表面检测,只认 Mesh 命中
16
+ const roots = [...surfaces];
17
+ const surface = raycaster
18
+ .intersectObjects(roots, true)
19
+ .find((h) => h.object.isMesh);
20
+ const ground = raycaster.ray.intersectPlane(GROUND_PLANE, new Vector3());
21
+ // 相机贴地(y≈0)时地面会在"相机脚下"命中(t≈0),这个命中比任何
22
+ // 表面都"近"但就在相机自己身上,没有放置意义——半单位以内丢弃
23
+ const usableGround = ground && raycaster.ray.origin.distanceTo(ground) > 0.5 ? ground : null;
24
+ if (surface &&
25
+ (!usableGround ||
26
+ surface.distance <= raycaster.ray.origin.distanceTo(usableGround))) {
27
+ if (out) {
28
+ const rootSet = new Set(roots);
29
+ let node = surface.object;
30
+ while (node && !rootSet.has(node))
31
+ node = node.parent;
32
+ out.surfaceRoot = node;
33
+ }
34
+ return surface.point;
35
+ }
36
+ if (out)
37
+ out.surfaceRoot = null;
38
+ if (usableGround)
39
+ return usableGround;
40
+ // 视线与地面平行、朝天、或贴地:放到正前方 30 个单位、压到地面
41
+ const ahead = raycaster.ray.at(30, new Vector3());
42
+ ahead.y = 0;
43
+ return ahead;
44
+ }
45
+ /**
46
+ * 指针位置 → 视平面落点(Blender G 抓取的默认语义):指针射线与
47
+ * 「过锚点、垂直于视线的平面」求交。视平面随相机倾斜,指针上移 =
48
+ * 世界里升高,高度自由;顶视时平面水平,退化为纯水平移动(同 Blender
49
+ * 顶视图里 G 只能平移)。射线与平面平行/平面退到相机身后时返回 null,
50
+ * 调用方保持上一帧点位不动。
51
+ */
52
+ export function computeViewPlanePoint(raycaster, camera, rect, clientX, clientY,
53
+ /** 视平面锚点:决定平面的深度和基准高度(拖动开始时的落点) */
54
+ anchor) {
55
+ const ndc = new Vector2(((clientX - rect.left) / rect.width) * 2 - 1, -((clientY - rect.top) / rect.height) * 2 + 1);
56
+ raycaster.setFromCamera(ndc, camera);
57
+ const forward = camera.getWorldDirection(new Vector3());
58
+ const plane = new Plane().setFromNormalAndCoplanarPoint(forward, anchor);
59
+ return raycaster.ray.intersectPlane(plane, new Vector3());
60
+ }
61
+ /**
62
+ * 竖直轴向约束(Blender 拖动中按 Z):锁定基准点的 x/z,指针控制 y。
63
+ * 取「过基准点的竖直线」与指针射线的最近点参数——射线到轴线的垂足即
64
+ * 手感上"指针所指的高度"。视线与竖直轴平行(正顶/正仰视)时无解,返回
65
+ * null,调用方保持上一帧点位。
66
+ */
67
+ export function computeVerticalConstraintPoint(raycaster, camera, rect, clientX, clientY,
68
+ /** 约束基准点:x/z 被锁定为它,y 从它起算 */
69
+ base) {
70
+ const ndc = new Vector2(((clientX - rect.left) / rect.width) * 2 - 1, -((clientY - rect.top) / rect.height) * 2 + 1);
71
+ raycaster.setFromCamera(ndc, camera);
72
+ const ro = raycaster.ray.origin;
73
+ const rd = raycaster.ray.direction; // 单位向量
74
+ // 线-线最近点:轴线 L = base + t·(0,1,0),射线 R = ro + s·rd。
75
+ // 对 |L−R|² 求偏导得 t(1−b²) = w0.y − e·b,其中 b = rd.y,
76
+ // w0 = ro − base,e = w0·rd
77
+ const b = rd.y;
78
+ const denom = 1 - b * b;
79
+ if (Math.abs(denom) < 1e-6)
80
+ return null;
81
+ const w0 = new Vector3().subVectors(ro, base);
82
+ const e = w0.dot(rd);
83
+ const t = (w0.y - e * b) / denom;
84
+ return new Vector3(base.x, base.y + t, base.z);
85
+ }
86
+ /**
87
+ * 水平面约束(Blender 拖动中按 Shift+Z):锁定基准点的 y,指针在
88
+ * 水平面内自由移动 x/z。视线与水平面平行时无解,返回 null。
89
+ */
90
+ export function computeHorizontalConstraintPoint(raycaster, camera, rect, clientX, clientY,
91
+ /** 约束基准点:y 被锁定为它 */
92
+ base) {
93
+ const ndc = new Vector2(((clientX - rect.left) / rect.width) * 2 - 1, -((clientY - rect.top) / rect.height) * 2 + 1);
94
+ raycaster.setFromCamera(ndc, camera);
95
+ const plane = new Plane(new Vector3(0, 1, 0), -base.y);
96
+ return raycaster.ray.intersectPlane(plane, new Vector3());
97
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dropPoint.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropPoint.test.d.ts","sourceRoot":"","sources":["../src/dropPoint.test.ts"],"names":[],"mappings":""}