useScene
TheuseScene hook is the main state store for Pascal’s scene graph. It’s built with Zustand and includes middleware for undo/redo (temporal) and localStorage persistence.
Import
State Structure
SceneState
Record<AnyNodeId, AnyNode>
Flat dictionary of all nodes in the scene, keyed by node ID.
AnyNodeId[]
Array of root-level node IDs (typically contains a single SiteNode ID).
Set<AnyNodeId>
Set of node IDs that have been modified and need revalidation by systems (wall physics, item collision, etc.).
Methods
Scene Management
loadScene
Site → Building → Level.
clearScene
setScene
Record<AnyNodeId, AnyNode>
required
Complete node dictionary
AnyNodeId[]
required
Root node IDs for the new scene
Dirty Node Tracking
markDirty
AnyNodeId
required
Node ID to mark dirty
clearDirty
AnyNodeId
required
Node ID to clear
Node Operations
createNode
AnyNode
required
The node to create (must have a unique
id)AnyNodeId
Optional parent node ID. If provided, the node will be added to the parent’s
children array.createNodes
{ node: AnyNode; parentId?: AnyNodeId }[]
required
Array of node creation operations
updateNode
AnyNodeId
required
ID of the node to update
Partial<AnyNode>
required
Partial node data to merge with existing node
updateNodes
{ id: AnyNodeId; data: Partial<AnyNode> }[]
required
Array of update operations
deleteNode
AnyNodeId
required
ID of the node to delete
deleteNodes
AnyNodeId[]
required
Array of node IDs to delete
Middleware
Temporal (Undo/Redo)
Provided byzundo. Access undo/redo state via:
- Partialized state: Only
nodesandrootNodeIdsare tracked in history - Limit: Last 50 actions
- Auto re-validation: After undo/redo, all nodes are marked dirty to trigger system revalidation
Persist (LocalStorage)
Provided byzustand/middleware/persist.
Configuration:
- Storage key:
editor-storage - Version: 1
- Partialized state: Only
nodes(excluding transient nodes) androotNodeIdsare persisted - Transient nodes: Nodes with
metadata.isTransient === trueare excluded from persistence
Usage Examples
Basic Usage
Creating Nodes
Batch Operations
Updating Nodes
Undo/Redo
Dirty Node System
Type Definitions
See Also
- Scene Registry - Three.js object registry
- Spatial Grid Manager - Collision detection
- Package Overview - Full exports list