@johnmorrisdotca/uchusen-rockets 0.18.0 → 0.19.1
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 +30 -4
- package/NOTICE.md +22 -4
- package/README.md +16 -11
- package/dist/assets/hubble-hubble-aft-shroud.glb +0 -0
- package/dist/assets/hubble-hubble-aft-shroud.painted.svg +1 -0
- package/dist/assets/hubble-hubble-aft-shroud.svg +1 -0
- package/dist/assets/hubble-hubble-aft-shroud.thick.svg +1 -0
- package/dist/assets/hubble-hubble-antenna-far.glb +0 -0
- package/dist/assets/hubble-hubble-antenna-far.painted.svg +1 -0
- package/dist/assets/hubble-hubble-antenna-far.svg +1 -0
- package/dist/assets/hubble-hubble-antenna-far.thick.svg +1 -0
- package/dist/assets/hubble-hubble-antenna-near.glb +0 -0
- package/dist/assets/hubble-hubble-antenna-near.painted.svg +1 -0
- package/dist/assets/hubble-hubble-antenna-near.svg +1 -0
- package/dist/assets/hubble-hubble-antenna-near.thick.svg +1 -0
- package/dist/assets/hubble-hubble-apart.painted.svg +1 -0
- package/dist/assets/hubble-hubble-apart.svg +1 -0
- package/dist/assets/hubble-hubble-apart.thick.svg +1 -0
- package/dist/assets/hubble-hubble-aperture-door.glb +0 -0
- package/dist/assets/hubble-hubble-aperture-door.painted.svg +1 -0
- package/dist/assets/hubble-hubble-aperture-door.svg +1 -0
- package/dist/assets/hubble-hubble-aperture-door.thick.svg +1 -0
- package/dist/assets/hubble-hubble-array-left.glb +0 -0
- package/dist/assets/hubble-hubble-array-left.painted.svg +1 -0
- package/dist/assets/hubble-hubble-array-left.svg +1 -0
- package/dist/assets/hubble-hubble-array-left.thick.svg +1 -0
- package/dist/assets/hubble-hubble-array-right.glb +0 -0
- package/dist/assets/hubble-hubble-array-right.painted.svg +1 -0
- package/dist/assets/hubble-hubble-array-right.svg +1 -0
- package/dist/assets/hubble-hubble-array-right.thick.svg +1 -0
- package/dist/assets/hubble-hubble-equipment-section.glb +0 -0
- package/dist/assets/hubble-hubble-equipment-section.painted.svg +1 -0
- package/dist/assets/hubble-hubble-equipment-section.svg +1 -0
- package/dist/assets/hubble-hubble-equipment-section.thick.svg +1 -0
- package/dist/assets/hubble-hubble-forward-shell.glb +0 -0
- package/dist/assets/hubble-hubble-forward-shell.painted.svg +1 -0
- package/dist/assets/hubble-hubble-forward-shell.svg +1 -0
- package/dist/assets/hubble-hubble-forward-shell.thick.svg +1 -0
- package/dist/assets/hubble-hubble-light-shield.glb +0 -0
- package/dist/assets/hubble-hubble-light-shield.painted.svg +1 -0
- package/dist/assets/hubble-hubble-light-shield.svg +1 -0
- package/dist/assets/hubble-hubble-light-shield.thick.svg +1 -0
- package/dist/assets/hubble-hubble.glb +0 -0
- package/dist/assets/hubble-hubble.painted.svg +1 -1
- package/dist/assets/hubble-hubble.svg +1 -1
- package/dist/assets/hubble-hubble.thick.svg +1 -1
- package/dist/assets/iss-iss-airlock.glb +0 -0
- package/dist/assets/iss-iss-airlock.painted.svg +1 -0
- package/dist/assets/iss-iss-airlock.svg +1 -0
- package/dist/assets/iss-iss-airlock.thick.svg +1 -0
- package/dist/assets/iss-iss-apart.painted.svg +1 -0
- package/dist/assets/iss-iss-apart.svg +1 -0
- package/dist/assets/iss-iss-apart.thick.svg +1 -0
- package/dist/assets/iss-iss-arrays-p4.glb +0 -0
- package/dist/assets/iss-iss-arrays-p4.painted.svg +1 -0
- package/dist/assets/iss-iss-arrays-p4.svg +1 -0
- package/dist/assets/iss-iss-arrays-p4.thick.svg +1 -0
- package/dist/assets/iss-iss-arrays-p6.glb +0 -0
- package/dist/assets/iss-iss-arrays-p6.painted.svg +1 -0
- package/dist/assets/iss-iss-arrays-p6.svg +1 -0
- package/dist/assets/iss-iss-arrays-p6.thick.svg +1 -0
- package/dist/assets/iss-iss-arrays-s4.glb +0 -0
- package/dist/assets/iss-iss-arrays-s4.painted.svg +1 -0
- package/dist/assets/iss-iss-arrays-s4.svg +1 -0
- package/dist/assets/iss-iss-arrays-s4.thick.svg +1 -0
- package/dist/assets/iss-iss-arrays-s6.glb +0 -0
- package/dist/assets/iss-iss-arrays-s6.painted.svg +1 -0
- package/dist/assets/iss-iss-arrays-s6.svg +1 -0
- package/dist/assets/iss-iss-arrays-s6.thick.svg +1 -0
- package/dist/assets/iss-iss-columbus.glb +0 -0
- package/dist/assets/iss-iss-columbus.painted.svg +1 -0
- package/dist/assets/iss-iss-columbus.svg +1 -0
- package/dist/assets/iss-iss-columbus.thick.svg +1 -0
- package/dist/assets/iss-iss-destiny.glb +0 -0
- package/dist/assets/iss-iss-destiny.painted.svg +1 -0
- package/dist/assets/iss-iss-destiny.svg +1 -0
- package/dist/assets/iss-iss-destiny.thick.svg +1 -0
- package/dist/assets/iss-iss-harmony.glb +0 -0
- package/dist/assets/iss-iss-harmony.painted.svg +1 -0
- package/dist/assets/iss-iss-harmony.svg +1 -0
- package/dist/assets/iss-iss-harmony.thick.svg +1 -0
- package/dist/assets/iss-iss-kibo.glb +0 -0
- package/dist/assets/iss-iss-kibo.painted.svg +1 -0
- package/dist/assets/iss-iss-kibo.svg +1 -0
- package/dist/assets/iss-iss-kibo.thick.svg +1 -0
- package/dist/assets/iss-iss-radiators-port.glb +0 -0
- package/dist/assets/iss-iss-radiators-port.painted.svg +1 -0
- package/dist/assets/iss-iss-radiators-port.svg +1 -0
- package/dist/assets/iss-iss-radiators-port.thick.svg +1 -0
- package/dist/assets/iss-iss-radiators-starboard.glb +0 -0
- package/dist/assets/iss-iss-radiators-starboard.painted.svg +1 -0
- package/dist/assets/iss-iss-radiators-starboard.svg +1 -0
- package/dist/assets/iss-iss-radiators-starboard.thick.svg +1 -0
- package/dist/assets/iss-iss-soyuz-aft.glb +0 -0
- package/dist/assets/iss-iss-soyuz-aft.painted.svg +1 -0
- package/dist/assets/iss-iss-soyuz-aft.svg +1 -0
- package/dist/assets/iss-iss-soyuz-aft.thick.svg +1 -0
- package/dist/assets/iss-iss-soyuz-zarya-nadir.glb +0 -0
- package/dist/assets/iss-iss-soyuz-zarya-nadir.painted.svg +1 -0
- package/dist/assets/iss-iss-soyuz-zarya-nadir.svg +1 -0
- package/dist/assets/iss-iss-soyuz-zarya-nadir.thick.svg +1 -0
- package/dist/assets/iss-iss-soyuz-zvezda-nadir.glb +0 -0
- package/dist/assets/iss-iss-soyuz-zvezda-nadir.painted.svg +1 -0
- package/dist/assets/iss-iss-soyuz-zvezda-nadir.svg +1 -0
- package/dist/assets/iss-iss-soyuz-zvezda-nadir.thick.svg +1 -0
- package/dist/assets/iss-iss-soyuz-zvezda-zenith.glb +0 -0
- package/dist/assets/iss-iss-soyuz-zvezda-zenith.painted.svg +1 -0
- package/dist/assets/iss-iss-soyuz-zvezda-zenith.svg +1 -0
- package/dist/assets/iss-iss-soyuz-zvezda-zenith.thick.svg +1 -0
- package/dist/assets/iss-iss-truss-p1.glb +0 -0
- package/dist/assets/iss-iss-truss-p1.painted.svg +1 -0
- package/dist/assets/iss-iss-truss-p1.svg +1 -0
- package/dist/assets/iss-iss-truss-p1.thick.svg +1 -0
- package/dist/assets/iss-iss-truss-p3-p4.glb +0 -0
- package/dist/assets/iss-iss-truss-p3-p4.painted.svg +1 -0
- package/dist/assets/iss-iss-truss-p3-p4.svg +1 -0
- package/dist/assets/iss-iss-truss-p3-p4.thick.svg +1 -0
- package/dist/assets/iss-iss-truss-p5.glb +0 -0
- package/dist/assets/iss-iss-truss-p5.painted.svg +1 -0
- package/dist/assets/iss-iss-truss-p5.svg +1 -0
- package/dist/assets/iss-iss-truss-p5.thick.svg +1 -0
- package/dist/assets/iss-iss-truss-p6.glb +0 -0
- package/dist/assets/iss-iss-truss-p6.painted.svg +1 -0
- package/dist/assets/iss-iss-truss-p6.svg +1 -0
- package/dist/assets/iss-iss-truss-p6.thick.svg +1 -0
- package/dist/assets/iss-iss-truss-s0.glb +0 -0
- package/dist/assets/iss-iss-truss-s0.painted.svg +1 -0
- package/dist/assets/iss-iss-truss-s0.svg +1 -0
- package/dist/assets/iss-iss-truss-s0.thick.svg +1 -0
- package/dist/assets/iss-iss-truss-s1.glb +0 -0
- package/dist/assets/iss-iss-truss-s1.painted.svg +1 -0
- package/dist/assets/iss-iss-truss-s1.svg +1 -0
- package/dist/assets/iss-iss-truss-s1.thick.svg +1 -0
- package/dist/assets/iss-iss-truss-s3-s4.glb +0 -0
- package/dist/assets/iss-iss-truss-s3-s4.painted.svg +1 -0
- package/dist/assets/iss-iss-truss-s3-s4.svg +1 -0
- package/dist/assets/iss-iss-truss-s3-s4.thick.svg +1 -0
- package/dist/assets/iss-iss-truss-s5.glb +0 -0
- package/dist/assets/iss-iss-truss-s5.painted.svg +1 -0
- package/dist/assets/iss-iss-truss-s5.svg +1 -0
- package/dist/assets/iss-iss-truss-s5.thick.svg +1 -0
- package/dist/assets/iss-iss-truss-s6.glb +0 -0
- package/dist/assets/iss-iss-truss-s6.painted.svg +1 -0
- package/dist/assets/iss-iss-truss-s6.svg +1 -0
- package/dist/assets/iss-iss-truss-s6.thick.svg +1 -0
- package/dist/assets/iss-iss-unity.glb +0 -0
- package/dist/assets/iss-iss-unity.painted.svg +1 -0
- package/dist/assets/iss-iss-unity.svg +1 -0
- package/dist/assets/iss-iss-unity.thick.svg +1 -0
- package/dist/assets/iss-iss-zarya.glb +0 -0
- package/dist/assets/iss-iss-zarya.painted.svg +1 -0
- package/dist/assets/iss-iss-zarya.svg +1 -0
- package/dist/assets/iss-iss-zarya.thick.svg +1 -0
- package/dist/assets/iss-iss-zvezda.glb +0 -0
- package/dist/assets/iss-iss-zvezda.painted.svg +1 -0
- package/dist/assets/iss-iss-zvezda.svg +1 -0
- package/dist/assets/iss-iss-zvezda.thick.svg +1 -0
- package/dist/assets/iss-iss.glb +0 -0
- package/dist/assets/iss-iss.painted.svg +1 -1
- package/dist/assets/iss-iss.svg +1 -1
- package/dist/assets/iss-iss.thick.svg +1 -1
- package/dist/assets/jupiter-c-jupiter-c-apart.painted.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-apart.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-apart.thick.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-first-stage.glb +0 -0
- package/dist/assets/jupiter-c-jupiter-c-first-stage.painted.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-first-stage.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-first-stage.thick.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-fourth-stage.glb +0 -0
- package/dist/assets/jupiter-c-jupiter-c-fourth-stage.painted.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-fourth-stage.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-fourth-stage.thick.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-tail.glb +0 -0
- package/dist/assets/jupiter-c-jupiter-c-tail.painted.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-tail.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-tail.thick.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-tub.glb +0 -0
- package/dist/assets/jupiter-c-jupiter-c-tub.painted.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-tub.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-tub.thick.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c.glb +0 -0
- package/dist/assets/jupiter-c-jupiter-c.painted.svg +1 -1
- package/dist/assets/jupiter-c-jupiter-c.svg +1 -1
- package/dist/assets/jupiter-c-jupiter-c.thick.svg +1 -1
- package/dist/assets/models/hubble-aft-shroud.glb +0 -0
- package/dist/assets/models/hubble-antenna-far.glb +0 -0
- package/dist/assets/models/hubble-antenna-near.glb +0 -0
- package/dist/assets/models/hubble-aperture-door.glb +0 -0
- package/dist/assets/models/hubble-array-left.glb +0 -0
- package/dist/assets/models/hubble-array-right.glb +0 -0
- package/dist/assets/models/hubble-equipment-section.glb +0 -0
- package/dist/assets/models/hubble-forward-shell.glb +0 -0
- package/dist/assets/models/hubble-light-shield.glb +0 -0
- package/dist/assets/models/iss-airlock.glb +0 -0
- package/dist/assets/models/iss-arrays-p4.glb +0 -0
- package/dist/assets/models/iss-arrays-p6.glb +0 -0
- package/dist/assets/models/iss-arrays-s4.glb +0 -0
- package/dist/assets/models/iss-arrays-s6.glb +0 -0
- package/dist/assets/models/iss-columbus.glb +0 -0
- package/dist/assets/models/iss-destiny.glb +0 -0
- package/dist/assets/models/iss-harmony.glb +0 -0
- package/dist/assets/models/iss-kibo.glb +0 -0
- package/dist/assets/models/iss-radiators-port.glb +0 -0
- package/dist/assets/models/iss-radiators-starboard.glb +0 -0
- package/dist/assets/models/iss-soyuz-aft.glb +0 -0
- package/dist/assets/models/iss-soyuz-zarya-nadir.glb +0 -0
- package/dist/assets/models/iss-soyuz-zvezda-nadir.glb +0 -0
- package/dist/assets/models/iss-soyuz-zvezda-zenith.glb +0 -0
- package/dist/assets/models/iss-truss-p1.glb +0 -0
- package/dist/assets/models/iss-truss-p3-p4.glb +0 -0
- package/dist/assets/models/iss-truss-p5.glb +0 -0
- package/dist/assets/models/iss-truss-p6.glb +0 -0
- package/dist/assets/models/iss-truss-s0.glb +0 -0
- package/dist/assets/models/iss-truss-s1.glb +0 -0
- package/dist/assets/models/iss-truss-s3-s4.glb +0 -0
- package/dist/assets/models/iss-truss-s5.glb +0 -0
- package/dist/assets/models/iss-truss-s6.glb +0 -0
- package/dist/assets/models/iss-unity.glb +0 -0
- package/dist/assets/models/iss-zarya.glb +0 -0
- package/dist/assets/models/iss-zvezda.glb +0 -0
- package/dist/assets/models/jupiter-c-first-stage.glb +0 -0
- package/dist/assets/models/jupiter-c-fourth-stage.glb +0 -0
- package/dist/assets/models/jupiter-c-tail.glb +0 -0
- package/dist/assets/models/jupiter-c-tub.glb +0 -0
- package/dist/assets/models/tiangong-hub.glb +0 -0
- package/dist/assets/models/tiangong-mengtian-arrays.glb +0 -0
- package/dist/assets/models/tiangong-mengtian.glb +0 -0
- package/dist/assets/models/tiangong-shenzhou-forward.glb +0 -0
- package/dist/assets/models/tiangong-shenzhou-nadir.glb +0 -0
- package/dist/assets/models/tiangong-tianhe-arrays.glb +0 -0
- package/dist/assets/models/tiangong-tianhe.glb +0 -0
- package/dist/assets/models/tiangong-tianzhou.glb +0 -0
- package/dist/assets/models/tiangong-wentian-arrays.glb +0 -0
- package/dist/assets/models/tiangong-wentian.glb +0 -0
- package/dist/assets/tiangong-tiangong-apart.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-apart.svg +1 -0
- package/dist/assets/tiangong-tiangong-apart.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-hub.glb +0 -0
- package/dist/assets/tiangong-tiangong-hub.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-hub.svg +1 -0
- package/dist/assets/tiangong-tiangong-hub.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-mengtian-arrays.glb +0 -0
- package/dist/assets/tiangong-tiangong-mengtian-arrays.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-mengtian-arrays.svg +1 -0
- package/dist/assets/tiangong-tiangong-mengtian-arrays.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-mengtian.glb +0 -0
- package/dist/assets/tiangong-tiangong-mengtian.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-mengtian.svg +1 -0
- package/dist/assets/tiangong-tiangong-mengtian.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-shenzhou-forward.glb +0 -0
- package/dist/assets/tiangong-tiangong-shenzhou-forward.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-shenzhou-forward.svg +1 -0
- package/dist/assets/tiangong-tiangong-shenzhou-forward.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-shenzhou-nadir.glb +0 -0
- package/dist/assets/tiangong-tiangong-shenzhou-nadir.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-shenzhou-nadir.svg +1 -0
- package/dist/assets/tiangong-tiangong-shenzhou-nadir.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-tianhe-arrays.glb +0 -0
- package/dist/assets/tiangong-tiangong-tianhe-arrays.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-tianhe-arrays.svg +1 -0
- package/dist/assets/tiangong-tiangong-tianhe-arrays.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-tianhe.glb +0 -0
- package/dist/assets/tiangong-tiangong-tianhe.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-tianhe.svg +1 -0
- package/dist/assets/tiangong-tiangong-tianhe.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-tianzhou.glb +0 -0
- package/dist/assets/tiangong-tiangong-tianzhou.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-tianzhou.svg +1 -0
- package/dist/assets/tiangong-tiangong-tianzhou.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-wentian-arrays.glb +0 -0
- package/dist/assets/tiangong-tiangong-wentian-arrays.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-wentian-arrays.svg +1 -0
- package/dist/assets/tiangong-tiangong-wentian-arrays.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-wentian.glb +0 -0
- package/dist/assets/tiangong-tiangong-wentian.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-wentian.svg +1 -0
- package/dist/assets/tiangong-tiangong-wentian.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong.glb +0 -0
- package/dist/assets/tiangong-tiangong.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong.svg +1 -0
- package/dist/assets/tiangong-tiangong.thick.svg +1 -0
- package/dist/buildbar.js +22 -5
- package/dist/data/credits.d.ts +18 -1
- package/dist/data/credits.js +20 -3
- package/dist/data/hubble.js +16 -6
- package/dist/data/iss.js +52 -5
- package/dist/data/jupiterc.js +11 -6
- package/dist/data/makers.d.ts +1 -0
- package/dist/data/makers.js +2 -1
- package/dist/data/sources.d.ts +160 -0
- package/dist/data/sources.js +20 -0
- package/dist/data/tiangong.d.ts +12 -0
- package/dist/data/tiangong.js +54 -0
- package/dist/element/orbitWorld.d.ts +5 -0
- package/dist/element/orbitWorld.js +46 -1
- package/dist/element/probe.d.ts +15 -0
- package/dist/element/probe.js +46 -0
- package/dist/element/scene.d.ts +6 -0
- package/dist/element/scene.js +25 -11
- package/dist/element.d.ts +2 -0
- package/dist/element.js +27 -20
- package/dist/launches/data.d.ts +2 -0
- package/dist/launches/data.js +4 -0
- package/dist/launches/index.d.ts +318 -0
- package/dist/launches/index.js +249 -0
- package/dist/launches/links.d.ts +43 -0
- package/dist/launches/links.js +40 -0
- package/dist/launches/source.d.ts +20 -0
- package/dist/launches/source.js +22 -0
- package/dist/model/hubble.js +51 -17
- package/dist/model/iss.js +109 -23
- package/dist/model/jupiterc.js +29 -11
- package/dist/model/registry.js +4 -2
- package/dist/model/tiangong.d.ts +2 -0
- package/dist/model/tiangong.js +109 -0
- package/dist/parts.d.ts +1 -1
- package/dist/rockets.js +52 -3
- package/dist/thrusters.js +4 -4
- package/package.json +11 -1
- 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/element.js
CHANGED
|
@@ -21,6 +21,7 @@ import { ROCKETS, SLOT_NAMES } from "./rockets.js";
|
|
|
21
21
|
import { tiltMode, tiltTurn } from "./tilt.js";
|
|
22
22
|
import { skyQuery } from "./element/solarGroups.js";
|
|
23
23
|
import { Panel } from "./element/panel.js";
|
|
24
|
+
import { glProbe } from "./element/probe.js";
|
|
24
25
|
import { spinOf } from "./spin.js";
|
|
25
26
|
const HTMLBase = typeof HTMLElement === "undefined" ? class {
|
|
26
27
|
} : HTMLElement;
|
|
@@ -94,29 +95,13 @@ function adopt(root, css, holder) {
|
|
|
94
95
|
const rocketSheet = { sheet: null };
|
|
95
96
|
const lineupSheet = { sheet: null };
|
|
96
97
|
const media = (query) => typeof matchMedia === "function" && matchMedia(query).matches;
|
|
97
|
-
|
|
98
|
-
function webglWorks() {
|
|
99
|
-
if (webgl !== null)
|
|
100
|
-
return webgl;
|
|
101
|
-
try {
|
|
102
|
-
const probe = document.createElement("canvas");
|
|
103
|
-
const gl = probe.getContext("webgl2") ?? probe.getContext("webgl");
|
|
104
|
-
webgl = Boolean(gl);
|
|
105
|
-
gl?.getExtension("WEBGL_lose_context")?.loseContext();
|
|
106
|
-
}
|
|
107
|
-
catch {
|
|
108
|
-
webgl = false;
|
|
109
|
-
}
|
|
110
|
-
return webgl;
|
|
111
|
-
}
|
|
98
|
+
/** Why the 3D view is not wanted, from what is known without making a WebGL context. Whether WebGL works is asked once, when the first element comes on screen. */
|
|
112
99
|
function whyNot(mode) {
|
|
113
100
|
if (mode === "drawing")
|
|
114
101
|
return "off";
|
|
115
102
|
const connection = navigator.connection;
|
|
116
103
|
if (connection?.saveData || media("(prefers-reduced-data: reduce)"))
|
|
117
104
|
return "reduced-data";
|
|
118
|
-
if (!webglWorks())
|
|
119
|
-
return "no-webgl";
|
|
120
105
|
return "";
|
|
121
106
|
}
|
|
122
107
|
/**
|
|
@@ -134,7 +119,7 @@ function whyNot(mode) {
|
|
|
134
119
|
* ```
|
|
135
120
|
*/
|
|
136
121
|
export class UchusenRocket extends HTMLBase {
|
|
137
|
-
static observedAttributes = ["rocket", "variant", "show", "look", "view", "build", "mode", "assets", "spin", "way", "label", "engines", "lights", "thrusters", "phase", "motion", "labels", "inspector", "beside", "captions", "scale-note", "off-screen", "scale", "progress", "float", "names", "leave", "docked", "edges", "world", "form"];
|
|
122
|
+
static observedAttributes = ["rocket", "variant", "show", "look", "view", "build", "mode", "assets", "spin", "way", "label", "engines", "lights", "thrusters", "phase", "motion", "labels", "inspector", "beside", "captions", "scale-note", "off-screen", "scale", "progress", "float", "names", "leave", "docked", "edges", "world", "world-turn", "form"];
|
|
138
123
|
descriptionValue = null;
|
|
139
124
|
picture = null;
|
|
140
125
|
holder = null;
|
|
@@ -154,6 +139,8 @@ export class UchusenRocket extends HTMLBase {
|
|
|
154
139
|
stateNow = "picture";
|
|
155
140
|
shownAt = 0;
|
|
156
141
|
starting = false;
|
|
142
|
+
/** Whether this element has asked the page's WebGL answer since it started watching. */
|
|
143
|
+
glAsked = false;
|
|
157
144
|
key = "";
|
|
158
145
|
driven = null;
|
|
159
146
|
placeFrame = 0;
|
|
@@ -361,6 +348,8 @@ export class UchusenRocket extends HTMLBase {
|
|
|
361
348
|
this.viewer?.setEdges(after === "open");
|
|
362
349
|
else if (name === "world")
|
|
363
350
|
this.viewer?.setOrbit(after === "earth");
|
|
351
|
+
else if (name === "world-turn")
|
|
352
|
+
this.viewer?.setWorldTurn(Number(after));
|
|
364
353
|
else if (name === "names")
|
|
365
354
|
this.viewer?.setNameLabels(after !== "off");
|
|
366
355
|
else if (name === "progress")
|
|
@@ -740,6 +729,10 @@ export class UchusenRocket extends HTMLBase {
|
|
|
740
729
|
this.dataset.slots = this.builtNow.parts.map((part) => part.slot).join(",");
|
|
741
730
|
this.dataset.form = this.descriptionNow().form ?? "stack";
|
|
742
731
|
this.dataset.detail = this.detailFor(this.descriptionNow());
|
|
732
|
+
if (CARRIERS.has(this.descriptionNow().rocket))
|
|
733
|
+
this.dataset.docked = this.dockedFine ? "full" : "coarse";
|
|
734
|
+
else
|
|
735
|
+
delete this.dataset.docked;
|
|
743
736
|
this.dataset.custom = String(this.builtNow.report.custom);
|
|
744
737
|
}
|
|
745
738
|
async applyRocket() {
|
|
@@ -802,10 +795,12 @@ export class UchusenRocket extends HTMLBase {
|
|
|
802
795
|
upgradeDocked() {
|
|
803
796
|
if (this.dockedFine)
|
|
804
797
|
return true;
|
|
805
|
-
if (!this.
|
|
798
|
+
if (!this.builtNow || !CARRIERS.has(this.descriptionNow().rocket))
|
|
806
799
|
return false;
|
|
807
800
|
const description = this.descriptionNow();
|
|
801
|
+
// A page that zooms the picture and leaves the camera where it is never brings the fine build in by distance, so the carrier is brought to its full build here too.
|
|
808
802
|
this.dockedFine = true;
|
|
803
|
+
this.fine = true;
|
|
809
804
|
try {
|
|
810
805
|
this.builtNow = build(description, { detail: "full", dockedDetail: "full", ...this.besideOptions(description), scale: this.sizeNow(description), ...this.dockedOption() });
|
|
811
806
|
}
|
|
@@ -892,7 +887,8 @@ export class UchusenRocket extends HTMLBase {
|
|
|
892
887
|
}
|
|
893
888
|
startWatching() {
|
|
894
889
|
this.watch?.disconnect();
|
|
895
|
-
|
|
890
|
+
let reason = whyNot(this.getAttribute("mode") ?? "auto");
|
|
891
|
+
this.glAsked = false;
|
|
896
892
|
if (reason) {
|
|
897
893
|
this.setState(reason === "off" ? "picture" : "fallback", reason);
|
|
898
894
|
if (reason !== "off")
|
|
@@ -908,6 +904,16 @@ export class UchusenRocket extends HTMLBase {
|
|
|
908
904
|
this.kickFlight();
|
|
909
905
|
if (reason)
|
|
910
906
|
return;
|
|
907
|
+
if (seen.isIntersecting && !this.glAsked) {
|
|
908
|
+
// The probe makes a context, which software drawing takes seconds over: it waits until a view is about to draw, and is made once for the whole page.
|
|
909
|
+
this.glAsked = true;
|
|
910
|
+
if (!glProbe().works) {
|
|
911
|
+
reason = "no-webgl";
|
|
912
|
+
this.setState("fallback", reason);
|
|
913
|
+
this.emit("uchusen-fallback", { reason });
|
|
914
|
+
return;
|
|
915
|
+
}
|
|
916
|
+
}
|
|
911
917
|
if (seen.isIntersecting) {
|
|
912
918
|
this.shownAt ||= performance.now();
|
|
913
919
|
window.clearTimeout(this.releaseTimer);
|
|
@@ -978,6 +984,7 @@ export class UchusenRocket extends HTMLBase {
|
|
|
978
984
|
});
|
|
979
985
|
this.viewer = made;
|
|
980
986
|
made.setOrbit(this.getAttribute("world") === "earth");
|
|
987
|
+
made.setWorldTurn(Number(this.getAttribute("world-turn")));
|
|
981
988
|
if (this.pivotWanted)
|
|
982
989
|
made.setPivot(this.pivotWanted.at, this.pivotWanted.label);
|
|
983
990
|
if (this.pathsWanted !== null)
|