@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.
- package/CHANGELOG.md +44 -0
- package/LICENSES/ODbL-1.0.txt +540 -0
- package/NOTICE.md +56 -6
- package/README.md +49 -14
- package/dist/assets/apollo-soyuz-apollo-soyuz-apart.painted.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-apart.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-apart.thick.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-csm.glb +0 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-csm.painted.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-csm.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-csm.thick.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.glb +0 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.painted.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.thick.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.glb +0 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.painted.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.thick.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz.glb +0 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz.painted.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz.thick.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-apart.painted.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-apart.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-apart.thick.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-capsule.glb +0 -0
- package/dist/assets/dragon-cargo-dragon-2-capsule.painted.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-capsule.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-capsule.thick.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-trunk.glb +0 -0
- package/dist/assets/dragon-cargo-dragon-2-trunk.painted.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-trunk.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-trunk.thick.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2.glb +0 -0
- package/dist/assets/dragon-cargo-dragon-2.painted.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2.thick.svg +1 -0
- package/dist/assets/dragon-crew-dragon-inside.glb +0 -0
- package/dist/assets/dragon-crew-dragon-inside.painted.svg +1 -0
- package/dist/assets/dragon-crew-dragon-inside.svg +1 -0
- package/dist/assets/dragon-crew-dragon-inside.thick.svg +1 -0
- package/dist/assets/dragon-dragon-1-apart.painted.svg +1 -1
- package/dist/assets/dragon-dragon-1-apart.svg +1 -1
- package/dist/assets/dragon-dragon-1-apart.thick.svg +1 -1
- package/dist/assets/dragon-dragon-1-capsule.painted.svg +1 -1
- package/dist/assets/dragon-dragon-1-capsule.svg +1 -1
- package/dist/assets/dragon-dragon-1-capsule.thick.svg +1 -1
- package/dist/assets/dragon-dragon-1-trunk.painted.svg +1 -1
- package/dist/assets/dragon-dragon-1-trunk.svg +1 -1
- package/dist/assets/dragon-dragon-1-trunk.thick.svg +1 -1
- package/dist/assets/dragon-dragon-1.painted.svg +1 -1
- package/dist/assets/dragon-dragon-1.svg +1 -1
- package/dist/assets/dragon-dragon-1.thick.svg +1 -1
- package/dist/assets/dragon-dragon-2-apart.painted.svg +1 -1
- package/dist/assets/dragon-dragon-2-apart.svg +1 -1
- package/dist/assets/dragon-dragon-2-apart.thick.svg +1 -1
- package/dist/assets/dragon-dragon-2-capsule.painted.svg +1 -1
- package/dist/assets/dragon-dragon-2-capsule.svg +1 -1
- package/dist/assets/dragon-dragon-2-capsule.thick.svg +1 -1
- package/dist/assets/dragon-dragon-2-trunk.painted.svg +1 -1
- package/dist/assets/dragon-dragon-2-trunk.svg +1 -1
- package/dist/assets/dragon-dragon-2-trunk.thick.svg +1 -1
- package/dist/assets/dragon-dragon-2.painted.svg +1 -1
- package/dist/assets/dragon-dragon-2.svg +1 -1
- package/dist/assets/dragon-dragon-2.thick.svg +1 -1
- package/dist/assets/droneship-asog-apart.painted.svg +1 -0
- package/dist/assets/droneship-asog-apart.svg +1 -0
- package/dist/assets/droneship-asog-apart.thick.svg +1 -0
- package/dist/assets/droneship-asog-deck.glb +0 -0
- package/dist/assets/droneship-asog-deck.painted.svg +1 -0
- package/dist/assets/droneship-asog-deck.svg +1 -0
- package/dist/assets/droneship-asog-deck.thick.svg +1 -0
- package/dist/assets/droneship-asog-landed.glb +0 -0
- package/dist/assets/droneship-asog-landed.painted.svg +1 -0
- package/dist/assets/droneship-asog-landed.svg +1 -0
- package/dist/assets/droneship-asog-landed.thick.svg +1 -0
- package/dist/assets/droneship-asog.glb +0 -0
- package/dist/assets/droneship-asog.painted.svg +1 -0
- package/dist/assets/droneship-asog.svg +1 -0
- package/dist/assets/droneship-asog.thick.svg +1 -0
- package/dist/assets/droneship-jrti-apart.painted.svg +1 -0
- package/dist/assets/droneship-jrti-apart.svg +1 -0
- package/dist/assets/droneship-jrti-apart.thick.svg +1 -0
- package/dist/assets/droneship-jrti-deck.glb +0 -0
- package/dist/assets/droneship-jrti-deck.painted.svg +1 -0
- package/dist/assets/droneship-jrti-deck.svg +1 -0
- package/dist/assets/droneship-jrti-deck.thick.svg +1 -0
- package/dist/assets/droneship-jrti-landed.glb +0 -0
- package/dist/assets/droneship-jrti-landed.painted.svg +1 -0
- package/dist/assets/droneship-jrti-landed.svg +1 -0
- package/dist/assets/droneship-jrti-landed.thick.svg +1 -0
- package/dist/assets/droneship-jrti.glb +0 -0
- package/dist/assets/droneship-jrti.painted.svg +1 -0
- package/dist/assets/droneship-jrti.svg +1 -0
- package/dist/assets/droneship-jrti.thick.svg +1 -0
- package/dist/assets/droneship-ocisly-apart.painted.svg +1 -0
- package/dist/assets/droneship-ocisly-apart.svg +1 -0
- package/dist/assets/droneship-ocisly-apart.thick.svg +1 -0
- package/dist/assets/droneship-ocisly-deck.glb +0 -0
- package/dist/assets/droneship-ocisly-deck.painted.svg +1 -0
- package/dist/assets/droneship-ocisly-deck.svg +1 -0
- package/dist/assets/droneship-ocisly-deck.thick.svg +1 -0
- package/dist/assets/droneship-ocisly-landed.glb +0 -0
- package/dist/assets/droneship-ocisly-landed.painted.svg +1 -0
- package/dist/assets/droneship-ocisly-landed.svg +1 -0
- package/dist/assets/droneship-ocisly-landed.thick.svg +1 -0
- package/dist/assets/droneship-ocisly.glb +0 -0
- package/dist/assets/droneship-ocisly.painted.svg +1 -0
- package/dist/assets/droneship-ocisly.svg +1 -0
- package/dist/assets/droneship-ocisly.thick.svg +1 -0
- package/dist/assets/electron-electron-adapter.glb +0 -0
- package/dist/assets/electron-electron-adapter.painted.svg +1 -0
- package/dist/assets/electron-electron-adapter.svg +1 -0
- package/dist/assets/electron-electron-adapter.thick.svg +1 -0
- package/dist/assets/electron-electron-apart.painted.svg +1 -0
- package/dist/assets/electron-electron-apart.svg +1 -0
- package/dist/assets/electron-electron-apart.thick.svg +1 -0
- package/dist/assets/electron-electron-fairing.glb +0 -0
- package/dist/assets/electron-electron-fairing.painted.svg +1 -0
- package/dist/assets/electron-electron-fairing.svg +1 -0
- package/dist/assets/electron-electron-fairing.thick.svg +1 -0
- package/dist/assets/electron-electron-first-stage.glb +0 -0
- package/dist/assets/electron-electron-first-stage.painted.svg +1 -0
- package/dist/assets/electron-electron-first-stage.svg +1 -0
- package/dist/assets/electron-electron-first-stage.thick.svg +1 -0
- package/dist/assets/electron-electron-second-stage.glb +0 -0
- package/dist/assets/electron-electron-second-stage.painted.svg +1 -0
- package/dist/assets/electron-electron-second-stage.svg +1 -0
- package/dist/assets/electron-electron-second-stage.thick.svg +1 -0
- package/dist/assets/electron-electron.glb +0 -0
- package/dist/assets/electron-electron.painted.svg +1 -0
- package/dist/assets/electron-electron.svg +1 -0
- package/dist/assets/electron-electron.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-apart.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-apart.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-apart.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-fairing.glb +0 -0
- package/dist/assets/falcon-1-falcon-1-fairing.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-fairing.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-fairing.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-first-stage.glb +0 -0
- package/dist/assets/falcon-1-falcon-1-first-stage.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-first-stage.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-first-stage.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-second-stage.glb +0 -0
- package/dist/assets/falcon-1-falcon-1-second-stage.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-second-stage.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-second-stage.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1.glb +0 -0
- package/dist/assets/falcon-1-falcon-1.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1.svg +1 -0
- package/dist/assets/falcon-1-falcon-1.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-apart.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-apart.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-apart.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-fairing.glb +0 -0
- package/dist/assets/falcon-1-falcon-1e-fairing.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-fairing.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-fairing.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-first-stage.glb +0 -0
- package/dist/assets/falcon-1-falcon-1e-first-stage.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-first-stage.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-first-stage.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-second-stage.glb +0 -0
- package/dist/assets/falcon-1-falcon-1e-second-stage.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-second-stage.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-second-stage.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e.glb +0 -0
- package/dist/assets/falcon-1-falcon-1e.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e.thick.svg +1 -0
- package/dist/assets/falcon-9-block-5-apart.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-apart.svg +1 -1
- package/dist/assets/falcon-9-block-5-apart.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-apart.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-apart.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-apart.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-capsule.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-capsule.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-capsule.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-first-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-first-stage.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-first-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-second-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-second-stage.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-second-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-trunk.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-trunk.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-trunk.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-fairing.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-fairing.svg +1 -1
- package/dist/assets/falcon-9-block-5-fairing.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-first-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-first-stage.svg +1 -1
- package/dist/assets/falcon-9-block-5-first-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-second-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-second-stage.svg +1 -1
- package/dist/assets/falcon-9-block-5-second-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5.svg +1 -1
- package/dist/assets/falcon-9-block-5.thick.svg +1 -1
- package/dist/assets/falcon-9-ft-apart.painted.svg +1 -1
- package/dist/assets/falcon-9-ft-apart.svg +1 -1
- package/dist/assets/falcon-9-ft-apart.thick.svg +1 -1
- package/dist/assets/falcon-9-ft-fairing.painted.svg +1 -1
- package/dist/assets/falcon-9-ft-fairing.svg +1 -1
- package/dist/assets/falcon-9-ft-fairing.thick.svg +1 -1
- package/dist/assets/falcon-9-ft-first-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-ft-first-stage.svg +1 -1
- package/dist/assets/falcon-9-ft-first-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-ft-second-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-ft-second-stage.svg +1 -1
- package/dist/assets/falcon-9-ft-second-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-ft.painted.svg +1 -1
- package/dist/assets/falcon-9-ft.svg +1 -1
- package/dist/assets/falcon-9-ft.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.0-apart.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.0-apart.svg +1 -1
- package/dist/assets/falcon-9-v1.0-apart.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.0-fairing.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.0-fairing.svg +1 -1
- package/dist/assets/falcon-9-v1.0-fairing.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.0-first-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.0-first-stage.svg +1 -1
- package/dist/assets/falcon-9-v1.0-first-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.0-second-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.0-second-stage.svg +1 -1
- package/dist/assets/falcon-9-v1.0-second-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.0.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.0.svg +1 -1
- package/dist/assets/falcon-9-v1.0.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.1-apart.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.1-apart.svg +1 -1
- package/dist/assets/falcon-9-v1.1-apart.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.1-fairing.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.1-fairing.svg +1 -1
- package/dist/assets/falcon-9-v1.1-fairing.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.1-first-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.1-first-stage.svg +1 -1
- package/dist/assets/falcon-9-v1.1-first-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.1-second-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.1-second-stage.svg +1 -1
- package/dist/assets/falcon-9-v1.1-second-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.1.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.1.svg +1 -1
- package/dist/assets/falcon-9-v1.1.thick.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-apart.painted.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-apart.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-apart.thick.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-centre.painted.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-centre.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-centre.thick.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-side-left.painted.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-side-left.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-side-left.thick.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-side-right.painted.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-side-right.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-side-right.thick.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy.painted.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy.thick.svg +1 -1
- package/dist/assets/gemini-gemini-adapter.glb +0 -0
- package/dist/assets/gemini-gemini-adapter.painted.svg +1 -0
- package/dist/assets/gemini-gemini-adapter.svg +1 -0
- package/dist/assets/gemini-gemini-adapter.thick.svg +1 -0
- package/dist/assets/gemini-gemini-apart.painted.svg +1 -0
- package/dist/assets/gemini-gemini-apart.svg +1 -0
- package/dist/assets/gemini-gemini-apart.thick.svg +1 -0
- package/dist/assets/gemini-gemini-capsule.glb +0 -0
- package/dist/assets/gemini-gemini-capsule.painted.svg +1 -0
- package/dist/assets/gemini-gemini-capsule.svg +1 -0
- package/dist/assets/gemini-gemini-capsule.thick.svg +1 -0
- package/dist/assets/gemini-gemini.glb +0 -0
- package/dist/assets/gemini-gemini.painted.svg +1 -0
- package/dist/assets/gemini-gemini.svg +1 -0
- package/dist/assets/gemini-gemini.thick.svg +1 -0
- package/dist/assets/grasshopper-grasshopper.painted.svg +1 -1
- package/dist/assets/grasshopper-grasshopper.svg +1 -1
- package/dist/assets/grasshopper-grasshopper.thick.svg +1 -1
- package/dist/assets/hubble-hubble.glb +0 -0
- package/dist/assets/hubble-hubble.painted.svg +1 -0
- package/dist/assets/hubble-hubble.svg +1 -0
- package/dist/assets/hubble-hubble.thick.svg +1 -0
- package/dist/assets/iss-iss.glb +0 -0
- package/dist/assets/iss-iss.painted.svg +1 -0
- package/dist/assets/iss-iss.svg +1 -0
- package/dist/assets/iss-iss.thick.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c.glb +0 -0
- package/dist/assets/jupiter-c-jupiter-c.painted.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-1-apart.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-1-apart.svg +1 -0
- package/dist/assets/landing-zone-lz-1-apart.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-1-landed.glb +0 -0
- package/dist/assets/landing-zone-lz-1-landed.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-1-landed.svg +1 -0
- package/dist/assets/landing-zone-lz-1-landed.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-1-pad.glb +0 -0
- package/dist/assets/landing-zone-lz-1-pad.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-1-pad.svg +1 -0
- package/dist/assets/landing-zone-lz-1-pad.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-1.glb +0 -0
- package/dist/assets/landing-zone-lz-1.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-1.svg +1 -0
- package/dist/assets/landing-zone-lz-1.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-4-apart.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-4-apart.svg +1 -0
- package/dist/assets/landing-zone-lz-4-apart.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-4-landed.glb +0 -0
- package/dist/assets/landing-zone-lz-4-landed.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-4-landed.svg +1 -0
- package/dist/assets/landing-zone-lz-4-landed.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-4-pad.glb +0 -0
- package/dist/assets/landing-zone-lz-4-pad.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-4-pad.svg +1 -0
- package/dist/assets/landing-zone-lz-4-pad.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-4.glb +0 -0
- package/dist/assets/landing-zone-lz-4.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-4.svg +1 -0
- package/dist/assets/landing-zone-lz-4.thick.svg +1 -0
- package/dist/assets/launch-tower-catch-apart.painted.svg +1 -0
- package/dist/assets/launch-tower-catch-apart.svg +1 -0
- package/dist/assets/launch-tower-catch-apart.thick.svg +1 -0
- package/dist/assets/launch-tower-catch-arms.glb +0 -0
- package/dist/assets/launch-tower-catch-arms.painted.svg +1 -0
- package/dist/assets/launch-tower-catch-arms.svg +1 -0
- package/dist/assets/launch-tower-catch-arms.thick.svg +1 -0
- package/dist/assets/launch-tower-catch-booster.glb +0 -0
- package/dist/assets/launch-tower-catch-booster.painted.svg +1 -0
- package/dist/assets/launch-tower-catch-booster.svg +1 -0
- package/dist/assets/launch-tower-catch-booster.thick.svg +1 -0
- package/dist/assets/launch-tower-catch-mount.glb +0 -0
- package/dist/assets/launch-tower-catch-mount.painted.svg +1 -0
- package/dist/assets/launch-tower-catch-mount.svg +1 -0
- package/dist/assets/launch-tower-catch-mount.thick.svg +1 -0
- package/dist/assets/launch-tower-catch-tower.glb +0 -0
- package/dist/assets/launch-tower-catch-tower.painted.svg +1 -0
- package/dist/assets/launch-tower-catch-tower.svg +1 -0
- package/dist/assets/launch-tower-catch-tower.thick.svg +1 -0
- package/dist/assets/launch-tower-catch.glb +0 -0
- package/dist/assets/launch-tower-catch.painted.svg +1 -0
- package/dist/assets/launch-tower-catch.svg +1 -0
- package/dist/assets/launch-tower-catch.thick.svg +1 -0
- package/dist/assets/launch-tower-stack-apart.painted.svg +1 -0
- package/dist/assets/launch-tower-stack-apart.svg +1 -0
- package/dist/assets/launch-tower-stack-apart.thick.svg +1 -0
- package/dist/assets/launch-tower-stack-arms.glb +0 -0
- package/dist/assets/launch-tower-stack-arms.painted.svg +1 -0
- package/dist/assets/launch-tower-stack-arms.svg +1 -0
- package/dist/assets/launch-tower-stack-arms.thick.svg +1 -0
- package/dist/assets/launch-tower-stack-booster.glb +0 -0
- package/dist/assets/launch-tower-stack-booster.painted.svg +1 -0
- package/dist/assets/launch-tower-stack-booster.svg +1 -0
- package/dist/assets/launch-tower-stack-booster.thick.svg +1 -0
- package/dist/assets/launch-tower-stack-mount.glb +0 -0
- package/dist/assets/launch-tower-stack-mount.painted.svg +1 -0
- package/dist/assets/launch-tower-stack-mount.svg +1 -0
- package/dist/assets/launch-tower-stack-mount.thick.svg +1 -0
- package/dist/assets/launch-tower-stack-ship.glb +0 -0
- package/dist/assets/launch-tower-stack-ship.painted.svg +1 -0
- package/dist/assets/launch-tower-stack-ship.svg +1 -0
- package/dist/assets/launch-tower-stack-ship.thick.svg +1 -0
- package/dist/assets/launch-tower-stack-tower.glb +0 -0
- package/dist/assets/launch-tower-stack-tower.painted.svg +1 -0
- package/dist/assets/launch-tower-stack-tower.svg +1 -0
- package/dist/assets/launch-tower-stack-tower.thick.svg +1 -0
- package/dist/assets/launch-tower-stack.glb +0 -0
- package/dist/assets/launch-tower-stack.painted.svg +1 -0
- package/dist/assets/launch-tower-stack.svg +1 -0
- package/dist/assets/launch-tower-stack.thick.svg +1 -0
- package/dist/assets/launch-tower-tower-apart.painted.svg +1 -0
- package/dist/assets/launch-tower-tower-apart.svg +1 -0
- package/dist/assets/launch-tower-tower-apart.thick.svg +1 -0
- package/dist/assets/launch-tower-tower-arms.glb +0 -0
- package/dist/assets/launch-tower-tower-arms.painted.svg +1 -0
- package/dist/assets/launch-tower-tower-arms.svg +1 -0
- package/dist/assets/launch-tower-tower-arms.thick.svg +1 -0
- package/dist/assets/launch-tower-tower-mount.glb +0 -0
- package/dist/assets/launch-tower-tower-mount.painted.svg +1 -0
- package/dist/assets/launch-tower-tower-mount.svg +1 -0
- package/dist/assets/launch-tower-tower-mount.thick.svg +1 -0
- package/dist/assets/launch-tower-tower-tower.glb +0 -0
- package/dist/assets/launch-tower-tower-tower.painted.svg +1 -0
- package/dist/assets/launch-tower-tower-tower.svg +1 -0
- package/dist/assets/launch-tower-tower-tower.thick.svg +1 -0
- package/dist/assets/launch-tower-tower.glb +0 -0
- package/dist/assets/launch-tower-tower.painted.svg +1 -0
- package/dist/assets/launch-tower-tower.svg +1 -0
- package/dist/assets/launch-tower-tower.thick.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-apart.painted.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-apart.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-apart.thick.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-ascent.glb +0 -0
- package/dist/assets/lunar-module-lunar-module-ascent.painted.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-ascent.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-ascent.thick.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-descent.glb +0 -0
- package/dist/assets/lunar-module-lunar-module-descent.painted.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-descent.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-descent.thick.svg +1 -0
- package/dist/assets/lunar-module-lunar-module.glb +0 -0
- package/dist/assets/lunar-module-lunar-module.painted.svg +1 -0
- package/dist/assets/lunar-module-lunar-module.svg +1 -0
- package/dist/assets/lunar-module-lunar-module.thick.svg +1 -0
- package/dist/assets/mercury-friendship-7.glb +0 -0
- package/dist/assets/mercury-friendship-7.painted.svg +1 -0
- package/dist/assets/mercury-friendship-7.svg +1 -0
- package/dist/assets/mercury-friendship-7.thick.svg +1 -0
- package/dist/assets/models/apollo-soyuz-csm.glb +0 -0
- package/dist/assets/models/apollo-soyuz-docking-module.glb +0 -0
- package/dist/assets/models/apollo-soyuz-soyuz.glb +0 -0
- package/dist/assets/models/gemini-adapter.glb +0 -0
- package/dist/assets/models/gemini-capsule.glb +0 -0
- package/dist/assets/models/hubble-telescope.glb +0 -0
- package/dist/assets/models/iss-station.glb +0 -0
- package/dist/assets/models/jupiter-c-vehicle.glb +0 -0
- package/dist/assets/models/lunar-module-ascent.glb +0 -0
- package/dist/assets/models/lunar-module-descent.glb +0 -0
- package/dist/assets/models/mercury-capsule.glb +0 -0
- package/dist/assets/models/space-shuttle-discovery-orbiter.glb +0 -0
- package/dist/assets/models/space-shuttle-stack-external-tank.glb +0 -0
- package/dist/assets/models/space-shuttle-stack-orbiter.glb +0 -0
- package/dist/assets/models/space-shuttle-stack-srb.glb +0 -0
- package/dist/assets/new-glenn-7x2-apart.painted.svg +1 -0
- package/dist/assets/new-glenn-7x2-apart.svg +1 -0
- package/dist/assets/new-glenn-7x2-apart.thick.svg +1 -0
- package/dist/assets/new-glenn-7x2-fairing.glb +0 -0
- package/dist/assets/new-glenn-7x2-fairing.painted.svg +1 -0
- package/dist/assets/new-glenn-7x2-fairing.svg +1 -0
- package/dist/assets/new-glenn-7x2-fairing.thick.svg +1 -0
- package/dist/assets/new-glenn-7x2-first-stage.glb +0 -0
- package/dist/assets/new-glenn-7x2-first-stage.painted.svg +1 -0
- package/dist/assets/new-glenn-7x2-first-stage.svg +1 -0
- package/dist/assets/new-glenn-7x2-first-stage.thick.svg +1 -0
- package/dist/assets/new-glenn-7x2-second-stage.glb +0 -0
- package/dist/assets/new-glenn-7x2-second-stage.painted.svg +1 -0
- package/dist/assets/new-glenn-7x2-second-stage.svg +1 -0
- package/dist/assets/new-glenn-7x2-second-stage.thick.svg +1 -0
- package/dist/assets/new-glenn-7x2.glb +0 -0
- package/dist/assets/new-glenn-7x2.painted.svg +1 -0
- package/dist/assets/new-glenn-7x2.svg +1 -0
- package/dist/assets/new-glenn-7x2.thick.svg +1 -0
- package/dist/assets/parts/flap-aft.painted.svg +1 -1
- package/dist/assets/parts/flap-aft.svg +1 -1
- package/dist/assets/parts/flap-aft.thick.svg +1 -1
- package/dist/assets/parts/flap-forward.painted.svg +1 -1
- package/dist/assets/parts/flap-forward.svg +1 -1
- package/dist/assets/parts/flap-forward.thick.svg +1 -1
- package/dist/assets/parts/grid-fin-four.painted.svg +1 -1
- package/dist/assets/parts/grid-fin-four.svg +1 -1
- package/dist/assets/parts/grid-fin-four.thick.svg +1 -1
- package/dist/assets/parts/grid-fin-three.painted.svg +1 -1
- package/dist/assets/parts/grid-fin-three.svg +1 -1
- package/dist/assets/parts/grid-fin-three.thick.svg +1 -1
- package/dist/assets/parts/merlin-sea-level.painted.svg +1 -1
- package/dist/assets/parts/merlin-sea-level.svg +1 -1
- package/dist/assets/parts/merlin-sea-level.thick.svg +1 -1
- package/dist/assets/parts/raptor-sea-level.painted.svg +1 -1
- package/dist/assets/parts/raptor-sea-level.svg +1 -1
- package/dist/assets/parts/raptor-sea-level.thick.svg +1 -1
- package/dist/assets/parts/raptor-vacuum.painted.svg +1 -1
- package/dist/assets/parts/raptor-vacuum.svg +1 -1
- package/dist/assets/parts/raptor-vacuum.thick.svg +1 -1
- package/dist/assets/saturn-v-saturn-v-adapter.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-adapter.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-adapter.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-adapter.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-apart.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-apart.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-apart.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-capsule.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-capsule.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-capsule.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-capsule.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-escape-tower.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-escape-tower.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-escape-tower.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-escape-tower.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-first-stage.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-first-stage.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-first-stage.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-first-stage.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-second-stage.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-second-stage.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-second-stage.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-second-stage.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-service-module.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-service-module.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-service-module.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-service-module.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-third-stage.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-third-stage.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-third-stage.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-third-stage.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v.glb +0 -0
- package/dist/assets/saturn-v-saturn-v.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v.svg +1 -0
- package/dist/assets/saturn-v-saturn-v.thick.svg +1 -0
- package/dist/assets/sls-block-1-apart.painted.svg +1 -0
- package/dist/assets/sls-block-1-apart.svg +1 -0
- package/dist/assets/sls-block-1-apart.thick.svg +1 -0
- package/dist/assets/sls-block-1-capsule.glb +0 -0
- package/dist/assets/sls-block-1-capsule.painted.svg +1 -0
- package/dist/assets/sls-block-1-capsule.svg +1 -0
- package/dist/assets/sls-block-1-capsule.thick.svg +1 -0
- package/dist/assets/sls-block-1-escape-tower.glb +0 -0
- package/dist/assets/sls-block-1-escape-tower.painted.svg +1 -0
- package/dist/assets/sls-block-1-escape-tower.svg +1 -0
- package/dist/assets/sls-block-1-escape-tower.thick.svg +1 -0
- package/dist/assets/sls-block-1-first-stage.glb +0 -0
- package/dist/assets/sls-block-1-first-stage.painted.svg +1 -0
- package/dist/assets/sls-block-1-first-stage.svg +1 -0
- package/dist/assets/sls-block-1-first-stage.thick.svg +1 -0
- package/dist/assets/sls-block-1-service-module.glb +0 -0
- package/dist/assets/sls-block-1-service-module.painted.svg +1 -0
- package/dist/assets/sls-block-1-service-module.svg +1 -0
- package/dist/assets/sls-block-1-service-module.thick.svg +1 -0
- package/dist/assets/sls-block-1-srb-left.glb +0 -0
- package/dist/assets/sls-block-1-srb-left.painted.svg +1 -0
- package/dist/assets/sls-block-1-srb-left.svg +1 -0
- package/dist/assets/sls-block-1-srb-left.thick.svg +1 -0
- package/dist/assets/sls-block-1-srb-right.glb +0 -0
- package/dist/assets/sls-block-1-srb-right.painted.svg +1 -0
- package/dist/assets/sls-block-1-srb-right.svg +1 -0
- package/dist/assets/sls-block-1-srb-right.thick.svg +1 -0
- package/dist/assets/sls-block-1-upper-stage.glb +0 -0
- package/dist/assets/sls-block-1-upper-stage.painted.svg +1 -0
- package/dist/assets/sls-block-1-upper-stage.svg +1 -0
- package/dist/assets/sls-block-1-upper-stage.thick.svg +1 -0
- package/dist/assets/sls-block-1.glb +0 -0
- package/dist/assets/sls-block-1.painted.svg +1 -0
- package/dist/assets/sls-block-1.svg +1 -0
- package/dist/assets/sls-block-1.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-apart.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-apart.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-apart.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-1.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-booster-1.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-1.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-1.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-2.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-booster-2.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-2.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-2.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-3.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-booster-3.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-3.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-3.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-4.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-booster-4.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-4.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-4.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-fairing.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-fairing.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-fairing.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-fairing.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-first-stage.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-first-stage.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-first-stage.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-first-stage.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-third-stage.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-third-stage.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-third-stage.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-third-stage.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2.glb +0 -0
- package/dist/assets/soyuz-soyuz-2.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2.svg +1 -0
- package/dist/assets/soyuz-soyuz-2.thick.svg +1 -0
- package/dist/assets/space-shuttle-discovery.glb +0 -0
- package/dist/assets/space-shuttle-discovery.painted.svg +1 -0
- package/dist/assets/space-shuttle-discovery.svg +1 -0
- package/dist/assets/space-shuttle-discovery.thick.svg +1 -0
- package/dist/assets/space-shuttle-stack-apart.painted.svg +1 -0
- package/dist/assets/space-shuttle-stack-apart.svg +1 -0
- package/dist/assets/space-shuttle-stack-apart.thick.svg +1 -0
- package/dist/assets/space-shuttle-stack-external-tank.glb +0 -0
- package/dist/assets/space-shuttle-stack-external-tank.painted.svg +1 -0
- package/dist/assets/space-shuttle-stack-external-tank.svg +1 -0
- package/dist/assets/space-shuttle-stack-external-tank.thick.svg +1 -0
- package/dist/assets/space-shuttle-stack-orbiter.glb +0 -0
- package/dist/assets/space-shuttle-stack-orbiter.painted.svg +1 -0
- package/dist/assets/space-shuttle-stack-orbiter.svg +1 -0
- package/dist/assets/space-shuttle-stack-orbiter.thick.svg +1 -0
- package/dist/assets/space-shuttle-stack-srb-left.glb +0 -0
- package/dist/assets/space-shuttle-stack-srb-left.painted.svg +1 -0
- package/dist/assets/space-shuttle-stack-srb-left.svg +1 -0
- package/dist/assets/space-shuttle-stack-srb-left.thick.svg +1 -0
- package/dist/assets/space-shuttle-stack-srb-right.glb +0 -0
- package/dist/assets/space-shuttle-stack-srb-right.painted.svg +1 -0
- package/dist/assets/space-shuttle-stack-srb-right.svg +1 -0
- package/dist/assets/space-shuttle-stack-srb-right.thick.svg +1 -0
- package/dist/assets/space-shuttle-stack.glb +0 -0
- package/dist/assets/space-shuttle-stack.painted.svg +1 -0
- package/dist/assets/space-shuttle-stack.svg +1 -0
- package/dist/assets/space-shuttle-stack.thick.svg +1 -0
- package/dist/assets/starbase-build-site-apart.painted.svg +1 -0
- package/dist/assets/starbase-build-site-apart.svg +1 -0
- package/dist/assets/starbase-build-site-apart.thick.svg +1 -0
- package/dist/assets/starbase-build-site-garden.glb +0 -0
- package/dist/assets/starbase-build-site-garden.painted.svg +1 -0
- package/dist/assets/starbase-build-site-garden.svg +1 -0
- package/dist/assets/starbase-build-site-garden.thick.svg +1 -0
- package/dist/assets/starbase-build-site-ground.glb +0 -0
- package/dist/assets/starbase-build-site-ground.painted.svg +1 -0
- package/dist/assets/starbase-build-site-ground.svg +1 -0
- package/dist/assets/starbase-build-site-ground.thick.svg +1 -0
- package/dist/assets/starbase-build-site-mega-bays.glb +0 -0
- package/dist/assets/starbase-build-site-mega-bays.painted.svg +1 -0
- package/dist/assets/starbase-build-site-mega-bays.svg +1 -0
- package/dist/assets/starbase-build-site-mega-bays.thick.svg +1 -0
- package/dist/assets/starbase-build-site-sign.glb +0 -0
- package/dist/assets/starbase-build-site-sign.painted.svg +1 -0
- package/dist/assets/starbase-build-site-sign.svg +1 -0
- package/dist/assets/starbase-build-site-sign.thick.svg +1 -0
- package/dist/assets/starbase-build-site-starfactory.glb +0 -0
- package/dist/assets/starbase-build-site-starfactory.painted.svg +1 -0
- package/dist/assets/starbase-build-site-starfactory.svg +1 -0
- package/dist/assets/starbase-build-site-starfactory.thick.svg +1 -0
- package/dist/assets/starbase-build-site.glb +0 -0
- package/dist/assets/starbase-build-site.painted.svg +1 -0
- package/dist/assets/starbase-build-site.svg +1 -0
- package/dist/assets/starbase-build-site.thick.svg +1 -0
- package/dist/assets/starbase-city-apart.painted.svg +1 -0
- package/dist/assets/starbase-city-apart.svg +1 -0
- package/dist/assets/starbase-city-apart.thick.svg +1 -0
- package/dist/assets/starbase-city-garden.glb +0 -0
- package/dist/assets/starbase-city-garden.painted.svg +1 -0
- package/dist/assets/starbase-city-garden.svg +1 -0
- package/dist/assets/starbase-city-garden.thick.svg +1 -0
- package/dist/assets/starbase-city-ground.glb +0 -0
- package/dist/assets/starbase-city-ground.painted.svg +1 -0
- package/dist/assets/starbase-city-ground.svg +1 -0
- package/dist/assets/starbase-city-ground.thick.svg +1 -0
- package/dist/assets/starbase-city-mega-bays.glb +0 -0
- package/dist/assets/starbase-city-mega-bays.painted.svg +1 -0
- package/dist/assets/starbase-city-mega-bays.svg +1 -0
- package/dist/assets/starbase-city-mega-bays.thick.svg +1 -0
- package/dist/assets/starbase-city-on-pad.glb +0 -0
- package/dist/assets/starbase-city-on-pad.painted.svg +1 -0
- package/dist/assets/starbase-city-on-pad.svg +1 -0
- package/dist/assets/starbase-city-on-pad.thick.svg +1 -0
- package/dist/assets/starbase-city-pads.glb +0 -0
- package/dist/assets/starbase-city-pads.painted.svg +1 -0
- package/dist/assets/starbase-city-pads.svg +1 -0
- package/dist/assets/starbase-city-pads.thick.svg +1 -0
- package/dist/assets/starbase-city-sign.glb +0 -0
- package/dist/assets/starbase-city-sign.painted.svg +1 -0
- package/dist/assets/starbase-city-sign.svg +1 -0
- package/dist/assets/starbase-city-sign.thick.svg +1 -0
- package/dist/assets/starbase-city-starfactory.glb +0 -0
- package/dist/assets/starbase-city-starfactory.painted.svg +1 -0
- package/dist/assets/starbase-city-starfactory.svg +1 -0
- package/dist/assets/starbase-city-starfactory.thick.svg +1 -0
- package/dist/assets/starbase-city-tank-farm.glb +0 -0
- package/dist/assets/starbase-city-tank-farm.painted.svg +1 -0
- package/dist/assets/starbase-city-tank-farm.svg +1 -0
- package/dist/assets/starbase-city-tank-farm.thick.svg +1 -0
- package/dist/assets/starbase-city-village.glb +0 -0
- package/dist/assets/starbase-city-village.painted.svg +1 -0
- package/dist/assets/starbase-city-village.svg +1 -0
- package/dist/assets/starbase-city-village.thick.svg +1 -0
- package/dist/assets/starbase-city.glb +0 -0
- package/dist/assets/starbase-city.painted.svg +1 -0
- package/dist/assets/starbase-city.svg +1 -0
- package/dist/assets/starbase-city.thick.svg +1 -0
- package/dist/assets/starbase-launch-site-apart.painted.svg +1 -0
- package/dist/assets/starbase-launch-site-apart.svg +1 -0
- package/dist/assets/starbase-launch-site-apart.thick.svg +1 -0
- package/dist/assets/starbase-launch-site-ground.glb +0 -0
- package/dist/assets/starbase-launch-site-ground.painted.svg +1 -0
- package/dist/assets/starbase-launch-site-ground.svg +1 -0
- package/dist/assets/starbase-launch-site-ground.thick.svg +1 -0
- package/dist/assets/starbase-launch-site-on-pad.glb +0 -0
- package/dist/assets/starbase-launch-site-on-pad.painted.svg +1 -0
- package/dist/assets/starbase-launch-site-on-pad.svg +1 -0
- package/dist/assets/starbase-launch-site-on-pad.thick.svg +1 -0
- package/dist/assets/starbase-launch-site-pads.glb +0 -0
- package/dist/assets/starbase-launch-site-pads.painted.svg +1 -0
- package/dist/assets/starbase-launch-site-pads.svg +1 -0
- package/dist/assets/starbase-launch-site-pads.thick.svg +1 -0
- package/dist/assets/starbase-launch-site-tank-farm.glb +0 -0
- package/dist/assets/starbase-launch-site-tank-farm.painted.svg +1 -0
- package/dist/assets/starbase-launch-site-tank-farm.svg +1 -0
- package/dist/assets/starbase-launch-site-tank-farm.thick.svg +1 -0
- package/dist/assets/starbase-launch-site.glb +0 -0
- package/dist/assets/starbase-launch-site.painted.svg +1 -0
- package/dist/assets/starbase-launch-site.svg +1 -0
- package/dist/assets/starbase-launch-site.thick.svg +1 -0
- package/dist/assets/starship-2019.painted.svg +1 -1
- package/dist/assets/starship-2019.svg +1 -1
- package/dist/assets/starship-2019.thick.svg +1 -1
- package/dist/assets/starship-v1-apart.painted.svg +1 -1
- package/dist/assets/starship-v1-apart.svg +1 -1
- package/dist/assets/starship-v1-apart.thick.svg +1 -1
- package/dist/assets/starship-v1-booster.painted.svg +1 -1
- package/dist/assets/starship-v1-booster.svg +1 -1
- package/dist/assets/starship-v1-booster.thick.svg +1 -1
- package/dist/assets/starship-v1-flight1-apart.painted.svg +1 -1
- package/dist/assets/starship-v1-flight1-apart.svg +1 -1
- package/dist/assets/starship-v1-flight1-apart.thick.svg +1 -1
- package/dist/assets/starship-v1-flight1-booster.painted.svg +1 -1
- package/dist/assets/starship-v1-flight1-booster.svg +1 -1
- package/dist/assets/starship-v1-flight1-booster.thick.svg +1 -1
- package/dist/assets/starship-v1-flight1-ship.painted.svg +1 -1
- package/dist/assets/starship-v1-flight1-ship.svg +1 -1
- package/dist/assets/starship-v1-flight1-ship.thick.svg +1 -1
- package/dist/assets/starship-v1-flight1.painted.svg +1 -1
- package/dist/assets/starship-v1-flight1.svg +1 -1
- package/dist/assets/starship-v1-flight1.thick.svg +1 -1
- package/dist/assets/starship-v1-ship.painted.svg +1 -1
- package/dist/assets/starship-v1-ship.svg +1 -1
- package/dist/assets/starship-v1-ship.thick.svg +1 -1
- package/dist/assets/starship-v1.painted.svg +1 -1
- package/dist/assets/starship-v1.svg +1 -1
- package/dist/assets/starship-v1.thick.svg +1 -1
- package/dist/assets/starship-v2-apart.painted.svg +1 -1
- package/dist/assets/starship-v2-apart.svg +1 -1
- package/dist/assets/starship-v2-apart.thick.svg +1 -1
- package/dist/assets/starship-v2-booster.painted.svg +1 -1
- package/dist/assets/starship-v2-booster.svg +1 -1
- package/dist/assets/starship-v2-booster.thick.svg +1 -1
- package/dist/assets/starship-v2-ship.painted.svg +1 -1
- package/dist/assets/starship-v2-ship.svg +1 -1
- package/dist/assets/starship-v2-ship.thick.svg +1 -1
- package/dist/assets/starship-v2.painted.svg +1 -1
- package/dist/assets/starship-v2.svg +1 -1
- package/dist/assets/starship-v2.thick.svg +1 -1
- package/dist/assets/starship-v3-apart.painted.svg +1 -1
- package/dist/assets/starship-v3-apart.svg +1 -1
- package/dist/assets/starship-v3-apart.thick.svg +1 -1
- package/dist/assets/starship-v3-booster.painted.svg +1 -1
- package/dist/assets/starship-v3-booster.svg +1 -1
- package/dist/assets/starship-v3-booster.thick.svg +1 -1
- package/dist/assets/starship-v3-ship.painted.svg +1 -1
- package/dist/assets/starship-v3-ship.svg +1 -1
- package/dist/assets/starship-v3-ship.thick.svg +1 -1
- package/dist/assets/starship-v3.painted.svg +1 -1
- package/dist/assets/starship-v3.svg +1 -1
- package/dist/assets/starship-v3.thick.svg +1 -1
- package/dist/assets/starship-v4-apart.painted.svg +1 -1
- package/dist/assets/starship-v4-apart.svg +1 -1
- package/dist/assets/starship-v4-apart.thick.svg +1 -1
- package/dist/assets/starship-v4-booster.painted.svg +1 -1
- package/dist/assets/starship-v4-booster.svg +1 -1
- package/dist/assets/starship-v4-booster.thick.svg +1 -1
- package/dist/assets/starship-v4-ship.painted.svg +1 -1
- package/dist/assets/starship-v4-ship.svg +1 -1
- package/dist/assets/starship-v4-ship.thick.svg +1 -1
- package/dist/assets/starship-v4.painted.svg +1 -1
- package/dist/assets/starship-v4.svg +1 -1
- package/dist/assets/starship-v4.thick.svg +1 -1
- package/dist/attrs.d.ts +27 -0
- package/dist/attrs.js +31 -0
- package/dist/build/index.d.ts +7 -2
- package/dist/build/index.js +28 -4
- package/dist/build/lineup.js +14 -4
- package/dist/builder.d.ts +22 -0
- package/dist/builder.js +103 -0
- package/dist/data/apollosoyuz.d.ts +6 -0
- package/dist/data/apollosoyuz.js +28 -0
- package/dist/data/credits.d.ts +19 -1
- package/dist/data/credits.js +30 -1
- package/dist/data/dragon.js +35 -0
- package/dist/data/electron.d.ts +2 -0
- package/dist/data/electron.js +23 -0
- package/dist/data/falcon.js +2 -2
- package/dist/data/falcon1.d.ts +4 -0
- package/dist/data/falcon1.js +51 -0
- package/dist/data/flight-log.d.ts +18 -0
- package/dist/data/flight-log.js +23 -0
- package/dist/data/flights.d.ts +49 -0
- package/dist/data/flights.js +177 -0
- package/dist/data/gemini.d.ts +3 -0
- package/dist/data/gemini.js +22 -0
- package/dist/data/hubble.d.ts +3 -0
- package/dist/data/hubble.js +23 -0
- package/dist/data/iss.d.ts +5 -0
- package/dist/data/iss.js +25 -0
- package/dist/data/jupiterc.d.ts +3 -0
- package/dist/data/jupiterc.js +22 -0
- package/dist/data/landing.d.ts +3 -0
- package/dist/data/landing.js +51 -0
- package/dist/data/lunarmodule.d.ts +4 -0
- package/dist/data/lunarmodule.js +27 -0
- package/dist/data/makers.d.ts +16 -0
- package/dist/data/makers.js +29 -0
- package/dist/data/mercury.d.ts +3 -0
- package/dist/data/mercury.js +22 -0
- package/dist/data/newglenn.d.ts +2 -0
- package/dist/data/newglenn.js +23 -0
- package/dist/data/saturn.d.ts +2 -0
- package/dist/data/saturn.js +32 -0
- package/dist/data/shuttle.d.ts +5 -0
- package/dist/data/shuttle.js +52 -0
- package/dist/data/sls.d.ts +4 -0
- package/dist/data/sls.js +36 -0
- package/dist/data/sources.d.ts +348 -2
- package/dist/data/sources.js +45 -1
- package/dist/data/soyuz.d.ts +3 -0
- package/dist/data/soyuz.js +33 -0
- package/dist/data/starbase.d.ts +2 -0
- package/dist/data/starbase.js +30 -0
- package/dist/data/tower.d.ts +3 -0
- package/dist/data/tower.js +26 -0
- package/dist/data/types.d.ts +7 -1
- package/dist/draw/plume.d.ts +8 -0
- package/dist/draw/plume.js +71 -0
- package/dist/draw/svg.d.ts +1 -1
- package/dist/draw/svg.js +3 -3
- package/dist/element/ground.d.ts +15 -0
- package/dist/element/ground.js +95 -0
- package/dist/element/plumes.d.ts +38 -0
- package/dist/element/plumes.js +208 -0
- package/dist/element/scene.d.ts +39 -5
- package/dist/element/scene.js +250 -7
- package/dist/element.d.ts +50 -1
- package/dist/element.js +201 -13
- package/dist/embed.d.ts +26 -0
- package/dist/embed.js +135 -0
- package/dist/engines.d.ts +44 -0
- package/dist/engines.js +79 -0
- package/dist/fit.d.ts +2 -0
- package/dist/fit.js +4 -3
- package/dist/flight.d.ts +67 -0
- package/dist/flight.js +124 -0
- package/dist/flightbar.d.ts +22 -0
- package/dist/flightbar.js +176 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.js +9 -0
- package/dist/layout.js +1 -1
- package/dist/looks.d.ts +1 -1
- package/dist/looks.js +2 -0
- package/dist/model/apollosoyuz.d.ts +2 -0
- package/dist/model/apollosoyuz.js +46 -0
- package/dist/model/dragoninside.d.ts +2 -0
- package/dist/model/dragoninside.js +67 -0
- package/dist/model/electron.d.ts +2 -0
- package/dist/model/electron.js +35 -0
- package/dist/model/falcon.d.ts +2 -0
- package/dist/model/falcon.js +4 -0
- package/dist/model/falcon1.d.ts +2 -0
- package/dist/model/falcon1.js +53 -0
- package/dist/model/gemini.d.ts +2 -0
- package/dist/model/gemini.js +28 -0
- package/dist/model/hubble.d.ts +2 -0
- package/dist/model/hubble.js +28 -0
- package/dist/model/iss.d.ts +2 -0
- package/dist/model/iss.js +32 -0
- package/dist/model/jupiterc.d.ts +2 -0
- package/dist/model/jupiterc.js +24 -0
- package/dist/model/kit.d.ts +36 -0
- package/dist/model/kit.js +95 -0
- package/dist/model/landing.d.ts +3 -0
- package/dist/model/landing.js +81 -0
- package/dist/model/lunarmodule.d.ts +2 -0
- package/dist/model/lunarmodule.js +43 -0
- package/dist/model/materials.d.ts +42 -0
- package/dist/model/materials.js +7 -0
- package/dist/model/mercury.d.ts +2 -0
- package/dist/model/mercury.js +19 -0
- package/dist/model/newglenn.d.ts +2 -0
- package/dist/model/newglenn.js +43 -0
- package/dist/model/pieces.d.ts +2 -0
- package/dist/model/pieces.js +2 -2
- package/dist/model/registry.js +63 -0
- package/dist/model/saturn.d.ts +2 -0
- package/dist/model/saturn.js +122 -0
- package/dist/model/shuttle.d.ts +2 -0
- package/dist/model/shuttle.js +111 -0
- package/dist/model/sls.d.ts +2 -0
- package/dist/model/sls.js +83 -0
- package/dist/model/soyuz.d.ts +2 -0
- package/dist/model/soyuz.js +75 -0
- package/dist/model/stacks.d.ts +39 -0
- package/dist/model/stacks.js +1 -0
- package/dist/model/starbase.d.ts +2 -0
- package/dist/model/starbase.js +108 -0
- package/dist/model/tower.d.ts +6 -0
- package/dist/model/tower.js +89 -0
- package/dist/parts.d.ts +3 -2
- package/dist/react.d.ts +14 -6
- package/dist/rockets.d.ts +5 -0
- package/dist/rockets.js +78 -7
- package/dist/spin.d.ts +11 -0
- package/dist/spin.js +11 -0
- 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
|
|
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
|
|
49
|
+
const fig = (value, source) => ({ value, source });
|
|
14
50
|
export const PLANNED_ROCKETS = [
|
|
15
|
-
{ id: "
|
|
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.
|
|
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": [
|
|
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": {
|
|
8
|
-
|
|
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": [
|
|
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
|
-
".": {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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": [
|
|
25
|
-
|
|
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/
|
|
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": {
|
|
134
|
+
"publishConfig": {
|
|
135
|
+
"access": "public"
|
|
136
|
+
},
|
|
66
137
|
"packageManager": "pnpm@10.11.0",
|
|
67
|
-
"pnpm": {
|
|
138
|
+
"pnpm": {
|
|
139
|
+
"onlyBuiltDependencies": [
|
|
140
|
+
"esbuild"
|
|
141
|
+
]
|
|
142
|
+
}
|
|
68
143
|
}
|