Merge remote-tracking branch 'origin/main' into feat/paint-slots

# Conflicts:
#	packages/core/src/store/use-scene.ts
#	packages/editor/src/components/editor/index.tsx
This commit is contained in:
Wassim SAMAD
2026-06-18 12:22:26 -04:00
415 changed files with 22805 additions and 1414 deletions
+1 -1
View File
@@ -214,7 +214,7 @@ export const slabDefinition: NodeDefinition<typeof SlabNode> = {
presentation: {
label: 'Slab',
description: 'A polygon-bounded floor surface that hosts items on top.',
icon: { kind: 'url', src: '/icons/floor.png' },
icon: { kind: 'url', src: '/icons/floor.webp' },
paletteSection: 'structure',
paletteOrder: 30,
},
+1 -1
View File
@@ -152,7 +152,7 @@ export function SlabPanel() {
return (
<PanelWrapper
icon="/icons/floor.png"
icon="/icons/floor.webp"
onClose={handleClose}
title={node.name || 'Slab'}
width={320}
+4 -3
View File
@@ -6,6 +6,7 @@ import {
type GridEvent,
type LevelNode,
snapPointAlongAngleRay,
snapPointToGrid,
useScene,
} from '@pascal-app/core'
import {
@@ -76,9 +77,9 @@ export const SlabTool: React.FC = () => {
if (!cursorRef.current) return
const rawPoint: [number, number] = [event.localPosition[0], event.localPosition[2]]
const bypassSnap = shiftPressed.current || event.nativeEvent?.shiftKey === true
const gridX = Math.round(rawPoint[0] * 2) / 2
const gridZ = Math.round(rawPoint[1] * 2) / 2
const gridPosition: [number, number] = bypassSnap ? rawPoint : [gridX, gridZ]
const gridPosition: [number, number] = bypassSnap
? rawPoint
: [...snapPointToGrid(rawPoint, useEditor.getState().gridSnapStep)]
setCursorPosition(gridPosition)
setLevelY(event.localPosition[1])
const lastPoint = points[points.length - 1]