@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/element.d.ts
CHANGED
|
@@ -1,10 +1,47 @@
|
|
|
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";
|
|
6
|
+
/**
|
|
7
|
+
* What a `<uchusen-rocket>` is doing, as its `data-state` attribute says: `picture` (the drawing), `loading` (the 3D view is on its way), `3d`, `fallback` (no WebGL, so the drawing stays) or `error`.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import type { RocketState } from "@johnmorrisdotca/uchusen-rockets/element";
|
|
12
|
+
*
|
|
13
|
+
* const states: RocketState[] = ["picture", "loading", "3d", "fallback", "error"];
|
|
14
|
+
* console.log(states.length);
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
4
17
|
export type RocketState = "picture" | "loading" | "3d" | "fallback" | "error";
|
|
5
18
|
declare const HTMLBase: typeof HTMLElement;
|
|
6
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Where the licensed models are, for every element with no `assets` attribute of its own. Left unset: beside this module, in ./assets/.
|
|
21
|
+
*
|
|
22
|
+
* @param url The folder the licensed models are in. A trailing slash is added if it has none.
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts no-run
|
|
25
|
+
* import { setAssetBase } from "@johnmorrisdotca/uchusen-rockets/element";
|
|
26
|
+
*
|
|
27
|
+
* setAssetBase("/static/uchusen-assets/");
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
7
30
|
export declare function setAssetBase(url: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* The `<uchusen-rocket>` element: a rocket as a drawing that a 3D view takes over from when the browser can draw WebGL. Its attributes are the words of `RocketOptions`. It exposes its state as `data-state` and loads three.js only for a 3D view.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts no-run
|
|
36
|
+
* import { UchusenRocket } from "@johnmorrisdotca/uchusen-rockets/element";
|
|
37
|
+
*
|
|
38
|
+
* const rocket: UchusenRocket = document.createElement("uchusen-rocket") as UchusenRocket;
|
|
39
|
+
* rocket.setAttribute("rocket", "starship");
|
|
40
|
+
* rocket.setAttribute("variant", "v3");
|
|
41
|
+
* rocket.setAttribute("look", "painted");
|
|
42
|
+
* document.body.append(rocket);
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
8
45
|
export declare class UchusenRocket extends HTMLBase {
|
|
9
46
|
static readonly observedAttributes: string[];
|
|
10
47
|
private descriptionValue;
|
|
@@ -29,6 +66,13 @@ export declare class UchusenRocket extends HTMLBase {
|
|
|
29
66
|
private onScreen;
|
|
30
67
|
private drawn;
|
|
31
68
|
private tiltCleanups;
|
|
69
|
+
private clock;
|
|
70
|
+
private flightFrame;
|
|
71
|
+
private flightLast;
|
|
72
|
+
private flightDrawn;
|
|
73
|
+
private noted;
|
|
74
|
+
private phaseSeen;
|
|
75
|
+
private flightSeen;
|
|
32
76
|
/** What is showing now. */
|
|
33
77
|
get state(): RocketState;
|
|
34
78
|
/** What the fit check said about what is showing: its label, parts and credits. */
|
|
@@ -43,6 +87,9 @@ export declare class UchusenRocket extends HTMLBase {
|
|
|
43
87
|
/** 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
88
|
private place;
|
|
45
89
|
private seen;
|
|
90
|
+
/** A reader who changes the setting while the page is open is followed at once. */
|
|
91
|
+
private motionChanged;
|
|
92
|
+
private motion;
|
|
46
93
|
connectedCallback(): void;
|
|
47
94
|
disconnectedCallback(): void;
|
|
48
95
|
attributeChangedCallback(name: string, before: string | null, after: string | null): void;
|
|
@@ -54,7 +101,44 @@ export declare class UchusenRocket extends HTMLBase {
|
|
|
54
101
|
private emit;
|
|
55
102
|
/** What to draw from the attributes, every value checked. */
|
|
56
103
|
private settings;
|
|
104
|
+
/** The flight a page gives for what is showing, or null: a custom build never has one. */
|
|
105
|
+
get flight(): Flight | null;
|
|
106
|
+
/** Where the timeline is: `active` once it has been started or moved, until `endFlight`. */
|
|
107
|
+
get flightState(): {
|
|
108
|
+
active: boolean;
|
|
109
|
+
playing: boolean;
|
|
110
|
+
ended: boolean;
|
|
111
|
+
position: number;
|
|
112
|
+
phase: string;
|
|
113
|
+
};
|
|
114
|
+
/** 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. */
|
|
115
|
+
play(): void;
|
|
116
|
+
pause(): void;
|
|
117
|
+
/** 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. */
|
|
118
|
+
seek(position: number): void;
|
|
119
|
+
/** Leaves the flight: the rocket as it was. */
|
|
120
|
+
endFlight(): void;
|
|
121
|
+
/** For each part with engines, which burn: at a named phase, where the timeline is, or else as the attributes have them. */
|
|
122
|
+
engineCharts(phaseId?: string | null): {
|
|
123
|
+
slot: string;
|
|
124
|
+
burning: number;
|
|
125
|
+
total: number;
|
|
126
|
+
words: string;
|
|
127
|
+
svg: string;
|
|
128
|
+
}[];
|
|
129
|
+
private flightMoved;
|
|
130
|
+
/** 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. */
|
|
131
|
+
private kickFlight;
|
|
132
|
+
private flightStep;
|
|
133
|
+
/** Tells the page where the timeline is: at once for a new phase or a stop, otherwise at most 8 times a second. */
|
|
134
|
+
private noteFlight;
|
|
135
|
+
/** Whether the engines are lit: `engines="on"`, and never for a reader who asked for reduced motion. */
|
|
136
|
+
private engineLights;
|
|
137
|
+
/** Hands the 3D view what the attributes say about the engines, and its reader's motion setting. */
|
|
138
|
+
private lightViewer;
|
|
57
139
|
private update;
|
|
140
|
+
/** After a change: a timeline of another rocket ends, and the `phase` attribute moves it. */
|
|
141
|
+
private settleFlight;
|
|
58
142
|
private renderShell;
|
|
59
143
|
/** 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
144
|
private redraw;
|
|
@@ -68,16 +152,39 @@ export declare class UchusenRocket extends HTMLBase {
|
|
|
68
152
|
private start;
|
|
69
153
|
private startTilt;
|
|
70
154
|
}
|
|
71
|
-
/**
|
|
155
|
+
/**
|
|
156
|
+
* Rockets side by side on one baseline at one scale: `<uchusen-lineup items="starship:v1,starship:v3,person,building" unit="4" ruler labels>`.
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```ts no-run
|
|
160
|
+
* import { UchusenLineup } from "@johnmorrisdotca/uchusen-rockets/element";
|
|
161
|
+
*
|
|
162
|
+
* const lineup: UchusenLineup = document.createElement("uchusen-lineup") as UchusenLineup;
|
|
163
|
+
* lineup.setAttribute("items", "starship:v2,starship:v3,person");
|
|
164
|
+
* lineup.setAttribute("unit", "3");
|
|
165
|
+
* lineup.toggleAttribute("ruler", true);
|
|
166
|
+
* document.body.append(lineup);
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
72
169
|
export declare class UchusenLineup extends HTMLBase {
|
|
73
170
|
static readonly observedAttributes: string[];
|
|
74
171
|
connectedCallback(): void;
|
|
75
172
|
attributeChangedCallback(name: string, before: string | null, after: string | null): void;
|
|
76
173
|
private render;
|
|
77
174
|
}
|
|
78
|
-
/**
|
|
175
|
+
/**
|
|
176
|
+
* Defines both elements, once. Importing this module does it.
|
|
177
|
+
*
|
|
178
|
+
* @example
|
|
179
|
+
* ```ts no-run
|
|
180
|
+
* import { defineUchusenRocket } from "@johnmorrisdotca/uchusen-rockets/element";
|
|
181
|
+
*
|
|
182
|
+
* defineUchusenRocket();
|
|
183
|
+
* console.log(customElements.get("uchusen-rocket") !== undefined);
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
79
186
|
export declare function defineUchusenRocket(): void;
|
|
80
|
-
export { ROCKETS };
|
|
187
|
+
export { ROCKETS, UchusenFlight };
|
|
81
188
|
declare global {
|
|
82
189
|
interface HTMLElementTagNameMap {
|
|
83
190
|
"uchusen-rocket": UchusenRocket;
|
package/dist/element.js
CHANGED
|
@@ -2,22 +2,36 @@
|
|
|
2
2
|
// crossfading in over it; drag to turn, keyboard, tilt on phones, a slow spin, reduced motion; the drawing stays on no WebGL, Save-Data or any failure. Importing this file defines the elements. three.js is
|
|
3
3
|
// loaded only when a 3D view is wanted, and a licensed model only when the painted look asks for one.
|
|
4
4
|
import { build, FitError } from "./build/index.js";
|
|
5
|
+
import { bellsOf, enginesWanted, pickBells } from "./engines.js";
|
|
6
|
+
import { engineChart } from "./draw/plume.js";
|
|
7
|
+
import { burnsOf, FlightClock, flightOf, frameAt, phaseAt, phasePosition } from "./flight.js";
|
|
8
|
+
import { defineUchusenFlight, UchusenFlight } from "./flightbar.js";
|
|
5
9
|
import { lineupSvg } from "./build/lineup.js";
|
|
6
10
|
import { CROSSFADE_MS, REDUCED_FADE_MS, revealDelay } from "./crossfade.js";
|
|
7
11
|
import { cleanView, turnedBy, VIEWS } from "./framing.js";
|
|
8
12
|
import { cleanShow } from "./layout.js";
|
|
9
13
|
import { cleanLook } from "./looks.js";
|
|
10
|
-
import { ROCKETS } from "./rockets.js";
|
|
14
|
+
import { ROCKETS, SLOT_NAMES } from "./rockets.js";
|
|
11
15
|
import { tiltMode, tiltTurn } from "./tilt.js";
|
|
16
|
+
import { spinOf } from "./spin.js";
|
|
12
17
|
const HTMLBase = typeof HTMLElement === "undefined" ? class {
|
|
13
18
|
} : HTMLElement;
|
|
14
19
|
/** A view out of sight keeps its WebGL canvas this long before letting it go (a browser allows only a few at a time). */
|
|
15
20
|
const RELEASE_MS = 30_000;
|
|
16
|
-
const DEFAULT_SPIN = { seconds: 180, way: "cw" };
|
|
17
21
|
/** The drawing, followed along a turn, is made again at most this often. */
|
|
18
22
|
const PLACE_MS = 50;
|
|
19
23
|
let assetBase = null;
|
|
20
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* Where the licensed models are, for every element with no `assets` attribute of its own. Left unset: beside this module, in ./assets/.
|
|
26
|
+
*
|
|
27
|
+
* @param url The folder the licensed models are in. A trailing slash is added if it has none.
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts no-run
|
|
30
|
+
* import { setAssetBase } from "@johnmorrisdotca/uchusen-rockets/element";
|
|
31
|
+
*
|
|
32
|
+
* setAssetBase("/static/uchusen-assets/");
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
21
35
|
export function setAssetBase(url) {
|
|
22
36
|
assetBase = url.endsWith("/") ? url : `${url}/`;
|
|
23
37
|
}
|
|
@@ -82,8 +96,22 @@ function whyNot(mode) {
|
|
|
82
96
|
return "no-webgl";
|
|
83
97
|
return "";
|
|
84
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* The `<uchusen-rocket>` element: a rocket as a drawing that a 3D view takes over from when the browser can draw WebGL. Its attributes are the words of `RocketOptions`. It exposes its state as `data-state` and loads three.js only for a 3D view.
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```ts no-run
|
|
104
|
+
* import { UchusenRocket } from "@johnmorrisdotca/uchusen-rockets/element";
|
|
105
|
+
*
|
|
106
|
+
* const rocket: UchusenRocket = document.createElement("uchusen-rocket") as UchusenRocket;
|
|
107
|
+
* rocket.setAttribute("rocket", "starship");
|
|
108
|
+
* rocket.setAttribute("variant", "v3");
|
|
109
|
+
* rocket.setAttribute("look", "painted");
|
|
110
|
+
* document.body.append(rocket);
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
85
113
|
export class UchusenRocket extends HTMLBase {
|
|
86
|
-
static observedAttributes = ["rocket", "variant", "show", "look", "view", "build", "mode", "assets", "spin", "way", "label"];
|
|
114
|
+
static observedAttributes = ["rocket", "variant", "show", "look", "view", "build", "mode", "assets", "spin", "way", "label", "engines", "phase"];
|
|
87
115
|
descriptionValue = null;
|
|
88
116
|
picture = null;
|
|
89
117
|
holder = null;
|
|
@@ -106,6 +134,13 @@ export class UchusenRocket extends HTMLBase {
|
|
|
106
134
|
onScreen = true;
|
|
107
135
|
drawn = { key: "", box: [0, 0, 1, 1] };
|
|
108
136
|
tiltCleanups = [];
|
|
137
|
+
clock = null;
|
|
138
|
+
flightFrame = 0;
|
|
139
|
+
flightLast = 0;
|
|
140
|
+
flightDrawn = -1;
|
|
141
|
+
noted = { index: -1, at: 0 };
|
|
142
|
+
phaseSeen = null;
|
|
143
|
+
flightSeen = null;
|
|
109
144
|
/** What is showing now. */
|
|
110
145
|
get state() {
|
|
111
146
|
return this.stateNow;
|
|
@@ -173,15 +208,22 @@ export class UchusenRocket extends HTMLBase {
|
|
|
173
208
|
seen = () => {
|
|
174
209
|
if (!document.hidden && this.stale)
|
|
175
210
|
this.place();
|
|
211
|
+
this.kickFlight();
|
|
176
212
|
};
|
|
213
|
+
/** A reader who changes the setting while the page is open is followed at once. */
|
|
214
|
+
motionChanged = () => this.queue();
|
|
215
|
+
motion = null;
|
|
177
216
|
connectedCallback() {
|
|
178
217
|
if (!this.shadowRoot)
|
|
179
218
|
adopt(this.attachShadow({ mode: "open" }), CSS, rocketSheet);
|
|
180
219
|
document.addEventListener("visibilitychange", this.seen);
|
|
220
|
+
this.motion = typeof matchMedia === "function" ? matchMedia("(prefers-reduced-motion: reduce)") : null;
|
|
221
|
+
this.motion?.addEventListener("change", this.motionChanged);
|
|
181
222
|
this.queue();
|
|
182
223
|
}
|
|
183
224
|
disconnectedCallback() {
|
|
184
225
|
document.removeEventListener("visibilitychange", this.seen);
|
|
226
|
+
this.motion?.removeEventListener("change", this.motionChanged);
|
|
185
227
|
this.teardown();
|
|
186
228
|
this.key = "";
|
|
187
229
|
}
|
|
@@ -190,15 +232,16 @@ export class UchusenRocket extends HTMLBase {
|
|
|
190
232
|
return;
|
|
191
233
|
if (name === "spin" || name === "way")
|
|
192
234
|
this.viewer?.setSpin(this.spin());
|
|
193
|
-
else
|
|
235
|
+
else {
|
|
236
|
+
// choosing what to show leaves the flight
|
|
237
|
+
if (name === "show")
|
|
238
|
+
this.endFlight();
|
|
194
239
|
this.queue();
|
|
240
|
+
}
|
|
195
241
|
}
|
|
196
242
|
// ---------------------------------------------------------------------------------------------------------------------------------
|
|
197
243
|
spin() {
|
|
198
|
-
|
|
199
|
-
const named = { off: 0, slow: 180, medium: 67, fast: 20 };
|
|
200
|
-
const seconds = raw === null ? DEFAULT_SPIN.seconds : (named[raw] ?? (Number.isFinite(Number(raw)) ? Math.max(0, Number(raw)) : DEFAULT_SPIN.seconds));
|
|
201
|
-
return { seconds, way: this.getAttribute("way") === "ccw" ? "ccw" : "cw" };
|
|
244
|
+
return spinOf(this.getAttribute("spin"), this.getAttribute("way"));
|
|
202
245
|
}
|
|
203
246
|
descriptionNow() {
|
|
204
247
|
if (this.descriptionValue)
|
|
@@ -233,6 +276,8 @@ export class UchusenRocket extends HTMLBase {
|
|
|
233
276
|
window.clearTimeout(this.releaseTimer);
|
|
234
277
|
window.clearTimeout(this.revealTimer);
|
|
235
278
|
window.cancelAnimationFrame(this.placeFrame);
|
|
279
|
+
window.cancelAnimationFrame(this.flightFrame);
|
|
280
|
+
this.flightFrame = 0;
|
|
236
281
|
this.stopTilt();
|
|
237
282
|
this.viewer?.dispose();
|
|
238
283
|
this.viewer = null;
|
|
@@ -257,6 +302,129 @@ export class UchusenRocket extends HTMLBase {
|
|
|
257
302
|
const viewName = cleanView(this.getAttribute("view"));
|
|
258
303
|
return { look, show, viewName, angle: VIEWS[viewName] };
|
|
259
304
|
}
|
|
305
|
+
// ---------------------------------------------------------------------------------------------------------------------------------
|
|
306
|
+
// the flight
|
|
307
|
+
/** The flight a page gives for what is showing, or null: a custom build never has one. */
|
|
308
|
+
get flight() {
|
|
309
|
+
const report = this.builtNow?.report;
|
|
310
|
+
return report && !report.custom && report.variant ? flightOf(report.variant.rocket, report.variant.id) : null;
|
|
311
|
+
}
|
|
312
|
+
/** Where the timeline is: `active` once it has been started or moved, until `endFlight`. */
|
|
313
|
+
get flightState() {
|
|
314
|
+
const clock = this.clock;
|
|
315
|
+
const flight = this.flight;
|
|
316
|
+
return { active: clock !== null, playing: clock?.playing ?? false, ended: clock?.ended ?? false, position: clock?.position ?? 0, phase: clock ? phaseAt(clock.flight, clock.position).phase.id : (flight?.phases[0].id ?? "") };
|
|
317
|
+
}
|
|
318
|
+
/** 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. */
|
|
319
|
+
play() {
|
|
320
|
+
const flight = this.flight;
|
|
321
|
+
if (!flight || media("(prefers-reduced-motion: reduce)"))
|
|
322
|
+
return;
|
|
323
|
+
this.clock ??= new FlightClock(flight);
|
|
324
|
+
this.clock.play();
|
|
325
|
+
this.flightMoved();
|
|
326
|
+
}
|
|
327
|
+
pause() {
|
|
328
|
+
this.clock?.pause();
|
|
329
|
+
this.flightMoved();
|
|
330
|
+
}
|
|
331
|
+
/** 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. */
|
|
332
|
+
seek(position) {
|
|
333
|
+
const flight = this.flight;
|
|
334
|
+
if (!flight)
|
|
335
|
+
return;
|
|
336
|
+
this.clock ??= new FlightClock(flight);
|
|
337
|
+
this.clock.seek(position);
|
|
338
|
+
this.flightMoved();
|
|
339
|
+
}
|
|
340
|
+
/** Leaves the flight: the rocket as it was. */
|
|
341
|
+
endFlight() {
|
|
342
|
+
if (!this.clock)
|
|
343
|
+
return;
|
|
344
|
+
this.clock = null;
|
|
345
|
+
this.phaseSeen = null;
|
|
346
|
+
window.cancelAnimationFrame(this.flightFrame);
|
|
347
|
+
this.flightFrame = 0;
|
|
348
|
+
this.viewer?.setFlight(null);
|
|
349
|
+
this.place();
|
|
350
|
+
this.mark();
|
|
351
|
+
this.noteFlight(true);
|
|
352
|
+
}
|
|
353
|
+
/** For each part with engines, which burn: at a named phase, where the timeline is, or else as the attributes have them. */
|
|
354
|
+
engineCharts(phaseId = null) {
|
|
355
|
+
const built = this.builtNow;
|
|
356
|
+
if (!built)
|
|
357
|
+
return [];
|
|
358
|
+
const flight = this.flight;
|
|
359
|
+
const fromPhase = phaseId && flight ? flight.phases.find((phase) => phase.id === phaseId) : null;
|
|
360
|
+
const phase = fromPhase ?? (this.clock ? phaseAt(this.clock.flight, this.clock.position).phase : null);
|
|
361
|
+
const burns = phase ? burnsOf(phase) : null;
|
|
362
|
+
return built.parts.flatMap((part) => {
|
|
363
|
+
const bells = bellsOf(part.pieces);
|
|
364
|
+
if (bells.length === 0)
|
|
365
|
+
return [];
|
|
366
|
+
const fired = pickBells(bells, burns ? (burns[part.slot] ?? 0) : this.engineLights() ? bells.length : 0);
|
|
367
|
+
const name = SLOT_NAMES[part.slot] ?? part.slot;
|
|
368
|
+
const figure = phase?.burns[part.slot]?.engines;
|
|
369
|
+
const words = `${name}: ${figure && figure.value === null ? `${fired.length} drawn, no source says how many` : `${fired.length} of ${bells.length}`}`;
|
|
370
|
+
return [{ slot: part.slot, burning: fired.length, total: bells.length, words, svg: engineChart(bells, fired, words) }];
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
flightMoved() {
|
|
374
|
+
if (this.clock)
|
|
375
|
+
this.viewer?.setFlight(this.clock);
|
|
376
|
+
if (this.viewer)
|
|
377
|
+
this.noteFlight(true);
|
|
378
|
+
else {
|
|
379
|
+
this.place();
|
|
380
|
+
this.noteFlight(true);
|
|
381
|
+
this.kickFlight();
|
|
382
|
+
}
|
|
383
|
+
this.mark();
|
|
384
|
+
}
|
|
385
|
+
/** 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. */
|
|
386
|
+
kickFlight() {
|
|
387
|
+
if (this.viewer || this.flightFrame || !this.clock?.playing || !this.onScreen || document.hidden)
|
|
388
|
+
return;
|
|
389
|
+
this.flightLast = 0;
|
|
390
|
+
this.flightFrame = window.requestAnimationFrame(this.flightStep);
|
|
391
|
+
}
|
|
392
|
+
flightStep = (time) => {
|
|
393
|
+
this.flightFrame = 0;
|
|
394
|
+
const clock = this.clock;
|
|
395
|
+
if (!clock?.playing || this.viewer || !this.onScreen || document.hidden)
|
|
396
|
+
return;
|
|
397
|
+
if (this.flightLast)
|
|
398
|
+
clock.advance(Math.min(0.1, (time - this.flightLast) / 1000));
|
|
399
|
+
this.flightLast = time;
|
|
400
|
+
if (phaseAt(clock.flight, clock.position).index !== this.flightDrawn) {
|
|
401
|
+
this.flightDrawn = phaseAt(clock.flight, clock.position).index;
|
|
402
|
+
this.place();
|
|
403
|
+
}
|
|
404
|
+
this.noteFlight(!clock.playing);
|
|
405
|
+
if (clock.playing)
|
|
406
|
+
this.flightFrame = window.requestAnimationFrame(this.flightStep);
|
|
407
|
+
};
|
|
408
|
+
/** Tells the page where the timeline is: at once for a new phase or a stop, otherwise at most 8 times a second. */
|
|
409
|
+
noteFlight(now = false) {
|
|
410
|
+
const clock = this.clock;
|
|
411
|
+
const index = clock ? phaseAt(clock.flight, clock.position).index : -1;
|
|
412
|
+
const time = performance.now();
|
|
413
|
+
if (!now && index === this.noted.index && time - this.noted.at < 125)
|
|
414
|
+
return;
|
|
415
|
+
this.noted = { index, at: time };
|
|
416
|
+
this.dataset.phase = this.flightState.active ? this.flightState.phase : "";
|
|
417
|
+
this.emit("uchusen-flight", this.flightState);
|
|
418
|
+
}
|
|
419
|
+
/** Whether the engines are lit: `engines="on"`, and never for a reader who asked for reduced motion. */
|
|
420
|
+
engineLights() {
|
|
421
|
+
return enginesWanted(this.getAttribute("engines"), media("(prefers-reduced-motion: reduce)"));
|
|
422
|
+
}
|
|
423
|
+
/** Hands the 3D view what the attributes say about the engines, and its reader's motion setting. */
|
|
424
|
+
lightViewer(viewer) {
|
|
425
|
+
viewer.setReduced(media("(prefers-reduced-motion: reduce)"));
|
|
426
|
+
viewer.setEngines(this.engineLights() ? "full" : null);
|
|
427
|
+
}
|
|
260
428
|
update() {
|
|
261
429
|
const description = this.descriptionNow();
|
|
262
430
|
const key = JSON.stringify(description);
|
|
@@ -275,9 +443,31 @@ export class UchusenRocket extends HTMLBase {
|
|
|
275
443
|
if (!this.picture)
|
|
276
444
|
this.renderShell();
|
|
277
445
|
void this.applyRocket();
|
|
446
|
+
this.settleFlight();
|
|
278
447
|
return;
|
|
279
448
|
}
|
|
280
449
|
this.applySettings();
|
|
450
|
+
this.settleFlight();
|
|
451
|
+
}
|
|
452
|
+
/** After a change: a timeline of another rocket ends, and the `phase` attribute moves it. */
|
|
453
|
+
settleFlight() {
|
|
454
|
+
const flight = this.flight;
|
|
455
|
+
if (this.clock && this.clock.flight.id !== flight?.id)
|
|
456
|
+
this.endFlight();
|
|
457
|
+
if ((flight?.id ?? null) !== this.flightSeen) {
|
|
458
|
+
this.flightSeen = flight?.id ?? null;
|
|
459
|
+
this.phaseSeen = null;
|
|
460
|
+
this.noteFlight(true);
|
|
461
|
+
}
|
|
462
|
+
const asked = this.getAttribute("phase");
|
|
463
|
+
if (asked !== this.phaseSeen) {
|
|
464
|
+
this.phaseSeen = asked;
|
|
465
|
+
const place = flight ? phasePosition(flight, asked) : null;
|
|
466
|
+
if (place !== null)
|
|
467
|
+
this.seek(place);
|
|
468
|
+
else if (asked === null)
|
|
469
|
+
this.endFlight();
|
|
470
|
+
}
|
|
281
471
|
}
|
|
282
472
|
renderShell() {
|
|
283
473
|
const root = this.shadowRoot;
|
|
@@ -306,15 +496,18 @@ export class UchusenRocket extends HTMLBase {
|
|
|
306
496
|
redraw() {
|
|
307
497
|
if (!this.builtNow || !this.drawing)
|
|
308
498
|
return;
|
|
309
|
-
const { look, show, angle } = this.settings(this.builtNow);
|
|
499
|
+
const { look, show: chosen, angle } = this.settings(this.builtNow);
|
|
500
|
+
const flying = this.clock ? frameAt(this.clock.flight, this.clock.position, this.builtNow.parts.map((part) => ({ slot: part.slot, baseY: 0 })), 1) : null;
|
|
501
|
+
const show = flying ? (flying.separated ? "apart" : "together") : chosen;
|
|
310
502
|
// when a 3D view is showing, a drawing of the same angle is ready behind it
|
|
311
503
|
const from = this.driven ? turnedBy(angle, this.driven.yaw, this.driven.tilt) : (this.viewer?.currentAngle() ?? angle);
|
|
312
504
|
const label = this.getAttribute("label") ?? this.builtNow.report.label;
|
|
313
|
-
const
|
|
505
|
+
const lit = flying ? (media("(prefers-reduced-motion: reduce)") ? false : flying.burns) : this.engineLights();
|
|
506
|
+
const key = `${this.key}|${look}|${show}|${from.az.toFixed(2)}|${from.el.toFixed(2)}|${label}|${flying ? flying.index : ""}|${JSON.stringify(lit)}`;
|
|
314
507
|
let node = this.drawing.firstElementChild;
|
|
315
508
|
if (key !== this.drawn.key || !node) {
|
|
316
509
|
const template = document.createElement("template");
|
|
317
|
-
template.innerHTML = this.builtNow.svg({ look, show, view: from });
|
|
510
|
+
template.innerHTML = this.builtNow.svg({ look, show, view: from, engines: lit });
|
|
318
511
|
node = template.content.firstElementChild;
|
|
319
512
|
if (!node)
|
|
320
513
|
return;
|
|
@@ -337,6 +530,8 @@ export class UchusenRocket extends HTMLBase {
|
|
|
337
530
|
return;
|
|
338
531
|
const { look, show, viewName } = this.settings(this.builtNow);
|
|
339
532
|
this.dataset.look = look;
|
|
533
|
+
this.dataset.engines = this.engineLights() ? "on" : "off";
|
|
534
|
+
this.dataset.flight = this.flight?.id ?? "";
|
|
340
535
|
this.dataset.show = show;
|
|
341
536
|
this.dataset.viewAngle = viewName;
|
|
342
537
|
this.dataset.variant = this.builtNow.report.variant?.id ?? "";
|
|
@@ -354,6 +549,8 @@ export class UchusenRocket extends HTMLBase {
|
|
|
354
549
|
const from = viewName !== this.lastView || this.driven ? angle : this.viewer.currentAngle();
|
|
355
550
|
this.lastView = viewName;
|
|
356
551
|
await this.viewer.load(this.builtNow, show, look, from);
|
|
552
|
+
if (this.viewer)
|
|
553
|
+
this.lightViewer(this.viewer);
|
|
357
554
|
this.emit("uchusen-change", { report: this.builtNow.report });
|
|
358
555
|
}
|
|
359
556
|
}
|
|
@@ -366,6 +563,7 @@ export class UchusenRocket extends HTMLBase {
|
|
|
366
563
|
if (this.viewer) {
|
|
367
564
|
this.viewer.setLook(look);
|
|
368
565
|
this.viewer.setShow(show);
|
|
566
|
+
this.lightViewer(this.viewer);
|
|
369
567
|
if (viewName !== this.lastView)
|
|
370
568
|
this.viewer.setAngle(angle, true);
|
|
371
569
|
this.viewer.setHome(angle);
|
|
@@ -387,6 +585,8 @@ export class UchusenRocket extends HTMLBase {
|
|
|
387
585
|
this.onScreen = seen.isIntersecting;
|
|
388
586
|
if (seen.isIntersecting && this.stale)
|
|
389
587
|
this.place();
|
|
588
|
+
if (seen.isIntersecting)
|
|
589
|
+
this.kickFlight();
|
|
390
590
|
if (reason)
|
|
391
591
|
return;
|
|
392
592
|
if (seen.isIntersecting) {
|
|
@@ -404,6 +604,7 @@ export class UchusenRocket extends HTMLBase {
|
|
|
404
604
|
this.viewer?.dispose();
|
|
405
605
|
this.viewer = null;
|
|
406
606
|
this.stopTilt();
|
|
607
|
+
this.kickFlight();
|
|
407
608
|
if (generation === this.generation) {
|
|
408
609
|
this.setState("picture");
|
|
409
610
|
if (this.driven)
|
|
@@ -422,6 +623,7 @@ export class UchusenRocket extends HTMLBase {
|
|
|
422
623
|
this.stopTilt();
|
|
423
624
|
this.viewer?.dispose();
|
|
424
625
|
this.viewer = null;
|
|
626
|
+
this.kickFlight();
|
|
425
627
|
this.setState("fallback", why);
|
|
426
628
|
this.emit("uchusen-fallback", { reason: why });
|
|
427
629
|
}
|
|
@@ -448,16 +650,25 @@ export class UchusenRocket extends HTMLBase {
|
|
|
448
650
|
this.dataset.painted = state;
|
|
449
651
|
this.emit("uchusen-painted", { state });
|
|
450
652
|
},
|
|
653
|
+
onFlight: () => this.noteFlight(!this.clock?.playing),
|
|
451
654
|
});
|
|
452
655
|
this.viewer = made;
|
|
656
|
+
window.cancelAnimationFrame(this.flightFrame);
|
|
657
|
+
this.flightFrame = 0;
|
|
658
|
+
if (this.clock)
|
|
659
|
+
made.setFlight(this.clock);
|
|
453
660
|
if (this.driven)
|
|
454
661
|
made.drive(this.driven);
|
|
455
662
|
made.setVisible(true);
|
|
456
663
|
const { look, show, viewName, angle } = this.settings(this.builtNow ?? built);
|
|
457
664
|
this.lastView = viewName;
|
|
458
665
|
await made.load(this.builtNow ?? built, show, look, angle);
|
|
459
|
-
if (generation !== this.generation)
|
|
666
|
+
if (generation !== this.generation || this.viewer !== made)
|
|
460
667
|
return;
|
|
668
|
+
const now = this.settings(this.builtNow ?? built);
|
|
669
|
+
if (now.show !== show)
|
|
670
|
+
made.setShow(now.show);
|
|
671
|
+
this.lightViewer(made);
|
|
461
672
|
made.setSpin(this.spin());
|
|
462
673
|
const wait = revealDelay(this.shownAt, performance.now(), reduced);
|
|
463
674
|
this.revealTimer = window.setTimeout(() => {
|
|
@@ -528,7 +739,20 @@ const LINEUP_CSS = `
|
|
|
528
739
|
:host { display: block; overflow-x: auto; color: inherit; }
|
|
529
740
|
svg { display: block; }
|
|
530
741
|
`;
|
|
531
|
-
/**
|
|
742
|
+
/**
|
|
743
|
+
* Rockets side by side on one baseline at one scale: `<uchusen-lineup items="starship:v1,starship:v3,person,building" unit="4" ruler labels>`.
|
|
744
|
+
*
|
|
745
|
+
* @example
|
|
746
|
+
* ```ts no-run
|
|
747
|
+
* import { UchusenLineup } from "@johnmorrisdotca/uchusen-rockets/element";
|
|
748
|
+
*
|
|
749
|
+
* const lineup: UchusenLineup = document.createElement("uchusen-lineup") as UchusenLineup;
|
|
750
|
+
* lineup.setAttribute("items", "starship:v2,starship:v3,person");
|
|
751
|
+
* lineup.setAttribute("unit", "3");
|
|
752
|
+
* lineup.toggleAttribute("ruler", true);
|
|
753
|
+
* document.body.append(lineup);
|
|
754
|
+
* ```
|
|
755
|
+
*/
|
|
532
756
|
export class UchusenLineup extends HTMLBase {
|
|
533
757
|
static observedAttributes = ["items", "unit", "look", "view", "show", "ruler", "labels"];
|
|
534
758
|
connectedCallback() {
|
|
@@ -567,7 +791,17 @@ export class UchusenLineup extends HTMLBase {
|
|
|
567
791
|
this.dataset.count = String(shown.length);
|
|
568
792
|
}
|
|
569
793
|
}
|
|
570
|
-
/**
|
|
794
|
+
/**
|
|
795
|
+
* Defines both elements, once. Importing this module does it.
|
|
796
|
+
*
|
|
797
|
+
* @example
|
|
798
|
+
* ```ts no-run
|
|
799
|
+
* import { defineUchusenRocket } from "@johnmorrisdotca/uchusen-rockets/element";
|
|
800
|
+
*
|
|
801
|
+
* defineUchusenRocket();
|
|
802
|
+
* console.log(customElements.get("uchusen-rocket") !== undefined);
|
|
803
|
+
* ```
|
|
804
|
+
*/
|
|
571
805
|
export function defineUchusenRocket() {
|
|
572
806
|
if (typeof customElements === "undefined")
|
|
573
807
|
return;
|
|
@@ -575,6 +809,7 @@ export function defineUchusenRocket() {
|
|
|
575
809
|
customElements.define("uchusen-rocket", UchusenRocket);
|
|
576
810
|
if (!customElements.get("uchusen-lineup"))
|
|
577
811
|
customElements.define("uchusen-lineup", UchusenLineup);
|
|
812
|
+
defineUchusenFlight();
|
|
578
813
|
}
|
|
579
814
|
defineUchusenRocket();
|
|
580
|
-
export { ROCKETS };
|
|
815
|
+
export { ROCKETS, UchusenFlight };
|