diff --git a/packages/core/src/systems/ceiling/ceiling-system.tsx b/packages/core/src/systems/ceiling/ceiling-system.tsx index 19b5dd51..10324d2f 100644 --- a/packages/core/src/systems/ceiling/ceiling-system.tsx +++ b/packages/core/src/systems/ceiling/ceiling-system.tsx @@ -9,11 +9,13 @@ import useScene from '../../store/use-scene' // ============================================================================ export const CeilingSystem = () => { - const { nodes, dirtyNodes, clearDirty } = useScene() + const dirtyNodes = useScene((state) => state.dirtyNodes) + const clearDirty = useScene((state) => state.clearDirty) useFrame(() => { if (dirtyNodes.size === 0) return + const nodes = useScene.getState().nodes // Process dirty ceilings dirtyNodes.forEach((id) => { const node = nodes[id] diff --git a/packages/core/src/systems/item/item-system.tsx b/packages/core/src/systems/item/item-system.tsx index 22156e0b..63e67b4f 100644 --- a/packages/core/src/systems/item/item-system.tsx +++ b/packages/core/src/systems/item/item-system.tsx @@ -11,10 +11,12 @@ import useScene from '../../store/use-scene' // ============================================================================ export const ItemSystem = () => { - const { nodes, dirtyNodes, clearDirty } = useScene() + const dirtyNodes = useScene((state) => state.dirtyNodes) + const clearDirty = useScene((state) => state.clearDirty) useFrame(() => { if (dirtyNodes.size === 0) return + const nodes = useScene.getState().nodes dirtyNodes.forEach((id) => { const node = nodes[id] diff --git a/packages/core/src/systems/roof/roof-system.tsx b/packages/core/src/systems/roof/roof-system.tsx index ed0611f8..302489f7 100644 --- a/packages/core/src/systems/roof/roof-system.tsx +++ b/packages/core/src/systems/roof/roof-system.tsx @@ -9,11 +9,14 @@ import useScene from '../../store/use-scene' // ============================================================================ export const RoofSystem = () => { - const { nodes, dirtyNodes, clearDirty } = useScene() + const dirtyNodes = useScene((state) => state.dirtyNodes) + const clearDirty = useScene((state) => state.clearDirty) useFrame(() => { if (dirtyNodes.size === 0) return + const nodes = useScene.getState().nodes + // Process dirty roofs dirtyNodes.forEach((id) => { const node = nodes[id] diff --git a/packages/core/src/systems/slab/slab-system.tsx b/packages/core/src/systems/slab/slab-system.tsx index 99be6a90..ff03cb12 100644 --- a/packages/core/src/systems/slab/slab-system.tsx +++ b/packages/core/src/systems/slab/slab-system.tsx @@ -9,11 +9,14 @@ import useScene from '../../store/use-scene' // ============================================================================ export const SlabSystem = () => { - const { nodes, dirtyNodes, clearDirty } = useScene() + const dirtyNodes = useScene((state) => state.dirtyNodes) + const clearDirty = useScene((state) => state.clearDirty) useFrame(() => { if (dirtyNodes.size === 0) return + const nodes = useScene.getState().nodes + // Process dirty slabs dirtyNodes.forEach((id) => { const node = nodes[id] diff --git a/packages/core/src/systems/wall/wall-system.tsx b/packages/core/src/systems/wall/wall-system.tsx index 072dece3..eb292331 100644 --- a/packages/core/src/systems/wall/wall-system.tsx +++ b/packages/core/src/systems/wall/wall-system.tsx @@ -25,14 +25,15 @@ export const WallSystem = () => { const dirtyNodes = useScene((state) => state.dirtyNodes) const clearDirty = useScene((state) => state.clearDirty) - console.log('wall system rerendering') useFrame(() => { if (dirtyNodes.size === 0) return + const nodes = useScene.getState().nodes + // Collect dirty walls and their levels const dirtyWallsByLevel = new Map>() - const nodes = useScene.getState().nodes + dirtyNodes.forEach((id) => { const node = nodes[id] if (!node || node.type !== 'wall') return