@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
@@ -0,0 +1,108 @@
1
+ // The coordinates, outlines and map heights in this file are © OpenStreetMap contributors, under the Open Database License (ODbL 1.0, https://www.openstreetmap.org/copyright), not MIT: see NOTICE.md.
2
+ // Starbase from the map: places and outlines from OpenStreetMap (a handful of named places, in metres from tower 1, x to the east and z to the south), the road and the coast too. What stands on them is plain geometry with no lettering or logo. Nothing here is announced or from a concept picture. Few pieces, merged by material in one mesh per part, so a whole town is a few dozen draws.
3
+ import { blank } from "../data/types.js";
4
+ import { moved, nose, road, slab, tube } from "./kit.js";
5
+ import { mount, tower, TOWER_X } from "./tower.js";
6
+ // tower 1 is the origin. Each row: x, z, wide, deep, turn in degrees, as measured
7
+ const TOWER_2 = [-333, -101];
8
+ const TOWER_TURN = 35;
9
+ const FARM = { x: -24, z: -116, wide: 314, deep: 78, turn: 13 };
10
+ const BUNKER = { x: -197, z: -195, wide: 51, deep: 20, turn: 12, tall: 4.1 };
11
+ const BAYS = [
12
+ { x: -3362, z: 1081, wide: 54, deep: 38, turn: 44 },
13
+ { x: -3390, z: 984, wide: 38, deep: 54, turn: 44 },
14
+ ];
15
+ const BAY_TALL = 100;
16
+ const FACTORY = { x: -3170, z: 931, wide: 293, deep: 327, turn: 44, tall: 16.3 };
17
+ const SANCHEZ = { x: -3586, z: 1368, wide: 523, deep: 345, turn: -46 };
18
+ const SIGN = [-3455, 1445];
19
+ const VILLAGE = [-2825, 516];
20
+ const HALL = [-2688, 364];
21
+ const HIGHWAY = [[-3799, 1822], [-3008, 1030], [-2855, 826], [-2546, 516], [-1863, 351], [-1233, 124], [-640, -104], [-333, -236], [-70, -186], [182, -127]];
22
+ const COAST_X = 430;
23
+ const BOOSTER_H = 72.3;
24
+ const SHIP_H = 52.1;
25
+ const R = 4.5;
26
+ /** The land from a coast to the west, the beach, and a little sea. Only what the span reaches. */
27
+ function ground(span) {
28
+ const land = Math.min(span.x1, COAST_X - 70);
29
+ const midZ = (span.z0 + span.z1) / 2;
30
+ const deep = span.z1 - span.z0;
31
+ const out = [slab("ground", (span.x0 + land) / 2, midZ, land - span.x0, deep, 0, -0.6, 0.02)];
32
+ if (span.x1 > land) {
33
+ const beach = Math.min(span.x1, COAST_X);
34
+ out.push(slab("sand", (land + beach) / 2, midZ, beach - land, deep, 0, -0.6, 0.02));
35
+ if (span.x1 > beach)
36
+ out.push(slab("water", (beach + span.x1) / 2, midZ, span.x1 - beach, deep, 0, -0.6, -0.1));
37
+ }
38
+ const inside = HIGHWAY.filter(([x, z]) => x >= span.x0 && x <= span.x1 && z >= span.z0 && z <= span.z1);
39
+ if (inside.length > 1)
40
+ out.push(...road("concrete", inside, 12, 0));
41
+ return out;
42
+ }
43
+ /** The tower and its mount as they stand at one place. */
44
+ const pad = (x, z) => moved([...tower(), ...mount()], x - TOWER_X * Math.cos((TOWER_TURN * Math.PI) / 180), z + TOWER_X * Math.sin((TOWER_TURN * Math.PI) / 180), TOWER_TURN);
45
+ function tankFarm() {
46
+ const out = [slab("concrete", FARM.x, FARM.z, FARM.wide, FARM.deep, FARM.turn, 0, 0.3)];
47
+ const tanks = 22;
48
+ for (let i = 0; i < tanks; i++) {
49
+ const along = -FARM.wide / 2 + 10 + ((FARM.wide - 20) * i) / (tanks - 1);
50
+ const a = (FARM.turn * Math.PI) / 180;
51
+ out.push(slab("white", FARM.x + along * Math.cos(a), FARM.z + along * Math.sin(a), 6, 48, FARM.turn, 0.3, 7.1));
52
+ }
53
+ out.push(slab("dark", BUNKER.x, BUNKER.z, BUNKER.wide, BUNKER.deep, BUNKER.turn, 0, BUNKER.tall));
54
+ return out;
55
+ }
56
+ /** A plain rocket at Block 3's sizes, standing at a place: booster, ship or both. */
57
+ function plainRocket(x, z, y, booster, ship) {
58
+ const at = [x, z];
59
+ const seg = { segs: 16, at };
60
+ const out = [];
61
+ if (booster)
62
+ out.push(tube("steel", R, y, y + BOOSTER_H, { ...seg, rings: [y + BOOSTER_H - 0.02] }));
63
+ const base = booster ? y + BOOSTER_H : y;
64
+ if (ship) {
65
+ out.push(tube("steel", R, base, base + SHIP_H - 17, seg));
66
+ out.push(nose("steel", R, base + SHIP_H - 17, base + SHIP_H, 1.05, seg));
67
+ for (const side of [1, -1])
68
+ out.push(slab("fin-dark", x + side * (R + 1.6), z, 3.2, 1, 0, base + 2, base + 12));
69
+ }
70
+ return out;
71
+ }
72
+ const onPad = () => plainRocket(TOWER_X * -Math.cos((TOWER_TURN * Math.PI) / 180), TOWER_X * Math.sin((TOWER_TURN * Math.PI) / 180), 21, true, true);
73
+ const megaBays = () => BAYS.map((bay) => slab("fin-dark", bay.x, bay.z, bay.wide, bay.deep, bay.turn, 0, BAY_TALL, false));
74
+ const starfactory = () => [slab("white", FACTORY.x, FACTORY.z, FACTORY.wide, FACTORY.deep, FACTORY.turn, 0, FACTORY.tall, false)];
75
+ function garden() {
76
+ const a = (SANCHEZ.turn * Math.PI) / 180;
77
+ const row = (along, across) => [SANCHEZ.x + along * Math.cos(a) - across * Math.sin(a), SANCHEZ.z + along * Math.sin(a) + across * Math.cos(a)];
78
+ const out = [slab("concrete", SANCHEZ.x, SANCHEZ.z, SANCHEZ.wide, SANCHEZ.deep, SANCHEZ.turn, 0, 0.3)];
79
+ [-90, -50, -10].forEach((along) => out.push(...plainRocket(...row(along, 40), 0.3, true, false)));
80
+ [30, 70, 110].forEach((along) => out.push(...plainRocket(...row(along, 40), 0.3, false, true)));
81
+ return out;
82
+ }
83
+ const sign = () => [slab("dark", SIGN[0], SIGN[1], 40, 2, -46, 0, 5, false)];
84
+ function village() {
85
+ const out = [];
86
+ for (let i = 0; i < 14; i++)
87
+ out.push(slab(i % 3 ? "white" : "concrete", VILLAGE[0] + 32 * (i % 7) - 90, VILLAGE[1] + 34 * Math.floor(i / 7) - 20, 14, 10, -40, 0, 6));
88
+ out.push(slab("concrete", HALL[0], HALL[1], 30, 20, -40, 0, 9));
89
+ return out;
90
+ }
91
+ const NONE = blank("No source read here gives it.");
92
+ const FROM = "This package's code: places, outlines and the heights the map tags from OpenStreetMap, under its licence, read 2026-11-02. A building is one plain box. Nothing announced, and no logo or lettering.";
93
+ const part = (slot, name, height, wide, pieces) => ({ slot, kind: "site", name, height, diameter: wide, place: { x: 0, z: 0 }, sourcedDiameter: NONE, pieces });
94
+ const LAUNCH = { x0: -620, x1: 640, z0: -420, z1: 200 };
95
+ const BUILD = { x0: -3900, x1: -2950, z0: 700, z1: 1700 };
96
+ const CITY = { x0: -3950, x1: 640, z0: -420, z1: 1800 };
97
+ const pads = () => part("pads", "Two towers and their mounts", 149.4, 360, () => [...pad(0, 0), ...pad(TOWER_2[0], TOWER_2[1])]);
98
+ const farm = () => part("tank-farm", "The tank farm", 7.1, FARM.wide, tankFarm);
99
+ const rocketThere = () => part("on-pad", "A plain rocket at Block 3's size, on the first pad", 145.4, R * 2, onPad);
100
+ const bays = () => part("mega-bays", "The Mega Bays", BAY_TALL, 200, megaBays);
101
+ const factoryPart = () => part("starfactory", "Starfactory, its outer outline", FACTORY.tall, FACTORY.deep, starfactory);
102
+ const gardenPart = () => part("garden", "The rocket garden on the Sanchez site", BOOSTER_H, SANCHEZ.wide, garden);
103
+ const signPart = () => part("sign", "A plain board at the sign's place", 5, 40, sign);
104
+ export const STARBASE_BUILDS = [
105
+ { rocket: "starbase", variant: "launch-site", drawnFrom: FROM, parts: [part("ground", "The ground, the beach and the road", 0.2, 1260, () => ground(LAUNCH)), pads(), farm(), rocketThere()] },
106
+ { rocket: "starbase", variant: "build-site", drawnFrom: FROM, parts: [part("ground", "The ground and the road", 0.2, 950, () => ground(BUILD)), bays(), factoryPart(), gardenPart(), signPart()] },
107
+ { rocket: "starbase", variant: "city", drawnFrom: FROM, parts: [part("ground", "The ground, the beach and the road", 0.2, 4590, () => ground(CITY)), pads(), farm(), rocketThere(), bays(), factoryPart(), gardenPart(), signPart(), part("village", "A few plain houses at the village", 9, 300, village)] },
108
+ ];
@@ -0,0 +1,6 @@
1
+ import { type Piece } from "./pieces.ts";
2
+ import type { StackBuild } from "./stacks.ts";
3
+ export declare const TOWER_X = -28;
4
+ export declare function tower(): Piece[];
5
+ export declare function mount(): Piece[];
6
+ export declare const TOWER_BUILDS: readonly StackBuild[];
@@ -0,0 +1,89 @@
1
+ // The tower's 13 m footprint in this file is © OpenStreetMap contributors, under the Open Database License (ODbL 1.0, https://www.openstreetmap.org/copyright), not MIT: see NOTICE.md.
2
+ // The integration tower from a table of numbers: its height, its lightning rod and its footprint are sourced; its nine sections are sourced, and their bracing, its arms and the mount are judged from photographs. Plain boxes, few enough that the scene with a whole Starship stays inside a code-made mesh's limit.
3
+ import { STARSHIP_DRAWS, boosterPieces, shipPieces } from "./starship.js";
4
+ import { blank } from "../data/types.js";
5
+ import { TOWER_HEIGHT } from "../data/tower.js";
6
+ import { deg } from "../framing.js";
7
+ import { strut } from "./pieces.js";
8
+ const ROD = 10 * 0.3048;
9
+ const SECTIONS = 9;
10
+ const HALF = 6.5;
11
+ export const TOWER_X = -28;
12
+ const MOUNT_TOP = 21;
13
+ const ARM_REACH = 32;
14
+ const ARM_FROM = TOWER_X + HALF + 1;
15
+ const SHIP_ARM_Y = 100;
16
+ const CATCH_Y = 125;
17
+ const CATCH_BOOSTER_Y = 58;
18
+ const OPEN_Z = 13;
19
+ const CLOSED_Z = 5;
20
+ const R = 4.5;
21
+ const beam = (material, a, b, width, depth = width) => strut(material, a, b, width, depth, { plain: true });
22
+ export function tower() {
23
+ const out = [];
24
+ const corners = [[HALF, HALF], [HALF, -HALF], [-HALF, -HALF], [-HALF, HALF]];
25
+ const step = TOWER_HEIGHT / SECTIONS;
26
+ for (const [x, z] of corners)
27
+ out.push(beam("fin-dark", [x, 0, z], [x, TOWER_HEIGHT, z], 1));
28
+ for (let s = 0; s <= SECTIONS; s++) {
29
+ const y = s * step;
30
+ for (let c = 0; c < 4; c++) {
31
+ const [x0, z0] = corners[c];
32
+ const [x1, z1] = corners[(c + 1) % 4];
33
+ out.push(beam("fin-dark", [x0, y, z0], [x1, y, z1], 0.6));
34
+ if (s < SECTIONS)
35
+ out.push(beam("fin", [x0, y, z0], [x1, y + step, z1], 0.34));
36
+ }
37
+ }
38
+ // the lightning rod, and the arm that fuels the Ship
39
+ out.push({ kind: "lathe", material: "engine-metal", segs: 8, profile: [[0.2, TOWER_HEIGHT], [0.06, TOWER_HEIGHT + ROD]] });
40
+ out.push(beam("dark", [HALF, SHIP_ARM_Y, HALF], [HALF + 15, SHIP_ARM_Y, 3], 1.1));
41
+ out.push(beam("dark", [HALF, SHIP_ARM_Y, -HALF], [HALF + 15, SHIP_ARM_Y, 3], 0.8));
42
+ return out;
43
+ }
44
+ export function mount() {
45
+ const table = (r, r0, y) => ({ kind: "lathe", material: "fin", segs: 48, body: true, profile: [[r, y], [r0, y]] });
46
+ const out = [
47
+ { kind: "lathe", material: "concrete", segs: 48, body: true, outline: true, profile: [[32, 0], [32, 0.5], [0.001, 0.5]] },
48
+ { kind: "lathe", material: "fin", segs: 48, body: true, outline: true, profile: [[14, MOUNT_TOP - 3], [14, MOUNT_TOP]], rings: [MOUNT_TOP - 3] },
49
+ { kind: "lathe", material: "fin", segs: 40, under: true, profile: [[6, MOUNT_TOP - 3], [14, MOUNT_TOP - 3]] },
50
+ { kind: "lathe", material: "soot", segs: 32, only: "mesh", profile: [[6, MOUNT_TOP], [6, MOUNT_TOP - 3]] },
51
+ table(14, 6, MOUNT_TOP),
52
+ // the steel plate that takes the blast, under the ring
53
+ { kind: "lathe", material: "engine-metal", segs: 32, body: true, profile: [[11, 2], [0.001, 2.6]] },
54
+ ];
55
+ for (let i = 0; i < 6; i++) {
56
+ const a = deg(30 + i * 60);
57
+ const at = (r, y) => [r * Math.sin(a), y, r * Math.cos(a)];
58
+ out.push(beam("dark", at(16, 0.5), at(11.5, MOUNT_TOP - 3), 2.2));
59
+ }
60
+ return out;
61
+ }
62
+ function arms(z) {
63
+ const end = ARM_FROM + ARM_REACH;
64
+ const out = [{ kind: "plate", material: "dark", frame: { o: [ARM_FROM - 1, 2, 0], u: [0, 1, 0], v: [0, 0, 1], w: [1, 0, 0] }, outline: [[-2, -(HALF + 1.2)], [2, -(HALF + 1.2)], [2, HALF + 1.2], [-2, HALF + 1.2]], thickness: 1.4, plain: false }];
65
+ for (const side of [1, -1]) {
66
+ const inner = [end, 2, side * z];
67
+ const root = [ARM_FROM, 2, side * HALF];
68
+ out.push(beam("dark", root, inner, 1.9, 1.7));
69
+ // the track on top, and its truss underneath
70
+ out.push(beam("engine-metal", [root[0] + 3, 3, root[2]], [end - 1, 3, side * z], 0.5, 0.3));
71
+ out.push(beam("fin-dark", [ARM_FROM, 0.2, side * HALF], [(ARM_FROM + end) / 2, 0.6, side * ((HALF + z) / 2)], 0.5));
72
+ }
73
+ return out;
74
+ }
75
+ const NONE = blank("No source read here gives it.");
76
+ const FROM = "This package's code. The tower's height and lightning rod are from the FAA's 2022 assessment, its nine sections from Wikipedia, its footprint from OpenStreetMap; its bracing, arms and mount are judged from photographs, which were looked at and not traced. No lettering or mark is drawn.";
77
+ const v3 = STARSHIP_DRAWS.v3;
78
+ const common = (armY, armZ) => [
79
+ { slot: "mount", kind: "mount", name: "Launch mount and pad", height: MOUNT_TOP, diameter: 64, place: { x: 0, z: 0 }, sourcedDiameter: NONE, pieces: mount },
80
+ { slot: "tower", kind: "tower", name: "Integration tower", height: TOWER_HEIGHT, diameter: HALF * 2, place: { x: TOWER_X, z: 0 }, sourcedDiameter: { value: 13, source: "openstreetmap", note: "The map's footprint of tower 1, 13 by 12 m." }, pieces: tower },
81
+ { slot: "arms", kind: "arms", name: armZ === CLOSED_Z ? "The arms, closed" : "The arms, open", height: 4, diameter: ARM_REACH, place: { x: 0, z: 0, y: armY }, sourcedDiameter: NONE, pieces: () => arms(armZ) },
82
+ ];
83
+ const booster = (y) => ({ slot: "booster", kind: "booster", name: "Super Heavy, Block 3 (V3)", height: v3.boosterHeight, diameter: v3.radius * 2, place: { x: 0, z: 0, y }, sourcedDiameter: { value: R * 2, source: "wikipedia-starship" }, pieces: () => boosterPieces(v3) });
84
+ const ship = (y) => ({ slot: "ship", kind: "ship", name: "Ship, Block 3 (V3)", height: v3.shipHeight, diameter: v3.radius * 2, place: { x: 0, z: 0, y }, sourcedDiameter: { value: R * 2, source: "wikipedia-starship" }, pieces: () => shipPieces(v3) });
85
+ export const TOWER_BUILDS = [
86
+ { rocket: "launch-tower", variant: "tower", drawnFrom: FROM, parts: common(CATCH_Y, OPEN_Z) },
87
+ { rocket: "launch-tower", variant: "stack", drawnFrom: FROM, parts: [...common(CATCH_Y, OPEN_Z), booster(MOUNT_TOP), ship(MOUNT_TOP + v3.boosterHeight)] },
88
+ { rocket: "launch-tower", variant: "catch", drawnFrom: FROM, parts: [...common(CATCH_Y, CLOSED_Z), booster(CATCH_BOOSTER_Y)] },
89
+ ];
package/dist/parts.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { CreditId } from "./data/credits.ts";
2
2
  import type { Figure } from "./data/types.ts";
