@johnmorrisdotca/uchusen-rockets 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +44 -0
- package/LICENSES/ODbL-1.0.txt +540 -0
- package/NOTICE.md +56 -6
- package/README.md +49 -14
- package/dist/assets/apollo-soyuz-apollo-soyuz-apart.painted.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-apart.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-apart.thick.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-csm.glb +0 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-csm.painted.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-csm.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-csm.thick.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.glb +0 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.painted.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.thick.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.glb +0 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.painted.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.thick.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz.glb +0 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz.painted.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz.thick.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-apart.painted.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-apart.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-apart.thick.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-capsule.glb +0 -0
- package/dist/assets/dragon-cargo-dragon-2-capsule.painted.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-capsule.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-capsule.thick.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-trunk.glb +0 -0
- package/dist/assets/dragon-cargo-dragon-2-trunk.painted.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-trunk.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-trunk.thick.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2.glb +0 -0
- package/dist/assets/dragon-cargo-dragon-2.painted.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2.thick.svg +1 -0
- package/dist/assets/dragon-crew-dragon-inside.glb +0 -0
- package/dist/assets/dragon-crew-dragon-inside.painted.svg +1 -0
- package/dist/assets/dragon-crew-dragon-inside.svg +1 -0
- package/dist/assets/dragon-crew-dragon-inside.thick.svg +1 -0
- package/dist/assets/dragon-dragon-1-apart.painted.svg +1 -1
- package/dist/assets/dragon-dragon-1-apart.svg +1 -1
- package/dist/assets/dragon-dragon-1-apart.thick.svg +1 -1
- package/dist/assets/dragon-dragon-1-capsule.painted.svg +1 -1
- package/dist/assets/dragon-dragon-1-capsule.svg +1 -1
- package/dist/assets/dragon-dragon-1-capsule.thick.svg +1 -1
- package/dist/assets/dragon-dragon-1-trunk.painted.svg +1 -1
- package/dist/assets/dragon-dragon-1-trunk.svg +1 -1
- package/dist/assets/dragon-dragon-1-trunk.thick.svg +1 -1
- package/dist/assets/dragon-dragon-1.painted.svg +1 -1
- package/dist/assets/dragon-dragon-1.svg +1 -1
- package/dist/assets/dragon-dragon-1.thick.svg +1 -1
- package/dist/assets/dragon-dragon-2-apart.painted.svg +1 -1
- package/dist/assets/dragon-dragon-2-apart.svg +1 -1
- package/dist/assets/dragon-dragon-2-apart.thick.svg +1 -1
- package/dist/assets/dragon-dragon-2-capsule.painted.svg +1 -1
- package/dist/assets/dragon-dragon-2-capsule.svg +1 -1
- package/dist/assets/dragon-dragon-2-capsule.thick.svg +1 -1
- package/dist/assets/dragon-dragon-2-trunk.painted.svg +1 -1
- package/dist/assets/dragon-dragon-2-trunk.svg +1 -1
- package/dist/assets/dragon-dragon-2-trunk.thick.svg +1 -1
- package/dist/assets/dragon-dragon-2.painted.svg +1 -1
- package/dist/assets/dragon-dragon-2.svg +1 -1
- package/dist/assets/dragon-dragon-2.thick.svg +1 -1
- package/dist/assets/droneship-asog-apart.painted.svg +1 -0
- package/dist/assets/droneship-asog-apart.svg +1 -0
- package/dist/assets/droneship-asog-apart.thick.svg +1 -0
- package/dist/assets/droneship-asog-deck.glb +0 -0
- package/dist/assets/droneship-asog-deck.painted.svg +1 -0
- package/dist/assets/droneship-asog-deck.svg +1 -0
- package/dist/assets/droneship-asog-deck.thick.svg +1 -0
- package/dist/assets/droneship-asog-landed.glb +0 -0
- package/dist/assets/droneship-asog-landed.painted.svg +1 -0
- package/dist/assets/droneship-asog-landed.svg +1 -0
- package/dist/assets/droneship-asog-landed.thick.svg +1 -0
- package/dist/assets/droneship-asog.glb +0 -0
- package/dist/assets/droneship-asog.painted.svg +1 -0
- package/dist/assets/droneship-asog.svg +1 -0
- package/dist/assets/droneship-asog.thick.svg +1 -0
- package/dist/assets/droneship-jrti-apart.painted.svg +1 -0
- package/dist/assets/droneship-jrti-apart.svg +1 -0
- package/dist/assets/droneship-jrti-apart.thick.svg +1 -0
- package/dist/assets/droneship-jrti-deck.glb +0 -0
- package/dist/assets/droneship-jrti-deck.painted.svg +1 -0
- package/dist/assets/droneship-jrti-deck.svg +1 -0
- package/dist/assets/droneship-jrti-deck.thick.svg +1 -0
- package/dist/assets/droneship-jrti-landed.glb +0 -0
- package/dist/assets/droneship-jrti-landed.painted.svg +1 -0
- package/dist/assets/droneship-jrti-landed.svg +1 -0
- package/dist/assets/droneship-jrti-landed.thick.svg +1 -0
- package/dist/assets/droneship-jrti.glb +0 -0
- package/dist/assets/droneship-jrti.painted.svg +1 -0
- package/dist/assets/droneship-jrti.svg +1 -0
- package/dist/assets/droneship-jrti.thick.svg +1 -0
- package/dist/assets/droneship-ocisly-apart.painted.svg +1 -0
- package/dist/assets/droneship-ocisly-apart.svg +1 -0
- package/dist/assets/droneship-ocisly-apart.thick.svg +1 -0
- package/dist/assets/droneship-ocisly-deck.glb +0 -0
- package/dist/assets/droneship-ocisly-deck.painted.svg +1 -0
- package/dist/assets/droneship-ocisly-deck.svg +1 -0
- package/dist/assets/droneship-ocisly-deck.thick.svg +1 -0
- package/dist/assets/droneship-ocisly-landed.glb +0 -0
- package/dist/assets/droneship-ocisly-landed.painted.svg +1 -0
- package/dist/assets/droneship-ocisly-landed.svg +1 -0
- package/dist/assets/droneship-ocisly-landed.thick.svg +1 -0
- package/dist/assets/droneship-ocisly.glb +0 -0
- package/dist/assets/droneship-ocisly.painted.svg +1 -0
- package/dist/assets/droneship-ocisly.svg +1 -0
- package/dist/assets/droneship-ocisly.thick.svg +1 -0
- package/dist/assets/electron-electron-adapter.glb +0 -0
- package/dist/assets/electron-electron-adapter.painted.svg +1 -0
- package/dist/assets/electron-electron-adapter.svg +1 -0
- package/dist/assets/electron-electron-adapter.thick.svg +1 -0
- package/dist/assets/electron-electron-apart.painted.svg +1 -0
- package/dist/assets/electron-electron-apart.svg +1 -0
- package/dist/assets/electron-electron-apart.thick.svg +1 -0
- package/dist/assets/electron-electron-fairing.glb +0 -0
- package/dist/assets/electron-electron-fairing.painted.svg +1 -0
- package/dist/assets/electron-electron-fairing.svg +1 -0
- package/dist/assets/electron-electron-fairing.thick.svg +1 -0
- package/dist/assets/electron-electron-first-stage.glb +0 -0
- package/dist/assets/electron-electron-first-stage.painted.svg +1 -0
- package/dist/assets/electron-electron-first-stage.svg +1 -0
- package/dist/assets/electron-electron-first-stage.thick.svg +1 -0
- package/dist/assets/electron-electron-second-stage.glb +0 -0
- package/dist/assets/electron-electron-second-stage.painted.svg +1 -0
- package/dist/assets/electron-electron-second-stage.svg +1 -0
- package/dist/assets/electron-electron-second-stage.thick.svg +1 -0
- package/dist/assets/electron-electron.glb +0 -0
- package/dist/assets/electron-electron.painted.svg +1 -0
- package/dist/assets/electron-electron.svg +1 -0
- package/dist/assets/electron-electron.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-apart.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-apart.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-apart.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-fairing.glb +0 -0
- package/dist/assets/falcon-1-falcon-1-fairing.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-fairing.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-fairing.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-first-stage.glb +0 -0
- package/dist/assets/falcon-1-falcon-1-first-stage.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-first-stage.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-first-stage.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-second-stage.glb +0 -0
- package/dist/assets/falcon-1-falcon-1-second-stage.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-second-stage.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-second-stage.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1.glb +0 -0
- package/dist/assets/falcon-1-falcon-1.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1.svg +1 -0
- package/dist/assets/falcon-1-falcon-1.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-apart.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-apart.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-apart.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-fairing.glb +0 -0
- package/dist/assets/falcon-1-falcon-1e-fairing.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-fairing.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-fairing.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-first-stage.glb +0 -0
- package/dist/assets/falcon-1-falcon-1e-first-stage.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-first-stage.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-first-stage.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-second-stage.glb +0 -0
- package/dist/assets/falcon-1-falcon-1e-second-stage.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-second-stage.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-second-stage.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e.glb +0 -0
- package/dist/assets/falcon-1-falcon-1e.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e.thick.svg +1 -0
- package/dist/assets/falcon-9-block-5-apart.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-apart.svg +1 -1
- package/dist/assets/falcon-9-block-5-apart.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-apart.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-apart.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-apart.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-capsule.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-capsule.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-capsule.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-first-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-first-stage.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-first-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-second-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-second-stage.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-second-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-trunk.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-trunk.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-trunk.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-fairing.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-fairing.svg +1 -1
- package/dist/assets/falcon-9-block-5-fairing.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-first-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-first-stage.svg +1 -1
- package/dist/assets/falcon-9-block-5-first-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-second-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-second-stage.svg +1 -1
- package/dist/assets/falcon-9-block-5-second-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5.svg +1 -1
- package/dist/assets/falcon-9-block-5.thick.svg +1 -1
- package/dist/assets/falcon-9-ft-apart.painted.svg +1 -1
- package/dist/assets/falcon-9-ft-apart.svg +1 -1
- package/dist/assets/falcon-9-ft-apart.thick.svg +1 -1
- package/dist/assets/falcon-9-ft-fairing.painted.svg +1 -1
- package/dist/assets/falcon-9-ft-fairing.svg +1 -1
- package/dist/assets/falcon-9-ft-fairing.thick.svg +1 -1
- package/dist/assets/falcon-9-ft-first-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-ft-first-stage.svg +1 -1
- package/dist/assets/falcon-9-ft-first-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-ft-second-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-ft-second-stage.svg +1 -1
- package/dist/assets/falcon-9-ft-second-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-ft.painted.svg +1 -1
- package/dist/assets/falcon-9-ft.svg +1 -1
- package/dist/assets/falcon-9-ft.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.0-apart.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.0-apart.svg +1 -1
- package/dist/assets/falcon-9-v1.0-apart.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.0-fairing.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.0-fairing.svg +1 -1
- package/dist/assets/falcon-9-v1.0-fairing.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.0-first-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.0-first-stage.svg +1 -1
- package/dist/assets/falcon-9-v1.0-first-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.0-second-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.0-second-stage.svg +1 -1
- package/dist/assets/falcon-9-v1.0-second-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.0.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.0.svg +1 -1
- package/dist/assets/falcon-9-v1.0.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.1-apart.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.1-apart.svg +1 -1
- package/dist/assets/falcon-9-v1.1-apart.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.1-fairing.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.1-fairing.svg +1 -1
- package/dist/assets/falcon-9-v1.1-fairing.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.1-first-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.1-first-stage.svg +1 -1
- package/dist/assets/falcon-9-v1.1-first-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.1-second-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.1-second-stage.svg +1 -1
- package/dist/assets/falcon-9-v1.1-second-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.1.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.1.svg +1 -1
- package/dist/assets/falcon-9-v1.1.thick.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-apart.painted.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-apart.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-apart.thick.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-centre.painted.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-centre.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-centre.thick.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-side-left.painted.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-side-left.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-side-left.thick.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-side-right.painted.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-side-right.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-side-right.thick.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy.painted.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy.thick.svg +1 -1
- package/dist/assets/gemini-gemini-adapter.glb +0 -0
- package/dist/assets/gemini-gemini-adapter.painted.svg +1 -0
- package/dist/assets/gemini-gemini-adapter.svg +1 -0
- package/dist/assets/gemini-gemini-adapter.thick.svg +1 -0
- package/dist/assets/gemini-gemini-apart.painted.svg +1 -0
- package/dist/assets/gemini-gemini-apart.svg +1 -0
- package/dist/assets/gemini-gemini-apart.thick.svg +1 -0
- package/dist/assets/gemini-gemini-capsule.glb +0 -0
- package/dist/assets/gemini-gemini-capsule.painted.svg +1 -0
- package/dist/assets/gemini-gemini-capsule.svg +1 -0
- package/dist/assets/gemini-gemini-capsule.thick.svg +1 -0
- package/dist/assets/gemini-gemini.glb +0 -0
- package/dist/assets/gemini-gemini.painted.svg +1 -0
- package/dist/assets/gemini-gemini.svg +1 -0
- package/dist/assets/gemini-gemini.thick.svg +1 -0
- package/dist/assets/grasshopper-grasshopper.painted.svg +1 -1
- package/dist/assets/grasshopper-grasshopper.svg +1 -1
- package/dist/assets/grasshopper-grasshopper.thick.svg +1 -1
- package/dist/assets/hubble-hubble.glb +0 -0
- package/dist/assets/hubble-hubble.painted.svg +1 -0
- package/dist/assets/hubble-hubble.svg +1 -0
- package/dist/assets/hubble-hubble.thick.svg +1 -0
- package/dist/assets/iss-iss.glb +0 -0
- package/dist/assets/iss-iss.painted.svg +1 -0
- package/dist/assets/iss-iss.svg +1 -0
- package/dist/assets/iss-iss.thick.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c.glb +0 -0
- package/dist/assets/jupiter-c-jupiter-c.painted.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-1-apart.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-1-apart.svg +1 -0
- package/dist/assets/landing-zone-lz-1-apart.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-1-landed.glb +0 -0
- package/dist/assets/landing-zone-lz-1-landed.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-1-landed.svg +1 -0
- package/dist/assets/landing-zone-lz-1-landed.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-1-pad.glb +0 -0
- package/dist/assets/landing-zone-lz-1-pad.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-1-pad.svg +1 -0
- package/dist/assets/landing-zone-lz-1-pad.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-1.glb +0 -0
- package/dist/assets/landing-zone-lz-1.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-1.svg +1 -0
- package/dist/assets/landing-zone-lz-1.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-4-apart.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-4-apart.svg +1 -0
- package/dist/assets/landing-zone-lz-4-apart.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-4-landed.glb +0 -0
- package/dist/assets/landing-zone-lz-4-landed.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-4-landed.svg +1 -0
- package/dist/assets/landing-zone-lz-4-landed.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-4-pad.glb +0 -0
- package/dist/assets/landing-zone-lz-4-pad.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-4-pad.svg +1 -0
- package/dist/assets/landing-zone-lz-4-pad.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-4.glb +0 -0
- package/dist/assets/landing-zone-lz-4.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-4.svg +1 -0
- package/dist/assets/landing-zone-lz-4.thick.svg +1 -0
- package/dist/assets/launch-tower-catch-apart.painted.svg +1 -0
- package/dist/assets/launch-tower-catch-apart.svg +1 -0
- package/dist/assets/launch-tower-catch-apart.thick.svg +1 -0
- package/dist/assets/launch-tower-catch-arms.glb +0 -0
- package/dist/assets/launch-tower-catch-arms.painted.svg +1 -0
- package/dist/assets/launch-tower-catch-arms.svg +1 -0
- package/dist/assets/launch-tower-catch-arms.thick.svg +1 -0
- package/dist/assets/launch-tower-catch-booster.glb +0 -0
- package/dist/assets/launch-tower-catch-booster.painted.svg +1 -0
- package/dist/assets/launch-tower-catch-booster.svg +1 -0
- package/dist/assets/launch-tower-catch-booster.thick.svg +1 -0
- package/dist/assets/launch-tower-catch-mount.glb +0 -0
- package/dist/assets/launch-tower-catch-mount.painted.svg +1 -0
- package/dist/assets/launch-tower-catch-mount.svg +1 -0
- package/dist/assets/launch-tower-catch-mount.thick.svg +1 -0
- package/dist/assets/launch-tower-catch-tower.glb +0 -0
- package/dist/assets/launch-tower-catch-tower.painted.svg +1 -0
- package/dist/assets/launch-tower-catch-tower.svg +1 -0
- package/dist/assets/launch-tower-catch-tower.thick.svg +1 -0
- package/dist/assets/launch-tower-catch.glb +0 -0
- package/dist/assets/launch-tower-catch.painted.svg +1 -0
- package/dist/assets/launch-tower-catch.svg +1 -0
- package/dist/assets/launch-tower-catch.thick.svg +1 -0
- package/dist/assets/launch-tower-stack-apart.painted.svg +1 -0
- package/dist/assets/launch-tower-stack-apart.svg +1 -0
- package/dist/assets/launch-tower-stack-apart.thick.svg +1 -0
- package/dist/assets/launch-tower-stack-arms.glb +0 -0
- package/dist/assets/launch-tower-stack-arms.painted.svg +1 -0
- package/dist/assets/launch-tower-stack-arms.svg +1 -0
- package/dist/assets/launch-tower-stack-arms.thick.svg +1 -0
- package/dist/assets/launch-tower-stack-booster.glb +0 -0
- package/dist/assets/launch-tower-stack-booster.painted.svg +1 -0
- package/dist/assets/launch-tower-stack-booster.svg +1 -0
- package/dist/assets/launch-tower-stack-booster.thick.svg +1 -0
- package/dist/assets/launch-tower-stack-mount.glb +0 -0
- package/dist/assets/launch-tower-stack-mount.painted.svg +1 -0
- package/dist/assets/launch-tower-stack-mount.svg +1 -0
- package/dist/assets/launch-tower-stack-mount.thick.svg +1 -0
- package/dist/assets/launch-tower-stack-ship.glb +0 -0
- package/dist/assets/launch-tower-stack-ship.painted.svg +1 -0
- package/dist/assets/launch-tower-stack-ship.svg +1 -0
- package/dist/assets/launch-tower-stack-ship.thick.svg +1 -0
- package/dist/assets/launch-tower-stack-tower.glb +0 -0
- package/dist/assets/launch-tower-stack-tower.painted.svg +1 -0
- package/dist/assets/launch-tower-stack-tower.svg +1 -0
- package/dist/assets/launch-tower-stack-tower.thick.svg +1 -0
- package/dist/assets/launch-tower-stack.glb +0 -0
- package/dist/assets/launch-tower-stack.painted.svg +1 -0
- package/dist/assets/launch-tower-stack.svg +1 -0
- package/dist/assets/launch-tower-stack.thick.svg +1 -0
- package/dist/assets/launch-tower-tower-apart.painted.svg +1 -0
- package/dist/assets/launch-tower-tower-apart.svg +1 -0
- package/dist/assets/launch-tower-tower-apart.thick.svg +1 -0
- package/dist/assets/launch-tower-tower-arms.glb +0 -0
- package/dist/assets/launch-tower-tower-arms.painted.svg +1 -0
- package/dist/assets/launch-tower-tower-arms.svg +1 -0
- package/dist/assets/launch-tower-tower-arms.thick.svg +1 -0
- package/dist/assets/launch-tower-tower-mount.glb +0 -0
- package/dist/assets/launch-tower-tower-mount.painted.svg +1 -0
- package/dist/assets/launch-tower-tower-mount.svg +1 -0
- package/dist/assets/launch-tower-tower-mount.thick.svg +1 -0
- package/dist/assets/launch-tower-tower-tower.glb +0 -0
- package/dist/assets/launch-tower-tower-tower.painted.svg +1 -0
- package/dist/assets/launch-tower-tower-tower.svg +1 -0
- package/dist/assets/launch-tower-tower-tower.thick.svg +1 -0
- package/dist/assets/launch-tower-tower.glb +0 -0
- package/dist/assets/launch-tower-tower.painted.svg +1 -0
- package/dist/assets/launch-tower-tower.svg +1 -0
- package/dist/assets/launch-tower-tower.thick.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-apart.painted.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-apart.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-apart.thick.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-ascent.glb +0 -0
- package/dist/assets/lunar-module-lunar-module-ascent.painted.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-ascent.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-ascent.thick.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-descent.glb +0 -0
- package/dist/assets/lunar-module-lunar-module-descent.painted.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-descent.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-descent.thick.svg +1 -0
- package/dist/assets/lunar-module-lunar-module.glb +0 -0
- package/dist/assets/lunar-module-lunar-module.painted.svg +1 -0
- package/dist/assets/lunar-module-lunar-module.svg +1 -0
- package/dist/assets/lunar-module-lunar-module.thick.svg +1 -0
- package/dist/assets/mercury-friendship-7.glb +0 -0
- package/dist/assets/mercury-friendship-7.painted.svg +1 -0
- package/dist/assets/mercury-friendship-7.svg +1 -0
- package/dist/assets/mercury-friendship-7.thick.svg +1 -0
- package/dist/assets/models/apollo-soyuz-csm.glb +0 -0
- package/dist/assets/models/apollo-soyuz-docking-module.glb +0 -0
- package/dist/assets/models/apollo-soyuz-soyuz.glb +0 -0
- package/dist/assets/models/gemini-adapter.glb +0 -0
- package/dist/assets/models/gemini-capsule.glb +0 -0
- package/dist/assets/models/hubble-telescope.glb +0 -0
- package/dist/assets/models/iss-station.glb +0 -0
- package/dist/assets/models/jupiter-c-vehicle.glb +0 -0
- package/dist/assets/models/lunar-module-ascent.glb +0 -0
- package/dist/assets/models/lunar-module-descent.glb +0 -0
- package/dist/assets/models/mercury-capsule.glb +0 -0
- package/dist/assets/models/space-shuttle-discovery-orbiter.glb +0 -0
- package/dist/assets/models/space-shuttle-stack-external-tank.glb +0 -0
- package/dist/assets/models/space-shuttle-stack-orbiter.glb +0 -0
- package/dist/assets/models/space-shuttle-stack-srb.glb +0 -0
- package/dist/assets/new-glenn-7x2-apart.painted.svg +1 -0
- package/dist/assets/new-glenn-7x2-apart.svg +1 -0
- package/dist/assets/new-glenn-7x2-apart.thick.svg +1 -0
- package/dist/assets/new-glenn-7x2-fairing.glb +0 -0
- package/dist/assets/new-glenn-7x2-fairing.painted.svg +1 -0
- package/dist/assets/new-glenn-7x2-fairing.svg +1 -0
- package/dist/assets/new-glenn-7x2-fairing.thick.svg +1 -0
- package/dist/assets/new-glenn-7x2-first-stage.glb +0 -0
- package/dist/assets/new-glenn-7x2-first-stage.painted.svg +1 -0
- package/dist/assets/new-glenn-7x2-first-stage.svg +1 -0
- package/dist/assets/new-glenn-7x2-first-stage.thick.svg +1 -0
- package/dist/assets/new-glenn-7x2-second-stage.glb +0 -0
- package/dist/assets/new-glenn-7x2-second-stage.painted.svg +1 -0
- package/dist/assets/new-glenn-7x2-second-stage.svg +1 -0
- package/dist/assets/new-glenn-7x2-second-stage.thick.svg +1 -0
- package/dist/assets/new-glenn-7x2.glb +0 -0
- package/dist/assets/new-glenn-7x2.painted.svg +1 -0
- package/dist/assets/new-glenn-7x2.svg +1 -0
- package/dist/assets/new-glenn-7x2.thick.svg +1 -0
- package/dist/assets/parts/flap-aft.painted.svg +1 -1
- package/dist/assets/parts/flap-aft.svg +1 -1
- package/dist/assets/parts/flap-aft.thick.svg +1 -1
- package/dist/assets/parts/flap-forward.painted.svg +1 -1
- package/dist/assets/parts/flap-forward.svg +1 -1
- package/dist/assets/parts/flap-forward.thick.svg +1 -1
- package/dist/assets/parts/grid-fin-four.painted.svg +1 -1
- package/dist/assets/parts/grid-fin-four.svg +1 -1
- package/dist/assets/parts/grid-fin-four.thick.svg +1 -1
- package/dist/assets/parts/grid-fin-three.painted.svg +1 -1
- package/dist/assets/parts/grid-fin-three.svg +1 -1
- package/dist/assets/parts/grid-fin-three.thick.svg +1 -1
- package/dist/assets/parts/merlin-sea-level.painted.svg +1 -1
- package/dist/assets/parts/merlin-sea-level.svg +1 -1
- package/dist/assets/parts/merlin-sea-level.thick.svg +1 -1
- package/dist/assets/parts/raptor-sea-level.painted.svg +1 -1
- package/dist/assets/parts/raptor-sea-level.svg +1 -1
- package/dist/assets/parts/raptor-sea-level.thick.svg +1 -1
- package/dist/assets/parts/raptor-vacuum.painted.svg +1 -1
- package/dist/assets/parts/raptor-vacuum.svg +1 -1
- package/dist/assets/parts/raptor-vacuum.thick.svg +1 -1
- package/dist/assets/saturn-v-saturn-v-adapter.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-adapter.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-adapter.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-adapter.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-apart.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-apart.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-apart.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-capsule.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-capsule.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-capsule.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-capsule.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-escape-tower.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-escape-tower.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-escape-tower.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-escape-tower.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-first-stage.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-first-stage.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-first-stage.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-first-stage.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-second-stage.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-second-stage.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-second-stage.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-second-stage.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-service-module.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-service-module.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-service-module.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-service-module.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-third-stage.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-third-stage.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-third-stage.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-third-stage.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v.glb +0 -0
- package/dist/assets/saturn-v-saturn-v.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v.svg +1 -0
- package/dist/assets/saturn-v-saturn-v.thick.svg +1 -0
- package/dist/assets/sls-block-1-apart.painted.svg +1 -0
- package/dist/assets/sls-block-1-apart.svg +1 -0
- package/dist/assets/sls-block-1-apart.thick.svg +1 -0
- package/dist/assets/sls-block-1-capsule.glb +0 -0
- package/dist/assets/sls-block-1-capsule.painted.svg +1 -0
- package/dist/assets/sls-block-1-capsule.svg +1 -0
- package/dist/assets/sls-block-1-capsule.thick.svg +1 -0
- package/dist/assets/sls-block-1-escape-tower.glb +0 -0
- package/dist/assets/sls-block-1-escape-tower.painted.svg +1 -0
- package/dist/assets/sls-block-1-escape-tower.svg +1 -0
- package/dist/assets/sls-block-1-escape-tower.thick.svg +1 -0
- package/dist/assets/sls-block-1-first-stage.glb +0 -0
- package/dist/assets/sls-block-1-first-stage.painted.svg +1 -0
- package/dist/assets/sls-block-1-first-stage.svg +1 -0
- package/dist/assets/sls-block-1-first-stage.thick.svg +1 -0
- package/dist/assets/sls-block-1-service-module.glb +0 -0
- package/dist/assets/sls-block-1-service-module.painted.svg +1 -0
- package/dist/assets/sls-block-1-service-module.svg +1 -0
- package/dist/assets/sls-block-1-service-module.thick.svg +1 -0
- package/dist/assets/sls-block-1-srb-left.glb +0 -0
- package/dist/assets/sls-block-1-srb-left.painted.svg +1 -0
- package/dist/assets/sls-block-1-srb-left.svg +1 -0
- package/dist/assets/sls-block-1-srb-left.thick.svg +1 -0
- package/dist/assets/sls-block-1-srb-right.glb +0 -0
- package/dist/assets/sls-block-1-srb-right.painted.svg +1 -0
- package/dist/assets/sls-block-1-srb-right.svg +1 -0
- package/dist/assets/sls-block-1-srb-right.thick.svg +1 -0
- package/dist/assets/sls-block-1-upper-stage.glb +0 -0
- package/dist/assets/sls-block-1-upper-stage.painted.svg +1 -0
- package/dist/assets/sls-block-1-upper-stage.svg +1 -0
- package/dist/assets/sls-block-1-upper-stage.thick.svg +1 -0
- package/dist/assets/sls-block-1.glb +0 -0
- package/dist/assets/sls-block-1.painted.svg +1 -0
- package/dist/assets/sls-block-1.svg +1 -0
- package/dist/assets/sls-block-1.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-apart.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-apart.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-apart.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-1.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-booster-1.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-1.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-1.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-2.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-booster-2.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-2.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-2.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-3.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-booster-3.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-3.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-3.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-4.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-booster-4.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-4.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-4.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-fairing.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-fairing.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-fairing.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-fairing.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-first-stage.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-first-stage.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-first-stage.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-first-stage.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-third-stage.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-third-stage.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-third-stage.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-third-stage.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2.glb +0 -0
- package/dist/assets/soyuz-soyuz-2.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2.svg +1 -0
- package/dist/assets/soyuz-soyuz-2.thick.svg +1 -0
- package/dist/assets/space-shuttle-discovery.glb +0 -0
- package/dist/assets/space-shuttle-discovery.painted.svg +1 -0
- package/dist/assets/space-shuttle-discovery.svg +1 -0
- package/dist/assets/space-shuttle-discovery.thick.svg +1 -0
- package/dist/assets/space-shuttle-stack-apart.painted.svg +1 -0
- package/dist/assets/space-shuttle-stack-apart.svg +1 -0
- package/dist/assets/space-shuttle-stack-apart.thick.svg +1 -0
- package/dist/assets/space-shuttle-stack-external-tank.glb +0 -0
- package/dist/assets/space-shuttle-stack-external-tank.painted.svg +1 -0
- package/dist/assets/space-shuttle-stack-external-tank.svg +1 -0
- package/dist/assets/space-shuttle-stack-external-tank.thick.svg +1 -0
- package/dist/assets/space-shuttle-stack-orbiter.glb +0 -0
- package/dist/assets/space-shuttle-stack-orbiter.painted.svg +1 -0
- package/dist/assets/space-shuttle-stack-orbiter.svg +1 -0
- package/dist/assets/space-shuttle-stack-orbiter.thick.svg +1 -0
- package/dist/assets/space-shuttle-stack-srb-left.glb +0 -0
- package/dist/assets/space-shuttle-stack-srb-left.painted.svg +1 -0
- package/dist/assets/space-shuttle-stack-srb-left.svg +1 -0
- package/dist/assets/space-shuttle-stack-srb-left.thick.svg +1 -0
- package/dist/assets/space-shuttle-stack-srb-right.glb +0 -0
- package/dist/assets/space-shuttle-stack-srb-right.painted.svg +1 -0
- package/dist/assets/space-shuttle-stack-srb-right.svg +1 -0
- package/dist/assets/space-shuttle-stack-srb-right.thick.svg +1 -0
- package/dist/assets/space-shuttle-stack.glb +0 -0
- package/dist/assets/space-shuttle-stack.painted.svg +1 -0
- package/dist/assets/space-shuttle-stack.svg +1 -0
- package/dist/assets/space-shuttle-stack.thick.svg +1 -0
- package/dist/assets/starbase-build-site-apart.painted.svg +1 -0
- package/dist/assets/starbase-build-site-apart.svg +1 -0
- package/dist/assets/starbase-build-site-apart.thick.svg +1 -0
- package/dist/assets/starbase-build-site-garden.glb +0 -0
- package/dist/assets/starbase-build-site-garden.painted.svg +1 -0
- package/dist/assets/starbase-build-site-garden.svg +1 -0
- package/dist/assets/starbase-build-site-garden.thick.svg +1 -0
- package/dist/assets/starbase-build-site-ground.glb +0 -0
- package/dist/assets/starbase-build-site-ground.painted.svg +1 -0
- package/dist/assets/starbase-build-site-ground.svg +1 -0
- package/dist/assets/starbase-build-site-ground.thick.svg +1 -0
- package/dist/assets/starbase-build-site-mega-bays.glb +0 -0
- package/dist/assets/starbase-build-site-mega-bays.painted.svg +1 -0
- package/dist/assets/starbase-build-site-mega-bays.svg +1 -0
- package/dist/assets/starbase-build-site-mega-bays.thick.svg +1 -0
- package/dist/assets/starbase-build-site-sign.glb +0 -0
- package/dist/assets/starbase-build-site-sign.painted.svg +1 -0
- package/dist/assets/starbase-build-site-sign.svg +1 -0
- package/dist/assets/starbase-build-site-sign.thick.svg +1 -0
- package/dist/assets/starbase-build-site-starfactory.glb +0 -0
- package/dist/assets/starbase-build-site-starfactory.painted.svg +1 -0
- package/dist/assets/starbase-build-site-starfactory.svg +1 -0
- package/dist/assets/starbase-build-site-starfactory.thick.svg +1 -0
- package/dist/assets/starbase-build-site.glb +0 -0
- package/dist/assets/starbase-build-site.painted.svg +1 -0
- package/dist/assets/starbase-build-site.svg +1 -0
- package/dist/assets/starbase-build-site.thick.svg +1 -0
- package/dist/assets/starbase-city-apart.painted.svg +1 -0
- package/dist/assets/starbase-city-apart.svg +1 -0
- package/dist/assets/starbase-city-apart.thick.svg +1 -0
- package/dist/assets/starbase-city-garden.glb +0 -0
- package/dist/assets/starbase-city-garden.painted.svg +1 -0
- package/dist/assets/starbase-city-garden.svg +1 -0
- package/dist/assets/starbase-city-garden.thick.svg +1 -0
- package/dist/assets/starbase-city-ground.glb +0 -0
- package/dist/assets/starbase-city-ground.painted.svg +1 -0
- package/dist/assets/starbase-city-ground.svg +1 -0
- package/dist/assets/starbase-city-ground.thick.svg +1 -0
- package/dist/assets/starbase-city-mega-bays.glb +0 -0
- package/dist/assets/starbase-city-mega-bays.painted.svg +1 -0
- package/dist/assets/starbase-city-mega-bays.svg +1 -0
- package/dist/assets/starbase-city-mega-bays.thick.svg +1 -0
- package/dist/assets/starbase-city-on-pad.glb +0 -0
- package/dist/assets/starbase-city-on-pad.painted.svg +1 -0
- package/dist/assets/starbase-city-on-pad.svg +1 -0
- package/dist/assets/starbase-city-on-pad.thick.svg +1 -0
- package/dist/assets/starbase-city-pads.glb +0 -0
- package/dist/assets/starbase-city-pads.painted.svg +1 -0
- package/dist/assets/starbase-city-pads.svg +1 -0
- package/dist/assets/starbase-city-pads.thick.svg +1 -0
- package/dist/assets/starbase-city-sign.glb +0 -0
- package/dist/assets/starbase-city-sign.painted.svg +1 -0
- package/dist/assets/starbase-city-sign.svg +1 -0
- package/dist/assets/starbase-city-sign.thick.svg +1 -0
- package/dist/assets/starbase-city-starfactory.glb +0 -0
- package/dist/assets/starbase-city-starfactory.painted.svg +1 -0
- package/dist/assets/starbase-city-starfactory.svg +1 -0
- package/dist/assets/starbase-city-starfactory.thick.svg +1 -0
- package/dist/assets/starbase-city-tank-farm.glb +0 -0
- package/dist/assets/starbase-city-tank-farm.painted.svg +1 -0
- package/dist/assets/starbase-city-tank-farm.svg +1 -0
- package/dist/assets/starbase-city-tank-farm.thick.svg +1 -0
- package/dist/assets/starbase-city-village.glb +0 -0
- package/dist/assets/starbase-city-village.painted.svg +1 -0
- package/dist/assets/starbase-city-village.svg +1 -0
- package/dist/assets/starbase-city-village.thick.svg +1 -0
- package/dist/assets/starbase-city.glb +0 -0
- package/dist/assets/starbase-city.painted.svg +1 -0
- package/dist/assets/starbase-city.svg +1 -0
- package/dist/assets/starbase-city.thick.svg +1 -0
- package/dist/assets/starbase-launch-site-apart.painted.svg +1 -0
- package/dist/assets/starbase-launch-site-apart.svg +1 -0
- package/dist/assets/starbase-launch-site-apart.thick.svg +1 -0
- package/dist/assets/starbase-launch-site-ground.glb +0 -0
- package/dist/assets/starbase-launch-site-ground.painted.svg +1 -0
- package/dist/assets/starbase-launch-site-ground.svg +1 -0
- package/dist/assets/starbase-launch-site-ground.thick.svg +1 -0
- package/dist/assets/starbase-launch-site-on-pad.glb +0 -0
- package/dist/assets/starbase-launch-site-on-pad.painted.svg +1 -0
- package/dist/assets/starbase-launch-site-on-pad.svg +1 -0
- package/dist/assets/starbase-launch-site-on-pad.thick.svg +1 -0
- package/dist/assets/starbase-launch-site-pads.glb +0 -0
- package/dist/assets/starbase-launch-site-pads.painted.svg +1 -0
- package/dist/assets/starbase-launch-site-pads.svg +1 -0
- package/dist/assets/starbase-launch-site-pads.thick.svg +1 -0
- package/dist/assets/starbase-launch-site-tank-farm.glb +0 -0
- package/dist/assets/starbase-launch-site-tank-farm.painted.svg +1 -0
- package/dist/assets/starbase-launch-site-tank-farm.svg +1 -0
- package/dist/assets/starbase-launch-site-tank-farm.thick.svg +1 -0
- package/dist/assets/starbase-launch-site.glb +0 -0
- package/dist/assets/starbase-launch-site.painted.svg +1 -0
- package/dist/assets/starbase-launch-site.svg +1 -0
- package/dist/assets/starbase-launch-site.thick.svg +1 -0
- package/dist/assets/starship-2019.painted.svg +1 -1
- package/dist/assets/starship-2019.svg +1 -1
- package/dist/assets/starship-2019.thick.svg +1 -1
- package/dist/assets/starship-v1-apart.painted.svg +1 -1
- package/dist/assets/starship-v1-apart.svg +1 -1
- package/dist/assets/starship-v1-apart.thick.svg +1 -1
- package/dist/assets/starship-v1-booster.painted.svg +1 -1
- package/dist/assets/starship-v1-booster.svg +1 -1
- package/dist/assets/starship-v1-booster.thick.svg +1 -1
- package/dist/assets/starship-v1-flight1-apart.painted.svg +1 -1
- package/dist/assets/starship-v1-flight1-apart.svg +1 -1
- package/dist/assets/starship-v1-flight1-apart.thick.svg +1 -1
- package/dist/assets/starship-v1-flight1-booster.painted.svg +1 -1
- package/dist/assets/starship-v1-flight1-booster.svg +1 -1
- package/dist/assets/starship-v1-flight1-booster.thick.svg +1 -1
- package/dist/assets/starship-v1-flight1-ship.painted.svg +1 -1
- package/dist/assets/starship-v1-flight1-ship.svg +1 -1
- package/dist/assets/starship-v1-flight1-ship.thick.svg +1 -1
- package/dist/assets/starship-v1-flight1.painted.svg +1 -1
- package/dist/assets/starship-v1-flight1.svg +1 -1
- package/dist/assets/starship-v1-flight1.thick.svg +1 -1
- package/dist/assets/starship-v1-ship.painted.svg +1 -1
- package/dist/assets/starship-v1-ship.svg +1 -1
- package/dist/assets/starship-v1-ship.thick.svg +1 -1
- package/dist/assets/starship-v1.painted.svg +1 -1
- package/dist/assets/starship-v1.svg +1 -1
- package/dist/assets/starship-v1.thick.svg +1 -1
- package/dist/assets/starship-v2-apart.painted.svg +1 -1
- package/dist/assets/starship-v2-apart.svg +1 -1
- package/dist/assets/starship-v2-apart.thick.svg +1 -1
- package/dist/assets/starship-v2-booster.painted.svg +1 -1
- package/dist/assets/starship-v2-booster.svg +1 -1
- package/dist/assets/starship-v2-booster.thick.svg +1 -1
- package/dist/assets/starship-v2-ship.painted.svg +1 -1
- package/dist/assets/starship-v2-ship.svg +1 -1
- package/dist/assets/starship-v2-ship.thick.svg +1 -1
- package/dist/assets/starship-v2.painted.svg +1 -1
- package/dist/assets/starship-v2.svg +1 -1
- package/dist/assets/starship-v2.thick.svg +1 -1
- package/dist/assets/starship-v3-apart.painted.svg +1 -1
- package/dist/assets/starship-v3-apart.svg +1 -1
- package/dist/assets/starship-v3-apart.thick.svg +1 -1
- package/dist/assets/starship-v3-booster.painted.svg +1 -1
- package/dist/assets/starship-v3-booster.svg +1 -1
- package/dist/assets/starship-v3-booster.thick.svg +1 -1
- package/dist/assets/starship-v3-ship.painted.svg +1 -1
- package/dist/assets/starship-v3-ship.svg +1 -1
- package/dist/assets/starship-v3-ship.thick.svg +1 -1
- package/dist/assets/starship-v3.painted.svg +1 -1
- package/dist/assets/starship-v3.svg +1 -1
- package/dist/assets/starship-v3.thick.svg +1 -1
- package/dist/assets/starship-v4-apart.painted.svg +1 -1
- package/dist/assets/starship-v4-apart.svg +1 -1
- package/dist/assets/starship-v4-apart.thick.svg +1 -1
- package/dist/assets/starship-v4-booster.painted.svg +1 -1
- package/dist/assets/starship-v4-booster.svg +1 -1
- package/dist/assets/starship-v4-booster.thick.svg +1 -1
- package/dist/assets/starship-v4-ship.painted.svg +1 -1
- package/dist/assets/starship-v4-ship.svg +1 -1
- package/dist/assets/starship-v4-ship.thick.svg +1 -1
- package/dist/assets/starship-v4.painted.svg +1 -1
- package/dist/assets/starship-v4.svg +1 -1
- package/dist/assets/starship-v4.thick.svg +1 -1
- package/dist/attrs.d.ts +27 -0
- package/dist/attrs.js +31 -0
- package/dist/build/index.d.ts +7 -2
- package/dist/build/index.js +28 -4
- package/dist/build/lineup.js +14 -4
- package/dist/builder.d.ts +22 -0
- package/dist/builder.js +103 -0
- package/dist/data/apollosoyuz.d.ts +6 -0
- package/dist/data/apollosoyuz.js +28 -0
- package/dist/data/credits.d.ts +19 -1
- package/dist/data/credits.js +30 -1
- package/dist/data/dragon.js +35 -0
- package/dist/data/electron.d.ts +2 -0
- package/dist/data/electron.js +23 -0
- package/dist/data/falcon.js +2 -2
- package/dist/data/falcon1.d.ts +4 -0
- package/dist/data/falcon1.js +51 -0
- package/dist/data/flight-log.d.ts +18 -0
- package/dist/data/flight-log.js +23 -0
- package/dist/data/flights.d.ts +49 -0
- package/dist/data/flights.js +177 -0
- package/dist/data/gemini.d.ts +3 -0
- package/dist/data/gemini.js +22 -0
- package/dist/data/hubble.d.ts +3 -0
- package/dist/data/hubble.js +23 -0
- package/dist/data/iss.d.ts +5 -0
- package/dist/data/iss.js +25 -0
- package/dist/data/jupiterc.d.ts +3 -0
- package/dist/data/jupiterc.js +22 -0
- package/dist/data/landing.d.ts +3 -0
- package/dist/data/landing.js +51 -0
- package/dist/data/lunarmodule.d.ts +4 -0
- package/dist/data/lunarmodule.js +27 -0
- package/dist/data/makers.d.ts +16 -0
- package/dist/data/makers.js +29 -0
- package/dist/data/mercury.d.ts +3 -0
- package/dist/data/mercury.js +22 -0
- package/dist/data/newglenn.d.ts +2 -0
- package/dist/data/newglenn.js +23 -0
- package/dist/data/saturn.d.ts +2 -0
- package/dist/data/saturn.js +32 -0
- package/dist/data/shuttle.d.ts +5 -0
- package/dist/data/shuttle.js +52 -0
- package/dist/data/sls.d.ts +4 -0
- package/dist/data/sls.js +36 -0
- package/dist/data/sources.d.ts +348 -2
- package/dist/data/sources.js +45 -1
- package/dist/data/soyuz.d.ts +3 -0
- package/dist/data/soyuz.js +33 -0
- package/dist/data/starbase.d.ts +2 -0
- package/dist/data/starbase.js +30 -0
- package/dist/data/tower.d.ts +3 -0
- package/dist/data/tower.js +26 -0
- package/dist/data/types.d.ts +7 -1
- package/dist/draw/plume.d.ts +8 -0
- package/dist/draw/plume.js +71 -0
- package/dist/draw/svg.d.ts +1 -1
- package/dist/draw/svg.js +3 -3
- package/dist/element/ground.d.ts +15 -0
- package/dist/element/ground.js +95 -0
- package/dist/element/plumes.d.ts +38 -0
- package/dist/element/plumes.js +208 -0
- package/dist/element/scene.d.ts +39 -5
- package/dist/element/scene.js +250 -7
- package/dist/element.d.ts +50 -1
- package/dist/element.js +201 -13
- package/dist/embed.d.ts +26 -0
- package/dist/embed.js +135 -0
- package/dist/engines.d.ts +44 -0
- package/dist/engines.js +79 -0
- package/dist/fit.d.ts +2 -0
- package/dist/fit.js +4 -3
- package/dist/flight.d.ts +67 -0
- package/dist/flight.js +124 -0
- package/dist/flightbar.d.ts +22 -0
- package/dist/flightbar.js +176 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.js +9 -0
- package/dist/layout.js +1 -1
- package/dist/looks.d.ts +1 -1
- package/dist/looks.js +2 -0
- package/dist/model/apollosoyuz.d.ts +2 -0
- package/dist/model/apollosoyuz.js +46 -0
- package/dist/model/dragoninside.d.ts +2 -0
- package/dist/model/dragoninside.js +67 -0
- package/dist/model/electron.d.ts +2 -0
- package/dist/model/electron.js +35 -0
- package/dist/model/falcon.d.ts +2 -0
- package/dist/model/falcon.js +4 -0
- package/dist/model/falcon1.d.ts +2 -0
- package/dist/model/falcon1.js +53 -0
- package/dist/model/gemini.d.ts +2 -0
- package/dist/model/gemini.js +28 -0
- package/dist/model/hubble.d.ts +2 -0
- package/dist/model/hubble.js +28 -0
- package/dist/model/iss.d.ts +2 -0
- package/dist/model/iss.js +32 -0
- package/dist/model/jupiterc.d.ts +2 -0
- package/dist/model/jupiterc.js +24 -0
- package/dist/model/kit.d.ts +36 -0
- package/dist/model/kit.js +95 -0
- package/dist/model/landing.d.ts +3 -0
- package/dist/model/landing.js +81 -0
- package/dist/model/lunarmodule.d.ts +2 -0
- package/dist/model/lunarmodule.js +43 -0
- package/dist/model/materials.d.ts +42 -0
- package/dist/model/materials.js +7 -0
- package/dist/model/mercury.d.ts +2 -0
- package/dist/model/mercury.js +19 -0
- package/dist/model/newglenn.d.ts +2 -0
- package/dist/model/newglenn.js +43 -0
- package/dist/model/pieces.d.ts +2 -0
- package/dist/model/pieces.js +2 -2
- package/dist/model/registry.js +63 -0
- package/dist/model/saturn.d.ts +2 -0
- package/dist/model/saturn.js +122 -0
- package/dist/model/shuttle.d.ts +2 -0
- package/dist/model/shuttle.js +111 -0
- package/dist/model/sls.d.ts +2 -0
- package/dist/model/sls.js +83 -0
- package/dist/model/soyuz.d.ts +2 -0
- package/dist/model/soyuz.js +75 -0
- package/dist/model/stacks.d.ts +39 -0
- package/dist/model/stacks.js +1 -0
- package/dist/model/starbase.d.ts +2 -0
- package/dist/model/starbase.js +108 -0
- package/dist/model/tower.d.ts +6 -0
- package/dist/model/tower.js +89 -0
- package/dist/parts.d.ts +3 -2
- package/dist/react.d.ts +14 -6
- package/dist/rockets.d.ts +5 -0
- package/dist/rockets.js +78 -7
- package/dist/spin.d.ts +11 -0
- package/dist/spin.js +11 -0
- package/package.json +93 -18
package/dist/element/scene.js
CHANGED
|
@@ -7,11 +7,15 @@ import { LineMaterial } from "three/addons/lines/LineMaterial.js";
|
|
|
7
7
|
import { LineSegments2 } from "three/addons/lines/LineSegments2.js";
|
|
8
8
|
import { LineSegmentsGeometry } from "three/addons/lines/LineSegmentsGeometry.js";
|
|
9
9
|
import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
|
|
10
|
+
import { bellsOf, FLAME_GAP_MS, FLAME_SETTLE_MS, pickBells } from "../engines.js";
|
|
10
11
|
import { directionOf, FOV_DEG, frameFor, PICTURE_H, turnedBy } from "../framing.js";
|
|
11
12
|
import { LOOKS } from "../looks.js";
|
|
12
13
|
import { pixelRatioFor } from "../pixels.js";
|
|
13
14
|
import { MATERIALS } from "../model/materials.js";
|
|
14
15
|
import { paintGlow, paintSky, paintSteel, paintTiles } from "./paint.js";
|
|
16
|
+
import { flightBounds, frameAt } from "../flight.js";
|
|
17
|
+
import { GroundKit } from "./ground.js";
|
|
18
|
+
import { PartPlumes, PlumeKit } from "./plumes.js";
|
|
15
19
|
const IDLE_STOP_MS = 90_000;
|
|
16
20
|
const MOVE_MS = 1400;
|
|
17
21
|
const VIEW_MS = 700;
|
|
@@ -73,6 +77,8 @@ void main() {
|
|
|
73
77
|
/** The materials of an engine's bell, in this package's own meshes. */
|
|
74
78
|
const NOZZLE_MATERIALS = new Set(["bell", "bell-inside", "engine-metal"]);
|
|
75
79
|
const asVec = (v) => [v.x, v.y, v.z];
|
|
80
|
+
/** A flame's colours, a picture: Raptor burns methane, Merlin kerosene. */
|
|
81
|
+
const fuelOf = (built) => (built.report.parts.some(({ part }) => part.rocket === "starship") ? "methane" : "kerosene");
|
|
76
82
|
/** The pictures a licensed model's material may hold (the shared sky it reflects is not one of them). */
|
|
77
83
|
const MODEL_PICTURES = ["map", "normalMap", "roughnessMap", "metalnessMap", "aoMap", "emissiveMap"];
|
|
78
84
|
export class RocketViewer {
|
|
@@ -89,6 +95,20 @@ export class RocketViewer {
|
|
|
89
95
|
built = null;
|
|
90
96
|
look = "line";
|
|
91
97
|
show = "together";
|
|
98
|
+
plumes;
|
|
99
|
+
lit = null;
|
|
100
|
+
/** What was lit before a flight took over the engines. */
|
|
101
|
+
litOutside = null;
|
|
102
|
+
burningNow = 0;
|
|
103
|
+
/** A flame moves until then. */
|
|
104
|
+
flameUntil = 0;
|
|
105
|
+
flameDrawn = 0;
|
|
106
|
+
inTick = false;
|
|
107
|
+
clockNow = null;
|
|
108
|
+
flightOn = false;
|
|
109
|
+
ground = null;
|
|
110
|
+
flightKey = "";
|
|
111
|
+
burnSlots = null;
|
|
92
112
|
generation = 0;
|
|
93
113
|
materialCache = new Map();
|
|
94
114
|
outlineMaterial;
|
|
@@ -148,7 +168,8 @@ export class RocketViewer {
|
|
|
148
168
|
rim.position.set(-4, 1, -5);
|
|
149
169
|
const low = new DirectionalLight("#ffffff", 0.35);
|
|
150
170
|
low.position.set(1, -4, 2);
|
|
151
|
-
this.
|
|
171
|
+
this.plumes = new PlumeKit();
|
|
172
|
+
this.scene.add(key, rim, low, new HemisphereLight("#d7e6ff", "#22252b", 0.35), this.plumes.light, this.root);
|
|
152
173
|
this.outlineMaterial = new ShaderMaterial({
|
|
153
174
|
vertexShader: OUTLINE_VERTEX,
|
|
154
175
|
fragmentShader: OUTLINE_FRAGMENT,
|
|
@@ -220,6 +241,7 @@ export class RocketViewer {
|
|
|
220
241
|
from: [0, 0, 0],
|
|
221
242
|
to: [0, 0, 0],
|
|
222
243
|
hideAtEnd: false,
|
|
244
|
+
plumes: null,
|
|
223
245
|
};
|
|
224
246
|
this.takeMeshes(source, code, view);
|
|
225
247
|
const place = places.find((p) => p.slot === part.slot);
|
|
@@ -230,7 +252,13 @@ export class RocketViewer {
|
|
|
230
252
|
}
|
|
231
253
|
this.addGlow();
|
|
232
254
|
this.setLook(look);
|
|
255
|
+
this.plumes.setFuel(fuelOf(built));
|
|
233
256
|
this.frameTo(angle ?? this.currentAngle(), false);
|
|
257
|
+
if (this.clockNow) {
|
|
258
|
+
this.flightKey = "";
|
|
259
|
+
this.flightOn = false;
|
|
260
|
+
this.setFlight(this.clockNow);
|
|
261
|
+
}
|
|
234
262
|
this.canvas.dataset.ready = "true";
|
|
235
263
|
this.canvas.dataset.parts = this.parts.map((part) => part.slot).join(" ");
|
|
236
264
|
this.drivenDirty = this.driven !== null;
|
|
@@ -385,9 +413,200 @@ export class RocketViewer {
|
|
|
385
413
|
if (this.glow)
|
|
386
414
|
this.glow.visible = !painted;
|
|
387
415
|
this.canvas.dataset.look = look;
|
|
416
|
+
this.plumes.setLook(painted);
|
|
417
|
+
this.relight();
|
|
388
418
|
this.reportPainted();
|
|
389
419
|
this.wake();
|
|
390
420
|
}
|
|
421
|
+
/** Which engines burn: at full thrust every one that shows, a count for each part, or none. Nothing is made or freed by this after a part's first flame: only which of its flames are drawn changes. */
|
|
422
|
+
setEngines(lit) {
|
|
423
|
+
// a flight keeps its own, and what was asked for comes back after it
|
|
424
|
+
if (this.clockNow) {
|
|
425
|
+
this.litOutside = lit;
|
|
426
|
+
this.flightKey = "";
|
|
427
|
+
this.applyFlight();
|
|
428
|
+
this.wake();
|
|
429
|
+
return;
|
|
430
|
+
}
|
|
431
|
+
const framed = this.lit === "full";
|
|
432
|
+
this.lit = lit;
|
|
433
|
+
this.relight();
|
|
434
|
+
if (framed !== (lit === "full") && this.built && !this.pose)
|
|
435
|
+
this.reframe();
|
|
436
|
+
this.wake();
|
|
437
|
+
}
|
|
438
|
+
/** The page reads reduced motion again at each change, so a view opened earlier follows the reader now. */
|
|
439
|
+
setReduced(reduced) {
|
|
440
|
+
this.options.reducedMotion = reduced;
|
|
441
|
+
}
|
|
442
|
+
relight() {
|
|
443
|
+
if (!this.built)
|
|
444
|
+
return;
|
|
445
|
+
const counts = new Map();
|
|
446
|
+
if (this.lit === "full") {
|
|
447
|
+
for (const bell of this.built.flamesOf(this.show))
|
|
448
|
+
counts.set(bell.slot, (counts.get(bell.slot) ?? 0) + 1);
|
|
449
|
+
}
|
|
450
|
+
else if (this.lit)
|
|
451
|
+
for (const [slot, count] of Object.entries(this.lit))
|
|
452
|
+
counts.set(slot, count);
|
|
453
|
+
let burning = 0;
|
|
454
|
+
let lowest = null;
|
|
455
|
+
for (const view of this.parts) {
|
|
456
|
+
const count = counts.get(view.slot) ?? 0;
|
|
457
|
+
if (count > 0 && !view.plumes) {
|
|
458
|
+
const bells = bellsOf(this.built.parts.find((part) => part.slot === view.slot)?.pieces ?? []);
|
|
459
|
+
if (bells.length === 0)
|
|
460
|
+
continue;
|
|
461
|
+
view.plumes = new PartPlumes(this.plumes, bells);
|
|
462
|
+
view.holder.add(view.plumes.group);
|
|
463
|
+
}
|
|
464
|
+
if (!view.plumes)
|
|
465
|
+
continue;
|
|
466
|
+
const fired = pickBells(view.plumes.bells, count);
|
|
467
|
+
view.plumes.light(fired);
|
|
468
|
+
burning += fired.length;
|
|
469
|
+
if (fired.length > 0 && !lowest)
|
|
470
|
+
lowest = { view, y: fired[0].y - 1 };
|
|
471
|
+
}
|
|
472
|
+
this.burningNow = burning;
|
|
473
|
+
this.burnSlots = lowest;
|
|
474
|
+
this.plumes.setBurning(burning);
|
|
475
|
+
this.plumes.light.intensity = burning === 0 || this.look !== "painted" ? 0 : Math.min(900, 120 + burning * 40);
|
|
476
|
+
this.placeGlow();
|
|
477
|
+
this.canvas.dataset.engines = burning > 0 ? "on" : "off";
|
|
478
|
+
this.canvas.dataset.plumes = String(burning);
|
|
479
|
+
}
|
|
480
|
+
/** The hull's glow stands under the lowest part that burns, wherever that part has got to. */
|
|
481
|
+
placeGlow() {
|
|
482
|
+
const lowest = this.burnSlots;
|
|
483
|
+
if (!lowest)
|
|
484
|
+
return;
|
|
485
|
+
lowest.view.holder.updateMatrix();
|
|
486
|
+
this.plumes.light.position.set(0, lowest.y, 0).applyMatrix4(lowest.view.holder.matrix);
|
|
487
|
+
}
|
|
488
|
+
/** Starts, moves or ends a flight. While one is on, the parts stand where its timeline says, the engines are its own and the camera holds all of it. Under reduced motion it is the same, with no flames. */
|
|
489
|
+
setFlight(clock) {
|
|
490
|
+
this.clockNow = clock;
|
|
491
|
+
if (!this.built)
|
|
492
|
+
return;
|
|
493
|
+
const before = this.flightOn;
|
|
494
|
+
this.flightOn = clock !== null;
|
|
495
|
+
if (!clock) {
|
|
496
|
+
if (!before)
|
|
497
|
+
return;
|
|
498
|
+
this.flightKey = "";
|
|
499
|
+
if (this.ground)
|
|
500
|
+
this.ground.group.visible = false;
|
|
501
|
+
for (const part of this.parts)
|
|
502
|
+
if (part.model)
|
|
503
|
+
this.showCode(part, this.look === "painted");
|
|
504
|
+
const places = this.built.placesOf(this.show);
|
|
505
|
+
for (const part of this.parts) {
|
|
506
|
+
const place = places.find((one) => one.slot === part.slot);
|
|
507
|
+
part.holder.position.set(...(place?.at ?? [0, 0, 0]));
|
|
508
|
+
part.holder.rotation.set(0, 0, 0);
|
|
509
|
+
part.holder.visible = place?.shown ?? false;
|
|
510
|
+
}
|
|
511
|
+
this.plumes.setAir(0);
|
|
512
|
+
this.plumes.setFloor(-1e6);
|
|
513
|
+
this.reframe();
|
|
514
|
+
this.lit = this.litOutside;
|
|
515
|
+
this.relight();
|
|
516
|
+
this.wake();
|
|
517
|
+
return;
|
|
518
|
+
}
|
|
519
|
+
if (!before) {
|
|
520
|
+
this.litOutside = this.lit;
|
|
521
|
+
this.pose = null;
|
|
522
|
+
if (!this.ground) {
|
|
523
|
+
this.ground = new GroundKit();
|
|
524
|
+
this.scene.add(this.ground.group);
|
|
525
|
+
}
|
|
526
|
+
const { min, max } = this.boundsNow();
|
|
527
|
+
this.ground.fit(this.built.boundsOf("together").max[0] * 2.4 + 4, Math.max(Math.abs(min[0]), Math.abs(max[0])));
|
|
528
|
+
this.ground.group.visible = true;
|
|
529
|
+
for (const part of this.parts)
|
|
530
|
+
if (part.model)
|
|
531
|
+
this.showCode(part, this.look === "painted");
|
|
532
|
+
this.reframe();
|
|
533
|
+
}
|
|
534
|
+
this.applyFlight();
|
|
535
|
+
this.wake();
|
|
536
|
+
}
|
|
537
|
+
/** After a flight starts or ends the camera holds the new bounds, keeping its angle. */
|
|
538
|
+
reframe() {
|
|
539
|
+
if (this.driven)
|
|
540
|
+
this.applyDriven();
|
|
541
|
+
else
|
|
542
|
+
this.applyFraming(this.framingFor(this.currentAngle()));
|
|
543
|
+
}
|
|
544
|
+
/** What is showing, with the flames when they are lit, so a flame is never cut off at the foot of the picture. */
|
|
545
|
+
litBounds() {
|
|
546
|
+
const built = this.built;
|
|
547
|
+
return this.lit === "full" ? built.boundsOf(this.show, true) : built.boundsOf(this.show);
|
|
548
|
+
}
|
|
549
|
+
/** What the picture must hold: all of a flight while one is on. */
|
|
550
|
+
boundsNow() {
|
|
551
|
+
if (!this.built)
|
|
552
|
+
throw new Error("nothing is loaded");
|
|
553
|
+
if (!this.clockNow)
|
|
554
|
+
return this.litBounds();
|
|
555
|
+
const { height, parts } = this.flightParts();
|
|
556
|
+
const { min, max } = flightBounds(this.clockNow.flight, parts, height);
|
|
557
|
+
return { min, max };
|
|
558
|
+
}
|
|
559
|
+
flightParts() {
|
|
560
|
+
const built = this.built;
|
|
561
|
+
const places = built.placesOf("together");
|
|
562
|
+
const height = built.boundsOf("together").max[1];
|
|
563
|
+
return {
|
|
564
|
+
height,
|
|
565
|
+
parts: built.parts.map((part) => {
|
|
566
|
+
const at = places.find((place) => place.slot === part.slot)?.at ?? [0, 0, 0];
|
|
567
|
+
return { slot: part.slot, baseY: at[1], height: part.record.height, radius: Math.max(part.record.diameter / 2, Math.abs(at[0]) + part.record.diameter / 2) };
|
|
568
|
+
}),
|
|
569
|
+
};
|
|
570
|
+
}
|
|
571
|
+
/** Puts everything where the timeline says now. */
|
|
572
|
+
applyFlight() {
|
|
573
|
+
const clock = this.clockNow;
|
|
574
|
+
if (!clock || !this.built)
|
|
575
|
+
return;
|
|
576
|
+
const { height, parts } = this.flightParts();
|
|
577
|
+
const frame = frameAt(clock.flight, clock.position, parts, height);
|
|
578
|
+
const places = this.built.placesOf("together");
|
|
579
|
+
for (const part of this.parts) {
|
|
580
|
+
const pose = frame.poses[part.slot];
|
|
581
|
+
const place = places.find((one) => one.slot === part.slot);
|
|
582
|
+
if (!pose || !place)
|
|
583
|
+
continue;
|
|
584
|
+
const turn = MathUtils.degToRad(pose.pitch);
|
|
585
|
+
const middle = (parts.find((one) => one.slot === part.slot)?.height ?? 0) / 2;
|
|
586
|
+
part.holder.visible = !pose.gone;
|
|
587
|
+
part.holder.rotation.set(0, 0, turn);
|
|
588
|
+
part.holder.position.set(place.at[0] + pose.dx + Math.sin(turn) * middle, place.at[1] + pose.dy + middle - Math.cos(turn) * middle, place.at[2]);
|
|
589
|
+
}
|
|
590
|
+
this.plumes.setAir(frame.air);
|
|
591
|
+
this.plumes.setFloor(frame.groundY);
|
|
592
|
+
this.ground?.set(frame.groundY, this.options.reducedMotion ? 0 : frame.smoke, performance.now() / 1000);
|
|
593
|
+
const key = `${clock.flight.id}/${frame.index}/${this.options.reducedMotion}`;
|
|
594
|
+
if (key !== this.flightKey) {
|
|
595
|
+
this.flightKey = key;
|
|
596
|
+
this.lit = this.options.reducedMotion ? null : frame.burns;
|
|
597
|
+
this.relight();
|
|
598
|
+
this.canvas.dataset.phase = frame.phase.id;
|
|
599
|
+
}
|
|
600
|
+
else
|
|
601
|
+
this.placeGlow();
|
|
602
|
+
this.needsDraw = true;
|
|
603
|
+
}
|
|
604
|
+
freePlumes() {
|
|
605
|
+
for (const view of this.parts) {
|
|
606
|
+
view.plumes?.dispose();
|
|
607
|
+
view.plumes = null;
|
|
608
|
+
}
|
|
609
|
+
}
|
|
391
610
|
/** Which painted parts are in: "model" when all come from a licensed model, "code" when this package's own paint, "loading" while one is on its way. */
|
|
392
611
|
reportPainted() {
|
|
393
612
|
if (this.look !== "painted") {
|
|
@@ -445,7 +664,8 @@ export class RocketViewer {
|
|
|
445
664
|
showCode(part, painted) {
|
|
446
665
|
const nozzleOnly = painted && part.ownNozzle;
|
|
447
666
|
part.code.visible = !painted || nozzleOnly;
|
|
448
|
-
|
|
667
|
+
// in a flight a stage leaves the one below, so its nozzle shows then too
|
|
668
|
+
const nozzle = nozzleOnly && (this.show !== "together" || this.flightOn);
|
|
449
669
|
for (const { mesh, name } of part.faces)
|
|
450
670
|
mesh.visible = !nozzleOnly || (nozzle && NOZZLE_MATERIALS.has(name));
|
|
451
671
|
for (const lines of [...part.feature, ...part.weld])
|
|
@@ -455,7 +675,7 @@ export class RocketViewer {
|
|
|
455
675
|
}
|
|
456
676
|
/** Together, apart, or one part alone: an animated move, or a cut under reduced motion. */
|
|
457
677
|
setShow(show) {
|
|
458
|
-
if (!this.built || show === this.show)
|
|
678
|
+
if (!this.built || show === this.show || this.clockNow)
|
|
459
679
|
return;
|
|
460
680
|
this.show = show;
|
|
461
681
|
for (const part of this.parts)
|
|
@@ -474,6 +694,7 @@ export class RocketViewer {
|
|
|
474
694
|
}
|
|
475
695
|
this.pose = null;
|
|
476
696
|
this.applyFraming(framing);
|
|
697
|
+
this.relight();
|
|
477
698
|
this.wake();
|
|
478
699
|
return;
|
|
479
700
|
}
|
|
@@ -500,11 +721,12 @@ export class RocketViewer {
|
|
|
500
721
|
}
|
|
501
722
|
}
|
|
502
723
|
this.startPose(framing, MOVE_MS, true);
|
|
724
|
+
this.relight();
|
|
503
725
|
}
|
|
504
726
|
framingFor(angle) {
|
|
505
727
|
if (!this.built)
|
|
506
728
|
throw new Error("nothing is loaded");
|
|
507
|
-
const { min, max } = this.
|
|
729
|
+
const { min, max } = this.boundsNow();
|
|
508
730
|
return frameFor(min, max, angle, this.camera.aspect);
|
|
509
731
|
}
|
|
510
732
|
applyFraming(framing) {
|
|
@@ -674,6 +896,8 @@ export class RocketViewer {
|
|
|
674
896
|
this.resize.disconnect();
|
|
675
897
|
this.controls.dispose();
|
|
676
898
|
this.disposeParts();
|
|
899
|
+
this.plumes.dispose();
|
|
900
|
+
this.ground?.dispose();
|
|
677
901
|
this.glow?.geometry.dispose();
|
|
678
902
|
this.glow?.material?.dispose();
|
|
679
903
|
for (const material of this.materialCache.values())
|
|
@@ -688,6 +912,7 @@ export class RocketViewer {
|
|
|
688
912
|
}
|
|
689
913
|
/** Lets the graphics card have back what the parts took: geometries, the thick lines' materials and a licensed model's own materials and pictures. */
|
|
690
914
|
disposeParts() {
|
|
915
|
+
this.freePlumes();
|
|
691
916
|
for (const part of this.parts) {
|
|
692
917
|
part.holder.traverse((node) => {
|
|
693
918
|
node.geometry?.dispose();
|
|
@@ -738,7 +963,11 @@ export class RocketViewer {
|
|
|
738
963
|
this.wake();
|
|
739
964
|
}
|
|
740
965
|
wake() {
|
|
741
|
-
this
|
|
966
|
+
// the view's own spin is not someone touching it: without this a spin would never settle
|
|
967
|
+
if (!this.inTick) {
|
|
968
|
+
this.lastActive = performance.now();
|
|
969
|
+
this.flameUntil = this.lastActive + FLAME_SETTLE_MS;
|
|
970
|
+
}
|
|
742
971
|
this.needsDraw = true;
|
|
743
972
|
if (!this.frame && this.visible && !document.hidden && !this.disposed)
|
|
744
973
|
this.frame = requestAnimationFrame(this.tick);
|
|
@@ -747,6 +976,7 @@ export class RocketViewer {
|
|
|
747
976
|
this.frame = 0;
|
|
748
977
|
if (!this.visible || document.hidden || this.disposed)
|
|
749
978
|
return;
|
|
979
|
+
this.inTick = true;
|
|
750
980
|
this.clock.update(now);
|
|
751
981
|
const dt = Math.min(this.clock.getDelta(), 0.1);
|
|
752
982
|
const ambient = !this.options.reducedMotion && now - this.lastActive < IDLE_STOP_MS;
|
|
@@ -804,6 +1034,18 @@ export class RocketViewer {
|
|
|
804
1034
|
}
|
|
805
1035
|
if (!ambient)
|
|
806
1036
|
this.controls.autoRotate = false;
|
|
1037
|
+
const flying = this.clockNow?.playing ?? false;
|
|
1038
|
+
if (flying && this.clockNow) {
|
|
1039
|
+
this.clockNow.advance(dt);
|
|
1040
|
+
this.applyFlight();
|
|
1041
|
+
this.options.onFlight?.();
|
|
1042
|
+
}
|
|
1043
|
+
const flaming = this.burningNow > 0 && !this.options.reducedMotion && (flying || performance.now() < this.flameUntil);
|
|
1044
|
+
if (flaming && now - this.flameDrawn >= FLAME_GAP_MS) {
|
|
1045
|
+
this.flameDrawn = now;
|
|
1046
|
+
this.plumes.setTime(now / 1000);
|
|
1047
|
+
this.needsDraw = true;
|
|
1048
|
+
}
|
|
807
1049
|
const changed = this.controls.update(dt);
|
|
808
1050
|
if (this.needsDraw || changed || this.pose) {
|
|
809
1051
|
this.syncSizes();
|
|
@@ -820,11 +1062,12 @@ export class RocketViewer {
|
|
|
820
1062
|
this.canvas.dataset.pan = `${Math.round(this.driven.panX)},${Math.round(this.driven.panY)}`;
|
|
821
1063
|
}
|
|
822
1064
|
if (this.glow)
|
|
823
|
-
this.glow.visible = this.look !== "painted" && this.camera.position.y > 0;
|
|
1065
|
+
this.glow.visible = this.look !== "painted" && this.camera.position.y > 0 && !this.clockNow;
|
|
824
1066
|
}
|
|
825
1067
|
// the controls' own change event may already have asked for the next frame (wake): one frame is asked for, never two, or each frame would double the next
|
|
826
|
-
if (!this.frame && ((ambient && this.controls.autoRotate) || changed || this.pose || this.needsDraw || Math.abs(dA) > 1e-5))
|
|
1068
|
+
if (!this.frame && ((ambient && this.controls.autoRotate) || changed || this.pose || this.needsDraw || Math.abs(dA) > 1e-5 || flaming || flying))
|
|
827
1069
|
this.frame = requestAnimationFrame(this.tick);
|
|
1070
|
+
this.inTick = false;
|
|
828
1071
|
};
|
|
829
1072
|
syncSizes() {
|
|
830
1073
|
const size = this.renderer.getDrawingBufferSize(new Vector2());
|
package/dist/element.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type Flight } from "./flight.ts";
|
|
2
|
+
import { UchusenFlight } from "./flightbar.ts";
|
|
1
3
|
import type { Description, FitReport } from "./fit.ts";
|
|
2
4
|
import { type Angle, type ViewChoice } from "./framing.ts";
|
|
3
5
|
import { ROCKETS } from "./rockets.ts";
|
|
@@ -29,6 +31,13 @@ export declare class UchusenRocket extends HTMLBase {
|
|
|
29
31
|
private onScreen;
|
|
30
32
|
private drawn;
|
|
31
33
|
private tiltCleanups;
|
|
34
|
+
private clock;
|
|
35
|
+
private flightFrame;
|
|
36
|
+
private flightLast;
|
|
37
|
+
private flightDrawn;
|
|
38
|
+
private noted;
|
|
39
|
+
private phaseSeen;
|
|
40
|
+
private flightSeen;
|
|
32
41
|
/** What is showing now. */
|
|
33
42
|
get state(): RocketState;
|
|
34
43
|
/** What the fit check said about what is showing: its label, parts and credits. */
|
|
@@ -43,6 +52,9 @@ export declare class UchusenRocket extends HTMLBase {
|
|
|
43
52
|
/** The drawing, turned and moved to the chosen view. The 3D view moves itself, so only the drawing needs it, and only until the 3D view shows. It is drawn at most about 20 times a second and never while out of sight: it is made again when it comes back. */
|
|
44
53
|
private place;
|
|
45
54
|
private seen;
|
|
55
|
+
/** A reader who changes the setting while the page is open is followed at once. */
|
|
56
|
+
private motionChanged;
|
|
57
|
+
private motion;
|
|
46
58
|
connectedCallback(): void;
|
|
47
59
|
disconnectedCallback(): void;
|
|
48
60
|
attributeChangedCallback(name: string, before: string | null, after: string | null): void;
|
|
@@ -54,7 +66,44 @@ export declare class UchusenRocket extends HTMLBase {
|
|
|
54
66
|
private emit;
|
|
55
67
|
/** What to draw from the attributes, every value checked. */
|
|
56
68
|
private settings;
|
|
69
|
+
/** The flight a page gives for what is showing, or null: a custom build never has one. */
|
|
70
|
+
get flight(): Flight | null;
|
|
71
|
+
/** Where the timeline is: `active` once it has been started or moved, until `endFlight`. */
|
|
72
|
+
get flightState(): {
|
|
73
|
+
active: boolean;
|
|
74
|
+
playing: boolean;
|
|
75
|
+
ended: boolean;
|
|
76
|
+
position: number;
|
|
77
|
+
phase: string;
|
|
78
|
+
};
|
|
79
|
+
/** Plays the flight from where it is. It stands still out of sight, and does not play at all for a reader who asked for reduced motion: `seek` still moves it, by hand. */
|
|
80
|
+
play(): void;
|
|
81
|
+
pause(): void;
|
|
82
|
+
/** Moves the timeline to a place, where 0 is the first phase, 1 the next and so on: `2.5` is half way from the third to the fourth. */
|
|
83
|
+
seek(position: number): void;
|
|
84
|
+
/** Leaves the flight: the rocket as it was. */
|
|
85
|
+
endFlight(): void;
|
|
86
|
+
/** For each part with engines, which burn: at a named phase, where the timeline is, or else as the attributes have them. */
|
|
87
|
+
engineCharts(phaseId?: string | null): {
|
|
88
|
+
slot: string;
|
|
89
|
+
burning: number;
|
|
90
|
+
total: number;
|
|
91
|
+
words: string;
|
|
92
|
+
svg: string;
|
|
93
|
+
}[];
|
|
94
|
+
private flightMoved;
|
|
95
|
+
/** With no 3D view the drawing follows the timeline, by one frame request at a time, at most 20 drawings a second, never out of sight. */
|
|
96
|
+
private kickFlight;
|
|
97
|
+
private flightStep;
|
|
98
|
+
/** Tells the page where the timeline is: at once for a new phase or a stop, otherwise at most 8 times a second. */
|
|
99
|
+
private noteFlight;
|
|
100
|
+
/** Whether the engines are lit: `engines="on"`, and never for a reader who asked for reduced motion. */
|
|
101
|
+
private engineLights;
|
|
102
|
+
/** Hands the 3D view what the attributes say about the engines, and its reader's motion setting. */
|
|
103
|
+
private lightViewer;
|
|
57
104
|
private update;
|
|
105
|
+
/** After a change: a timeline of another rocket ends, and the `phase` attribute moves it. */
|
|
106
|
+
private settleFlight;
|
|
58
107
|
private renderShell;
|
|
59
108
|
/** The drawing for what the attributes say now. It is made from code, so it needs no file. A zoom or a move only changes which part of it the box shows (its viewBox), so the drawing is as sharp as the box and never grows past it. */
|
|
60
109
|
private redraw;
|
|
@@ -77,7 +126,7 @@ export declare class UchusenLineup extends HTMLBase {
|
|
|
77
126
|
}
|
|
78
127
|
/** Defines both elements, once. Importing this module does it. */
|
|
79
128
|
export declare function defineUchusenRocket(): void;
|
|
80
|
-
export { ROCKETS };
|
|
129
|
+
export { ROCKETS, UchusenFlight };
|
|
81
130
|
declare global {
|
|
82
131
|
interface HTMLElementTagNameMap {
|
|
83
132
|
"uchusen-rocket": UchusenRocket;
|