correct system for not triggering unwanted rerenders
This commit is contained in:
@@ -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]
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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<string, Set<string>>()
|
||||
|
||||
const nodes = useScene.getState().nodes
|
||||
|
||||
dirtyNodes.forEach((id) => {
|
||||
const node = nodes[id]
|
||||
if (!node || node.type !== 'wall') return
|
||||
|
||||
Reference in New Issue
Block a user