spacetime controller

This commit is contained in:
David Allemang
2026-07-06 12:54:37 -04:00
parent e57b1d9b24
commit b59dde47d6
4 changed files with 515 additions and 502 deletions

View File

@@ -51,8 +51,7 @@
import {Engine} from './engine.js';
import {Diorama} from './diorama.js';
import {World, WorldFrame} from './world.js';
import {SubtickScrubber} from "./scrubber.js";
import {CameraController} from "./camera.js";
import {SpacetimeController} from "./controller.js";
async function initDocument() {
try {
@@ -79,7 +78,12 @@
d_static_iso.centerView();
d_static_iso.saveState();
engine.addDiorama(d_static_iso);
const c_static_iso = new CameraController(d_static_iso);
const c_static_iso = new SpacetimeController(d_static_iso, {
timeline: false,
subticks: false,
autoplay: false,
loop: false,
});
const w_pulses = new World(`
p 0 0 0 observer facing=south powered=false
@@ -98,6 +102,8 @@
t 6
p 1 0 1 powered=false
p 0 0 1 powered=true
t 8
p 0 0 0
`);
const f_pulses = new WorldFrame(w_pulses);
const d_pulses = new Diorama('demo-pulses', f_pulses, () => engine.requestRender());
@@ -105,6 +111,12 @@
d_pulses.centerView()
d_pulses.saveState()
engine.addDiorama(d_pulses);
const c_pulses = new SpacetimeController(d_pulses, {
timeline: false,
subticks: false,
loop: true,
autoplay: true,
})
const w_piston = new World(`
p 0 0 0 redstone_wire power=0 east=side west=none north=none south=none
@@ -168,9 +180,9 @@
d_piston_t.centerView();
d_piston_t.saveState();
engine.addDiorama(d_piston_t);
const s_piston_t = new SubtickScrubber(d_piston_t)
const c_piston = new CameraController(d_piston_t)
const c_piston = new SpacetimeController(d_piston_t, {
loop: true,
})
// Fetch and build everything concurrently!
await engine.updateAll();