3
- export type PartKind = "booster" | "first-stage" | "ship" | "second-stage" | "fairing" | "capsule" | "trunk" | "engine" | "fin" | "flap" | "ring" | "test-vehicle";
3
+ export type PartKind = "booster" | "first-stage" | "ship" | "second-stage" | "fairing" | "capsule" | "trunk" | "engine" | "fin" | "flap" | "ring" | "test-vehicle" | "third-stage" | "adapter" | "service-module" | "tower" | "tank" | "solid-booster" | "liquid-booster" | "orbiter" | "deck" | "mount" | "arms" | "site" | "spacecraft";
4
4
  /** Where a part mates. Every part's origin is the middle of its base on its axis, at its lowest point; Y is up and the windward side faces +Z, in metres. */
5
5
  export interface Joint {
6
6
  /** What this joint is, so only like meets like: "stage". */
@@ -29,10 +29,11 @@ export interface PartRecord {
29
29
  readonly top?: Joint;
30
30
  readonly bottom?: Joint;
31
31
  };
32
- /** It stands beside the part below it rather than on top, this far from the rocket's axis: a side booster. */
32
+ /** It is placed rather than stacked, this far from the rocket's axis and this far up (left out: on the ground): a side booster beside the core, or a booster standing on a deck. */
33
33
  strapOn?: {
34
34
  x: number;
35
35
  z: number;
36
+ y?: number;
36
37
  };
37
38
  /** The painted look's mesh, when a licensed model gives one: its file under assets/models/ and whose it is. Otherwise this package's own code paints it. `ownNozzle`: the model has none, so this package's own shows with it unless the part is nested in the stage below. */
38
39
  painted: {
package/dist/react.d.ts CHANGED
@@ -16,6 +16,10 @@ export interface UchusenRocketProps extends Omit<HTMLAttributes<HTMLElement>, "s
16
16
  spin?: string | number;
17
17
  way?: "cw" | "ccw";
18
18
  label?: string;
19
+ /** "on" lights the engines, and a reader who asked for reduced motion has them off. */
20
+ engines?: "on" | "off";
21
+ /** A phase of the rocket's flight, by its id. */
22
+ phase?: string;
19
23
  ref?: Ref<HTMLElement>;
20
24
  }
21
25
  export declare function UchusenRocket({ build, ...rest }: UchusenRocketProps): import("react").DOMElement<{
@@ -31,16 +35,24 @@ export declare function UchusenRocket({ build, ...rest }: UchusenRocketProps): i
31
35
  spin?: string | number;
32
36
  way?: "cw" | "ccw";
33
37
  label?: string;
38
+ /** "on" lights the engines, and a reader who asked for reduced motion has them off. */
39
+ engines?: "on" | "off";
40
+ /** A phase of the rocket's flight, by its id. */
41
+ phase?: string;
34
42
  ref?: Ref<HTMLElement>;
35
43
  part?: string | undefined | undefined;
36
44
  id?: string | undefined | undefined;
37
45
  slot?: string | undefined | undefined;
38
46
  children?: import("react").ReactNode;
39
47
  title?: string | undefined | undefined;
48
+ "aria-label"?: string | undefined | undefined;
49
+ "aria-live"?: "off" | "assertive" | "polite" | undefined | undefined;
50
+ about?: string | undefined | undefined;
51
+ "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
52
+ "aria-valuetext"?: string | undefined | undefined;
53
+ color?: string | undefined | undefined;
40
54
  role?: import("react").AriaRole | undefined;
41
55
  "aria-roledescription"?: string | undefined | undefined;
42
- color?: string | undefined | undefined;
43
- "aria-label"?: string | undefined | undefined;
44
56
  defaultChecked?: boolean | undefined | undefined;
45
57
  defaultValue?: string | number | readonly string[] | undefined;
46
58
  suppressContentEditableWarning?: boolean | undefined | undefined;
@@ -61,7 +73,6 @@ export declare function UchusenRocket({ build, ...rest }: UchusenRocketProps): i
61
73
  tabIndex?: number | undefined | undefined;
62
74
  translate?: "yes" | "no" | undefined | undefined;
63
75
  radioGroup?: string | undefined | undefined;
64
- about?: string | undefined | undefined;
65
76
  content?: string | undefined | undefined;
66
77
  datatype?: string | undefined | undefined;
67
78
  inlist?: any;
@@ -117,7 +128,6 @@ export declare function UchusenRocket({ build, ...rest }: UchusenRocketProps): i
117
128
  "aria-keyshortcuts"?: string | undefined | undefined;
118
129
  "aria-labelledby"?: string | undefined | undefined;
119
130
  "aria-level"?: number | undefined | undefined;
120
- "aria-live"?: "off" | "assertive" | "polite" | undefined | undefined;
121
131
  "aria-modal"?: (boolean | "true" | "false") | undefined;
122
132
  "aria-multiline"?: (boolean | "true" | "false") | undefined;
123
133
  "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
@@ -125,7 +135,6 @@ export declare function UchusenRocket({ build, ...rest }: UchusenRocketProps): i
125
135
  "aria-owns"?: string | undefined | undefined;
126
136
  "aria-placeholder"?: string | undefined | undefined;
127
137
  "aria-posinset"?: number | undefined | undefined;
128
- "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
129
138
  "aria-readonly"?: (boolean | "true" | "false") | undefined;
130
139
  "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined | undefined;
131
140
  "aria-required"?: (boolean | "true" | "false") | undefined;
@@ -139,7 +148,6 @@ export declare function UchusenRocket({ build, ...rest }: UchusenRocketProps): i
139
148
  "aria-valuemax"?: number | undefined | undefined;
140
149
  "aria-valuemin"?: number | undefined | undefined;
141
150
  "aria-valuenow"?: number | undefined | undefined;
142
- "aria-valuetext"?: string | undefined | undefined;
143
151
  dangerouslySetInnerHTML?: {
144
152
  __html: string | TrustedHTML;
145
153
  } | undefined | undefined;
package/dist/rockets.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { type MakerId } from "./data/makers.ts";
1
2
  import type { Figure, Variant } from "./data/types.ts";
2
3
  import type { SourceId } from "./data/sources.ts";
3
4
  export type RocketStatus = "built" | "planned";
@@ -7,6 +8,10 @@ export interface RocketEntry {
7
8
  status: RocketStatus;
8
9
  variants: readonly Variant[];
9
10
  defaultVariant: string;
11
+ /** Which group the demo lists it under. */
12
+ maker: MakerId;
13
+ /** Whose it is and who built it, as its source says, or a blank. */
14
+ madeBy: Figure<string>;
10
15
  }
11
16
  /** A rocket on the list with no mesh yet: its name and the sourced facts to build it from. */
12
17
  export interface PlannedRocket {
package/dist/rockets.js CHANGED
@@ -1,18 +1,55 @@
1
1
  // The catalogue: which rockets there are, their variants with sourced sizes, and which are still to be built. All data, all typed. Pure.
2
2
  import { DRAGON_VARIANTS } from "./data/dragon.js";
3
3
  import { FALCON_HEAVY_VARIANTS, FALCON_9_VARIANTS } from "./data/falcon.js";
4
+ import { FALCON_1_VARIANTS } from "./data/falcon1.js";
4
5
  import { GRASSHOPPER_VARIANTS } from "./data/grasshopper.js";
6
+ import { SATURN_V_VARIANTS } from "./data/saturn.js";
7
+ import { SHUTTLE_VARIANTS } from "./data/shuttle.js";
8
+ import { SLS_VARIANTS } from "./data/sls.js";
9
+ import { NEW_GLENN_VARIANTS } from "./data/newglenn.js";
10
+ import { ELECTRON_VARIANTS } from "./data/electron.js";
11
+ import { SOYUZ_VARIANTS } from "./data/soyuz.js";
12
+ import { DRONESHIP_VARIANTS, LANDING_ZONE_VARIANTS } from "./data/landing.js";
13
+ import { TOWER_VARIANTS } from "./data/tower.js";
14
+ import { STARBASE_VARIANTS } from "./data/starbase.js";
15
+ import { LUNAR_MODULE_VARIANTS } from "./data/lunarmodule.js";
16
+ import { APOLLO_SOYUZ_VARIANTS } from "./data/apollosoyuz.js";
17
+ import { GEMINI_VARIANTS } from "./data/gemini.js";
18
+ import { MERCURY_VARIANTS } from "./data/mercury.js";
19
+ import { JUPITER_C_VARIANTS } from "./data/jupiterc.js";
20
+ import { ISS_VARIANTS } from "./data/iss.js";
21
+ import { HUBBLE_VARIANTS } from "./data/hubble.js";
5
22
  import { STARSHIP_VARIANTS } from "./data/starship.js";
23
+ import { MADE_BY } from "./data/makers.js";
6
24
  export const ROCKETS = {
7
- starship: { id: "starship", name: "Starship", status: "built", variants: STARSHIP_VARIANTS, defaultVariant: "v3" },
8
- "falcon-9": { id: "falcon-9", name: "Falcon 9", status: "built", variants: FALCON_9_VARIANTS, defaultVariant: "block-5" },
9
- "falcon-heavy": { id: "falcon-heavy", name: "Falcon Heavy", status: "built", variants: FALCON_HEAVY_VARIANTS, defaultVariant: "falcon-heavy" },
10
- dragon: { id: "dragon", name: "Dragon", status: "built", variants: DRAGON_VARIANTS, defaultVariant: "dragon-2" },
11
- grasshopper: { id: "grasshopper", name: "Grasshopper", status: "built", variants: GRASSHOPPER_VARIANTS, defaultVariant: "grasshopper" },
25
+ starship: { id: "starship", name: "Starship", status: "built", ...MADE_BY["starship"], variants: STARSHIP_VARIANTS, defaultVariant: "v3" },
26
+ "falcon-9": { id: "falcon-9", name: "Falcon 9", status: "built", ...MADE_BY["falcon-9"], variants: FALCON_9_VARIANTS, defaultVariant: "block-5" },
27
+ "falcon-heavy": { id: "falcon-heavy", name: "Falcon Heavy", status: "built", ...MADE_BY["falcon-heavy"], variants: FALCON_HEAVY_VARIANTS, defaultVariant: "falcon-heavy" },
28
+ dragon: { id: "dragon", name: "Dragon", status: "built", ...MADE_BY["dragon"], variants: DRAGON_VARIANTS, defaultVariant: "dragon-2" },
29
+ grasshopper: { id: "grasshopper", name: "Grasshopper", status: "built", ...MADE_BY["grasshopper"], variants: GRASSHOPPER_VARIANTS, defaultVariant: "grasshopper" },
30
+ "falcon-1": { id: "falcon-1", name: "Falcon 1", status: "built", ...MADE_BY["falcon-1"], variants: FALCON_1_VARIANTS, defaultVariant: "falcon-1" },
31
+ "saturn-v": { id: "saturn-v", name: "Saturn V", status: "built", ...MADE_BY["saturn-v"], variants: SATURN_V_VARIANTS, defaultVariant: "saturn-v" },
32
+ "space-shuttle": { id: "space-shuttle", name: "Space Shuttle", status: "built", ...MADE_BY["space-shuttle"], variants: SHUTTLE_VARIANTS, defaultVariant: "stack" },
33
+ "sls": { id: "sls", name: "Space Launch System", status: "built", ...MADE_BY["sls"], variants: SLS_VARIANTS, defaultVariant: "block-1" },
34
+ "new-glenn": { id: "new-glenn", name: "New Glenn", status: "built", ...MADE_BY["new-glenn"], variants: NEW_GLENN_VARIANTS, defaultVariant: "7x2" },
35
+ "electron": { id: "electron", name: "Electron", status: "built", ...MADE_BY["electron"], variants: ELECTRON_VARIANTS, defaultVariant: "electron" },
36
+ "soyuz": { id: "soyuz", name: "Soyuz", status: "built", ...MADE_BY["soyuz"], variants: SOYUZ_VARIANTS, defaultVariant: "soyuz-2" },
37
+ "lunar-module": { id: "lunar-module", name: "Apollo lunar module", status: "built", ...MADE_BY["lunar-module"], variants: LUNAR_MODULE_VARIANTS, defaultVariant: "lunar-module" },
38
+ "apollo-soyuz": { id: "apollo-soyuz", name: "Apollo and Soyuz", status: "built", ...MADE_BY["apollo-soyuz"], variants: APOLLO_SOYUZ_VARIANTS, defaultVariant: "apollo-soyuz" },
39
+ "gemini": { id: "gemini", name: "Gemini", status: "built", ...MADE_BY["gemini"], variants: GEMINI_VARIANTS, defaultVariant: "gemini" },
40
+ "mercury": { id: "mercury", name: "Mercury", status: "built", ...MADE_BY["mercury"], variants: MERCURY_VARIANTS, defaultVariant: "friendship-7" },
41
+ "jupiter-c": { id: "jupiter-c", name: "Jupiter-C", status: "built", ...MADE_BY["jupiter-c"], variants: JUPITER_C_VARIANTS, defaultVariant: "jupiter-c" },
42
+ "iss": { id: "iss", name: "International Space Station", status: "built", ...MADE_BY["iss"], variants: ISS_VARIANTS, defaultVariant: "iss" },
43
+ "hubble": { id: "hubble", name: "Hubble Space Telescope", status: "built", ...MADE_BY["hubble"], variants: HUBBLE_VARIANTS, defaultVariant: "hubble" },
44
+ droneship: { id: "droneship", name: "Drone ships", status: "built", ...MADE_BY["droneship"], variants: DRONESHIP_VARIANTS, defaultVariant: "ocisly" },
45
+ "landing-zone": { id: "landing-zone", name: "Landing zones", status: "built", ...MADE_BY["landing-zone"], variants: LANDING_ZONE_VARIANTS, defaultVariant: "lz-1" },
46
+ "launch-tower": { id: "launch-tower", name: "Launch tower", status: "built", ...MADE_BY["launch-tower"], variants: TOWER_VARIANTS, defaultVariant: "stack" },
47
+ starbase: { id: "starbase", name: "Starbase", status: "built", ...MADE_BY["starbase"], variants: STARBASE_VARIANTS, defaultVariant: "launch-site" },
12
48
  };
13
- const fig = (value, source, note) => ({ value, source, ...(note ? { note } : {}) });
49
+ const fig = (value, source) => ({ value, source });
14
50
  export const PLANNED_ROCKETS = [
15
- { id: "falcon-1", name: "Falcon 1", status: "planned", height: fig(21, "wikipedia-falcon-1"), diameter: fig(1.7, "wikipedia-falcon-1"), firstFlight: { value: "2006-03-24", source: "wikipedia-falcon-1" }, source: "wikipedia-falcon-1" },
51
+ { id: "vulcan-centaur", name: "Vulcan Centaur", status: "planned", height: fig(61.6, "wikipedia-vulcan"), diameter: fig(5.4, "wikipedia-vulcan"), firstFlight: { value: "2024-01-08", source: "wikipedia-vulcan" }, source: "wikipedia-vulcan" },
52
+ { id: "ariane-6", name: "Ariane 6", status: "planned", height: fig(63, "wikipedia-ariane-6"), diameter: fig(5.4, "wikipedia-ariane-6"), firstFlight: { value: "2024-07-09", source: "wikipedia-ariane-6" }, source: "wikipedia-ariane-6" },
16
53
  ];
17
54
  export function variantOf(rocket, id) {
18
55
  const entry = Object.hasOwn(ROCKETS, rocket) ? ROCKETS[rocket] : undefined;
@@ -33,4 +70,38 @@ export const SLOT_NAMES = {
33
70
  "side-left": "Side booster, left",
34
71
  "side-right": "Side booster, right",
35
72
  vehicle: "Whole vehicle",
73
+ "third-stage": "Third stage",
74
+ adapter: "Adapter",
75
+ "service-module": "Service module",
76
+ "escape-tower": "Escape tower",
77
+ "external-tank": "External tank",
78
+ "srb-left": "Solid rocket booster, left",
79
+ "srb-right": "Solid rocket booster, right",
80
+ orbiter: "Orbiter",
81
+ "upper-stage": "Upper stage",
82
+ "descent": "Descent stage",
83
+ "ascent": "Ascent stage",
84
+ "csm": "Apollo command and service module",
85
+ "docking-module": "Docking module",
86
+ "station": "The station",
87
+ "telescope": "The telescope",
88
+ ground: "The ground and the road",
89
+ pads: "The pads",
90
+ "tank-farm": "The tank farm",
91
+ "on-pad": "On the pad",
92
+ "mega-bays": "The Mega Bays",
93
+ starfactory: "Starfactory",
94
+ garden: "The rocket garden",
95
+ sign: "The sign's place",
96
+ village: "The village",
97
+ tower: "Tower",
98
+ mount: "Mount",
99
+ arms: "Arms",
100
+ deck: "Deck and hull",
101
+ pad: "Pad",
102
+ landed: "Landed first stage",
103
+ "booster-1": "Booster 1",
104
+ "booster-2": "Booster 2",
105
+ "booster-3": "Booster 3",
106
+ "booster-4": "Booster 4",
36
107
  };
package/dist/spin.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ export type Way = "cw" | "ccw";
2
+ export interface Spin {
3
+ /** Seconds a turn, 0 for not at all. */
4
+ seconds: number;
5
+ way: Way;
6
+ }
7
+ export declare const DEFAULT_SPIN: Spin;
8
+ /** Anything but `ccw` is the default way. */
9
+ export declare const cleanWay: (value: unknown) => Way;
10
+ /** A spin from the `spin` and `way` attributes: a name, or seconds a turn. A nonsense value is the default, and a negative one is none. */
11
+ export declare function spinOf(spin: string | null, way: string | null): Spin;
package/dist/spin.js ADDED
@@ -0,0 +1,11 @@
1
+ // How a view turns by itself. `way` is which way round: `cw`, clockwise seen from above, takes the near side to the viewer's left, and `ccw` to the right. Pure.
2
+ const NAMED = { off: 0, slow: 180, medium: 67, fast: 20 };
3
+ export const DEFAULT_SPIN = { seconds: 180, way: "cw" };
4
+ /** Anything but `ccw` is the default way. */
5
+ export const cleanWay = (value) => (value === "ccw" ? "ccw" : "cw");
6
+ /** A spin from the `spin` and `way` attributes: a name, or seconds a turn. A nonsense value is the default, and a negative one is none. */
7
+ export function spinOf(spin, way) {
8
+ const raw = spin === null ? NaN : Object.hasOwn(NAMED, spin) ? NAMED[spin] : Number(spin);
9
+ const seconds = spin === null || spin.trim() === "" || !Number.isFinite(raw) ? DEFAULT_SPIN.seconds : Math.max(0, raw);
10
+ return { seconds, way: cleanWay(way) };
11
+ }
package/package.json CHANGED
@@ -1,28 +1,83 @@
1
1
  {
2
2
  "name": "@johnmorrisdotca/uchusen-rockets",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "description": "Uchusen Rockets 宇宙船: line drawings and 3D views of rockets, as a web component. Every variant with its own sourced sizes, a typed way to assemble a rocket from parts, stack and separate. No logos. three.js is a peer dependency.",
5
- "keywords": ["rocket", "rockets", "spaceship", "starship", "super-heavy", "falcon-9", "dragon", "spaceflight", "line-drawing", "svg", "3d", "3d-models", "glb", "gltf", "three", "threejs", "webgl", "web-component", "custom-element", "react", "typescript", "data"],
5
+ "keywords": [
6
+ "rocket",
7
+ "rockets",
8
+ "spaceship",
9
+ "starship",
10
+ "super-heavy",
11
+ "falcon-9",
12
+ "dragon",
13
+ "spaceflight",
14
+ "line-drawing",
15
+ "svg",
16
+ "3d",
17
+ "3d-models",
18
+ "glb",
19
+ "gltf",
20
+ "three",
21
+ "threejs",
22
+ "webgl",
23
+ "web-component",
24
+ "custom-element",
25
+ "react",
26
+ "typescript",
27
+ "data"
28
+ ],
6
29
  "homepage": "https://johnmorrisdotca.github.io/uchusen-rockets/",
7
- "repository": { "type": "git", "url": "git+https://github.com/johnmorrisdotca/uchusen-rockets.git" },
8
- "bugs": { "url": "https://github.com/johnmorrisdotca/uchusen-rockets/issues" },
30
+ "repository": {
31
+ "type": "git",
32
+ "url": "git+https://github.com/johnmorrisdotca/uchusen-rockets.git"
33
+ },
34
+ "bugs": {
35
+ "url": "https://github.com/johnmorrisdotca/uchusen-rockets/issues"
36
+ },
9
37
  "author": "John Morris",
10
- "license": "MIT AND CC-BY-4.0",
38
+ "license": "MIT AND CC-BY-4.0 AND ODbL-1.0",
11
39
  "type": "module",
12
- "sideEffects": ["./dist/element.js"],
40
+ "sideEffects": [
41
+ "./dist/element.js"
42
+ ],
13
43
  "main": "./dist/index.js",
14
44
  "module": "./dist/index.js",
15
45
  "types": "./dist/index.d.ts",
16
46
  "exports": {
17
- ".": { "types": "./dist/index.d.ts", "import": "./dist/index.js", "default": "./dist/index.js" },
18
- "./build": { "types": "./dist/build/index.d.ts", "import": "./dist/build/index.js", "default": "./dist/build/index.js" },
19
- "./element": { "types": "./dist/element.d.ts", "import": "./dist/element.js", "default": "./dist/element.js" },
20
- "./react": { "types": "./dist/react.d.ts", "import": "./dist/react.js", "default": "./dist/react.js" },
47
+ ".": {
48
+ "types": "./dist/index.d.ts",
49
+ "import": "./dist/index.js",
50
+ "default": "./dist/index.js"
51
+ },
52
+ "./build": {
53
+ "types": "./dist/build/index.d.ts",
54
+ "import": "./dist/build/index.js",
55
+ "default": "./dist/build/index.js"
56
+ },
57
+ "./element": {
58
+ "types": "./dist/element.d.ts",
59
+ "import": "./dist/element.js",
60
+ "default": "./dist/element.js"
61
+ },
62
+ "./react": {
63
+ "types": "./dist/react.d.ts",
64
+ "import": "./dist/react.js",
65
+ "default": "./dist/react.js"
66
+ },
21
67
  "./assets/*": "./dist/assets/*",
22
68
  "./package.json": "./package.json"
23
69
  },
24
- "files": ["dist", "README.md", "LICENSE", "LICENSES", "NOTICE.md", "CHANGELOG.md"],
25
- "engines": { "node": ">=22" },
70
+ "files": [
71
+ "dist",
72
+ "README.md",
73
+ "LICENSE",
74
+ "LICENSES",
75
+ "NOTICE.md",
76
+ "CHANGELOG.md"
77
+ ],
78
+ "engines": {
79
+ "node": ">=22"
80
+ },
26
81
  "scripts": {
27
82
  "build": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.json && node scripts/make-assets.ts",
28
83
  "assets": "node scripts/make-assets.ts",
@@ -37,22 +92,36 @@
37
92
  "site": "pnpm build && node scripts/site.ts",
38
93
  "dev": "pnpm site && node scripts/dev.ts",
39
94
  "test:demo": "pnpm site && playwright test",
95
+ "test:freeze": "pnpm site && playwright test e2e/freeze.demo.ts --project=chromium-desk",
40
96
  "screenshots": "pnpm site && node scripts/screenshots.ts",
41
- "models": "node scripts/reduce-models.ts"
97
+ "models": "node scripts/reduce-models.ts",
98
+ "models:nasa": "node scripts/reduce-nasa.ts"
99
+ },
100
+ "peerDependencies": {
101
+ "react": ">=18",
102
+ "three": ">=0.170.0"
103
+ },
104
+ "peerDependenciesMeta": {
105
+ "react": {
106
+ "optional": true
107
+ },
108
+ "three": {
109
+ "optional": true
110
+ }
42
111
  },
43
- "peerDependencies": { "react": ">=18", "three": ">=0.170.0" },
44
- "peerDependenciesMeta": { "react": { "optional": true }, "three": { "optional": true } },
45
112
  "devDependencies": {
46
113
  "@eslint/js": "9.39.5",
47
114
  "@gltf-transform/core": "4.5.1",
48
115
  "@gltf-transform/extensions": "4.5.1",
49
116
  "@gltf-transform/functions": "4.5.1",
50
- "@johnmorrisdotca/kazoku-ui": "0.2.1",
117
+ "@johnmorrisdotca/chikyu-earth": "0.5.0",
118
+ "@johnmorrisdotca/kazoku-ui": "^0.10.0",
51
119
  "@playwright/test": "1.64.0",
52
120
  "@types/node": "24.10.1",
53
121
  "@types/react": "19.2.7",
54
122
  "@types/react-dom": "19.2.3",
55
123
  "@types/three": "0.186.0",
124
+ "draco3dgltf": "1.5.7",
56
125
  "esbuild": "0.25.12",
57
126
  "eslint": "9.39.5",
58
127
  "meshoptimizer": "1.3.0",
@@ -62,7 +131,13 @@
62
131
  "typescript": "5.9.3",
63
132
  "typescript-eslint": "8.72.1"
64
133
  },
65
- "publishConfig": { "access": "public" },
134
+ "publishConfig": {
135
+ "access": "public"
136
+ },
66
137
  "packageManager": "pnpm@10.11.0",
67
- "pnpm": { "onlyBuiltDependencies": ["esbuild"] }
138
+ "pnpm": {
139
+ "onlyBuiltDependencies": [
140
+ "esbuild"
141
+ ]
142
+ }
68
143
  }