small size update with tons of rendering modes, palettes and keybindings

This commit is contained in:
2025-07-07 21:40:19 +02:00
parent 6d5aa9f0f5
commit fb2d5c1b4c
12 changed files with 737 additions and 91 deletions

View File

@ -6,6 +6,8 @@ interface WorkerMessage {
height?: number;
time?: number;
renderMode?: string;
valueMode?: string;
hueShift?: number;
startY?: number; // Y offset for tile rendering
mouseX?: number;
mouseY?: number;
@ -30,6 +32,7 @@ interface WorkerMessage {
bassLevel?: number;
midLevel?: number;
trebleLevel?: number;
bpm?: number;
}
interface WorkerResponse {
@ -54,6 +57,9 @@ export class FakeShader {
private pendingRenders: string[] = [];
private renderMode: string = 'classic';
private valueMode: string = 'integer';
private hueShift: number = 0;
private timeSpeed: number = 1.0;
private currentBPM: number = 120;
// Multi-worker state
private tileResults: Map<number, ImageData> = new Map();
@ -216,7 +222,7 @@ export class FakeShader {
this.isRendering = true;
// this._currentRenderID = id; // Removed unused property
const currentTime = (Date.now() - this.startTime) / 1000;
const currentTime = (Date.now() - this.startTime) / 1000 * this.timeSpeed;
// Always use multiple workers if available
if (this.workerCount > 1) {
@ -237,6 +243,7 @@ export class FakeShader {
time: currentTime,
renderMode: this.renderMode,
valueMode: this.valueMode,
hueShift: this.hueShift,
mouseX: this.mouseX,
mouseY: this.mouseY,
mousePressed: this.mousePressed,
@ -260,6 +267,7 @@ export class FakeShader {
bassLevel: this.bassLevel,
midLevel: this.midLevel,
trebleLevel: this.trebleLevel,
bpm: this.currentBPM,
} as WorkerMessage);
}
@ -293,6 +301,7 @@ export class FakeShader {
time: currentTime,
renderMode: this.renderMode,
valueMode: this.valueMode,
hueShift: this.hueShift,
mouseX: this.mouseX,
mouseY: this.mouseY,
mousePressed: this.mousePressed,
@ -316,6 +325,7 @@ export class FakeShader {
bassLevel: this.bassLevel,
midLevel: this.midLevel,
trebleLevel: this.trebleLevel,
bpm: this.currentBPM,
} as WorkerMessage);
});
}
@ -392,6 +402,18 @@ export class FakeShader {
this.valueMode = mode;
}
setHueShift(shift: number): void {
this.hueShift = shift;
}
setTimeSpeed(speed: number): void {
this.timeSpeed = speed;
}
setBPM(bpm: number): void {
this.currentBPM = bpm;
}
setMousePosition(
x: number,
y: number,