@johnmorrisdotca/uchusen-rockets 0.2.1 → 0.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 (891) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/LICENSES/ODbL-1.0.txt +540 -0
  3. package/NOTICE.md +56 -6
  4. package/README.md +49 -14
  5. package/dist/assets/apollo-soyuz-apollo-soyuz-apart.painted.svg +1 -0
  6. package/dist/assets/apollo-soyuz-apollo-soyuz-apart.svg +1 -0
  7. package/dist/assets/apollo-soyuz-apollo-soyuz-apart.thick.svg +1 -0
  8. package/dist/assets/apollo-soyuz-apollo-soyuz-csm.glb +0 -0
  9. package/dist/assets/apollo-soyuz-apollo-soyuz-csm.painted.svg +1 -0
  10. package/dist/assets/apollo-soyuz-apollo-soyuz-csm.svg +1 -0
  11. package/dist/assets/apollo-soyuz-apollo-soyuz-csm.thick.svg +1 -0
  12. package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.glb +0 -0
  13. package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.painted.svg +1 -0
  14. package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.svg +1 -0
  15. package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.thick.svg +1 -0
  16. package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.glb +0 -0
  17. package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.painted.svg +1 -0
  18. package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.svg +1 -0
  19. package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.thick.svg +1 -0
  20. package/dist/assets/apollo-soyuz-apollo-soyuz.glb +0 -0
  21. package/dist/assets/apollo-soyuz-apollo-soyuz.painted.svg +1 -0
  22. package/dist/assets/apollo-soyuz-apollo-soyuz.svg +1 -0
  23. package/dist/assets/apollo-soyuz-apollo-soyuz.thick.svg +1 -0
  24. package/dist/assets/dragon-cargo-dragon-2-apart.painted.svg +1 -0
  25. package/dist/assets/dragon-cargo-dragon-2-apart.svg +1 -0
  26. package/dist/assets/dragon-cargo-dragon-2-apart.thick.svg +1 -0
  27. package/dist/assets/dragon-cargo-dragon-2-capsule.glb +0 -0
  28. package/dist/assets/dragon-cargo-dragon-2-capsule.painted.svg +1 -0
  29. package/dist/assets/dragon-cargo-dragon-2-capsule.svg +1 -0
  30. package/dist/assets/dragon-cargo-dragon-2-capsule.thick.svg +1 -0
  31. package/dist/assets/dragon-cargo-dragon-2-trunk.glb +0 -0
  32. package/dist/assets/dragon-cargo-dragon-2-trunk.painted.svg +1 -0
  33. package/dist/assets/dragon-cargo-dragon-2-trunk.svg +1 -0
  34. package/dist/assets/dragon-cargo-dragon-2-trunk.thick.svg +1 -0
  35. package/dist/assets/dragon-cargo-dragon-2.glb +0 -0
  36. package/dist/assets/dragon-cargo-dragon-2.painted.svg +1 -0
  37. package/dist/assets/dragon-cargo-dragon-2.svg +1 -0
  38. package/dist/assets/dragon-cargo-dragon-2.thick.svg +1 -0
  39. package/dist/assets/dragon-crew-dragon-inside.glb +0 -0
  40. package/dist/assets/dragon-crew-dragon-inside.painted.svg +1 -0
  41. package/dist/assets/dragon-crew-dragon-inside.svg +1 -0
  42. package/dist/assets/dragon-crew-dragon-inside.thick.svg +1 -0
  43. package/dist/assets/dragon-dragon-1-apart.painted.svg +1 -1
  44. package/dist/assets/dragon-dragon-1-apart.svg +1 -1
  45. package/dist/assets/dragon-dragon-1-apart.thick.svg +1 -1
  46. package/dist/assets/dragon-dragon-1-capsule.painted.svg +1 -1
  47. package/dist/assets/dragon-dragon-1-capsule.svg +1 -1
  48. package/dist/assets/dragon-dragon-1-capsule.thick.svg +1 -1
  49. package/dist/assets/dragon-dragon-1-trunk.painted.svg +1 -1
  50. package/dist/assets/dragon-dragon-1-trunk.svg +1 -1
  51. package/dist/assets/dragon-dragon-1-trunk.thick.svg +1 -1
  52. package/dist/assets/dragon-dragon-1.painted.svg +1 -1
  53. package/dist/assets/dragon-dragon-1.svg +1 -1
  54. package/dist/assets/dragon-dragon-1.thick.svg +1 -1
  55. package/dist/assets/dragon-dragon-2-apart.painted.svg +1 -1
  56. package/dist/assets/dragon-dragon-2-apart.svg +1 -1
  57. package/dist/assets/dragon-dragon-2-apart.thick.svg +1 -1
  58. package/dist/assets/dragon-dragon-2-capsule.painted.svg +1 -1
  59. package/dist/assets/dragon-dragon-2-capsule.svg +1 -1
  60. package/dist/assets/dragon-dragon-2-capsule.thick.svg +1 -1
  61. package/dist/assets/dragon-dragon-2-trunk.painted.svg +1 -1
  62. package/dist/assets/dragon-dragon-2-trunk.svg +1 -1
  63. package/dist/assets/dragon-dragon-2-trunk.thick.svg +1 -1
  64. package/dist/assets/dragon-dragon-2.painted.svg +1 -1
  65. package/dist/assets/dragon-dragon-2.svg +1 -1
  66. package/dist/assets/dragon-dragon-2.thick.svg +1 -1
  67. package/dist/assets/droneship-asog-apart.painted.svg +1 -0
  68. package/dist/assets/droneship-asog-apart.svg +1 -0
  69. package/dist/assets/droneship-asog-apart.thick.svg +1 -0
  70. package/dist/assets/droneship-asog-deck.glb +0 -0
  71. package/dist/assets/droneship-asog-deck.painted.svg +1 -0
  72. package/dist/assets/droneship-asog-deck.svg +1 -0
  73. package/dist/assets/droneship-asog-deck.thick.svg +1 -0
  74. package/dist/assets/droneship-asog-landed.glb +0 -0
  75. package/dist/assets/droneship-asog-landed.painted.svg +1 -0
  76. package/dist/assets/droneship-asog-landed.svg +1 -0
  77. package/dist/assets/droneship-asog-landed.thick.svg +1 -0
  78. package/dist/assets/droneship-asog.glb +0 -0
  79. package/dist/assets/droneship-asog.painted.svg +1 -0
  80. package/dist/assets/droneship-asog.svg +1 -0
  81. package/dist/assets/droneship-asog.thick.svg +1 -0
  82. package/dist/assets/droneship-jrti-apart.painted.svg +1 -0
  83. package/dist/assets/droneship-jrti-apart.svg +1 -0
  84. package/dist/assets/droneship-jrti-apart.thick.svg +1 -0
  85. package/dist/assets/droneship-jrti-deck.glb +0 -0
  86. package/dist/assets/droneship-jrti-deck.painted.svg +1 -0
  87. package/dist/assets/droneship-jrti-deck.svg +1 -0
  88. package/dist/assets/droneship-jrti-deck.thick.svg +1 -0
  89. package/dist/assets/droneship-jrti-landed.glb +0 -0
  90. package/dist/assets/droneship-jrti-landed.painted.svg +1 -0
  91. package/dist/assets/droneship-jrti-landed.svg +1 -0
  92. package/dist/assets/droneship-jrti-landed.thick.svg +1 -0
  93. package/dist/assets/droneship-jrti.glb +0 -0
  94. package/dist/assets/droneship-jrti.painted.svg +1 -0
  95. package/dist/assets/droneship-jrti.svg +1 -0
  96. package/dist/assets/droneship-jrti.thick.svg +1 -0
  97. package/dist/assets/droneship-ocisly-apart.painted.svg +1 -0
  98. package/dist/assets/droneship-ocisly-apart.svg +1 -0
  99. package/dist/assets/droneship-ocisly-apart.thick.svg +1 -0
  100. package/dist/assets/droneship-ocisly-deck.glb +0 -0
  101. package/dist/assets/droneship-ocisly-deck.painted.svg +1 -0
  102. package/dist/assets/droneship-ocisly-deck.svg +1 -0
  103. package/dist/assets/droneship-ocisly-deck.thick.svg +1 -0
  104. package/dist/assets/droneship-ocisly-landed.glb +0 -0
  105. package/dist/assets/droneship-ocisly-landed.painted.svg +1 -0
  106. package/dist/assets/droneship-ocisly-landed.svg +1 -0
  107. package/dist/assets/droneship-ocisly-landed.thick.svg +1 -0
  108. package/dist/assets/droneship-ocisly.glb +0 -0
  109. package/dist/assets/droneship-ocisly.painted.svg +1 -0
  110. package/dist/assets/droneship-ocisly.svg +1 -0
  111. package/dist/assets/droneship-ocisly.thick.svg +1 -0
  112. package/dist/assets/electron-electron-adapter.glb +0 -0
  113. package/dist/assets/electron-electron-adapter.painted.svg +1 -0
  114. package/dist/assets/electron-electron-adapter.svg +1 -0
  115. package/dist/assets/electron-electron-adapter.thick.svg +1 -0
  116. package/dist/assets/electron-electron-apart.painted.svg +1 -0
  117. package/dist/assets/electron-electron-apart.svg +1 -0
  118. package/dist/assets/electron-electron-apart.thick.svg +1 -0
  119. package/dist/assets/electron-electron-fairing.glb +0 -0
  120. package/dist/assets/electron-electron-fairing.painted.svg +1 -0
  121. package/dist/assets/electron-electron-fairing.svg +1 -0
  122. package/dist/assets/electron-electron-fairing.thick.svg +1 -0
  123. package/dist/assets/electron-electron-first-stage.glb +0 -0
  124. package/dist/assets/electron-electron-first-stage.painted.svg +1 -0
  125. package/dist/assets/electron-electron-first-stage.svg +1 -0
  126. package/dist/assets/electron-electron-first-stage.thick.svg +1 -0
  127. package/dist/assets/electron-electron-second-stage.glb +0 -0
  128. package/dist/assets/electron-electron-second-stage.painted.svg +1 -0
  129. package/dist/assets/electron-electron-second-stage.svg +1 -0
  130. package/dist/assets/electron-electron-second-stage.thick.svg +1 -0
  131. package/dist/assets/electron-electron.glb +0 -0
  132. package/dist/assets/electron-electron.painted.svg +1 -0
  133. package/dist/assets/electron-electron.svg +1 -0
  134. package/dist/assets/electron-electron.thick.svg +1 -0
  135. package/dist/assets/falcon-1-falcon-1-apart.painted.svg +1 -0
  136. package/dist/assets/falcon-1-falcon-1-apart.svg +1 -0
  137. package/dist/assets/falcon-1-falcon-1-apart.thick.svg +1 -0
  138. package/dist/assets/falcon-1-falcon-1-fairing.glb +0 -0
  139. package/dist/assets/falcon-1-falcon-1-fairing.painted.svg +1 -0
  140. package/dist/assets/falcon-1-falcon-1-fairing.svg +1 -0
  141. package/dist/assets/falcon-1-falcon-1-fairing.thick.svg +1 -0
  142. package/dist/assets/falcon-1-falcon-1-first-stage.glb +0 -0
  143. package/dist/assets/falcon-1-falcon-1-first-stage.painted.svg +1 -0
  144. package/dist/assets/falcon-1-falcon-1-first-stage.svg +1 -0
  145. package/dist/assets/falcon-1-falcon-1-first-stage.thick.svg +1 -0
  146. package/dist/assets/falcon-1-falcon-1-second-stage.glb +0 -0
  147. package/dist/assets/falcon-1-falcon-1-second-stage.painted.svg +1 -0
  148. package/dist/assets/falcon-1-falcon-1-second-stage.svg +1 -0
  149. package/dist/assets/falcon-1-falcon-1-second-stage.thick.svg +1 -0
  150. package/dist/assets/falcon-1-falcon-1.glb +0 -0
  151. package/dist/assets/falcon-1-falcon-1.painted.svg +1 -0
  152. package/dist/assets/falcon-1-falcon-1.svg +1 -0
  153. package/dist/assets/falcon-1-falcon-1.thick.svg +1 -0
  154. package/dist/assets/falcon-1-falcon-1e-apart.painted.svg +1 -0
  155. package/dist/assets/falcon-1-falcon-1e-apart.svg +1 -0
  156. package/dist/assets/falcon-1-falcon-1e-apart.thick.svg +1 -0
  157. package/dist/assets/falcon-1-falcon-1e-fairing.glb +0 -0
  158. package/dist/assets/falcon-1-falcon-1e-fairing.painted.svg +1 -0
  159. package/dist/assets/falcon-1-falcon-1e-fairing.svg +1 -0
  160. package/dist/assets/falcon-1-falcon-1e-fairing.thick.svg +1 -0
  161. package/dist/assets/falcon-1-falcon-1e-first-stage.glb +0 -0
  162. package/dist/assets/falcon-1-falcon-1e-first-stage.painted.svg +1 -0
  163. package/dist/assets/falcon-1-falcon-1e-first-stage.svg +1 -0
  164. package/dist/assets/falcon-1-falcon-1e-first-stage.thick.svg +1 -0
  165. package/dist/assets/falcon-1-falcon-1e-second-stage.glb +0 -0
  166. package/dist/assets/falcon-1-falcon-1e-second-stage.painted.svg +1 -0
  167. package/dist/assets/falcon-1-falcon-1e-second-stage.svg +1 -0
  168. package/dist/assets/falcon-1-falcon-1e-second-stage.thick.svg +1 -0
  169. package/dist/assets/falcon-1-falcon-1e.glb +0 -0
  170. package/dist/assets/falcon-1-falcon-1e.painted.svg +1 -0
  171. package/dist/assets/falcon-1-falcon-1e.svg +1 -0
  172. package/dist/assets/falcon-1-falcon-1e.thick.svg +1 -0
  173. package/dist/assets/falcon-9-block-5-apart.painted.svg +1 -1
  174. package/dist/assets/falcon-9-block-5-apart.svg +1 -1
  175. package/dist/assets/falcon-9-block-5-apart.thick.svg +1 -1
  176. package/dist/assets/falcon-9-block-5-dragon-2-apart.painted.svg +1 -1
  177. package/dist/assets/falcon-9-block-5-dragon-2-apart.svg +1 -1
  178. package/dist/assets/falcon-9-block-5-dragon-2-apart.thick.svg +1 -1
  179. package/dist/assets/falcon-9-block-5-dragon-2-capsule.painted.svg +1 -1
  180. package/dist/assets/falcon-9-block-5-dragon-2-capsule.svg +1 -1
  181. package/dist/assets/falcon-9-block-5-dragon-2-capsule.thick.svg +1 -1
  182. package/dist/assets/falcon-9-block-5-dragon-2-first-stage.painted.svg +1 -1
  183. package/dist/assets/falcon-9-block-5-dragon-2-first-stage.svg +1 -1
  184. package/dist/assets/falcon-9-block-5-dragon-2-first-stage.thick.svg +1 -1
  185. package/dist/assets/falcon-9-block-5-dragon-2-second-stage.painted.svg +1 -1
  186. package/dist/assets/falcon-9-block-5-dragon-2-second-stage.svg +1 -1
  187. package/dist/assets/falcon-9-block-5-dragon-2-second-stage.thick.svg +1 -1
  188. package/dist/assets/falcon-9-block-5-dragon-2-trunk.painted.svg +1 -1
  189. package/dist/assets/falcon-9-block-5-dragon-2-trunk.svg +1 -1
  190. package/dist/assets/falcon-9-block-5-dragon-2-trunk.thick.svg +1 -1
  191. package/dist/assets/falcon-9-block-5-dragon-2.painted.svg +1 -1
  192. package/dist/assets/falcon-9-block-5-dragon-2.svg +1 -1
  193. package/dist/assets/falcon-9-block-5-dragon-2.thick.svg +1 -1
  194. package/dist/assets/falcon-9-block-5-fairing.painted.svg +1 -1
  195. package/dist/assets/falcon-9-block-5-fairing.svg +1 -1
  196. package/dist/assets/falcon-9-block-5-fairing.thick.svg +1 -1
  197. package/dist/assets/falcon-9-block-5-first-stage.painted.svg +1 -1
  198. package/dist/assets/falcon-9-block-5-first-stage.svg +1 -1
  199. package/dist/assets/falcon-9-block-5-first-stage.thick.svg +1 -1
  200. package/dist/assets/falcon-9-block-5-second-stage.painted.svg +1 -1
  201. package/dist/assets/falcon-9-block-5-second-stage.svg +1 -1
  202. package/dist/assets/falcon-9-block-5-second-stage.thick.svg +1 -1
  203. package/dist/assets/falcon-9-block-5.painted.svg +1 -1
  204. package/dist/assets/falcon-9-block-5.svg +1 -1
  205. package/dist/assets/falcon-9-block-5.thick.svg +1 -1
  206. package/dist/assets/falcon-9-ft-apart.painted.svg +1 -1
  207. package/dist/assets/falcon-9-ft-apart.svg +1 -1
  208. package/dist/assets/falcon-9-ft-apart.thick.svg +1 -1
  209. package/dist/assets/falcon-9-ft-fairing.painted.svg +1 -1
  210. package/dist/assets/falcon-9-ft-fairing.svg +1 -1
  211. package/dist/assets/falcon-9-ft-fairing.thick.svg +1 -1
  212. package/dist/assets/falcon-9-ft-first-stage.painted.svg +1 -1
  213. package/dist/assets/falcon-9-ft-first-stage.svg +1 -1
  214. package/dist/assets/falcon-9-ft-first-stage.thick.svg +1 -1
  215. package/dist/assets/falcon-9-ft-second-stage.painted.svg +1 -1
  216. package/dist/assets/falcon-9-ft-second-stage.svg +1 -1
  217. package/dist/assets/falcon-9-ft-second-stage.thick.svg +1 -1
  218. package/dist/assets/falcon-9-ft.painted.svg +1 -1
  219. package/dist/assets/falcon-9-ft.svg +1 -1
  220. package/dist/assets/falcon-9-ft.thick.svg +1 -1
  221. package/dist/assets/falcon-9-v1.0-apart.painted.svg +1 -1
  222. package/dist/assets/falcon-9-v1.0-apart.svg +1 -1
  223. package/dist/assets/falcon-9-v1.0-apart.thick.svg +1 -1
  224. package/dist/assets/falcon-9-v1.0-fairing.painted.svg +1 -1
  225. package/dist/assets/falcon-9-v1.0-fairing.svg +1 -1
  226. package/dist/assets/falcon-9-v1.0-fairing.thick.svg +1 -1
  227. package/dist/assets/falcon-9-v1.0-first-stage.painted.svg +1 -1
  228. package/dist/assets/falcon-9-v1.0-first-stage.svg +1 -1
  229. package/dist/assets/falcon-9-v1.0-first-stage.thick.svg +1 -1
  230. package/dist/assets/falcon-9-v1.0-second-stage.painted.svg +1 -1
  231. package/dist/assets/falcon-9-v1.0-second-stage.svg +1 -1
  232. package/dist/assets/falcon-9-v1.0-second-stage.thick.svg +1 -1
  233. package/dist/assets/falcon-9-v1.0.painted.svg +1 -1
  234. package/dist/assets/falcon-9-v1.0.svg +1 -1
  235. package/dist/assets/falcon-9-v1.0.thick.svg +1 -1
  236. package/dist/assets/falcon-9-v1.1-apart.painted.svg +1 -1
  237. package/dist/assets/falcon-9-v1.1-apart.svg +1 -1
  238. package/dist/assets/falcon-9-v1.1-apart.thick.svg +1 -1
  239. package/dist/assets/falcon-9-v1.1-fairing.painted.svg +1 -1
  240. package/dist/assets/falcon-9-v1.1-fairing.svg +1 -1
  241. package/dist/assets/falcon-9-v1.1-fairing.thick.svg +1 -1
  242. package/dist/assets/falcon-9-v1.1-first-stage.painted.svg +1 -1
  243. package/dist/assets/falcon-9-v1.1-first-stage.svg +1 -1
  244. package/dist/assets/falcon-9-v1.1-first-stage.thick.svg +1 -1
  245. package/dist/assets/falcon-9-v1.1-second-stage.painted.svg +1 -1
  246. package/dist/assets/falcon-9-v1.1-second-stage.svg +1 -1
  247. package/dist/assets/falcon-9-v1.1-second-stage.thick.svg +1 -1
  248. package/dist/assets/falcon-9-v1.1.painted.svg +1 -1
  249. package/dist/assets/falcon-9-v1.1.svg +1 -1
  250. package/dist/assets/falcon-9-v1.1.thick.svg +1 -1
  251. package/dist/assets/falcon-heavy-falcon-heavy-apart.painted.svg +1 -1
  252. package/dist/assets/falcon-heavy-falcon-heavy-apart.svg +1 -1
  253. package/dist/assets/falcon-heavy-falcon-heavy-apart.thick.svg +1 -1
  254. package/dist/assets/falcon-heavy-falcon-heavy-centre.painted.svg +1 -1
  255. package/dist/assets/falcon-heavy-falcon-heavy-centre.svg +1 -1
  256. package/dist/assets/falcon-heavy-falcon-heavy-centre.thick.svg +1 -1
  257. package/dist/assets/falcon-heavy-falcon-heavy-side-left.painted.svg +1 -1
  258. package/dist/assets/falcon-heavy-falcon-heavy-side-left.svg +1 -1
  259. package/dist/assets/falcon-heavy-falcon-heavy-side-left.thick.svg +1 -1
  260. package/dist/assets/falcon-heavy-falcon-heavy-side-right.painted.svg +1 -1
  261. package/dist/assets/falcon-heavy-falcon-heavy-side-right.svg +1 -1
  262. package/dist/assets/falcon-heavy-falcon-heavy-side-right.thick.svg +1 -1
  263. package/dist/assets/falcon-heavy-falcon-heavy.painted.svg +1 -1
  264. package/dist/assets/falcon-heavy-falcon-heavy.svg +1 -1
  265. package/dist/assets/falcon-heavy-falcon-heavy.thick.svg +1 -1
  266. package/dist/assets/gemini-gemini-adapter.glb +0 -0
  267. package/dist/assets/gemini-gemini-adapter.painted.svg +1 -0
  268. package/dist/assets/gemini-gemini-adapter.svg +1 -0
  269. package/dist/assets/gemini-gemini-adapter.thick.svg +1 -0
  270. package/dist/assets/gemini-gemini-apart.painted.svg +1 -0
  271. package/dist/assets/gemini-gemini-apart.svg +1 -0
  272. package/dist/assets/gemini-gemini-apart.thick.svg +1 -0
  273. package/dist/assets/gemini-gemini-capsule.glb +0 -0
  274. package/dist/assets/gemini-gemini-capsule.painted.svg +1 -0
  275. package/dist/assets/gemini-gemini-capsule.svg +1 -0
  276. package/dist/assets/gemini-gemini-capsule.thick.svg +1 -0
  277. package/dist/assets/gemini-gemini.glb +0 -0
  278. package/dist/assets/gemini-gemini.painted.svg +1 -0
  279. package/dist/assets/gemini-gemini.svg +1 -0
  280. package/dist/assets/gemini-gemini.thick.svg +1 -0
  281. package/dist/assets/grasshopper-grasshopper.painted.svg +1 -1
  282. package/dist/assets/grasshopper-grasshopper.svg +1 -1
  283. package/dist/assets/grasshopper-grasshopper.thick.svg +1 -1
  284. package/dist/assets/hubble-hubble.glb +0 -0
  285. package/dist/assets/hubble-hubble.painted.svg +1 -0
  286. package/dist/assets/hubble-hubble.svg +1 -0
  287. package/dist/assets/hubble-hubble.thick.svg +1 -0
  288. package/dist/assets/iss-iss.glb +0 -0
  289. package/dist/assets/iss-iss.painted.svg +1 -0
  290. package/dist/assets/iss-iss.svg +1 -0
  291. package/dist/assets/iss-iss.thick.svg +1 -0
  292. package/dist/assets/jupiter-c-jupiter-c.glb +0 -0
  293. package/dist/assets/jupiter-c-jupiter-c.painted.svg +1 -0
  294. package/dist/assets/jupiter-c-jupiter-c.svg +1 -0
  295. package/dist/assets/jupiter-c-jupiter-c.thick.svg +1 -0
  296. package/dist/assets/landing-zone-lz-1-apart.painted.svg +1 -0
  297. package/dist/assets/landing-zone-lz-1-apart.svg +1 -0
  298. package/dist/assets/landing-zone-lz-1-apart.thick.svg +1 -0
  299. package/dist/assets/landing-zone-lz-1-landed.glb +0 -0
  300. package/dist/assets/landing-zone-lz-1-landed.painted.svg +1 -0
  301. package/dist/assets/landing-zone-lz-1-landed.svg +1 -0
  302. package/dist/assets/landing-zone-lz-1-landed.thick.svg +1 -0
  303. package/dist/assets/landing-zone-lz-1-pad.glb +0 -0
  304. package/dist/assets/landing-zone-lz-1-pad.painted.svg +1 -0
  305. package/dist/assets/landing-zone-lz-1-pad.svg +1 -0
  306. package/dist/assets/landing-zone-lz-1-pad.thick.svg +1 -0
  307. package/dist/assets/landing-zone-lz-1.glb +0 -0
  308. package/dist/assets/landing-zone-lz-1.painted.svg +1 -0
  309. package/dist/assets/landing-zone-lz-1.svg +1 -0
  310. package/dist/assets/landing-zone-lz-1.thick.svg +1 -0
  311. package/dist/assets/landing-zone-lz-4-apart.painted.svg +1 -0
  312. package/dist/assets/landing-zone-lz-4-apart.svg +1 -0
  313. package/dist/assets/landing-zone-lz-4-apart.thick.svg +1 -0
  314. package/dist/assets/landing-zone-lz-4-landed.glb +0 -0
  315. package/dist/assets/landing-zone-lz-4-landed.painted.svg +1 -0
  316. package/dist/assets/landing-zone-lz-4-landed.svg +1 -0
  317. package/dist/assets/landing-zone-lz-4-landed.thick.svg +1 -0
  318. package/dist/assets/landing-zone-lz-4-pad.glb +0 -0
  319. package/dist/assets/landing-zone-lz-4-pad.painted.svg +1 -0
  320. package/dist/assets/landing-zone-lz-4-pad.svg +1 -0
  321. package/dist/assets/landing-zone-lz-4-pad.thick.svg +1 -0
  322. package/dist/assets/landing-zone-lz-4.glb +0 -0
  323. package/dist/assets/landing-zone-lz-4.painted.svg +1 -0
  324. package/dist/assets/landing-zone-lz-4.svg +1 -0
  325. package/dist/assets/landing-zone-lz-4.thick.svg +1 -0
  326. package/dist/assets/launch-tower-catch-apart.painted.svg +1 -0
  327. package/dist/assets/launch-tower-catch-apart.svg +1 -0
  328. package/dist/assets/launch-tower-catch-apart.thick.svg +1 -0
  329. package/dist/assets/launch-tower-catch-arms.glb +0 -0
  330. package/dist/assets/launch-tower-catch-arms.painted.svg +1 -0
  331. package/dist/assets/launch-tower-catch-arms.svg +1 -0
  332. package/dist/assets/launch-tower-catch-arms.thick.svg +1 -0
  333. package/dist/assets/launch-tower-catch-booster.glb +0 -0
  334. package/dist/assets/launch-tower-catch-booster.painted.svg +1 -0
  335. package/dist/assets/launch-tower-catch-booster.svg +1 -0
  336. package/dist/assets/launch-tower-catch-booster.thick.svg +1 -0
  337. package/dist/assets/launch-tower-catch-mount.glb +0 -0
  338. package/dist/assets/launch-tower-catch-mount.painted.svg +1 -0
  339. package/dist/assets/launch-tower-catch-mount.svg +1 -0
  340. package/dist/assets/launch-tower-catch-mount.thick.svg +1 -0
  341. package/dist/assets/launch-tower-catch-tower.glb +0 -0
  342. package/dist/assets/launch-tower-catch-tower.painted.svg +1 -0
  343. package/dist/assets/launch-tower-catch-tower.svg +1 -0
  344. package/dist/assets/launch-tower-catch-tower.thick.svg +1 -0
  345. package/dist/assets/launch-tower-catch.glb +0 -0
  346. package/dist/assets/launch-tower-catch.painted.svg +1 -0
  347. package/dist/assets/launch-tower-catch.svg +1 -0
  348. package/dist/assets/launch-tower-catch.thick.svg +1 -0
  349. package/dist/assets/launch-tower-stack-apart.painted.svg +1 -0
  350. package/dist/assets/launch-tower-stack-apart.svg +1 -0
  351. package/dist/assets/launch-tower-stack-apart.thick.svg +1 -0
  352. package/dist/assets/launch-tower-stack-arms.glb +0 -0
  353. package/dist/assets/launch-tower-stack-arms.painted.svg +1 -0
  354. package/dist/assets/launch-tower-stack-arms.svg +1 -0
  355. package/dist/assets/launch-tower-stack-arms.thick.svg +1 -0
  356. package/dist/assets/launch-tower-stack-booster.glb +0 -0
  357. package/dist/assets/launch-tower-stack-booster.painted.svg +1 -0
  358. package/dist/assets/launch-tower-stack-booster.svg +1 -0
  359. package/dist/assets/launch-tower-stack-booster.thick.svg +1 -0
  360. package/dist/assets/launch-tower-stack-mount.glb +0 -0
  361. package/dist/assets/launch-tower-stack-mount.painted.svg +1 -0
  362. package/dist/assets/launch-tower-stack-mount.svg +1 -0
  363. package/dist/assets/launch-tower-stack-mount.thick.svg +1 -0
  364. package/dist/assets/launch-tower-stack-ship.glb +0 -0
  365. package/dist/assets/launch-tower-stack-ship.painted.svg +1 -0
  366. package/dist/assets/launch-tower-stack-ship.svg +1 -0
  367. package/dist/assets/launch-tower-stack-ship.thick.svg +1 -0
  368. package/dist/assets/launch-tower-stack-tower.glb +0 -0
  369. package/dist/assets/launch-tower-stack-tower.painted.svg +1 -0
  370. package/dist/assets/launch-tower-stack-tower.svg +1 -0
  371. package/dist/assets/launch-tower-stack-tower.thick.svg +1 -0
  372. package/dist/assets/launch-tower-stack.glb +0 -0
  373. package/dist/assets/launch-tower-stack.painted.svg +1 -0
  374. package/dist/assets/launch-tower-stack.svg +1 -0
  375. package/dist/assets/launch-tower-stack.thick.svg +1 -0
  376. package/dist/assets/launch-tower-tower-apart.painted.svg +1 -0
  377. package/dist/assets/launch-tower-tower-apart.svg +1 -0
  378. package/dist/assets/launch-tower-tower-apart.thick.svg +1 -0
  379. package/dist/assets/launch-tower-tower-arms.glb +0 -0
  380. package/dist/assets/launch-tower-tower-arms.painted.svg +1 -0
  381. package/dist/assets/launch-tower-tower-arms.svg +1 -0
  382. package/dist/assets/launch-tower-tower-arms.thick.svg +1 -0
  383. package/dist/assets/launch-tower-tower-mount.glb +0 -0
  384. package/dist/assets/launch-tower-tower-mount.painted.svg +1 -0
  385. package/dist/assets/launch-tower-tower-mount.svg +1 -0
  386. package/dist/assets/launch-tower-tower-mount.thick.svg +1 -0
  387. package/dist/assets/launch-tower-tower-tower.glb +0 -0
  388. package/dist/assets/launch-tower-tower-tower.painted.svg +1 -0
  389. package/dist/assets/launch-tower-tower-tower.svg +1 -0
  390. package/dist/assets/launch-tower-tower-tower.thick.svg +1 -0
  391. package/dist/assets/launch-tower-tower.glb +0 -0
  392. package/dist/assets/launch-tower-tower.painted.svg +1 -0
  393. package/dist/assets/launch-tower-tower.svg +1 -0
  394. package/dist/assets/launch-tower-tower.thick.svg +1 -0
  395. package/dist/assets/lunar-module-lunar-module-apart.painted.svg +1 -0
  396. package/dist/assets/lunar-module-lunar-module-apart.svg +1 -0
  397. package/dist/assets/lunar-module-lunar-module-apart.thick.svg +1 -0
  398. package/dist/assets/lunar-module-lunar-module-ascent.glb +0 -0
  399. package/dist/assets/lunar-module-lunar-module-ascent.painted.svg +1 -0
  400. package/dist/assets/lunar-module-lunar-module-ascent.svg +1 -0
  401. package/dist/assets/lunar-module-lunar-module-ascent.thick.svg +1 -0
  402. package/dist/assets/lunar-module-lunar-module-descent.glb +0 -0
  403. package/dist/assets/lunar-module-lunar-module-descent.painted.svg +1 -0
  404. package/dist/assets/lunar-module-lunar-module-descent.svg +1 -0
  405. package/dist/assets/lunar-module-lunar-module-descent.thick.svg +1 -0
  406. package/dist/assets/lunar-module-lunar-module.glb +0 -0
  407. package/dist/assets/lunar-module-lunar-module.painted.svg +1 -0
  408. package/dist/assets/lunar-module-lunar-module.svg +1 -0
  409. package/dist/assets/lunar-module-lunar-module.thick.svg +1 -0
  410. package/dist/assets/mercury-friendship-7.glb +0 -0
  411. package/dist/assets/mercury-friendship-7.painted.svg +1 -0
  412. package/dist/assets/mercury-friendship-7.svg +1 -0
  413. package/dist/assets/mercury-friendship-7.thick.svg +1 -0
  414. package/dist/assets/models/apollo-soyuz-csm.glb +0 -0
  415. package/dist/assets/models/apollo-soyuz-docking-module.glb +0 -0
  416. package/dist/assets/models/apollo-soyuz-soyuz.glb +0 -0
  417. package/dist/assets/models/gemini-adapter.glb +0 -0
  418. package/dist/assets/models/gemini-capsule.glb +0 -0
  419. package/dist/assets/models/hubble-telescope.glb +0 -0
  420. package/dist/assets/models/iss-station.glb +0 -0
  421. package/dist/assets/models/jupiter-c-vehicle.glb +0 -0
  422. package/dist/assets/models/lunar-module-ascent.glb +0 -0
  423. package/dist/assets/models/lunar-module-descent.glb +0 -0
  424. package/dist/assets/models/mercury-capsule.glb +0 -0
  425. package/dist/assets/models/space-shuttle-discovery-orbiter.glb +0 -0
  426. package/dist/assets/models/space-shuttle-stack-external-tank.glb +0 -0
  427. package/dist/assets/models/space-shuttle-stack-orbiter.glb +0 -0
  428. package/dist/assets/models/space-shuttle-stack-srb.glb +0 -0
  429. package/dist/assets/new-glenn-7x2-apart.painted.svg +1 -0
  430. package/dist/assets/new-glenn-7x2-apart.svg +1 -0
  431. package/dist/assets/new-glenn-7x2-apart.thick.svg +1 -0
  432. package/dist/assets/new-glenn-7x2-fairing.glb +0 -0
  433. package/dist/assets/new-glenn-7x2-fairing.painted.svg +1 -0
  434. package/dist/assets/new-glenn-7x2-fairing.svg +1 -0
  435. package/dist/assets/new-glenn-7x2-fairing.thick.svg +1 -0
  436. package/dist/assets/new-glenn-7x2-first-stage.glb +0 -0
  437. package/dist/assets/new-glenn-7x2-first-stage.painted.svg +1 -0
  438. package/dist/assets/new-glenn-7x2-first-stage.svg +1 -0
  439. package/dist/assets/new-glenn-7x2-first-stage.thick.svg +1 -0
  440. package/dist/assets/new-glenn-7x2-second-stage.glb +0 -0
  441. package/dist/assets/new-glenn-7x2-second-stage.painted.svg +1 -0
  442. package/dist/assets/new-glenn-7x2-second-stage.svg +1 -0
  443. package/dist/assets/new-glenn-7x2-second-stage.thick.svg +1 -0
  444. package/dist/assets/new-glenn-7x2.glb +0 -0
  445. package/dist/assets/new-glenn-7x2.painted.svg +1 -0
  446. package/dist/assets/new-glenn-7x2.svg +1 -0
  447. package/dist/assets/new-glenn-7x2.thick.svg +1 -0
  448. package/dist/assets/parts/flap-aft.painted.svg +1 -1
  449. package/dist/assets/parts/flap-aft.svg +1 -1
  450. package/dist/assets/parts/flap-aft.thick.svg +1 -1
  451. package/dist/assets/parts/flap-forward.painted.svg +1 -1
  452. package/dist/assets/parts/flap-forward.svg +1 -1
  453. package/dist/assets/parts/flap-forward.thick.svg +1 -1
  454. package/dist/assets/parts/grid-fin-four.painted.svg +1 -1
  455. package/dist/assets/parts/grid-fin-four.svg +1 -1
  456. package/dist/assets/parts/grid-fin-four.thick.svg +1 -1
  457. package/dist/assets/parts/grid-fin-three.painted.svg +1 -1
  458. package/dist/assets/parts/grid-fin-three.svg +1 -1
  459. package/dist/assets/parts/grid-fin-three.thick.svg +1 -1
  460. package/dist/assets/parts/merlin-sea-level.painted.svg +1 -1
  461. package/dist/assets/parts/merlin-sea-level.svg +1 -1
  462. package/dist/assets/parts/merlin-sea-level.thick.svg +1 -1
  463. package/dist/assets/parts/raptor-sea-level.painted.svg +1 -1
  464. package/dist/assets/parts/raptor-sea-level.svg +1 -1
  465. package/dist/assets/parts/raptor-sea-level.thick.svg +1 -1
  466. package/dist/assets/parts/raptor-vacuum.painted.svg +1 -1
  467. package/dist/assets/parts/raptor-vacuum.svg +1 -1
  468. package/dist/assets/parts/raptor-vacuum.thick.svg +1 -1
  469. package/dist/assets/saturn-v-saturn-v-adapter.glb +0 -0
  470. package/dist/assets/saturn-v-saturn-v-adapter.painted.svg +1 -0
  471. package/dist/assets/saturn-v-saturn-v-adapter.svg +1 -0
  472. package/dist/assets/saturn-v-saturn-v-adapter.thick.svg +1 -0
  473. package/dist/assets/saturn-v-saturn-v-apart.painted.svg +1 -0
  474. package/dist/assets/saturn-v-saturn-v-apart.svg +1 -0
  475. package/dist/assets/saturn-v-saturn-v-apart.thick.svg +1 -0
  476. package/dist/assets/saturn-v-saturn-v-capsule.glb +0 -0
  477. package/dist/assets/saturn-v-saturn-v-capsule.painted.svg +1 -0
  478. package/dist/assets/saturn-v-saturn-v-capsule.svg +1 -0
  479. package/dist/assets/saturn-v-saturn-v-capsule.thick.svg +1 -0
  480. package/dist/assets/saturn-v-saturn-v-escape-tower.glb +0 -0
  481. package/dist/assets/saturn-v-saturn-v-escape-tower.painted.svg +1 -0
  482. package/dist/assets/saturn-v-saturn-v-escape-tower.svg +1 -0
  483. package/dist/assets/saturn-v-saturn-v-escape-tower.thick.svg +1 -0
  484. package/dist/assets/saturn-v-saturn-v-first-stage.glb +0 -0
  485. package/dist/assets/saturn-v-saturn-v-first-stage.painted.svg +1 -0
  486. package/dist/assets/saturn-v-saturn-v-first-stage.svg +1 -0
  487. package/dist/assets/saturn-v-saturn-v-first-stage.thick.svg +1 -0
  488. package/dist/assets/saturn-v-saturn-v-second-stage.glb +0 -0
  489. package/dist/assets/saturn-v-saturn-v-second-stage.painted.svg +1 -0
  490. package/dist/assets/saturn-v-saturn-v-second-stage.svg +1 -0
  491. package/dist/assets/saturn-v-saturn-v-second-stage.thick.svg +1 -0
  492. package/dist/assets/saturn-v-saturn-v-service-module.glb +0 -0
  493. package/dist/assets/saturn-v-saturn-v-service-module.painted.svg +1 -0
  494. package/dist/assets/saturn-v-saturn-v-service-module.svg +1 -0
  495. package/dist/assets/saturn-v-saturn-v-service-module.thick.svg +1 -0
  496. package/dist/assets/saturn-v-saturn-v-third-stage.glb +0 -0
  497. package/dist/assets/saturn-v-saturn-v-third-stage.painted.svg +1 -0
  498. package/dist/assets/saturn-v-saturn-v-third-stage.svg +1 -0
  499. package/dist/assets/saturn-v-saturn-v-third-stage.thick.svg +1 -0
  500. package/dist/assets/saturn-v-saturn-v.glb +0 -0
  501. package/dist/assets/saturn-v-saturn-v.painted.svg +1 -0
  502. package/dist/assets/saturn-v-saturn-v.svg +1 -0
  503. package/dist/assets/saturn-v-saturn-v.thick.svg +1 -0
  504. package/dist/assets/sls-block-1-apart.painted.svg +1 -0
  505. package/dist/assets/sls-block-1-apart.svg +1 -0
  506. package/dist/assets/sls-block-1-apart.thick.svg +1 -0
  507. package/dist/assets/sls-block-1-capsule.glb +0 -0
  508. package/dist/assets/sls-block-1-capsule.painted.svg +1 -0
  509. package/dist/assets/sls-block-1-capsule.svg +1 -0
  510. package/dist/assets/sls-block-1-capsule.thick.svg +1 -0
  511. package/dist/assets/sls-block-1-escape-tower.glb +0 -0
  512. package/dist/assets/sls-block-1-escape-tower.painted.svg +1 -0
  513. package/dist/assets/sls-block-1-escape-tower.svg +1 -0
  514. package/dist/assets/sls-block-1-escape-tower.thick.svg +1 -0
  515. package/dist/assets/sls-block-1-first-stage.glb +0 -0
  516. package/dist/assets/sls-block-1-first-stage.painted.svg +1 -0
  517. package/dist/assets/sls-block-1-first-stage.svg +1 -0
  518. package/dist/assets/sls-block-1-first-stage.thick.svg +1 -0
  519. package/dist/assets/sls-block-1-service-module.glb +0 -0
  520. package/dist/assets/sls-block-1-service-module.painted.svg +1 -0
  521. package/dist/assets/sls-block-1-service-module.svg +1 -0
  522. package/dist/assets/sls-block-1-service-module.thick.svg +1 -0
  523. package/dist/assets/sls-block-1-srb-left.glb +0 -0
  524. package/dist/assets/sls-block-1-srb-left.painted.svg +1 -0
  525. package/dist/assets/sls-block-1-srb-left.svg +1 -0
  526. package/dist/assets/sls-block-1-srb-left.thick.svg +1 -0
  527. package/dist/assets/sls-block-1-srb-right.glb +0 -0
  528. package/dist/assets/sls-block-1-srb-right.painted.svg +1 -0
  529. package/dist/assets/sls-block-1-srb-right.svg +1 -0
  530. package/dist/assets/sls-block-1-srb-right.thick.svg +1 -0
  531. package/dist/assets/sls-block-1-upper-stage.glb +0 -0
  532. package/dist/assets/sls-block-1-upper-stage.painted.svg +1 -0
  533. package/dist/assets/sls-block-1-upper-stage.svg +1 -0
  534. package/dist/assets/sls-block-1-upper-stage.thick.svg +1 -0
  535. package/dist/assets/sls-block-1.glb +0 -0
  536. package/dist/assets/sls-block-1.painted.svg +1 -0
  537. package/dist/assets/sls-block-1.svg +1 -0
  538. package/dist/assets/sls-block-1.thick.svg +1 -0
  539. package/dist/assets/soyuz-soyuz-2-apart.painted.svg +1 -0
  540. package/dist/assets/soyuz-soyuz-2-apart.svg +1 -0
  541. package/dist/assets/soyuz-soyuz-2-apart.thick.svg +1 -0
  542. package/dist/assets/soyuz-soyuz-2-booster-1.glb +0 -0
  543. package/dist/assets/soyuz-soyuz-2-booster-1.painted.svg +1 -0
  544. package/dist/assets/soyuz-soyuz-2-booster-1.svg +1 -0
  545. package/dist/assets/soyuz-soyuz-2-booster-1.thick.svg +1 -0
  546. package/dist/assets/soyuz-soyuz-2-booster-2.glb +0 -0
  547. package/dist/assets/soyuz-soyuz-2-booster-2.painted.svg +1 -0
  548. package/dist/assets/soyuz-soyuz-2-booster-2.svg +1 -0
  549. package/dist/assets/soyuz-soyuz-2-booster-2.thick.svg +1 -0
  550. package/dist/assets/soyuz-soyuz-2-booster-3.glb +0 -0
  551. package/dist/assets/soyuz-soyuz-2-booster-3.painted.svg +1 -0
  552. package/dist/assets/soyuz-soyuz-2-booster-3.svg +1 -0
  553. package/dist/assets/soyuz-soyuz-2-booster-3.thick.svg +1 -0
  554. package/dist/assets/soyuz-soyuz-2-booster-4.glb +0 -0
  555. package/dist/assets/soyuz-soyuz-2-booster-4.painted.svg +1 -0
  556. package/dist/assets/soyuz-soyuz-2-booster-4.svg +1 -0
  557. package/dist/assets/soyuz-soyuz-2-booster-4.thick.svg +1 -0
  558. package/dist/assets/soyuz-soyuz-2-fairing.glb +0 -0
  559. package/dist/assets/soyuz-soyuz-2-fairing.painted.svg +1 -0
  560. package/dist/assets/soyuz-soyuz-2-fairing.svg +1 -0
  561. package/dist/assets/soyuz-soyuz-2-fairing.thick.svg +1 -0
  562. package/dist/assets/soyuz-soyuz-2-first-stage.glb +0 -0
  563. package/dist/assets/soyuz-soyuz-2-first-stage.painted.svg +1 -0
  564. package/dist/assets/soyuz-soyuz-2-first-stage.svg +1 -0
  565. package/dist/assets/soyuz-soyuz-2-first-stage.thick.svg +1 -0
  566. package/dist/assets/soyuz-soyuz-2-third-stage.glb +0 -0
  567. package/dist/assets/soyuz-soyuz-2-third-stage.painted.svg +1 -0
  568. package/dist/assets/soyuz-soyuz-2-third-stage.svg +1 -0
  569. package/dist/assets/soyuz-soyuz-2-third-stage.thick.svg +1 -0
  570. package/dist/assets/soyuz-soyuz-2.glb +0 -0
  571. package/dist/assets/soyuz-soyuz-2.painted.svg +1 -0
  572. package/dist/assets/soyuz-soyuz-2.svg +1 -0
  573. package/dist/assets/soyuz-soyuz-2.thick.svg +1 -0
  574. package/dist/assets/space-shuttle-discovery.glb +0 -0
  575. package/dist/assets/space-shuttle-discovery.painted.svg +1 -0
  576. package/dist/assets/space-shuttle-discovery.svg +1 -0
  577. package/dist/assets/space-shuttle-discovery.thick.svg +1 -0
  578. package/dist/assets/space-shuttle-stack-apart.painted.svg +1 -0
  579. package/dist/assets/space-shuttle-stack-apart.svg +1 -0
  580. package/dist/assets/space-shuttle-stack-apart.thick.svg +1 -0
  581. package/dist/assets/space-shuttle-stack-external-tank.glb +0 -0
  582. package/dist/assets/space-shuttle-stack-external-tank.painted.svg +1 -0
  583. package/dist/assets/space-shuttle-stack-external-tank.svg +1 -0
  584. package/dist/assets/space-shuttle-stack-external-tank.thick.svg +1 -0
  585. package/dist/assets/space-shuttle-stack-orbiter.glb +0 -0
  586. package/dist/assets/space-shuttle-stack-orbiter.painted.svg +1 -0
  587. package/dist/assets/space-shuttle-stack-orbiter.svg +1 -0
  588. package/dist/assets/space-shuttle-stack-orbiter.thick.svg +1 -0
  589. package/dist/assets/space-shuttle-stack-srb-left.glb +0 -0
  590. package/dist/assets/space-shuttle-stack-srb-left.painted.svg +1 -0
  591. package/dist/assets/space-shuttle-stack-srb-left.svg +1 -0
  592. package/dist/assets/space-shuttle-stack-srb-left.thick.svg +1 -0
  593. package/dist/assets/space-shuttle-stack-srb-right.glb +0 -0
  594. package/dist/assets/space-shuttle-stack-srb-right.painted.svg +1 -0
  595. package/dist/assets/space-shuttle-stack-srb-right.svg +1 -0
  596. package/dist/assets/space-shuttle-stack-srb-right.thick.svg +1 -0
  597. package/dist/assets/space-shuttle-stack.glb +0 -0
  598. package/dist/assets/space-shuttle-stack.painted.svg +1 -0
  599. package/dist/assets/space-shuttle-stack.svg +1 -0
  600. package/dist/assets/space-shuttle-stack.thick.svg +1 -0
  601. package/dist/assets/starbase-build-site-apart.painted.svg +1 -0
  602. package/dist/assets/starbase-build-site-apart.svg +1 -0
  603. package/dist/assets/starbase-build-site-apart.thick.svg +1 -0
  604. package/dist/assets/starbase-build-site-garden.glb +0 -0
  605. package/dist/assets/starbase-build-site-garden.painted.svg +1 -0
  606. package/dist/assets/starbase-build-site-garden.svg +1 -0
  607. package/dist/assets/starbase-build-site-garden.thick.svg +1 -0
  608. package/dist/assets/starbase-build-site-ground.glb +0 -0
  609. package/dist/assets/starbase-build-site-ground.painted.svg +1 -0
  610. package/dist/assets/starbase-build-site-ground.svg +1 -0
  611. package/dist/assets/starbase-build-site-ground.thick.svg +1 -0
  612. package/dist/assets/starbase-build-site-mega-bays.glb +0 -0
  613. package/dist/assets/starbase-build-site-mega-bays.painted.svg +1 -0
  614. package/dist/assets/starbase-build-site-mega-bays.svg +1 -0
  615. package/dist/assets/starbase-build-site-mega-bays.thick.svg +1 -0
  616. package/dist/assets/starbase-build-site-sign.glb +0 -0
  617. package/dist/assets/starbase-build-site-sign.painted.svg +1 -0
  618. package/dist/assets/starbase-build-site-sign.svg +1 -0
  619. package/dist/assets/starbase-build-site-sign.thick.svg +1 -0
  620. package/dist/assets/starbase-build-site-starfactory.glb +0 -0
  621. package/dist/assets/starbase-build-site-starfactory.painted.svg +1 -0
  622. package/dist/assets/starbase-build-site-starfactory.svg +1 -0
  623. package/dist/assets/starbase-build-site-starfactory.thick.svg +1 -0
  624. package/dist/assets/starbase-build-site.glb +0 -0
  625. package/dist/assets/starbase-build-site.painted.svg +1 -0
  626. package/dist/assets/starbase-build-site.svg +1 -0
  627. package/dist/assets/starbase-build-site.thick.svg +1 -0
  628. package/dist/assets/starbase-city-apart.painted.svg +1 -0
  629. package/dist/assets/starbase-city-apart.svg +1 -0
  630. package/dist/assets/starbase-city-apart.thick.svg +1 -0
  631. package/dist/assets/starbase-city-garden.glb +0 -0
  632. package/dist/assets/starbase-city-garden.painted.svg +1 -0
  633. package/dist/assets/starbase-city-garden.svg +1 -0
  634. package/dist/assets/starbase-city-garden.thick.svg +1 -0
  635. package/dist/assets/starbase-city-ground.glb +0 -0
  636. package/dist/assets/starbase-city-ground.painted.svg +1 -0
  637. package/dist/assets/starbase-city-ground.svg +1 -0
  638. package/dist/assets/starbase-city-ground.thick.svg +1 -0
  639. package/dist/assets/starbase-city-mega-bays.glb +0 -0
  640. package/dist/assets/starbase-city-mega-bays.painted.svg +1 -0
  641. package/dist/assets/starbase-city-mega-bays.svg +1 -0
  642. package/dist/assets/starbase-city-mega-bays.thick.svg +1 -0
  643. package/dist/assets/starbase-city-on-pad.glb +0 -0
  644. package/dist/assets/starbase-city-on-pad.painted.svg +1 -0
  645. package/dist/assets/starbase-city-on-pad.svg +1 -0
  646. package/dist/assets/starbase-city-on-pad.thick.svg +1 -0
  647. package/dist/assets/starbase-city-pads.glb +0 -0
  648. package/dist/assets/starbase-city-pads.painted.svg +1 -0
  649. package/dist/assets/starbase-city-pads.svg +1 -0
  650. package/dist/assets/starbase-city-pads.thick.svg +1 -0
  651. package/dist/assets/starbase-city-sign.glb +0 -0
  652. package/dist/assets/starbase-city-sign.painted.svg +1 -0
  653. package/dist/assets/starbase-city-sign.svg +1 -0
  654. package/dist/assets/starbase-city-sign.thick.svg +1 -0
  655. package/dist/assets/starbase-city-starfactory.glb +0 -0
  656. package/dist/assets/starbase-city-starfactory.painted.svg +1 -0
  657. package/dist/assets/starbase-city-starfactory.svg +1 -0
  658. package/dist/assets/starbase-city-starfactory.thick.svg +1 -0
  659. package/dist/assets/starbase-city-tank-farm.glb +0 -0
  660. package/dist/assets/starbase-city-tank-farm.painted.svg +1 -0
  661. package/dist/assets/starbase-city-tank-farm.svg +1 -0
  662. package/dist/assets/starbase-city-tank-farm.thick.svg +1 -0
  663. package/dist/assets/starbase-city-village.glb +0 -0
  664. package/dist/assets/starbase-city-village.painted.svg +1 -0
  665. package/dist/assets/starbase-city-village.svg +1 -0
  666. package/dist/assets/starbase-city-village.thick.svg +1 -0
  667. package/dist/assets/starbase-city.glb +0 -0
  668. package/dist/assets/starbase-city.painted.svg +1 -0
  669. package/dist/assets/starbase-city.svg +1 -0
  670. package/dist/assets/starbase-city.thick.svg +1 -0
  671. package/dist/assets/starbase-launch-site-apart.painted.svg +1 -0
  672. package/dist/assets/starbase-launch-site-apart.svg +1 -0
  673. package/dist/assets/starbase-launch-site-apart.thick.svg +1 -0
  674. package/dist/assets/starbase-launch-site-ground.glb +0 -0
  675. package/dist/assets/starbase-launch-site-ground.painted.svg +1 -0
  676. package/dist/assets/starbase-launch-site-ground.svg +1 -0
  677. package/dist/assets/starbase-launch-site-ground.thick.svg +1 -0
  678. package/dist/assets/starbase-launch-site-on-pad.glb +0 -0
  679. package/dist/assets/starbase-launch-site-on-pad.painted.svg +1 -0
  680. package/dist/assets/starbase-launch-site-on-pad.svg +1 -0
  681. package/dist/assets/starbase-launch-site-on-pad.thick.svg +1 -0
  682. package/dist/assets/starbase-launch-site-pads.glb +0 -0
  683. package/dist/assets/starbase-launch-site-pads.painted.svg +1 -0
  684. package/dist/assets/starbase-launch-site-pads.svg +1 -0
  685. package/dist/assets/starbase-launch-site-pads.thick.svg +1 -0
  686. package/dist/assets/starbase-launch-site-tank-farm.glb +0 -0
  687. package/dist/assets/starbase-launch-site-tank-farm.painted.svg +1 -0
  688. package/dist/assets/starbase-launch-site-tank-farm.svg +1 -0
  689. package/dist/assets/starbase-launch-site-tank-farm.thick.svg +1 -0
  690. package/dist/assets/starbase-launch-site.glb +0 -0
  691. package/dist/assets/starbase-launch-site.painted.svg +1 -0
  692. package/dist/assets/starbase-launch-site.svg +1 -0
  693. package/dist/assets/starbase-launch-site.thick.svg +1 -0
  694. package/dist/assets/starship-2019.painted.svg +1 -1
  695. package/dist/assets/starship-2019.svg +1 -1
  696. package/dist/assets/starship-2019.thick.svg +1 -1
  697. package/dist/assets/starship-v1-apart.painted.svg +1 -1
  698. package/dist/assets/starship-v1-apart.svg +1 -1
  699. package/dist/assets/starship-v1-apart.thick.svg +1 -1
  700. package/dist/assets/starship-v1-booster.painted.svg +1 -1
  701. package/dist/assets/starship-v1-booster.svg +1 -1
  702. package/dist/assets/starship-v1-booster.thick.svg +1 -1
  703. package/dist/assets/starship-v1-flight1-apart.painted.svg +1 -1
  704. package/dist/assets/starship-v1-flight1-apart.svg +1 -1
  705. package/dist/assets/starship-v1-flight1-apart.thick.svg +1 -1
  706. package/dist/assets/starship-v1-flight1-booster.painted.svg +1 -1
  707. package/dist/assets/starship-v1-flight1-booster.svg +1 -1
  708. package/dist/assets/starship-v1-flight1-booster.thick.svg +1 -1
  709. package/dist/assets/starship-v1-flight1-ship.painted.svg +1 -1
  710. package/dist/assets/starship-v1-flight1-ship.svg +1 -1
  711. package/dist/assets/starship-v1-flight1-ship.thick.svg +1 -1
  712. package/dist/assets/starship-v1-flight1.painted.svg +1 -1
  713. package/dist/assets/starship-v1-flight1.svg +1 -1
  714. package/dist/assets/starship-v1-flight1.thick.svg +1 -1
  715. package/dist/assets/starship-v1-ship.painted.svg +1 -1
  716. package/dist/assets/starship-v1-ship.svg +1 -1
  717. package/dist/assets/starship-v1-ship.thick.svg +1 -1
  718. package/dist/assets/starship-v1.painted.svg +1 -1
  719. package/dist/assets/starship-v1.svg +1 -1
  720. package/dist/assets/starship-v1.thick.svg +1 -1
  721. package/dist/assets/starship-v2-apart.painted.svg +1 -1
  722. package/dist/assets/starship-v2-apart.svg +1 -1
  723. package/dist/assets/starship-v2-apart.thick.svg +1 -1
  724. package/dist/assets/starship-v2-booster.painted.svg +1 -1
  725. package/dist/assets/starship-v2-booster.svg +1 -1
  726. package/dist/assets/starship-v2-booster.thick.svg +1 -1
  727. package/dist/assets/starship-v2-ship.painted.svg +1 -1
  728. package/dist/assets/starship-v2-ship.svg +1 -1
  729. package/dist/assets/starship-v2-ship.thick.svg +1 -1
  730. package/dist/assets/starship-v2.painted.svg +1 -1
  731. package/dist/assets/starship-v2.svg +1 -1
  732. package/dist/assets/starship-v2.thick.svg +1 -1
  733. package/dist/assets/starship-v3-apart.painted.svg +1 -1
  734. package/dist/assets/starship-v3-apart.svg +1 -1
  735. package/dist/assets/starship-v3-apart.thick.svg +1 -1
  736. package/dist/assets/starship-v3-booster.painted.svg +1 -1
  737. package/dist/assets/starship-v3-booster.svg +1 -1
  738. package/dist/assets/starship-v3-booster.thick.svg +1 -1
  739. package/dist/assets/starship-v3-ship.painted.svg +1 -1
  740. package/dist/assets/starship-v3-ship.svg +1 -1
  741. package/dist/assets/starship-v3-ship.thick.svg +1 -1
  742. package/dist/assets/starship-v3.painted.svg +1 -1
  743. package/dist/assets/starship-v3.svg +1 -1
  744. package/dist/assets/starship-v3.thick.svg +1 -1
  745. package/dist/assets/starship-v4-apart.painted.svg +1 -1
  746. package/dist/assets/starship-v4-apart.svg +1 -1
  747. package/dist/assets/starship-v4-apart.thick.svg +1 -1
  748. package/dist/assets/starship-v4-booster.painted.svg +1 -1
  749. package/dist/assets/starship-v4-booster.svg +1 -1
  750. package/dist/assets/starship-v4-booster.thick.svg +1 -1
  751. package/dist/assets/starship-v4-ship.painted.svg +1 -1
  752. package/dist/assets/starship-v4-ship.svg +1 -1
  753. package/dist/assets/starship-v4-ship.thick.svg +1 -1
  754. package/dist/assets/starship-v4.painted.svg +1 -1
  755. package/dist/assets/starship-v4.svg +1 -1
  756. package/dist/assets/starship-v4.thick.svg +1 -1
  757. package/dist/attrs.d.ts +27 -0
  758. package/dist/attrs.js +31 -0
  759. package/dist/build/index.d.ts +7 -2
  760. package/dist/build/index.js +28 -4
  761. package/dist/build/lineup.js +14 -4
  762. package/dist/builder.d.ts +22 -0
  763. package/dist/builder.js +103 -0
  764. package/dist/data/apollosoyuz.d.ts +6 -0
  765. package/dist/data/apollosoyuz.js +28 -0
  766. package/dist/data/credits.d.ts +19 -1
  767. package/dist/data/credits.js +30 -1
  768. package/dist/data/dragon.js +35 -0
  769. package/dist/data/electron.d.ts +2 -0
  770. package/dist/data/electron.js +23 -0
  771. package/dist/data/falcon.js +2 -2
  772. package/dist/data/falcon1.d.ts +4 -0
  773. package/dist/data/falcon1.js +51 -0
  774. package/dist/data/flight-log.d.ts +18 -0
  775. package/dist/data/flight-log.js +23 -0
  776. package/dist/data/flights.d.ts +49 -0
  777. package/dist/data/flights.js +177 -0
  778. package/dist/data/gemini.d.ts +3 -0
  779. package/dist/data/gemini.js +22 -0
  780. package/dist/data/hubble.d.ts +3 -0
  781. package/dist/data/hubble.js +23 -0
  782. package/dist/data/iss.d.ts +5 -0
  783. package/dist/data/iss.js +25 -0
  784. package/dist/data/jupiterc.d.ts +3 -0
  785. package/dist/data/jupiterc.js +22 -0
  786. package/dist/data/landing.d.ts +3 -0
  787. package/dist/data/landing.js +51 -0
  788. package/dist/data/lunarmodule.d.ts +4 -0
  789. package/dist/data/lunarmodule.js +27 -0
  790. package/dist/data/makers.d.ts +16 -0
  791. package/dist/data/makers.js +29 -0
  792. package/dist/data/mercury.d.ts +3 -0
  793. package/dist/data/mercury.js +22 -0
  794. package/dist/data/newglenn.d.ts +2 -0
  795. package/dist/data/newglenn.js +23 -0
  796. package/dist/data/saturn.d.ts +2 -0
  797. package/dist/data/saturn.js +32 -0
  798. package/dist/data/shuttle.d.ts +5 -0
  799. package/dist/data/shuttle.js +52 -0
  800. package/dist/data/sls.d.ts +4 -0
  801. package/dist/data/sls.js +36 -0
  802. package/dist/data/sources.d.ts +348 -2
  803. package/dist/data/sources.js +45 -1
  804. package/dist/data/soyuz.d.ts +3 -0
  805. package/dist/data/soyuz.js +33 -0
  806. package/dist/data/starbase.d.ts +2 -0
  807. package/dist/data/starbase.js +30 -0
  808. package/dist/data/tower.d.ts +3 -0
  809. package/dist/data/tower.js +26 -0
  810. package/dist/data/types.d.ts +7 -1
  811. package/dist/draw/plume.d.ts +8 -0
  812. package/dist/draw/plume.js +71 -0
  813. package/dist/draw/svg.d.ts +1 -1
  814. package/dist/draw/svg.js +3 -3
  815. package/dist/element/ground.d.ts +15 -0
  816. package/dist/element/ground.js +95 -0
  817. package/dist/element/plumes.d.ts +38 -0
  818. package/dist/element/plumes.js +208 -0
  819. package/dist/element/scene.d.ts +39 -5
  820. package/dist/element/scene.js +250 -7
  821. package/dist/element.d.ts +50 -1
  822. package/dist/element.js +201 -13
  823. package/dist/embed.d.ts +26 -0
  824. package/dist/embed.js +135 -0
  825. package/dist/engines.d.ts +44 -0
  826. package/dist/engines.js +79 -0
  827. package/dist/fit.d.ts +2 -0
  828. package/dist/fit.js +4 -3
  829. package/dist/flight.d.ts +67 -0
  830. package/dist/flight.js +124 -0
  831. package/dist/flightbar.d.ts +22 -0
  832. package/dist/flightbar.js +176 -0
  833. package/dist/index.d.ts +17 -0
  834. package/dist/index.js +9 -0
  835. package/dist/layout.js +1 -1
  836. package/dist/looks.d.ts +1 -1
  837. package/dist/looks.js +2 -0
  838. package/dist/model/apollosoyuz.d.ts +2 -0
  839. package/dist/model/apollosoyuz.js +46 -0
  840. package/dist/model/dragoninside.d.ts +2 -0
  841. package/dist/model/dragoninside.js +67 -0
  842. package/dist/model/electron.d.ts +2 -0
  843. package/dist/model/electron.js +35 -0
  844. package/dist/model/falcon.d.ts +2 -0
  845. package/dist/model/falcon.js +4 -0
  846. package/dist/model/falcon1.d.ts +2 -0
  847. package/dist/model/falcon1.js +53 -0
  848. package/dist/model/gemini.d.ts +2 -0
  849. package/dist/model/gemini.js +28 -0
  850. package/dist/model/hubble.d.ts +2 -0
  851. package/dist/model/hubble.js +28 -0
  852. package/dist/model/iss.d.ts +2 -0
  853. package/dist/model/iss.js +32 -0
  854. package/dist/model/jupiterc.d.ts +2 -0
  855. package/dist/model/jupiterc.js +24 -0
  856. package/dist/model/kit.d.ts +36 -0
  857. package/dist/model/kit.js +95 -0
  858. package/dist/model/landing.d.ts +3 -0
  859. package/dist/model/landing.js +81 -0
  860. package/dist/model/lunarmodule.d.ts +2 -0
  861. package/dist/model/lunarmodule.js +43 -0
  862. package/dist/model/materials.d.ts +42 -0
  863. package/dist/model/materials.js +7 -0
  864. package/dist/model/mercury.d.ts +2 -0
  865. package/dist/model/mercury.js +19 -0
  866. package/dist/model/newglenn.d.ts +2 -0
  867. package/dist/model/newglenn.js +43 -0
  868. package/dist/model/pieces.d.ts +2 -0
  869. package/dist/model/pieces.js +2 -2
  870. package/dist/model/registry.js +63 -0
  871. package/dist/model/saturn.d.ts +2 -0
  872. package/dist/model/saturn.js +122 -0
  873. package/dist/model/shuttle.d.ts +2 -0
  874. package/dist/model/shuttle.js +111 -0
  875. package/dist/model/sls.d.ts +2 -0
  876. package/dist/model/sls.js +83 -0
  877. package/dist/model/soyuz.d.ts +2 -0
  878. package/dist/model/soyuz.js +75 -0
  879. package/dist/model/stacks.d.ts +39 -0
  880. package/dist/model/stacks.js +1 -0
  881. package/dist/model/starbase.d.ts +2 -0
  882. package/dist/model/starbase.js +108 -0
  883. package/dist/model/tower.d.ts +6 -0
  884. package/dist/model/tower.js +89 -0
  885. package/dist/parts.d.ts +3 -2
  886. package/dist/react.d.ts +14 -6
  887. package/dist/rockets.d.ts +5 -0
  888. package/dist/rockets.js +78 -7
  889. package/dist/spin.d.ts +11 -0
  890. package/dist/spin.js +11 -0
  891. package/package.json +93 -18
