Back to Safe Sand · Material studies
SOURCE / PINNED RELEASE

Made of little things.

Safe Sand · Material studies

Release
9101a9cd9fb4…
Author-recorded commit
75d98e1b8edb…
License
LICENSE
Author’s source reference
nostr://npub182jczunncwe0jn6frpqwq3e0qjws7yqqnc3auccqv9nte2dnd63scjm4rf/wss%3A%2F%2Fgit.napplet.soy%2F/n-7682e55a791

Archive hash verified: 6c8ddabeb31100e1…. The source-to-build association is the author’s claim; it has not been independently rebuilt.

src/engine/sandbox.d.ts
export class Sandbox {
  constructor(canvas: HTMLCanvasElement, media?: import('../coordinated-audio.js').AudioMediaClient, onAudioChange?: () => void);
  material: string; surface: string; radius: number; amount: number;
  paused: boolean; live: boolean; visible: boolean; skipped: boolean;
  tool: string; speed: number; flowRate: number; pourHeight: number;
  camera: { pitch: number; yaw: number }; undoState: unknown;
  keys: Set<string>; pad: number[]; pointers: Map<number, unknown>;
  sim: { magnet: boolean }; soundOn: boolean;
  resize(): void; clearInput(): void; setMaterial(key: string): void;
  setSurface(key: string): void; pour(intro?: boolean): void; clear(): void;
  shake(): void; setPaused(paused: boolean): void; draw(): void;
  pointer(id: number, x: number, y: number, start?: boolean): void;
  endPointer(id: number, cancelled?: boolean): void;
  setSound(on: boolean): Promise<void>; suspend(): void; schedule(): void;
  dispose(): void; info(): Record<string, unknown>;
  setTool(tool: string): void; setCamera(pitch: number, yaw: number): void;
  checkpoint(): void; undo(): boolean; singleStep(): void; resetSound(): void;
  readParticles(): { A: Float32Array; B: Float32Array };
}