@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
package/dist/fit.d.ts
CHANGED
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import { type CreditId, type ModelCredit } from "./data/credits.ts";
|
|
2
2
|
import type { Variant } from "./data/types.ts";
|
|
3
3
|
import type { PartRecord } from "./parts.ts";
|
|
4
|
+
/**
|
|
5
|
+
* A rocket to check or build: its id, its variant (left out: the rocket's default) and any other part in a slot, by part id.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { check, type Description } from "@johnmorrisdotca/uchusen-rockets";
|
|
10
|
+
*
|
|
11
|
+
* const description: Description = { rocket: "starship", variant: "v3", parts: { ship: "starship-v2-ship" } };
|
|
12
|
+
* console.log(check(description).label);
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
4
15
|
export interface Description {
|
|
5
16
|
rocket: string;
|
|
6
17
|
/** Left out: the rocket's default variant. */
|
|
@@ -8,17 +19,61 @@ export interface Description {
|
|
|
8
19
|
/** Another part in a slot, by its id. */
|
|
9
20
|
parts?: Readonly<Record<string, string>>;
|
|
10
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Why a check said what it said: an unknown rocket, variant, slot or part, a part of the wrong kind, a joint that is missing, of another kind or of another width, or a custom build.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* import { check, type FitCode } from "@johnmorrisdotca/uchusen-rockets";
|
|
28
|
+
*
|
|
29
|
+
* const codes: FitCode[] = check({ rocket: "nowhere" }).issues.map((issue) => issue.code);
|
|
30
|
+
* console.log(codes);
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
11
33
|
export type FitCode = "unknown-rocket" | "unknown-variant" | "unknown-slot" | "unknown-part" | "wrong-kind" | "no-joint" | "joint-kind" | "joint-diameter" | "custom";
|
|
34
|
+
/**
|
|
35
|
+
* One thing a check found: its code, its level (`error` stops a build, `note` says what was decided) and a sentence saying it.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* import { check, type FitIssue } from "@johnmorrisdotca/uchusen-rockets";
|
|
40
|
+
*
|
|
41
|
+
* const issue: FitIssue | undefined = check({ rocket: "starship", variant: "v3", parts: { booster: "starship-v3-ship" } }).issues[0];
|
|
42
|
+
* console.log(issue?.level, issue?.message);
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
12
45
|
export interface FitIssue {
|
|
13
46
|
code: FitCode;
|
|
14
47
|
/** "error" stops the build. "note" says what the check decided. */
|
|
15
48
|
level: "error" | "note";
|
|
16
49
|
message: string;
|
|
17
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* A part standing in a slot of a checked rocket.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* import { check, type SlotPart } from "@johnmorrisdotca/uchusen-rockets";
|
|
57
|
+
*
|
|
58
|
+
* const bottom: SlotPart | undefined = check({ rocket: "starship", variant: "v3" }).parts[0];
|
|
59
|
+
* console.log(bottom?.slot, bottom?.part.name);
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
18
62
|
export interface SlotPart {
|
|
19
63
|
slot: string;
|
|
20
64
|
part: PartRecord;
|
|
21
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* The answer of `check`: whether the parts go together, the issues, the label to call the rocket, whether it is a custom build, the variant, the parts, the size and the credits of every licensed model.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* import { check, type FitReport } from "@johnmorrisdotca/uchusen-rockets";
|
|
72
|
+
*
|
|
73
|
+
* const report: FitReport = check({ rocket: "falcon-9", variant: "block-5" });
|
|
74
|
+
* console.log(report.ok, report.size);
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
22
77
|
export interface FitReport {
|
|
23
78
|
ok: boolean;
|
|
24
79
|
issues: readonly FitIssue[];
|
|
@@ -40,4 +95,19 @@ export interface FitReport {
|
|
|
40
95
|
usedFor: readonly string[];
|
|
41
96
|
})[];
|
|
42
97
|
}
|
|
98
|
+
/** How far apart two joints may be in metres and still meet. */
|
|
99
|
+
export declare const JOINT_TOLERANCE = 0.1;
|
|
100
|
+
/**
|
|
101
|
+
* Asks whether a rocket goes together, from the parts' records alone, with no three.js and no DOM. A rocket labelled as a real version uses only parts true for it; any mix is a custom build and says so.
|
|
102
|
+
*
|
|
103
|
+
* @param description The rocket, its variant and any other part in a slot.
|
|
104
|
+
* @returns A report that says whether it fits and why, with the size and the credits.
|
|
105
|
+
* @example
|
|
106
|
+
* ```ts
|
|
107
|
+
* import { check } from "@johnmorrisdotca/uchusen-rockets";
|
|
108
|
+
*
|
|
109
|
+
* const report = check({ rocket: "starship", variant: "v3", parts: { booster: "starship-v3-ship" } });
|
|
110
|
+
* console.log(report.ok, report.issues[0]?.message);
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
43
113
|
export declare function check(description: Description): FitReport;
|
package/dist/fit.js
CHANGED
|
@@ -3,14 +3,15 @@
|
|
|
3
3
|
import { MODEL_CREDITS } from "./data/credits.js";
|
|
4
4
|
import { partEntry } from "./model/registry.js";
|
|
5
5
|
import { partIdOf, ROCKETS, variantOf } from "./rockets.js";
|
|
6
|
-
|
|
6
|
+
/** How far apart two joints may be in metres and still meet. */
|
|
7
|
+
export const JOINT_TOLERANCE = 0.1;
|
|
7
8
|
/** The whole height, joint to joint up the stack, and the widest part. */
|
|
8
9
|
function sizeOf(parts) {
|
|
9
10
|
let y = 0;
|
|
10
11
|
let top = 0;
|
|
11
12
|
for (const { part } of parts) {
|
|
12
13
|
if (part.strapOn) {
|
|
13
|
-
top = Math.max(top, part.height);
|
|
14
|
+
top = Math.max(top, (part.strapOn.y ?? 0) + part.height);
|
|
14
15
|
continue;
|
|
15
16
|
}
|
|
16
17
|
const base = y - (part.joints.bottom?.y ?? 0);
|
|
@@ -19,6 +20,19 @@ function sizeOf(parts) {
|
|
|
19
20
|
}
|
|
20
21
|
return { height: Math.round(top * 1000) / 1000, diameter: Math.max(...parts.map(({ part }) => part.diameter)) };
|
|
21
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Asks whether a rocket goes together, from the parts' records alone, with no three.js and no DOM. A rocket labelled as a real version uses only parts true for it; any mix is a custom build and says so.
|
|
25
|
+
*
|
|
26
|
+
* @param description The rocket, its variant and any other part in a slot.
|
|
27
|
+
* @returns A report that says whether it fits and why, with the size and the credits.
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { check } from "@johnmorrisdotca/uchusen-rockets";
|
|
31
|
+
*
|
|
32
|
+
* const report = check({ rocket: "starship", variant: "v3", parts: { booster: "starship-v3-ship" } });
|
|
33
|
+
* console.log(report.ok, report.issues[0]?.message);
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
22
36
|
export function check(description) {
|
|
23
37
|
const issues = [];
|
|
24
38
|
const fail = (code, message) => issues.push({ code, level: "error", message });
|
|
@@ -84,7 +98,7 @@ export function check(description) {
|
|
|
84
98
|
}
|
|
85
99
|
if (top.kind !== bottom.kind)
|
|
86
100
|
fail("joint-kind", `${below.name} ends in a ${top.kind} joint and ${above.name} starts with a ${bottom.kind} joint.`);
|
|
87
|
-
if (Math.abs(top.diameter - bottom.diameter) >
|
|
101
|
+
if (Math.abs(top.diameter - bottom.diameter) > JOINT_TOLERANCE)
|
|
88
102
|
fail("joint-diameter", `${below.name} is ${top.diameter} m across at the joint and ${above.name} is ${bottom.diameter} m.`);
|
|
89
103
|
}
|
|
90
104
|
if (custom)
|
package/dist/flight.d.ts
ADDED
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { type Flight, type FlightPhase } from "./data/flights.ts";
|
|
2
|
+
import type { Figure } from "./data/types.ts";
|
|
3
|
+
export type { Flight, FlightBurn, FlightPhase, PartPose } from "./data/flights.ts";
|
|
4
|
+
/**
|
|
5
|
+
* Seconds a phase takes on the screen when the timeline plays: one flight in under a minute, whatever its real length.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { SECONDS_PER_PHASE } from "@johnmorrisdotca/uchusen-rockets";
|
|
10
|
+
*
|
|
11
|
+
* console.log(SECONDS_PER_PHASE);
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export declare const SECONDS_PER_PHASE = 2.4;
|
|
15
|
+
/**
|
|
16
|
+
* The flight for a rocket's variant, when a page gives one.
|
|
17
|
+
*
|
|
18
|
+
* @param rocket A rocket's id.
|
|
19
|
+
* @param variant A variant's id, or undefined.
|
|
20
|
+
* @returns The flight for that variant, or null when it has none.
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { flightOf } from "@johnmorrisdotca/uchusen-rockets";
|
|
24
|
+
*
|
|
25
|
+
* console.log(flightOf("starship", "v3")?.name, flightOf("starship", "v4"));
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare const flightOf: (rocket: string, variant: string | undefined) => Flight | null;
|
|
29
|
+
/**
|
|
30
|
+
* The last place on the timeline: the last phase.
|
|
31
|
+
*
|
|
32
|
+
* @param flight A flight.
|
|
33
|
+
* @returns The index of its last phase.
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* import { flightOf, lastPosition } from "@johnmorrisdotca/uchusen-rockets";
|
|
37
|
+
*
|
|
38
|
+
* const flight = flightOf("falcon-9", "block-5");
|
|
39
|
+
* console.log(flight ? lastPosition(flight) : null);
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare const lastPosition: (flight: Flight) => number;
|
|
43
|
+
/**
|
|
44
|
+
* Which phase a place on the timeline is in, and how far along to the next. A value that is not a number is the start.
|
|
45
|
+
*
|
|
46
|
+
* @param flight A flight.
|
|
47
|
+
* @param position A place on the timeline: 0 is the first phase, 1 the second, 1.5 halfway to the third.
|
|
48
|
+
* @returns The phase index, how far along to the next (0 to 1) and the phase.
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* import { flightOf, phaseAt } from "@johnmorrisdotca/uchusen-rockets";
|
|
52
|
+
*
|
|
53
|
+
* const flight = flightOf("falcon-9", "block-5");
|
|
54
|
+
* if (flight) console.log(phaseAt(flight, 1.5).phase.name);
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare function phaseAt(flight: Flight, position: number): {
|
|
58
|
+
index: number;
|
|
59
|
+
along: number;
|
|
60
|
+
phase: FlightPhase;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* The place on the timeline of a phase by its id, or null for one the flight does not have.
|
|
64
|
+
*
|
|
65
|
+
* @param flight A flight.
|
|
66
|
+
* @param id A phase's id, or null or undefined.
|
|
67
|
+
* @returns The place of that phase on the timeline, or null for an id the flight does not have.
|
|
68
|
+
* @example
|
|
69
|
+
* ```ts
|
|
70
|
+
* import { flightOf, phasePosition } from "@johnmorrisdotca/uchusen-rockets";
|
|
71
|
+
*
|
|
72
|
+
* const flight = flightOf("falcon-9", "block-5");
|
|
73
|
+
* if (flight) console.log(phasePosition(flight, "nonsense"));
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export declare function phasePosition(flight: Flight, id: string | null | undefined): number | null;
|
|
77
|
+
/**
|
|
78
|
+
* How many engines of each part burn in a phase, as drawn: a blank figure draws its `drawn`.
|
|
79
|
+
*
|
|
80
|
+
* @param phase A phase of a flight.
|
|
81
|
+
* @returns The number of engines burning for each part, by slot.
|
|
82
|
+
* @example
|
|
83
|
+
* ```ts
|
|
84
|
+
* import { burnsOf, flightOf } from "@johnmorrisdotca/uchusen-rockets";
|
|
85
|
+
*
|
|
86
|
+
* const phase = flightOf("falcon-9", "block-5")?.phases[0];
|
|
87
|
+
* console.log(phase ? burnsOf(phase) : {});
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
export declare function burnsOf(phase: FlightPhase): Record<string, number>;
|
|
91
|
+
export interface PoseNow {
|
|
92
|
+
dx: number;
|
|
93
|
+
dy: number;
|
|
94
|
+
pitch: number;
|
|
95
|
+
gone: boolean;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Everything the picture needs at one place on the timeline: the phase, how each part stands, which engines burn, how far the ground has fallen, and how much smoke stands on the pad.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* import { flightOf, frameAt, type FlightFrame } from "@johnmorrisdotca/uchusen-rockets";
|
|
103
|
+
*
|
|
104
|
+
* const flight = flightOf("falcon-9", "block-5");
|
|
105
|
+
* const frame: FlightFrame | undefined = flight ? frameAt(flight, 0, [{ slot: "first-stage", baseY: 0 }], 70) : undefined;
|
|
106
|
+
* console.log(frame?.phase.name, frame?.separated);
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
export interface FlightFrame {
|
|
110
|
+
index: number;
|
|
111
|
+
phase: FlightPhase;
|
|
112
|
+
poses: Readonly<Record<string, PoseNow>>;
|
|
113
|
+
burns: Readonly<Record<string, number>>;
|
|
114
|
+
/** Metres. */
|
|
115
|
+
groundY: number;
|
|
116
|
+
smoke: number;
|
|
117
|
+
air: number;
|
|
118
|
+
/** A part stands away from the stack. */
|
|
119
|
+
separated: boolean;
|
|
120
|
+
}
|
|
121
|
+
export interface FlightPart {
|
|
122
|
+
slot: string;
|
|
123
|
+
/** Where it stands in the stack: the base's height, metres. */
|
|
124
|
+
baseY: number;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Everything the picture needs at a place on the timeline, for a vehicle `height` metres tall.
|
|
128
|
+
*
|
|
129
|
+
* @param flight A flight.
|
|
130
|
+
* @param position A place on the timeline.
|
|
131
|
+
* @param parts Each part's slot and the height of its base in the stack, in metres.
|
|
132
|
+
* @param height The vehicle's height in metres.
|
|
133
|
+
* @returns The frame to draw.
|
|
134
|
+
* @example
|
|
135
|
+
* ```ts
|
|
136
|
+
* import { flightOf, frameAt } from "@johnmorrisdotca/uchusen-rockets";
|
|
137
|
+
*
|
|
138
|
+
* const flight = flightOf("falcon-9", "block-5");
|
|
139
|
+
* if (flight) console.log(frameAt(flight, 1, [{ slot: "first-stage", baseY: 0 }, { slot: "second-stage", baseY: 41 }], 70).burns);
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
export declare function frameAt(flight: Flight, position: number, parts: readonly FlightPart[], height: number): FlightFrame;
|
|
143
|
+
/** How far a flight's picture reaches, so the camera can hold all of it: the widest and highest every part stands, from the stack's own bounds. */
|
|
144
|
+
export declare function flightBounds(flight: Flight, parts: readonly (FlightPart & {
|
|
145
|
+
height: number;
|
|
146
|
+
radius: number;
|
|
147
|
+
})[], height: number): {
|
|
148
|
+
min: [number, number, number];
|
|
149
|
+
max: [number, number, number];
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* The clock of one timeline: where it is and whether it runs. It only moves when told to, once a frame by whoever draws, so a timeline out of sight stands still.
|
|
153
|
+
*
|
|
154
|
+
* @param flight The flight whose clock this is.
|
|
155
|
+
* @example
|
|
156
|
+
* ```ts
|
|
157
|
+
* import { FlightClock, flightOf } from "@johnmorrisdotca/uchusen-rockets";
|
|
158
|
+
*
|
|
159
|
+
* const flight = flightOf("falcon-9", "block-5");
|
|
160
|
+
* if (flight) {
|
|
161
|
+
* const clock = new FlightClock(flight);
|
|
162
|
+
* clock.play();
|
|
163
|
+
* clock.advance(2.4);
|
|
164
|
+
* console.log(clock.position, clock.ended);
|
|
165
|
+
* }
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
export declare class FlightClock {
|
|
169
|
+
readonly flight: Flight;
|
|
170
|
+
position: number;
|
|
171
|
+
playing: boolean;
|
|
172
|
+
constructor(flight: Flight);
|
|
173
|
+
get ended(): boolean;
|
|
174
|
+
play(): void;
|
|
175
|
+
pause(): void;
|
|
176
|
+
seek(position: number): void;
|
|
177
|
+
/** Moves on by `seconds` of the screen's time, and stops at the end. */
|
|
178
|
+
advance(seconds: number): void;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* A time as words: `T+2:35`, `T-0:03`, `T+1:05:20`. A blank says so.
|
|
182
|
+
*
|
|
183
|
+
* @param at A figure holding seconds from the flight's zero.
|
|
184
|
+
* @returns The time as text, such as `T+2:35`. A blank figure gives "Time: no source".
|
|
185
|
+
* @example
|
|
186
|
+
* ```ts
|
|
187
|
+
* import { clockWords } from "@johnmorrisdotca/uchusen-rockets";
|
|
188
|
+
*
|
|
189
|
+
* console.log(clockWords({ value: 155, source: "wikipedia-starship" }), clockWords({ value: -3, source: null }));
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
export declare function clockWords(at: Figure): string;
|
package/dist/flight.js
ADDED
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
// A flight as a timeline: where the reader is along it, which engines burn there and how each part stands. The times and the counts are `src/data/flights.ts`, each with its page. Moving between the phases is a picture. Pure: no three.js and no DOM.
|
|
2
|
+
import { FLIGHTS } from "./data/flights.js";
|
|
3
|
+
/**
|
|
4
|
+
* Seconds a phase takes on the screen when the timeline plays: one flight in under a minute, whatever its real length.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* import { SECONDS_PER_PHASE } from "@johnmorrisdotca/uchusen-rockets";
|
|
9
|
+
*
|
|
10
|
+
* console.log(SECONDS_PER_PHASE);
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export const SECONDS_PER_PHASE = 2.4;
|
|
14
|
+
/**
|
|
15
|
+
* The flight for a rocket's variant, when a page gives one.
|
|
16
|
+
*
|
|
17
|
+
* @param rocket A rocket's id.
|
|
18
|
+
* @param variant A variant's id, or undefined.
|
|
19
|
+
* @returns The flight for that variant, or null when it has none.
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* import { flightOf } from "@johnmorrisdotca/uchusen-rockets";
|
|
23
|
+
*
|
|
24
|
+
* console.log(flightOf("starship", "v3")?.name, flightOf("starship", "v4"));
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export const flightOf = (rocket, variant) => FLIGHTS.find((flight) => flight.rocket === rocket && flight.variant === variant) ?? null;
|
|
28
|
+
/**
|
|
29
|
+
* The last place on the timeline: the last phase.
|
|
30
|
+
*
|
|
31
|
+
* @param flight A flight.
|
|
32
|
+
* @returns The index of its last phase.
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* import { flightOf, lastPosition } from "@johnmorrisdotca/uchusen-rockets";
|
|
36
|
+
*
|
|
37
|
+
* const flight = flightOf("falcon-9", "block-5");
|
|
38
|
+
* console.log(flight ? lastPosition(flight) : null);
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export const lastPosition = (flight) => flight.phases.length - 1;
|
|
42
|
+
/**
|
|
43
|
+
* Which phase a place on the timeline is in, and how far along to the next. A value that is not a number is the start.
|
|
44
|
+
*
|
|
45
|
+
* @param flight A flight.
|
|
46
|
+
* @param position A place on the timeline: 0 is the first phase, 1 the second, 1.5 halfway to the third.
|
|
47
|
+
* @returns The phase index, how far along to the next (0 to 1) and the phase.
|
|
48
|
+
* @example
|
|
49
|
+
* ```ts
|
|
50
|
+
* import { flightOf, phaseAt } from "@johnmorrisdotca/uchusen-rockets";
|
|
51
|
+
*
|
|
52
|
+
* const flight = flightOf("falcon-9", "block-5");
|
|
53
|
+
* if (flight) console.log(phaseAt(flight, 1.5).phase.name);
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export function phaseAt(flight, position) {
|
|
57
|
+
const last = lastPosition(flight);
|
|
58
|
+
const place = Number.isFinite(position) ? Math.min(last, Math.max(0, position)) : 0;
|
|
59
|
+
const index = Math.floor(place);
|
|
60
|
+
return { index, along: place - index, phase: flight.phases[index] };
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The place on the timeline of a phase by its id, or null for one the flight does not have.
|
|
64
|
+
*
|
|
65
|
+
* @param flight A flight.
|
|
66
|
+
* @param id A phase's id, or null or undefined.
|
|
67
|
+
* @returns The place of that phase on the timeline, or null for an id the flight does not have.
|
|
68
|
+
* @example
|
|
69
|
+
* ```ts
|
|
70
|
+
* import { flightOf, phasePosition } from "@johnmorrisdotca/uchusen-rockets";
|
|
71
|
+
*
|
|
72
|
+
* const flight = flightOf("falcon-9", "block-5");
|
|
73
|
+
* if (flight) console.log(phasePosition(flight, "nonsense"));
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export function phasePosition(flight, id) {
|
|
77
|
+
const index = flight.phases.findIndex((phase) => phase.id === id);
|
|
78
|
+
return index < 0 ? null : index;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* How many engines of each part burn in a phase, as drawn: a blank figure draws its `drawn`.
|
|
82
|
+
*
|
|
83
|
+
* @param phase A phase of a flight.
|
|
84
|
+
* @returns The number of engines burning for each part, by slot.
|
|
85
|
+
* @example
|
|
86
|
+
* ```ts
|
|
87
|
+
* import { burnsOf, flightOf } from "@johnmorrisdotca/uchusen-rockets";
|
|
88
|
+
*
|
|
89
|
+
* const phase = flightOf("falcon-9", "block-5")?.phases[0];
|
|
90
|
+
* console.log(phase ? burnsOf(phase) : {});
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
export function burnsOf(phase) {
|
|
94
|
+
const out = {};
|
|
95
|
+
for (const [slot, burn] of Object.entries(phase.burns))
|
|
96
|
+
out[slot] = burn.engines.value ?? burn.drawn ?? 0;
|
|
97
|
+
return out;
|
|
98
|
+
}
|
|
99
|
+
const smooth = (t) => t * t * (3 - 2 * t);
|
|
100
|
+
const mix = (a, b, t) => a + (b - a) * t;
|
|
101
|
+
const poseIn = (pose, part, height) => ({
|
|
102
|
+
dx: (pose?.dx ?? 0) * height,
|
|
103
|
+
dy: pose?.rest ? -part.baseY : (pose?.dy ?? 0) * height,
|
|
104
|
+
pitch: pose?.pitch ?? 0,
|
|
105
|
+
gone: pose?.gone ?? false,
|
|
106
|
+
});
|
|
107
|
+
/**
|
|
108
|
+
* Everything the picture needs at a place on the timeline, for a vehicle `height` metres tall.
|
|
109
|
+
*
|
|
110
|
+
* @param flight A flight.
|
|
111
|
+
* @param position A place on the timeline.
|
|
112
|
+
* @param parts Each part's slot and the height of its base in the stack, in metres.
|
|
113
|
+
* @param height The vehicle's height in metres.
|
|
114
|
+
* @returns The frame to draw.
|
|
115
|
+
* @example
|
|
116
|
+
* ```ts
|
|
117
|
+
* import { flightOf, frameAt } from "@johnmorrisdotca/uchusen-rockets";
|
|
118
|
+
*
|
|
119
|
+
* const flight = flightOf("falcon-9", "block-5");
|
|
120
|
+
* if (flight) console.log(frameAt(flight, 1, [{ slot: "first-stage", baseY: 0 }, { slot: "second-stage", baseY: 41 }], 70).burns);
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
export function frameAt(flight, position, parts, height) {
|
|
124
|
+
const { index, along, phase } = phaseAt(flight, position);
|
|
125
|
+
const next = flight.phases[Math.min(index + 1, lastPosition(flight))];
|
|
126
|
+
const t = smooth(along);
|
|
127
|
+
const poses = {};
|
|
128
|
+
let separated = false;
|
|
129
|
+
for (const part of parts) {
|
|
130
|
+
const from = poseIn(phase.pose[part.slot], part, height);
|
|
131
|
+
const to = poseIn(next.pose[part.slot], part, height);
|
|
132
|
+
const now = { dx: mix(from.dx, to.dx, t), dy: mix(from.dy, to.dy, t), pitch: mix(from.pitch, to.pitch, t), gone: from.gone };
|
|
133
|
+
poses[part.slot] = now;
|
|
134
|
+
if (now.dx !== 0 || now.dy !== 0)
|
|
135
|
+
separated = true;
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
index,
|
|
139
|
+
phase,
|
|
140
|
+
poses,
|
|
141
|
+
burns: burnsOf(phase),
|
|
142
|
+
groundY: -mix(phase.ground, next.ground, t) * height,
|
|
143
|
+
smoke: mix(phase.smoke ?? 0, next.smoke ?? 0, t),
|
|
144
|
+
air: mix(phase.air ?? 0, next.air ?? 0, t),
|
|
145
|
+
separated,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/** How far a flight's picture reaches, so the camera can hold all of it: the widest and highest every part stands, from the stack's own bounds. */
|
|
149
|
+
export function flightBounds(flight, parts, height) {
|
|
150
|
+
const min = [Infinity, 0, Infinity];
|
|
151
|
+
const max = [-Infinity, height, -Infinity];
|
|
152
|
+
for (const part of parts)
|
|
153
|
+
for (const phase of flight.phases) {
|
|
154
|
+
const pose = poseIn(phase.pose[part.slot], part, height);
|
|
155
|
+
if (pose.gone)
|
|
156
|
+
continue;
|
|
157
|
+
const reach = Math.max(part.radius, (Math.abs(Math.sin((pose.pitch * Math.PI) / 180)) * part.height) / 2);
|
|
158
|
+
min[0] = Math.min(min[0], pose.dx - reach);
|
|
159
|
+
max[0] = Math.max(max[0], pose.dx + reach);
|
|
160
|
+
min[1] = Math.min(min[1], part.baseY + pose.dy);
|
|
161
|
+
max[1] = Math.max(max[1], part.baseY + pose.dy + part.height);
|
|
162
|
+
min[2] = Math.min(min[2], -part.radius);
|
|
163
|
+
max[2] = Math.max(max[2], part.radius);
|
|
164
|
+
}
|
|
165
|
+
return { min, max };
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* The clock of one timeline: where it is and whether it runs. It only moves when told to, once a frame by whoever draws, so a timeline out of sight stands still.
|
|
169
|
+
*
|
|
170
|
+
* @param flight The flight whose clock this is.
|
|
171
|
+
* @example
|
|
172
|
+
* ```ts
|
|
173
|
+
* import { FlightClock, flightOf } from "@johnmorrisdotca/uchusen-rockets";
|
|
174
|
+
*
|
|
175
|
+
* const flight = flightOf("falcon-9", "block-5");
|
|
176
|
+
* if (flight) {
|
|
177
|
+
* const clock = new FlightClock(flight);
|
|
178
|
+
* clock.play();
|
|
179
|
+
* clock.advance(2.4);
|
|
180
|
+
* console.log(clock.position, clock.ended);
|
|
181
|
+
* }
|
|
182
|
+
* ```
|
|
183
|
+
*/
|
|
184
|
+
export class FlightClock {
|
|
185
|
+
flight;
|
|
186
|
+
position = 0;
|
|
187
|
+
playing = false;
|
|
188
|
+
constructor(flight) {
|
|
189
|
+
this.flight = flight;
|
|
190
|
+
}
|
|
191
|
+
get ended() {
|
|
192
|
+
return this.position >= lastPosition(this.flight);
|
|
193
|
+
}
|
|
194
|
+
play() {
|
|
195
|
+
if (this.ended)
|
|
196
|
+
this.position = 0;
|
|
197
|
+
this.playing = true;
|
|
198
|
+
}
|
|
199
|
+
pause() {
|
|
200
|
+
this.playing = false;
|
|
201
|
+
}
|
|
202
|
+
seek(position) {
|
|
203
|
+
const { index, along } = phaseAt(this.flight, position);
|
|
204
|
+
this.position = index + along;
|
|
205
|
+
this.playing = false;
|
|
206
|
+
}
|
|
207
|
+
/** Moves on by `seconds` of the screen's time, and stops at the end. */
|
|
208
|
+
advance(seconds) {
|
|
209
|
+
if (!this.playing)
|
|
210
|
+
return;
|
|
211
|
+
this.position = Math.min(lastPosition(this.flight), this.position + seconds / SECONDS_PER_PHASE);
|
|
212
|
+
if (this.ended)
|
|
213
|
+
this.playing = false;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* A time as words: `T+2:35`, `T-0:03`, `T+1:05:20`. A blank says so.
|
|
218
|
+
*
|
|
219
|
+
* @param at A figure holding seconds from the flight's zero.
|
|
220
|
+
* @returns The time as text, such as `T+2:35`. A blank figure gives "Time: no source".
|
|
221
|
+
* @example
|
|
222
|
+
* ```ts
|
|
223
|
+
* import { clockWords } from "@johnmorrisdotca/uchusen-rockets";
|
|
224
|
+
*
|
|
225
|
+
* console.log(clockWords({ value: 155, source: "wikipedia-starship" }), clockWords({ value: -3, source: null }));
|
|
226
|
+
* ```
|
|
227
|
+
*/
|
|
228
|
+
export function clockWords(at) {
|
|
229
|
+
if (at.value === null)
|
|
230
|
+
return "Time: no source";
|
|
231
|
+
const sign = at.value < 0 ? "-" : "+";
|
|
232
|
+
const total = Math.abs(at.value);
|
|
233
|
+
const h = Math.floor(total / 3600);
|
|
234
|
+
const m = Math.floor((total % 3600) / 60);
|
|
235
|
+
const s = String(total % 60).padStart(2, "0");
|
|
236
|
+
return h > 0 ? `T${sign}${h}:${String(m).padStart(2, "0")}:${s}` : `T${sign}${m}:${s}`;
|
|
237
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
declare const HTMLBase: typeof HTMLElement;
|
|
2
|
+
/**
|
|
3
|
+
* The `<uchusen-flight>` element: a play button, a slider and the phase's name for a rocket's flight. Its `for` attribute is the id of the `<uchusen-rocket>` it drives. A variant with no flight says so.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts no-run
|
|
7
|
+
* import { UchusenFlight } from "@johnmorrisdotca/uchusen-rockets/element";
|
|
8
|
+
*
|
|
9
|
+
* const flight: UchusenFlight = document.createElement("uchusen-flight") as UchusenFlight;
|
|
10
|
+
* flight.setAttribute("for", "rocket");
|
|
11
|
+
* document.body.append(flight);
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export declare class UchusenFlight extends HTMLBase {
|
|
15
|
+
static readonly observedAttributes: string[];
|
|
16
|
+
private rocket;
|
|
17
|
+
private drawnFor;
|
|
18
|
+
private chartKey;
|
|
19
|
+
private parts;
|
|
20
|
+
connectedCallback(): void;
|
|
21
|
+
disconnectedCallback(): void;
|
|
22
|
+
attributeChangedCallback(): void;
|
|
23
|
+
private bind;
|
|
24
|
+
private build;
|
|
25
|
+
private drawAbout;
|
|
26
|
+
private update;
|
|
27
|
+
}
|
|
28
|
+
export declare function defineUchusenFlight(): void;
|
|
29
|
+
declare global {
|
|
30
|
+
interface HTMLElementTagNameMap {
|
|
31
|
+
"uchusen-flight": UchusenFlight;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export {};
|