@@ -7,11 +7,15 @@ import { LineMaterial } from "three/addons/lines/LineMaterial.js";
7
7
  import { LineSegments2 } from "three/addons/lines/LineSegments2.js";
8
8
  import { LineSegmentsGeometry } from "three/addons/lines/LineSegmentsGeometry.js";
9
9
  import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
10
+ import { bellsOf, FLAME_GAP_MS, FLAME_SETTLE_MS, pickBells } from "../engines.js";
10
11
  import { directionOf, FOV_DEG, frameFor, PICTURE_H, turnedBy } from "../framing.js";
11
12
  import { LOOKS } from "../looks.js";
12
13
  import { pixelRatioFor } from "../pixels.js";
13
14
  import { MATERIALS } from "../model/materials.js";
14
15
  import { paintGlow, paintSky, paintSteel, paintTiles } from "./paint.js";
16
+ import { flightBounds, frameAt } from "../flight.js";
17
+ import { GroundKit } from "./ground.js";
18
+ import { PartPlumes, PlumeKit } from "./plumes.js";
15
19
  const IDLE_STOP_MS = 90_000;
16
20
  const MOVE_MS = 1400;
17
21
  const VIEW_MS = 700;
@@ -73,6 +77,8 @@ void main() {
73
77
  /** The materials of an engine's bell, in this package's own meshes. */
74
78
  const NOZZLE_MATERIALS = new Set(["bell", "bell-inside", "engine-metal"]);
75
79
  const asVec = (v) => [v.x, v.y, v.z];
80
+ /** A flame's colours, a picture: Raptor burns methane, Merlin kerosene. */
81
+ const fuelOf = (built) => (built.report.parts.some(({ part }) => part.rocket === "starship") ? "methane" : "kerosene");
76
82
  /** The pictures a licensed model's material may hold (the shared sky it reflects is not one of them). */
77
83
  const MODEL_PICTURES = ["map", "normalMap", "roughnessMap", "metalnessMap", "aoMap", "emissiveMap"];
78
84
  export class RocketViewer {
@@ -89,6 +95,20 @@ export class RocketViewer {
89
95
  built = null;
90
96
  look = "line";
91
97
  show = "together";
98
+ plumes;
99
+ lit = null;
100
+ /** What was lit before a flight took over the engines. */
101
+ litOutside = null;
102
+ burningNow = 0;
103
+ /** A flame moves until then. */
104
+ flameUntil = 0;
105
+ flameDrawn = 0;
106
+ inTick = false;
107
+ clockNow = null;
108
+ flightOn = false;
109
+ ground = null;
110
+ flightKey = "";
111
+ burnSlots = null;
92
112
  generation = 0;
93
113
  materialCache = new Map();
94
114
  outlineMaterial;
@@ -148,7 +168,8 @@ export class RocketViewer {
148
168
  rim.position.set(-4, 1, -5);
149
169
  const low = new DirectionalLight("#ffffff", 0.35);
150
170
  low.position.set(1, -4, 2);
151
- this.scene.add(key, rim, low, new HemisphereLight("#d7e6ff", "#22252b", 0.35), this.root);
171
+ this.plumes = new PlumeKit();
172
+ this.scene.add(key, rim, low, new HemisphereLight("#d7e6ff", "#22252b", 0.35), this.plumes.light, this.root);
152
173
  this.outlineMaterial = new ShaderMaterial({
153
174
  vertexShader: OUTLINE_VERTEX,
154
175
  fragmentShader: OUTLINE_FRAGMENT,
@@ -220,6 +241,7 @@ export class RocketViewer {
220
241
  from: [0, 0, 0],
221
242
  to: [0, 0, 0],
222
243
  hideAtEnd: false,
244
+ plumes: null,
223
245
  };
224
246
  this.takeMeshes(source, code, view);
225
247
  const place = places.find((p) => p.slot === part.slot);
@@ -230,7 +252,13 @@ export class RocketViewer {
230
252
  }
231
253
  this.addGlow();
232
254
  this.setLook(look);
255
+ this.plumes.setFuel(fuelOf(built));
233
256
  this.frameTo(angle ?? this.currentAngle(), false);
257
+ if (this.clockNow) {
258
+ this.flightKey = "";
259
+ this.flightOn = false;
260
+ this.setFlight(this.clockNow);
261
+ }
234
262
  this.canvas.dataset.ready = "true";
235
263
  this.canvas.dataset.parts = this.parts.map((part) => part.slot).join(" ");
236
264
  this.drivenDirty = this.driven !== null;
@@ -385,9 +413,200 @@ export class RocketViewer {
385
413
  if (this.glow)
386
414
  this.glow.visible = !painted;
387
415
  this.canvas.dataset.look = look;
416
+ this.plumes.setLook(painted);
417
+ this.relight();
388
418
  this.reportPainted();
389
419
  this.wake();
390
420
  }
421
+ /** Which engines burn: at full thrust every one that shows, a count for each part, or none. Nothing is made or freed by this after a part's first flame: only which of its flames are drawn changes. */
422
+ setEngines(lit) {
423
+ // a flight keeps its own, and what was asked for comes back after it
424
+ if (this.clockNow) {
425
+ this.litOutside = lit;
426
+ this.flightKey = "";
427
+ this.applyFlight();
428
+ this.wake();
429
+ return;
430
+ }
431
+ const framed = this.lit === "full";
432
+ this.lit = lit;
433
+ this.relight();
434
+ if (framed !== (lit === "full") && this.built && !this.pose)
435
+ this.reframe();
436
+ this.wake();
437
+ }
438
+ /** The page reads reduced motion again at each change, so a view opened earlier follows the reader now. */
439
+ setReduced(reduced) {
440
+ this.options.reducedMotion = reduced;
441
+ }
442
+ relight() {
443
+ if (!this.built)
444
+ return;
445
+ const counts = new Map();
446
+ if (this.lit === "full") {
447
+ for (const bell of this.built.flamesOf(this.show))
448
+ counts.set(bell.slot, (counts.get(bell.slot) ?? 0) + 1);
449
+ }
450
+ else if (this.lit)
451
+ for (const [slot, count] of Object.entries(this.lit))
452
+ counts.set(slot, count);
453
+ let burning = 0;
454
+ let lowest = null;
455
+ for (const view of this.parts) {
456
+ const count = counts.get(view.slot) ?? 0;
457
+ if (count > 0 && !view.plumes) {
458
+ const bells = bellsOf(this.built.parts.find((part) => part.slot === view.slot)?.pieces ?? []);
459
+ if (bells.length === 0)
460
+ continue;
461
+ view.plumes = new PartPlumes(this.plumes, bells);
462
+ view.holder.add(view.plumes.group);
463
+ }
464
+ if (!view.plumes)
465
+ continue;
466
+ const fired = pickBells(view.plumes.bells, count);
467
+ view.plumes.light(fired);
468
+ burning += fired.length;
469
+ if (fired.length > 0 && !lowest)
470
+ lowest = { view, y: fired[0].y - 1 };
471
+ }
472
+ this.burningNow = burning;
473
+ this.burnSlots = lowest;
474
+ this.plumes.setBurning(burning);
475
+ this.plumes.light.intensity = burning === 0 || this.look !== "painted" ? 0 : Math.min(900, 120 + burning * 40);
476
+ this.placeGlow();
477
+ this.canvas.dataset.engines = burning > 0 ? "on" : "off";
478
+ this.canvas.dataset.plumes = String(burning);
479
+ }
480
+ /** The hull's glow stands under the lowest part that burns, wherever that part has got to. */
481
+ placeGlow() {
482
+ const lowest = this.burnSlots;
483
+ if (!lowest)
484
+ return;
485
+ lowest.view.holder.updateMatrix();
486
+ this.plumes.light.position.set(0, lowest.y, 0).applyMatrix4(lowest.view.holder.matrix);
487
+ }
488
+ /** Starts, moves or ends a flight. While one is on, the parts stand where its timeline says, the engines are its own and the camera holds all of it. Under reduced motion it is the same, with no flames. */
489
+ setFlight(clock) {
490
+ this.clockNow = clock;
491
+ if (!this.built)
492
+ return;
493
+ const before = this.flightOn;
494
+ this.flightOn = clock !== null;
495
+ if (!clock) {
496
+ if (!before)
497
+ return;
498
+ this.flightKey = "";
499
+ if (this.ground)
500
+ this.ground.group.visible = false;
501
+ for (const part of this.parts)
502
+ if (part.model)
503
+ this.showCode(part, this.look === "painted");
504
+ const places = this.built.placesOf(this.show);
505
+ for (const part of this.parts) {
506
+ const place = places.find((one) => one.slot === part.slot);
507
+ part.holder.position.set(...(place?.at ?? [0, 0, 0]));
508
+ part.holder.rotation.set(0, 0, 0);
509
+ part.holder.visible = place?.shown ?? false;
510
+ }
511
+ this.plumes.setAir(0);
512
+ this.plumes.setFloor(-1e6);
513
+ this.reframe();
514
+ this.lit = this.litOutside;
515
+ this.relight();
516
+ this.wake();
517
+ return;
518
+ }
519
+ if (!before) {
520
+ this.litOutside = this.lit;
521
+ this.pose = null;
522
+ if (!this.ground) {
523
+ this.ground = new GroundKit();
524
+ this.scene.add(this.ground.group);
525
+ }
526
+ const { min, max } = this.boundsNow();
527
+ this.ground.fit(this.built.boundsOf("together").max[0] * 2.4 + 4, Math.max(Math.abs(min[0]), Math.abs(max[0])));
528
+ this.ground.group.visible = true;
529
+ for (const part of this.parts)
530
+ if (part.model)
531
+ this.showCode(part, this.look === "painted");
532
+ this.reframe();
533
+ }
534
+ this.applyFlight();
535
+ this.wake();
536
+ }
537
+ /** After a flight starts or ends the camera holds the new bounds, keeping its angle. */
538
+ reframe() {
539
+ if (this.driven)
540
+ this.applyDriven();
541
+ else
542
+ this.applyFraming(this.framingFor(this.currentAngle()));
543
+ }
544
+ /** What is showing, with the flames when they are lit, so a flame is never cut off at the foot of the picture. */
545
+ litBounds() {
546
+ const built = this.built;
547
+ return this.lit === "full" ? built.boundsOf(this.show, true) : built.boundsOf(this.show);
548
+ }
549
+ /** What the picture must hold: all of a flight while one is on. */
550
+ boundsNow() {
551
+ if (!this.built)
552
+ throw new Error("nothing is loaded");
553
+ if (!this.clockNow)
554
+ return this.litBounds();
555
+ const { height, parts } = this.flightParts();
556
+ const { min, max } = flightBounds(this.clockNow.flight, parts, height);
557
+ return { min, max };
558
+ }
559
+ flightParts() {
560
+ const built = this.built;
561
+ const places = built.placesOf("together");
562
+ const height = built.boundsOf("together").max[1];
563
+ return {
564
+ height,
565
+ parts: built.parts.map((part) => {
566
+ const at = places.find((place) => place.slot === part.slot)?.at ?? [0, 0, 0];
567
+ return { slot: part.slot, baseY: at[1], height: part.record.height, radius: Math.max(part.record.diameter / 2, Math.abs(at[0]) + part.record.diameter / 2) };
568
+ }),
569
+ };
570
+ }
571
+ /** Puts everything where the timeline says now. */
572
+ applyFlight() {
573
+ const clock = this.clockNow;
574
+ if (!clock || !this.built)
575
+ return;
576
+ const { height, parts } = this.flightParts();
577
+ const frame = frameAt(clock.flight, clock.position, parts, height);
578
+ const places = this.built.placesOf("together");
579
+ for (const part of this.parts) {
580
+ const pose = frame.poses[part.slot];
581
+ const place = places.find((one) => one.slot === part.slot);
582
+ if (!pose || !place)
583
+ continue;
584
+ const turn = MathUtils.degToRad(pose.pitch);
585
+ const middle = (parts.find((one) => one.slot === part.slot)?.height ?? 0) / 2;
586
+ part.holder.visible = !pose.gone;
587
+ part.holder.rotation.set(0, 0, turn);
588
+ part.holder.position.set(place.at[0] + pose.dx + Math.sin(turn) * middle, place.at[1] + pose.dy + middle - Math.cos(turn) * middle, place.at[2]);
589
+ }
590
+ this.plumes.setAir(frame.air);
591
+ this.plumes.setFloor(frame.groundY);
592
+ this.ground?.set(frame.groundY, this.options.reducedMotion ? 0 : frame.smoke, performance.now() / 1000);
593
+ const key = `${clock.flight.id}/${frame.index}/${this.options.reducedMotion}`;
594
+ if (key !== this.flightKey) {
595
+ this.flightKey = key;
596
+ this.lit = this.options.reducedMotion ? null : frame.burns;
597
+ this.relight();
598
+ this.canvas.dataset.phase = frame.phase.id;
599
+ }
600
+ else
601
+ this.placeGlow();
602
+ this.needsDraw = true;
603
+ }
604
+ freePlumes() {
605
+ for (const view of this.parts) {
606
+ view.plumes?.dispose();
607
+ view.plumes = null;
608
+ }
609
+ }
391
610
  /** Which painted parts are in: "model" when all come from a licensed model, "code" when this package's own paint, "loading" while one is on its way. */
392
611
  reportPainted() {
393
612
  if (this.look !== "painted") {
@@ -445,7 +664,8 @@ export class RocketViewer {
445
664
  showCode(part, painted) {
446
665
  const nozzleOnly = painted && part.ownNozzle;
447
666
  part.code.visible = !painted || nozzleOnly;
448
- const nozzle = nozzleOnly && this.show !== "together";
667
+ // in a flight a stage leaves the one below, so its nozzle shows then too
668
+ const nozzle = nozzleOnly && (this.show !== "together" || this.flightOn);
449
669
  for (const { mesh, name } of part.faces)
450
670
  mesh.visible = !nozzleOnly || (nozzle && NOZZLE_MATERIALS.has(name));
451
671
  for (const lines of [...part.feature, ...part.weld])
@@ -455,7 +675,7 @@ export class RocketViewer {
455
675
  }
456
676
  /** Together, apart, or one part alone: an animated move, or a cut under reduced motion. */
457
677
  setShow(show) {
458
- if (!this.built || show === this.show)
678
+ if (!this.built || show === this.show || this.clockNow)
459
679
  return;
460
680
  this.show = show;
461
681
  for (const part of this.parts)
@@ -474,6 +694,7 @@ export class RocketViewer {
474
694
  }
475
695
  this.pose = null;
476
696
  this.applyFraming(framing);
697
+ this.relight();
477
698
  this.wake();
478
699
  return;
479
700
  }
@@ -500,11 +721,12 @@ export class RocketViewer {
500
721
  }
501
722
  }
502
723
  this.startPose(framing, MOVE_MS, true);
724
+ this.relight();
503
725
  }
504
726
  framingFor(angle) {
505
727
  if (!this.built)
506
728
  throw new Error("nothing is loaded");
507
- const { min, max } = this.built.boundsOf(this.show);
729
+ const { min, max } = this.boundsNow();
508
730
  return frameFor(min, max, angle, this.camera.aspect);
509
731
  }
510
732
  applyFraming(framing) {
@@ -674,6 +896,8 @@ export class RocketViewer {
674
896
  this.resize.disconnect();
675
897
  this.controls.dispose();
676
898
  this.disposeParts();
899
+ this.plumes.dispose();
900
+ this.ground?.dispose();
677
901
  this.glow?.geometry.dispose();
678
902
  this.glow?.material?.dispose();
679
903
  for (const material of this.materialCache.values())
@@ -688,6 +912,7 @@ export class RocketViewer {
688
912
  }
689
913
  /** Lets the graphics card have back what the parts took: geometries, the thick lines' materials and a licensed model's own materials and pictures. */
690
914
  disposeParts() {
915
+ this.freePlumes();
691
916
  for (const part of this.parts) {
692
917
  part.holder.traverse((node) => {
693
918
  node.geometry?.dispose();
@@ -738,7 +963,11 @@ export class RocketViewer {
738
963
  this.wake();
739
964
  }
740
965
  wake() {
741
- this.lastActive = performance.now();
966
+ // the view's own spin is not someone touching it: without this a spin would never settle
967
+ if (!this.inTick) {
968
+ this.lastActive = performance.now();
969
+ this.flameUntil = this.lastActive + FLAME_SETTLE_MS;
970
+ }
742
971
  this.needsDraw = true;
743
972
  if (!this.frame && this.visible && !document.hidden && !this.disposed)
744
973
  this.frame = requestAnimationFrame(this.tick);
@@ -747,6 +976,7 @@ export class RocketViewer {
747
976
  this.frame = 0;
748
977
  if (!this.visible || document.hidden || this.disposed)
749
978
  return;
979
+ this.inTick = true;
750
980
  this.clock.update(now);
751
981
  const dt = Math.min(this.clock.getDelta(), 0.1);
752
982
  const ambient = !this.options.reducedMotion && now - this.lastActive < IDLE_STOP_MS;
@@ -804,6 +1034,18 @@ export class RocketViewer {
804
1034
  }
805
1035
  if (!ambient)
806
1036
  this.controls.autoRotate = false;
1037
+ const flying = this.clockNow?.playing ?? false;
1038
+ if (flying && this.clockNow) {
1039
+ this.clockNow.advance(dt);
1040
+ this.applyFlight();
1041
+ this.options.onFlight?.();
1042
+ }
1043
+ const flaming = this.burningNow > 0 && !this.options.reducedMotion && (flying || performance.now() < this.flameUntil);
1044
+ if (flaming && now - this.flameDrawn >= FLAME_GAP_MS) {
1045
+ this.flameDrawn = now;
1046
+ this.plumes.setTime(now / 1000);
1047
+ this.needsDraw = true;
1048
+ }
807
1049
  const changed = this.controls.update(dt);
808
1050
  if (this.needsDraw || changed || this.pose) {
809
1051
  this.syncSizes();
@@ -820,11 +1062,12 @@ export class RocketViewer {
820
1062
  this.canvas.dataset.pan = `${Math.round(this.driven.panX)},${Math.round(this.driven.panY)}`;
821
1063
  }
822
1064
  if (this.glow)
823
- this.glow.visible = this.look !== "painted" && this.camera.position.y > 0;
1065
+ this.glow.visible = this.look !== "painted" && this.camera.position.y > 0 && !this.clockNow;
824
1066
  }
825
1067
  // the controls' own change event may already have asked for the next frame (wake): one frame is asked for, never two, or each frame would double the next
826
- if (!this.frame && ((ambient && this.controls.autoRotate) || changed || this.pose || this.needsDraw || Math.abs(dA) > 1e-5))
1068
+ if (!this.frame && ((ambient && this.controls.autoRotate) || changed || this.pose || this.needsDraw || Math.abs(dA) > 1e-5 || flaming || flying))
827
1069
  this.frame = requestAnimationFrame(this.tick);
1070
+ this.inTick = false;
828
1071
  };
829
1072
  syncSizes() {
830
1073
  const size = this.renderer.getDrawingBufferSize(new Vector2());
package/dist/element.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { type Flight } from "./flight.ts";
2
+ import { UchusenFlight } from "./flightbar.ts";
1
3
  import type { Description, FitReport } from "./fit.ts";
2
4
  import { type Angle, type ViewChoice } from "./framing.ts";
3
5
  import { ROCKETS } from "./rockets.ts";
@@ -29,6 +31,13 @@ export declare class UchusenRocket extends HTMLBase {
29
31
  private onScreen;
30
32
  private drawn;
31
33
  private tiltCleanups;
34
+ private clock;
35
+ private flightFrame;
36
+ private flightLast;
37
+ private flightDrawn;
38
+ private noted;
39
+ private phaseSeen;
40
+ private flightSeen;
32
41
  /** What is showing now. */
33
42
  get state(): RocketState;
34
43
  /** What the fit check said about what is showing: its label, parts and credits. */
@@ -43,6 +52,9 @@ export declare class UchusenRocket extends HTMLBase {
43
52
  /** The drawing, turned and moved to the chosen view. The 3D view moves itself, so only the drawing needs it, and only until the 3D view shows. It is drawn at most about 20 times a second and never while out of sight: it is made again when it comes back. */
44
53
  private place;
45
54
  private seen;
55
+ /** A reader who changes the setting while the page is open is followed at once. */
56
+ private motionChanged;
57
+ private motion;
46
58
  connectedCallback(): void;
47
59
  disconnectedCallback(): void;
48
60
  attributeChangedCallback(name: string, before: string | null, after: string | null): void;
@@ -54,7 +66,44 @@ export declare class UchusenRocket extends HTMLBase {
54
66
  private emit;
55
67
  /** What to draw from the attributes, every value checked. */
56
68
  private settings;
69
+ /** The flight a page gives for what is showing, or null: a custom build never has one. */
70
+ get flight(): Flight | null;
71
+ /** Where the timeline is: `active` once it has been started or moved, until `endFlight`. */
72
+ get flightState(): {
73
+ active: boolean;
74
+ playing: boolean;
75
+ ended: boolean;
76
+ position: number;
77
+ phase: string;
78
+ };
79
+ /** Plays the flight from where it is. It stands still out of sight, and does not play at all for a reader who asked for reduced motion: `seek` still moves it, by hand. */
80
+ play(): void;
81
+ pause(): void;
82
+ /** Moves the timeline to a place, where 0 is the first phase, 1 the next and so on: `2.5` is half way from the third to the fourth. */
83
+ seek(position: number): void;
84
+ /** Leaves the flight: the rocket as it was. */
85
+ endFlight(): void;
86
+ /** For each part with engines, which burn: at a named phase, where the timeline is, or else as the attributes have them. */
87
+ engineCharts(phaseId?: string | null): {
88
+ slot: string;
89
+ burning: number;
90
+ total: number;
91
+ words: string;
92
+ svg: string;
93
+ }[];
94
+ private flightMoved;
95
+ /** With no 3D view the drawing follows the timeline, by one frame request at a time, at most 20 drawings a second, never out of sight. */
96
+ private kickFlight;
97
+ private flightStep;
98
+ /** Tells the page where the timeline is: at once for a new phase or a stop, otherwise at most 8 times a second. */
99
+ private noteFlight;
100
+ /** Whether the engines are lit: `engines="on"`, and never for a reader who asked for reduced motion. */
101
+ private engineLights;
102
+ /** Hands the 3D view what the attributes say about the engines, and its reader's motion setting. */
103
+ private lightViewer;
57
104
  private update;
105
+ /** After a change: a timeline of another rocket ends, and the `phase` attribute moves it. */
106
+ private settleFlight;
58
107
  private renderShell;
59
108
  /** The drawing for what the attributes say now. It is made from code, so it needs no file. A zoom or a move only changes which part of it the box shows (its viewBox), so the drawing is as sharp as the box and never grows past it. */
60
109
  private redraw;
@@ -77,7 +126,7 @@ export declare class UchusenLineup extends HTMLBase {
77
126
  }
78
127
  /** Defines both elements, once. Importing this module does it. */
79
128
  export declare function defineUchusenRocket(): void;
80
- export { ROCKETS };
129
+ export { ROCKETS, UchusenFlight };
81
130
  declare global {
82
131
  interface HTMLElementTagNameMap {
83
132
  "uchusen-rocket": UchusenRocket;