← back to Dw War Room

src/showroom/types.ts

51 lines

// types.ts — Shared type definitions for the photorealistic showroom pipeline

export interface SceneConfig {
  corridor: {
    width: number;    // world units (1 unit = 1 foot)
    depth: number;
    height: number;
    wallMaterial: 'brick' | 'concrete' | 'charcoal';
    floorMaterial: 'polished-concrete' | 'wood' | 'marble';
  };
  wings: WingConfig[];
  walls: WallConfig[];
  lights: LightConfig[];
  furniture: FurnitureConfig[];
  entry: { position: [number, number, number]; signText: string };
}

export interface WingConfig {
  index: number;
  vendor: string;
  position: [number, number, number];
  rotation: number;
  panelCount: number;
  accentColor: string;   // hex from Figma fill
}

export interface WallConfig {
  position: [number, number, number];
  dimensions: [number, number];  // width, height
  material: string;
  hasBookshelf: boolean;
  hasSamplePanels: boolean;
  sampleCount: number;
}

export interface LightConfig {
  type: 'spot' | 'track' | 'ambient' | 'point';
  position: [number, number, number];
  target?: [number, number, number];
  color: string;
  intensity: number;
  angle?: number;    // SpotLight cone angle
  penumbra?: number;
}

export interface FurnitureConfig {
  type: 'display-table' | 'stool' | 'bookshelf' | 'sample-rack';
  position: [number, number, number];
  dimensions: [number, number, number];
}