/* * 기본 factory (RealObjectDomTexture) 를 쓰는 컴포넌트들에 대한 zPriority override. * * `factories/machine-3d.ts`, `conveyor-3d.ts`, `crane-rail-3d.ts` 등에 등록된 * 커스텀 RealObject 들은 자기 클래스에서 `get zPriority()` override. 그 외 컴포넌트는 * 기본 RealObjectDomTexture 를 쓰는데, 이 파일이 그것들도 priority 갖도록 등록. * * 패턴: registerRealObjectFactory(type, (component) => withZ(new RealObjectDomTexture(...), N)) */ import { registerRealObjectFactory, RealObjectDomTexture } from '@hatiolab/things-scene' import type { Component } from '@hatiolab/things-scene' import { Z_FMSIM } from './z-priority' /** 주어진 RealObject 의 zPriority getter 를 override (instance level). */ function withZ(ro: T, zPriority: number): T { Object.defineProperty(ro, 'zPriority', { get: () => zPriority, configurable: true }) return ro } /** RealObjectDomTexture 기반 컴포넌트에 priority 일괄 등록 helper. */ function registerWithPriority(type: string, zPriority: number) { registerRealObjectFactory(type, (component: Component) => withZ(new RealObjectDomTexture(component), zPriority) ) } // ── 미등록 컴포넌트들 ────────────────────────────────────── registerWithPriority('ConveyorJoin', Z_FMSIM.CONVEYOR_JOIN) registerWithPriority('NodePath', Z_FMSIM.NODE_PATH) registerWithPriority('container', Z_FMSIM.STATIC_CONTAINER) registerWithPriority('FloatingContainer', Z_FMSIM.FLOATING_CONTAINER) registerWithPriority('popup', Z_FMSIM.POPUP) registerWithPriority('confidential-overlay', Z_FMSIM.CONFIDENTIAL_OVERLAY) registerWithPriority('StockerAbnormalBar', Z_FMSIM.STOCKER_ABNORMAL_BAR) registerWithPriority('StockerCarrierBar', Z_FMSIM.STOCKER_CARRIER_BAR)