Zeichnungsebenen merken sich eigenen 2D/3D-Zustand

Bisher war viewType (Grundriss/Perspektive) ein einziger globaler
Wert. Beim Tab-Wechsel blieb er unverändert stehen, was wirkte, als
würde die Ansicht "durchsickern". Jede Ebene merkt sich jetzt ihren
zuletzt gewählten Ansichtstyp und stellt ihn beim Zurückwechseln
wieder her.
This commit is contained in:
2026-07-03 21:51:51 +02:00
parent 3aee2e05ee
commit b1e7fdf8fc
+14 -2
View File
@@ -21,6 +21,9 @@ export interface ViewSlice {
activeLevelId: string; activeLevelId: string;
// Ansichtstyp (Grundriss / Perspektive). // Ansichtstyp (Grundriss / Perspektive).
viewType: ViewType; viewType: ViewType;
// Zuletzt gewählter Ansichtstyp je Zeichnungsebene — jeder Tab merkt sich
// seinen eigenen 2D/3D-Zustand statt eines rein globalen Umschalters.
viewTypeByLevel: Record<string, ViewType>;
// Detailgrad im Grundriss. // Detailgrad im Grundriss.
detail: DetailLevel; detail: DetailLevel;
// Render-Modus der 3D-Ansicht. // Render-Modus der 3D-Ansicht.
@@ -65,6 +68,7 @@ export function createViewSlice(api: StoreApi<ViewSlice>): ViewSlice {
return { return {
activeLevelId: sampleProject.drawingLevels[0].id, activeLevelId: sampleProject.drawingLevels[0].id,
viewType: "grundriss", viewType: "grundriss",
viewTypeByLevel: {},
detail: "mittel", detail: "mittel",
renderMode: "shaded", renderMode: "shaded",
view3d: "perspective", view3d: "perspective",
@@ -77,8 +81,16 @@ export function createViewSlice(api: StoreApi<ViewSlice>): ViewSlice {
sampleProject.walls[0]?.categoryCode ?? sampleProject.layers[0].code, sampleProject.walls[0]?.categoryCode ?? sampleProject.layers[0].code,
displayModes: {}, displayModes: {},
setActiveLevelId: (id) => set({ activeLevelId: id }), setActiveLevelId: (id) =>
setViewType: (v) => set({ viewType: v }), set((s) => ({
activeLevelId: id,
viewType: s.viewTypeByLevel[id] ?? "grundriss",
})),
setViewType: (v) =>
set((s) => ({
viewType: v,
viewTypeByLevel: { ...s.viewTypeByLevel, [s.activeLevelId]: v },
})),
setDetail: (d) => set({ detail: d }), setDetail: (d) => set({ detail: d }),
setRenderMode: (m) => set({ renderMode: m }), setRenderMode: (m) => set({ renderMode: m }),
setView3d: (v) => set({ view3d: v }), setView3d: (v) => set({ view3d: v }),