Commit ee98c55
Polish: window preset preview + smooth shelf item placement + Shelf build tool (pascalorg#367)
* fix(nodes,viewer): window preset live wall preview + shaped-cutout move tracking
MoveWindowTool marked the moving window `isTransient` unconditionally, but
WindowSystem only rebuilds the host wall's cutout for non-transient windows —
so a window *preset* (isNew) showed no live hole on the wall and couldn't be
placed consecutively without leaving/re-entering. Guard the transient mark on
`!isNew`, matching MoveDoorTool.
Separately, shaped openings (arch / rounded / `opening`) rebuild their cutout
brush from `node.position`, which a same-wall move doesn't write (it mutates the
mesh directly and publishes to `useLiveTransforms`). The wall-system's
`getEffectiveNode` only merges `useLiveNodeOverrides` (resize arrows), so shaped
cutouts lagged the move while rectangular ones (rebuilt from the live mesh
matrixWorld) tracked. Fold `useLiveTransforms` into door/window children before
collecting cutouts so shaped holes follow the live move too.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix(editor,viewer,nodes): smooth item placement on shelves
Three issues made hosting an item on a shelf janky (item-on-item was already
smooth because plain items have no `def.geometry` to rebuild):
- Jitter: the draft mesh intercepted the cursor ray, so the shelf-row hit was
re-derived from the moving item each frame. Disable raycasting on the draft
during placement (incl. async GLB children, reconciled per frame) so the ray
passes through to the surface beneath — mirrors MoveRegistryNodeTool.
- Reparent/vanish at the edges: `onShelfLeave` flipped state to floor without
reparenting the draft off the shelf, so the floor strategy's level-local
position rendered compounded with the shelf transform. The grid handler now
owns the shelf→floor transition.
- In/out oscillation: reparenting the draft onto the shelf dirtied the shelf,
and GeometrySystem disposed+rebuilt its boards, making r3f fire a spurious
shelf:leave→enter that thrashed placement between the row and the floor. Add
an opt-in `def.geometryKey` so GeometrySystem skips the rebuild when geometry
inputs are unchanged (shelf boards don't depend on hosted children). Keep the
item sticky by testing the cursor ray against the shelf's bounding box: a ray
that slips through a gap and lands on the floor behind the shelf still counts
as "on the shelf"; only a ray that misses the shelf detaches to the floor.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* feat(editor-app): add Shelf to the standalone editor Build tab
The shelf kind is fully wired (def.tool, presentation icon, StructureTool id)
but was absent from the standalone editor's Build palette. Add it between
Column and Spawn Point. Community has its own build-tab and is left untouched.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* chore(mcp): biome-format coordinate-conventions-demo.json
The committed example violated Biome formatting (expanded polygon arrays),
which broke the `mcp-ci` Biome check on main (pascalorg#356) and every branch since.
Format it so CI is green. Pure formatting — no content change.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>1 parent d926ded commit ee98c55
8 files changed
Lines changed: 321 additions & 1283 deletions
File tree
- apps/editor/components
- packages
- core/src/registry
- editor/src/components/tools/item
- mcp/examples
- nodes/src
- shelf
- window
- viewer/src/systems
- geometry
- wall
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| 29 | + | |
29 | 30 | | |
30 | 31 | | |
31 | 32 | | |
| |||
51 | 52 | | |
52 | 53 | | |
53 | 54 | | |
| 55 | + | |
54 | 56 | | |
55 | 57 | | |
56 | 58 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
675 | 675 | | |
676 | 676 | | |
677 | 677 | | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
678 | 692 | | |
679 | 693 | | |
680 | 694 | | |
| |||
Lines changed: 132 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
| 21 | + | |
22 | 22 | | |
23 | 23 | | |
| 24 | + | |
24 | 25 | | |
25 | 26 | | |
26 | 27 | | |
| 28 | + | |
27 | 29 | | |
| 30 | + | |
28 | 31 | | |
29 | 32 | | |
| 33 | + | |
30 | 34 | | |
31 | 35 | | |
32 | 36 | | |
| |||
196 | 200 | | |
197 | 201 | | |
198 | 202 | | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
199 | 213 | | |
200 | 214 | | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
201 | 221 | | |
202 | 222 | | |
203 | 223 | | |
| |||
487 | 507 | | |
488 | 508 | | |
489 | 509 | | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
490 | 554 | | |
491 | 555 | | |
492 | 556 | | |
493 | 557 | | |
494 | 558 | | |
495 | 559 | | |
496 | 560 | | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
497 | 572 | | |
498 | 573 | | |
499 | 574 | | |
| |||
774 | 849 | | |
775 | 850 | | |
776 | 851 | | |
777 | | - | |
| 852 | + | |
| 853 | + | |
| 854 | + | |
| 855 | + | |
| 856 | + | |
778 | 857 | | |
779 | 858 | | |
780 | 859 | | |
| |||
1212 | 1291 | | |
1213 | 1292 | | |
1214 | 1293 | | |
| 1294 | + | |
| 1295 | + | |
| 1296 | + | |
| 1297 | + | |
| 1298 | + | |
| 1299 | + | |
| 1300 | + | |
1215 | 1301 | | |
1216 | | - | |
1217 | | - | |
1218 | | - | |
1219 | | - | |
1220 | 1302 | | |
1221 | 1303 | | |
1222 | 1304 | | |
| |||
1496 | 1578 | | |
1497 | 1579 | | |
1498 | 1580 | | |
| 1581 | + | |
| 1582 | + | |
| 1583 | + | |
| 1584 | + | |
| 1585 | + | |
| 1586 | + | |
| 1587 | + | |
| 1588 | + | |
| 1589 | + | |
| 1590 | + | |
| 1591 | + | |
| 1592 | + | |
| 1593 | + | |
| 1594 | + | |
| 1595 | + | |
| 1596 | + | |
| 1597 | + | |
| 1598 | + | |
| 1599 | + | |
| 1600 | + | |
| 1601 | + | |
| 1602 | + | |
| 1603 | + | |
| 1604 | + | |
| 1605 | + | |
| 1606 | + | |
| 1607 | + | |
| 1608 | + | |
| 1609 | + | |
| 1610 | + | |
| 1611 | + | |
1499 | 1612 | | |
1500 | | - | |
1501 | | - | |
| 1613 | + | |
| 1614 | + | |
| 1615 | + | |
| 1616 | + | |
| 1617 | + | |
| 1618 | + | |
| 1619 | + | |
| 1620 | + | |
| 1621 | + | |
| 1622 | + | |
| 1623 | + | |
| 1624 | + | |
| 1625 | + | |
1502 | 1626 | | |
1503 | 1627 | | |
1504 | 1628 | | |
1505 | 1629 | | |
1506 | 1630 | | |
1507 | 1631 | | |
1508 | 1632 | | |
1509 | | - | |
1510 | 1633 | | |
1511 | 1634 | | |
1512 | 1635 | | |
| |||
0 commit comments