@johnmorrisdotca/uchusen-rockets 0.2.2 → 0.4.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 +55 -5
- package/LICENSES/ODbL-1.0.txt +540 -0
- package/NOTICE.md +56 -6
- package/README.md +288 -16
- 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 +93 -0
- package/dist/attrs.js +86 -0
- package/dist/build/glb.d.ts +25 -0
- package/dist/build/glb.js +14 -0
- package/dist/build/index.d.ts +96 -6
- package/dist/build/index.js +83 -8
- package/dist/build/lineup.d.ts +56 -2
- package/dist/build/lineup.js +37 -6
- package/dist/builder.d.ts +68 -0
- package/dist/builder.js +116 -0
- package/dist/crossfade.d.ts +44 -2
- package/dist/crossfade.js +44 -2
- package/dist/data/apollosoyuz.d.ts +6 -0
- package/dist/data/apollosoyuz.js +28 -0
- package/dist/data/credits.d.ts +63 -2
- package/dist/data/credits.js +52 -2
- 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 +50 -0
- package/dist/data/flight-log.js +44 -0
- package/dist/data/flights.d.ts +101 -0
- package/dist/data/flights.js +187 -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 +37 -0
- package/dist/data/makers.js +39 -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 +380 -2
- package/dist/data/sources.js +55 -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 +88 -2
- package/dist/data/types.js +26 -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 +111 -4
- package/dist/element.js +251 -16
- package/dist/embed.d.ts +131 -0
- package/dist/embed.js +218 -0
- package/dist/engines.d.ts +126 -0
- package/dist/engines.js +150 -0
- package/dist/fit.d.ts +70 -0
- package/dist/fit.js +17 -3
- package/dist/flight.d.ts +192 -0
- package/dist/flight.js +237 -0
- package/dist/flightbar.d.ts +34 -0
- package/dist/flightbar.js +188 -0
- package/dist/framing.d.ts +182 -8
- package/dist/framing.js +127 -6
- package/dist/index.d.ts +17 -0
- package/dist/index.js +9 -0
- package/dist/layout.d.ts +65 -1
- package/dist/layout.js +44 -2
- package/dist/looks.d.ts +65 -2
- package/dist/looks.js +44 -1
- 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 +74 -0
- package/dist/model/materials.js +17 -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.d.ts +22 -0
- package/dist/model/registry.js +85 -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 +36 -3
- package/dist/pixels.d.ts +44 -4
- package/dist/pixels.js +44 -4
- package/dist/react.d.ts +38 -6
- package/dist/react.js +13 -0
- package/dist/rockets.d.ts +96 -3
- package/dist/rockets.js +136 -9
- package/dist/spin.d.ts +66 -0
- package/dist/spin.js +44 -0
- package/dist/tilt.d.ts +48 -4
- package/dist/tilt.js +26 -4
- package/package.json +99 -19
|
@@ -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,7 +1,28 @@
|
|
|
1
1
|
import type { CreditId } from "./data/credits.ts";
|
|
2
2
|
import type { Figure } from "./data/types.ts";
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* What kind of part a record is: a booster, a ship, a stage, a fairing, a capsule, an engine, a fin and so on. A joint only mates a part of a kind that fits it.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* import { partEntry, type PartKind } from "@johnmorrisdotca/uchusen-rockets";
|
|
9
|
+
*
|
|
10
|
+
* const kind: PartKind | undefined = partEntry("raptor-vacuum")?.record.kind;
|
|
11
|
+
* console.log(kind);
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
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";
|
|
15
|
+
/**
|
|
16
|
+
* 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.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { partEntry, type Joint } from "@johnmorrisdotca/uchusen-rockets";
|
|
21
|
+
*
|
|
22
|
+
* const top: Joint | undefined = partEntry("starship-v3-booster")?.record.joints.top;
|
|
23
|
+
* console.log(top);
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
5
26
|
export interface Joint {
|
|
6
27
|
/** What this joint is, so only like meets like: "stage". */
|
|
7
28
|
kind: "stage";
|
|
@@ -10,6 +31,17 @@ export interface Joint {
|
|
|
10
31
|
/** Metres across at the joint. */
|
|
11
32
|
diameter: number;
|
|
12
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* The one record every part has: its id, kind and name, the rocket and variants it is true for, its height and diameter in metres, the sourced figures, its joints, any painted model, and where its shape came from.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* import { partEntry, type PartRecord } from "@johnmorrisdotca/uchusen-rockets";
|
|
40
|
+
*
|
|
41
|
+
* const record: PartRecord | undefined = partEntry("starship-v3-ship")?.record;
|
|
42
|
+
* console.log(record?.name, record?.height, record?.trueTo);
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
13
45
|
export interface PartRecord {
|
|
14
46
|
id: string;
|
|
15
47
|
kind: PartKind;
|
|
@@ -29,10 +61,11 @@ export interface PartRecord {
|
|
|
29
61
|
readonly top?: Joint;
|
|
30
62
|
readonly bottom?: Joint;
|
|
31
63
|
};
|
|
32
|
-
/** It
|
|
64
|
+
/** 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
65
|
strapOn?: {
|
|
34
66
|
x: number;
|
|
35
67
|
z: number;
|
|
68
|
+
y?: number;
|
|
36
69
|
};
|
|
37
70
|
/** 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
71
|
painted: {
|
package/dist/pixels.d.ts
CHANGED
|
@@ -1,8 +1,48 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* The most the backing store may hold, in pixels (a 620 x 827 view at a ratio of 2 is 2 million).
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { MAX_PIXELS } from "@johnmorrisdotca/uchusen-rockets";
|
|
7
|
+
*
|
|
8
|
+
* console.log(MAX_PIXELS);
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
2
11
|
export declare const MAX_PIXELS = 6000000;
|
|
3
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* The longest side the backing store may have.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { MAX_SIDE } from "@johnmorrisdotca/uchusen-rockets";
|
|
18
|
+
*
|
|
19
|
+
* console.log(MAX_SIDE);
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
4
22
|
export declare const MAX_SIDE = 4096;
|
|
5
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* The sharpest ratio ever used, however dense the screen.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* import { MAX_RATIO } from "@johnmorrisdotca/uchusen-rockets";
|
|
29
|
+
*
|
|
30
|
+
* console.log(MAX_RATIO);
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
6
33
|
export declare const MAX_RATIO = 2;
|
|
7
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* The device pixel ratio to draw a `width` x `height` view at: the screen's own, held to 2, to 4096 pixels a side and to 6 million in all. At least 0.25, and 1 for a nonsense value.
|
|
36
|
+
*
|
|
37
|
+
* @param width The view's width in CSS pixels.
|
|
38
|
+
* @param height Its height in CSS pixels.
|
|
39
|
+
* @param deviceRatio The screen's own pixel ratio.
|
|
40
|
+
* @returns The ratio to draw at.
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* import { pixelRatioFor } from "@johnmorrisdotca/uchusen-rockets";
|
|
44
|
+
*
|
|
45
|
+
* console.log(pixelRatioFor(620, 827, 3), pixelRatioFor(3000, 3000, 2));
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
8
48
|
export declare function pixelRatioFor(width: number, height: number, deviceRatio: number): number;
|
package/dist/pixels.js
CHANGED
|
@@ -1,11 +1,51 @@
|
|
|
1
1
|
// How sharp the 3D canvas may be. The backing store is width x height x ratio squared, and a view as big as a 5K screen at a ratio of 2 would ask the graphics card for 15 million pixels, every frame. Pure.
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* The most the backing store may hold, in pixels (a 620 x 827 view at a ratio of 2 is 2 million).
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { MAX_PIXELS } from "@johnmorrisdotca/uchusen-rockets";
|
|
8
|
+
*
|
|
9
|
+
* console.log(MAX_PIXELS);
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
3
12
|
export const MAX_PIXELS = 6_000_000;
|
|
4
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* The longest side the backing store may have.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { MAX_SIDE } from "@johnmorrisdotca/uchusen-rockets";
|
|
19
|
+
*
|
|
20
|
+
* console.log(MAX_SIDE);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
5
23
|
export const MAX_SIDE = 4096;
|
|
6
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* The sharpest ratio ever used, however dense the screen.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* import { MAX_RATIO } from "@johnmorrisdotca/uchusen-rockets";
|
|
30
|
+
*
|
|
31
|
+
* console.log(MAX_RATIO);
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
7
34
|
export const MAX_RATIO = 2;
|
|
8
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* The device pixel ratio to draw a `width` x `height` view at: the screen's own, held to 2, to 4096 pixels a side and to 6 million in all. At least 0.25, and 1 for a nonsense value.
|
|
37
|
+
*
|
|
38
|
+
* @param width The view's width in CSS pixels.
|
|
39
|
+
* @param height Its height in CSS pixels.
|
|
40
|
+
* @param deviceRatio The screen's own pixel ratio.
|
|
41
|
+
* @returns The ratio to draw at.
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* import { pixelRatioFor } from "@johnmorrisdotca/uchusen-rockets";
|
|
45
|
+
*
|
|
46
|
+
* console.log(pixelRatioFor(620, 827, 3), pixelRatioFor(3000, 3000, 2));
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
9
49
|
export function pixelRatioFor(width, height, deviceRatio) {
|
|
10
50
|
const w = Math.max(1, width);
|
|
11
51
|
const h = Math.max(1, height);
|
package/dist/react.d.ts
CHANGED
|
@@ -2,6 +2,17 @@ import { type HTMLAttributes, type Ref } from "react";
|
|
|
2
2
|
import type { Description } from "./fit.ts";
|
|
3
3
|
import type { ViewName } from "./framing.ts";
|
|
4
4
|
import type { LookName } from "./looks.ts";
|
|
5
|
+
/**
|
|
6
|
+
* The props of the React wrapper: the element's attributes as props (`rocket`, `variant`, `show`, `look`, `view`, `mode`, `assets`, `spin`, `way`, `label`, `engines`, `phase`), `build` as an object, and any other HTML attribute.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import type { UchusenRocketProps } from "@johnmorrisdotca/uchusen-rockets/react";
|
|
11
|
+
*
|
|
12
|
+
* const props: UchusenRocketProps = { rocket: "starship", variant: "v3", look: "thick" };
|
|
13
|
+
* console.log(props);
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
5
16
|
export interface UchusenRocketProps extends Omit<HTMLAttributes<HTMLElement>, "style"> {
|
|
6
17
|
rocket?: string;
|
|
7
18
|
variant?: string;
|
|
@@ -16,8 +27,25 @@ export interface UchusenRocketProps extends Omit<HTMLAttributes<HTMLElement>, "s
|
|
|
16
27
|
spin?: string | number;
|
|
17
28
|
way?: "cw" | "ccw";
|
|
18
29
|
label?: string;
|
|
30
|
+
/** "on" lights the engines, and a reader who asked for reduced motion has them off. */
|
|
31
|
+
engines?: "on" | "off";
|
|
32
|
+
/** A phase of the rocket's flight, by its id. */
|
|
33
|
+
phase?: string;
|
|
19
34
|
ref?: Ref<HTMLElement>;
|
|
20
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* A thin React wrapper round `<uchusen-rocket>`. It loads the element on first use, so server rendering draws only the tag.
|
|
38
|
+
*
|
|
39
|
+
* @param props The props. `build` is turned into the element's JSON attribute; the rest go through as they are.
|
|
40
|
+
* @returns The `<uchusen-rocket>` element. It is never null or undefined.
|
|
41
|
+
* @example
|
|
42
|
+
* ```tsx no-run
|
|
43
|
+
* import { UchusenRocket } from "@johnmorrisdotca/uchusen-rockets/react";
|
|
44
|
+
*
|
|
45
|
+
* export const Hero = () => <UchusenRocket rocket="falcon-9" variant="block-5" look="painted" />;
|
|
46
|
+
* console.log(typeof UchusenRocket);
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
21
49
|
export declare function UchusenRocket({ build, ...rest }: UchusenRocketProps): import("react").DOMElement<{
|
|
22
50
|
build: string | undefined;
|
|
23
51
|
rocket?: string;
|
|
@@ -31,16 +59,24 @@ export declare function UchusenRocket({ build, ...rest }: UchusenRocketProps): i
|
|
|
31
59
|
spin?: string | number;
|
|
32
60
|
way?: "cw" | "ccw";
|
|
33
61
|
label?: string;
|
|
62
|
+
/** "on" lights the engines, and a reader who asked for reduced motion has them off. */
|
|
63
|
+
engines?: "on" | "off";
|
|
64
|
+
/** A phase of the rocket's flight, by its id. */
|
|
65
|
+
phase?: string;
|
|
34
66
|
ref?: Ref<HTMLElement>;
|
|
35
67
|
part?: string | undefined | undefined;
|
|
36
68
|
id?: string | undefined | undefined;
|
|
37
69
|
slot?: string | undefined | undefined;
|
|
38
70
|
children?: import("react").ReactNode;
|
|
39
71
|
title?: string | undefined | undefined;
|
|
72
|
+
"aria-label"?: string | undefined | undefined;
|
|
73
|
+
"aria-live"?: "off" | "assertive" | "polite" | undefined | undefined;
|
|
74
|
+
about?: string | undefined | undefined;
|
|
75
|
+
"aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
|
|
76
|
+
"aria-valuetext"?: string | undefined | undefined;
|
|
77
|
+
color?: string | undefined | undefined;
|
|
40
78
|
role?: import("react").AriaRole | undefined;
|
|
41
79
|
"aria-roledescription"?: string | undefined | undefined;
|
|
42
|
-
color?: string | undefined | undefined;
|
|
43
|
-
"aria-label"?: string | undefined | undefined;
|
|
44
80
|
defaultChecked?: boolean | undefined | undefined;
|
|
45
81
|
defaultValue?: string | number | readonly string[] | undefined;
|
|
46
82
|
suppressContentEditableWarning?: boolean | undefined | undefined;
|
|
@@ -61,7 +97,6 @@ export declare function UchusenRocket({ build, ...rest }: UchusenRocketProps): i
|
|
|
61
97
|
tabIndex?: number | undefined | undefined;
|
|
62
98
|
translate?: "yes" | "no" | undefined | undefined;
|
|
63
99
|
radioGroup?: string | undefined | undefined;
|
|
64
|
-
about?: string | undefined | undefined;
|
|
65
100
|
content?: string | undefined | undefined;
|
|
66
101
|
datatype?: string | undefined | undefined;
|
|
67
102
|
inlist?: any;
|
|
@@ -117,7 +152,6 @@ export declare function UchusenRocket({ build, ...rest }: UchusenRocketProps): i
|
|
|
117
152
|
"aria-keyshortcuts"?: string | undefined | undefined;
|
|
118
153
|
"aria-labelledby"?: string | undefined | undefined;
|
|
119
154
|
"aria-level"?: number | undefined | undefined;
|
|
120
|
-
"aria-live"?: "off" | "assertive" | "polite" | undefined | undefined;
|
|
121
155
|
"aria-modal"?: (boolean | "true" | "false") | undefined;
|
|
122
156
|
"aria-multiline"?: (boolean | "true" | "false") | undefined;
|
|
123
157
|
"aria-multiselectable"?: (boolean | "true" | "false") | undefined;
|
|
@@ -125,7 +159,6 @@ export declare function UchusenRocket({ build, ...rest }: UchusenRocketProps): i
|
|
|
125
159
|
"aria-owns"?: string | undefined | undefined;
|
|
126
160
|
"aria-placeholder"?: string | undefined | undefined;
|
|
127
161
|
"aria-posinset"?: number | undefined | undefined;
|
|
128
|
-
"aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
|
|
129
162
|
"aria-readonly"?: (boolean | "true" | "false") | undefined;
|
|
130
163
|
"aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined | undefined;
|
|
131
164
|
"aria-required"?: (boolean | "true" | "false") | undefined;
|
|
@@ -139,7 +172,6 @@ export declare function UchusenRocket({ build, ...rest }: UchusenRocketProps): i
|
|
|
139
172
|
"aria-valuemax"?: number | undefined | undefined;
|
|
140
173
|
"aria-valuemin"?: number | undefined | undefined;
|
|
141
174
|
"aria-valuenow"?: number | undefined | undefined;
|
|
142
|
-
"aria-valuetext"?: string | undefined | undefined;
|
|
143
175
|
dangerouslySetInnerHTML?: {
|
|
144
176
|
__html: string | TrustedHTML;
|
|
145
177
|
} | undefined | undefined;
|
package/dist/react.js
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
// A thin React wrapper round `<uchusen-rocket>`.
|
|
2
2
|
import { createElement, useEffect } from "react";
|
|
3
|
+
/**
|
|
4
|
+
* A thin React wrapper round `<uchusen-rocket>`. It loads the element on first use, so server rendering draws only the tag.
|
|
5
|
+
*
|
|
6
|
+
* @param props The props. `build` is turned into the element's JSON attribute; the rest go through as they are.
|
|
7
|
+
* @returns The `<uchusen-rocket>` element. It is never null or undefined.
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx no-run
|
|
10
|
+
* import { UchusenRocket } from "@johnmorrisdotca/uchusen-rockets/react";
|
|
11
|
+
*
|
|
12
|
+
* export const Hero = () => <UchusenRocket rocket="falcon-9" variant="block-5" look="painted" />;
|
|
13
|
+
* console.log(typeof UchusenRocket);
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
3
16
|
export function UchusenRocket({ build, ...rest }) {
|
|
4
17
|
useEffect(() => {
|
|
5
18
|
void import("./element.js");
|
package/dist/rockets.d.ts
CHANGED
|
@@ -1,14 +1,51 @@
|
|
|
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";
|
|
4
|
+
/**
|
|
5
|
+
* Whether a rocket is `built` (it has a shape) or `planned` (it has facts and no shape yet).
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { ROCKETS, type RocketStatus } from "@johnmorrisdotca/uchusen-rockets";
|
|
10
|
+
*
|
|
11
|
+
* const status: RocketStatus | undefined = ROCKETS["starship"]?.status;
|
|
12
|
+
* console.log(status);
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
3
15
|
export type RocketStatus = "built" | "planned";
|
|
16
|
+
/**
|
|
17
|
+
* One rocket: its id and name, its variants, its default variant, the group it is listed under and who made it.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* import { ROCKETS, type RocketEntry } from "@johnmorrisdotca/uchusen-rockets";
|
|
22
|
+
*
|
|
23
|
+
* const starship: RocketEntry | undefined = ROCKETS["starship"];
|
|
24
|
+
* console.log(starship?.name, starship?.variants.map((variant) => variant.id));
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
4
27
|
export interface RocketEntry {
|
|
5
28
|
id: string;
|
|
6
29
|
name: string;
|
|
7
30
|
status: RocketStatus;
|
|
8
31
|
variants: readonly Variant[];
|
|
9
32
|
defaultVariant: string;
|
|
33
|
+
/** Which group the demo lists it under. */
|
|
34
|
+
maker: MakerId;
|
|
35
|
+
/** Whose it is and who built it, as its source says, or a blank. */
|
|
36
|
+
madeBy: Figure<string>;
|
|
10
37
|
}
|
|
11
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* A rocket on the list with no mesh yet: its name and the sourced facts to build it from.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* import { PLANNED_ROCKETS, type PlannedRocket } from "@johnmorrisdotca/uchusen-rockets";
|
|
44
|
+
*
|
|
45
|
+
* const planned: PlannedRocket | undefined = PLANNED_ROCKETS[0];
|
|
46
|
+
* console.log(planned?.name);
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
12
49
|
export interface PlannedRocket {
|
|
13
50
|
id: string;
|
|
14
51
|
name: string;
|
|
@@ -18,10 +55,66 @@ export interface PlannedRocket {
|
|
|
18
55
|
firstFlight: Figure<string>;
|
|
19
56
|
source: SourceId;
|
|
20
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Every rocket that has a shape, by id, each with its variants. Add a rocket here and the element, the drawing, the fit check and the demo all read it.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```ts
|
|
63
|
+
* import { ROCKETS } from "@johnmorrisdotca/uchusen-rockets";
|
|
64
|
+
*
|
|
65
|
+
* console.log(Object.keys(ROCKETS).slice(0, 6));
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
21
68
|
export declare const ROCKETS: Readonly<Record<string, RocketEntry>>;
|
|
69
|
+
/**
|
|
70
|
+
* Rockets with sourced facts and no shape yet.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* import { PLANNED_ROCKETS } from "@johnmorrisdotca/uchusen-rockets";
|
|
75
|
+
*
|
|
76
|
+
* console.log(PLANNED_ROCKETS.map((rocket) => rocket.name));
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
22
79
|
export declare const PLANNED_ROCKETS: readonly PlannedRocket[];
|
|
80
|
+
/**
|
|
81
|
+
* Finds a rocket's variant, with its sourced sizes.
|
|
82
|
+
*
|
|
83
|
+
* @param rocket A rocket's id.
|
|
84
|
+
* @param id A variant's id. Left out, null or undefined: the rocket's default variant.
|
|
85
|
+
* @returns The variant, or undefined when the rocket or the variant is not known.
|
|
86
|
+
* @example
|
|
87
|
+
* ```ts
|
|
88
|
+
* import { variantOf } from "@johnmorrisdotca/uchusen-rockets";
|
|
89
|
+
*
|
|
90
|
+
* const v3 = variantOf("starship", "v3");
|
|
91
|
+
* console.log(v3?.facts.height.value, variantOf("starship", "v99"));
|
|
92
|
+
* ```
|
|
93
|
+
*/
|
|
23
94
|
export declare function variantOf(rocket: string, id?: string | null): Variant | undefined;
|
|
24
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
* A part's name for a rocket's slot in a variant.
|
|
97
|
+
*
|
|
98
|
+
* @param rocket A rocket's id.
|
|
99
|
+
* @param variant A variant's id.
|
|
100
|
+
* @param slot A slot name.
|
|
101
|
+
* @returns The id of the part that stands in that slot.
|
|
102
|
+
* @example
|
|
103
|
+
* ```ts
|
|
104
|
+
* import { partIdOf } from "@johnmorrisdotca/uchusen-rockets";
|
|
105
|
+
*
|
|
106
|
+
* console.log(partIdOf("starship", "v3", "booster"));
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
25
109
|
export declare const partIdOf: (rocket: string, variant: string, slot: string) => string;
|
|
26
|
-
/**
|
|
110
|
+
/**
|
|
111
|
+
* What to call a slot.
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```ts
|
|
115
|
+
* import { SLOT_NAMES } from "@johnmorrisdotca/uchusen-rockets";
|
|
116
|
+
*
|
|
117
|
+
* console.log(SLOT_NAMES["booster"]);
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
27
120
|
export declare const SLOT_NAMES: Readonly<Record<string, string>>;
|