# @pascal-app/core Core library for Pascal 3D building editor. ## Installation ```bash npm install @pascal-app/core ``` ## Peer Dependencies ```bash npm install react three @react-three/fiber @react-three/drei ``` ## What's Included - **Node Schemas** - Zod schemas for all building primitives (walls, slabs, items, etc.) - **Scene State** - Zustand store with IndexedDB persistence and undo/redo - **Registry Contracts** - Plugin and node-definition APIs shared by renderers and editor tools - **Scene Registry** - Fast lookup from node IDs to Three.js objects - **Spatial Grid** - Collision detection and placement validation - **Event Bus** - Typed event emitter for inter-component communication - **Asset Storage** - IndexedDB-based file storage for user-uploaded assets ## Usage ```typescript import { useScene, WallNode } from '@pascal-app/core' // Create a wall const wall = WallNode.parse({ start: [0, 0], end: [5, 0], height: 3, thickness: 0.2, }) useScene.getState().createNode(wall, parentLevelId) // Subscribe to scene changes function MyComponent() { const nodes = useScene((state) => state.nodes) const walls = Object.values(nodes).filter(n => n.type === 'wall') return