fix(CAD-13): double rendering - legacy canvas skips element rendering when pixi renderer is active (grid/background stay), defensive fallback if pixi fails
This commit is contained in:
@@ -55,6 +55,8 @@ export class RenderEngine {
|
||||
/** src des zuletzt erfolgreich geladenen Hintergrundbilds. */
|
||||
private bgSrcLoaded = '';
|
||||
private dpr = 1;
|
||||
/** CAD-13-fix: true = Legacy-Canvas zeichnet KEINE Elemente (Pixi-Overlay zeichnet sie). Grid/Hintergrund bleiben. */
|
||||
skipElementRendering = false;
|
||||
|
||||
constructor(
|
||||
canvas: HTMLCanvasElement,
|
||||
@@ -161,6 +163,15 @@ export class RenderEngine {
|
||||
if (this.options.showGrid) this.drawGrid(w, h);
|
||||
if (this.options.backgroundSrc) this.drawBackground();
|
||||
this.drawRuler(w, h);
|
||||
|
||||
// CAD-13-fix: Wenn Pixi-Renderer aktiv ist (skipElementRendering=true),
|
||||
// zeichnet das Legacy-Canvas KEINE Elemente mehr (sonst doppelt) —
|
||||
// nur Grid/Hintergrund/Lineal bleiben hier.
|
||||
if (this.skipElementRendering) {
|
||||
this.ctx.restore();
|
||||
return;
|
||||
}
|
||||
|
||||
const viewport = this.zoomPan.getViewport();
|
||||
const visibleElements = this.spatialIndex.search({
|
||||
minX: viewport.minX, minY: viewport.minY,
|
||||
|
||||
@@ -82,6 +82,9 @@ const CanvasArea: React.FC<CanvasAreaProps> = ({
|
||||
pixi = new PixiRenderer();
|
||||
pixiRendererRef.current = pixi;
|
||||
pixi.init(pixiCanvas);
|
||||
// CAD-13-fix: Pixi rendert jetzt die Elemente — Legacy-Canvas
|
||||
// stellt nur noch Grid/Hintergrund/Lineal dar (sonst doppelt).
|
||||
renderEngine.skipElementRendering = true;
|
||||
pixi.waitForReady().then(() => {
|
||||
// Task C4: Debug-Hook für Playwright-E2E-Assertions
|
||||
(window as unknown as { __v2Debug: unknown }).__v2Debug = {
|
||||
|
||||
Reference in New Issue
Block a user