Add paint hover previews to viewer
This commit is contained in:
+41
-3
@@ -1,4 +1,14 @@
|
||||
import type { AnyNode, BaseNode, BuildingNode, LevelNode, ZoneNode } from '@pascal-app/core'
|
||||
import type {
|
||||
AnyNode,
|
||||
BaseNode,
|
||||
BuildingNode,
|
||||
LevelNode,
|
||||
MaterialSchema,
|
||||
RoofSurfaceMaterialRole,
|
||||
StairSurfaceMaterialRole,
|
||||
WallSurfaceSide,
|
||||
ZoneNode,
|
||||
} from '@pascal-app/core'
|
||||
import type { Object3D } from 'three'
|
||||
type SelectionPath = {
|
||||
buildingId: BuildingNode['id'] | null
|
||||
@@ -10,12 +20,40 @@ type Outliner = {
|
||||
selectedObjects: Object3D[]
|
||||
hoveredObjects: Object3D[]
|
||||
}
|
||||
type MaterialPreview = {
|
||||
nodeId: string
|
||||
target: 'wall'
|
||||
role: WallSurfaceSide
|
||||
material?: MaterialSchema
|
||||
materialPreset?: string
|
||||
} | {
|
||||
nodeId: string
|
||||
target: 'roof'
|
||||
role: RoofSurfaceMaterialRole
|
||||
material?: MaterialSchema
|
||||
materialPreset?: string
|
||||
} | {
|
||||
nodeId: string
|
||||
target: 'stair'
|
||||
role: StairSurfaceMaterialRole
|
||||
material?: MaterialSchema
|
||||
materialPreset?: string
|
||||
} | {
|
||||
nodeId: string
|
||||
target: 'fence' | 'slab' | 'ceiling'
|
||||
role: 'surface'
|
||||
material?: MaterialSchema
|
||||
materialPreset?: string
|
||||
} | null
|
||||
type ViewerState = {
|
||||
selection: SelectionPath
|
||||
previewSelectedIds: BaseNode['id'][]
|
||||
setPreviewSelectedIds: (ids: BaseNode['id'][]) => void
|
||||
hoverHighlightMode: 'default' | 'delete'
|
||||
setHoverHighlightMode: (mode: 'default' | 'delete') => void
|
||||
materialPreview: MaterialPreview
|
||||
setMaterialPreview: (preview: MaterialPreview) => void
|
||||
clearMaterialPreview: () => void
|
||||
hoverHighlightMode: 'default' | 'delete' | 'paint-ready' | 'paint-disabled'
|
||||
setHoverHighlightMode: (mode: 'default' | 'delete' | 'paint-ready' | 'paint-disabled') => void
|
||||
hoveredId: AnyNode['id'] | ZoneNode['id'] | null
|
||||
setHoveredId: (id: AnyNode['id'] | ZoneNode['id'] | null) => void
|
||||
cameraMode: 'perspective' | 'orthographic'
|
||||
|
||||
Reference in New Issue
Block a user