@operato/scene-storage 10.0.0-beta.40 → 10.0.0-beta.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/MIGRATION-plan-a-slot-api.md +266 -0
- package/PLAN-A-rack-as-slot-holder.md +164 -0
- package/dist/box.js +18 -0
- package/dist/box.js.map +1 -1
- package/dist/crane-3d.d.ts +47 -2
- package/dist/crane-3d.js +246 -89
- package/dist/crane-3d.js.map +1 -1
- package/dist/crane.d.ts +96 -12
- package/dist/crane.js +395 -100
- package/dist/crane.js.map +1 -1
- package/dist/index.d.ts +3 -4
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/pallet.d.ts +15 -0
- package/dist/pallet.js +38 -2
- package/dist/pallet.js.map +1 -1
- package/dist/parcel-3d.js +22 -18
- package/dist/parcel-3d.js.map +1 -1
- package/dist/parcel.d.ts +4 -3
- package/dist/parcel.js +24 -5
- package/dist/parcel.js.map +1 -1
- package/dist/rack-grid-3d.d.ts +18 -7
- package/dist/rack-grid-3d.js +372 -69
- package/dist/rack-grid-3d.js.map +1 -1
- package/dist/rack-grid-cell.d.ts +21 -72
- package/dist/rack-grid-cell.js +147 -243
- package/dist/rack-grid-cell.js.map +1 -1
- package/dist/rack-grid.d.ts +277 -56
- package/dist/rack-grid.js +1230 -695
- package/dist/rack-grid.js.map +1 -1
- package/dist/rack-materials.d.ts +9 -0
- package/dist/rack-materials.js +55 -0
- package/dist/rack-materials.js.map +1 -0
- package/dist/storage-rack-3d.d.ts +15 -0
- package/dist/storage-rack-3d.js +165 -29
- package/dist/storage-rack-3d.js.map +1 -1
- package/dist/storage-rack.d.ts +253 -32
- package/dist/storage-rack.js +726 -66
- package/dist/storage-rack.js.map +1 -1
- package/package.json +3 -3
- package/src/box.ts +18 -0
- package/src/crane-3d.ts +258 -93
- package/src/crane.ts +445 -110
- package/src/index.ts +3 -4
- package/src/pallet.ts +50 -1
- package/src/parcel-3d.ts +23 -18
- package/src/parcel.ts +24 -5
- package/src/rack-grid-3d.ts +383 -80
- package/src/rack-grid-cell.ts +161 -305
- package/src/rack-grid.ts +1263 -762
- package/src/rack-materials.ts +61 -0
- package/src/storage-rack-3d.ts +182 -29
- package/src/storage-rack.ts +819 -67
- package/test/test-carrier-lifecycle.ts +361 -0
- package/test/test-coord-alignment.ts +201 -0
- package/test/test-crane-geometry.ts +167 -0
- package/test/test-external-to-rack.ts +461 -0
- package/test/test-mover-concurrent-bug.ts +304 -0
- package/test/test-mover-rollback.ts +290 -0
- package/test/test-phase-h-carrier-pickable.ts +4 -3
- package/test/test-r19-place-absorb.ts +174 -0
- package/test/test-rack-3d-attach-real.ts +301 -0
- package/test/test-rack-concurrent.ts +254 -0
- package/test/test-rack-edge-cases.ts +323 -0
- package/test/test-rack-grid-cell.ts +318 -0
- package/test/test-rack-grid-location.ts +657 -0
- package/test/test-real-3d-positioning.ts +158 -0
- package/test/test-slot-center-convention.ts +116 -0
- package/test/test-slot-target.ts +189 -0
- package/test/test-storage-rack-batched.ts +606 -0
- package/test/test-storage-rack-click.ts +329 -0
- package/test/test-storage-rack-slot-api.ts +357 -0
- package/test/test-toscene-convention.ts +162 -0
- package/test/test-user-scenario-sequential.ts +334 -0
- package/translations/en.json +7 -1
- package/translations/ja.json +7 -1
- package/translations/ko.json +7 -1
- package/translations/ms.json +7 -1
- package/translations/zh.json +7 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/rack-column.d.ts +0 -35
- package/dist/rack-column.js +0 -258
- package/dist/rack-column.js.map +0 -1
- package/dist/rack-grid-helpers.d.ts +0 -28
- package/dist/rack-grid-helpers.js +0 -71
- package/dist/rack-grid-helpers.js.map +0 -1
- package/dist/rack-grid-location.d.ts +0 -37
- package/dist/rack-grid-location.js +0 -227
- package/dist/rack-grid-location.js.map +0 -1
- package/dist/storage-cell-3d.d.ts +0 -25
- package/dist/storage-cell-3d.js +0 -88
- package/dist/storage-cell-3d.js.map +0 -1
- package/dist/storage-cell.d.ts +0 -70
- package/dist/storage-cell.js +0 -197
- package/dist/storage-cell.js.map +0 -1
- package/src/rack-column.ts +0 -340
- package/src/rack-grid-helpers.ts +0 -77
- package/src/rack-grid-location.ts +0 -286
- package/src/storage-cell-3d.ts +0 -101
- package/src/storage-cell.ts +0 -247
- package/test/test-rack-grid.ts +0 -77
package/dist/crane.d.ts
CHANGED
|
@@ -16,13 +16,6 @@ export type CraneStatus = 'idle' | 'moving' | 'loading' | 'unloading' | 'error';
|
|
|
16
16
|
/** Crane 컴포넌트 state */
|
|
17
17
|
export interface CraneState extends State {
|
|
18
18
|
status?: CraneStatus;
|
|
19
|
-
/**
|
|
20
|
-
* Crane 이 서비스 할 타깃 컴포넌트의 refid (또는 id).
|
|
21
|
-
* 명시되면 그 컴포넌트 (또는 그 children) 의 위치를 stop point 로 사용 — heuristic
|
|
22
|
-
* 으로 sibling 추정 안 함. 미명시면 sibling 안에서 추측.
|
|
23
|
-
* 예: RackGrid 의 refid 를 지정하면 그 안의 cell 들 사이에서만 이동.
|
|
24
|
-
*/
|
|
25
|
-
target?: string;
|
|
26
19
|
/** 마스트 따라 carriage 의 수직 위치 (mm). */
|
|
27
20
|
carriageHeight?: number;
|
|
28
21
|
/**
|
|
@@ -41,10 +34,37 @@ export interface CraneState extends State {
|
|
|
41
34
|
*/
|
|
42
35
|
forkExtension?: number;
|
|
43
36
|
/**
|
|
44
|
-
* Fork
|
|
45
|
-
*
|
|
37
|
+
* Fork 가 carrier 를 *cell shelf 에서 분리하기 위해 들어올리는 높이* (mm).
|
|
38
|
+
* 사용자가 board 에서 설정하는 *configured 진폭*. engage 의 lift 단계 target.
|
|
39
|
+
* 미명시 시 default 30mm.
|
|
40
|
+
*
|
|
41
|
+
* Note: 시뮬 *진행 중 current 들림 값* 은 별도 internal transient — `forkLiftRT`
|
|
42
|
+
* state. 3D / 2D render 가 carriage Y 결정 시 그 값을 사용.
|
|
46
43
|
*/
|
|
47
44
|
forkLift?: number;
|
|
45
|
+
/**
|
|
46
|
+
* Fork lift *runtime current value* (mm). engage 가 시뮬 진행 중 매 frame
|
|
47
|
+
* setState 로 lerp. *사용자가 설정하는 값 아님* — internal transient.
|
|
48
|
+
*/
|
|
49
|
+
forkLiftRT?: number;
|
|
50
|
+
/**
|
|
51
|
+
* 자동 random simulate (visual smoke test) 시작 여부.
|
|
52
|
+
* - `undefined` 또는 `false` (default): 자동 시작 안 함. application 이 crane.
|
|
53
|
+
* pickAndPlace 등 직접 제어 시 사용.
|
|
54
|
+
* - `true`: added() 시 자동 시작.
|
|
55
|
+
*/
|
|
56
|
+
simulate?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Carriage 의 rail-local X 위치 (0 ~ crane.width). Crane.moveTo / simulate 가
|
|
59
|
+
* lerp. crane 본체 (rail) 는 안 움직임 — carriage assembly (masts + carriage +
|
|
60
|
+
* forks) 만 rail 안 X 만 슬라이드.
|
|
61
|
+
*/
|
|
62
|
+
carriagePosition?: number;
|
|
63
|
+
/**
|
|
64
|
+
* Carriage 의 폭 (rail-local X 방향). 미명시 시 rail (crane.width) 의 ~10%.
|
|
65
|
+
* Target rack 의 cell 폭과 매칭 권유.
|
|
66
|
+
*/
|
|
67
|
+
carriageWidth?: number;
|
|
48
68
|
material3d?: Material3D;
|
|
49
69
|
}
|
|
50
70
|
declare const Crane_base: any;
|
|
@@ -88,8 +108,46 @@ export default class Crane extends Crane_base {
|
|
|
88
108
|
get toolType(): string;
|
|
89
109
|
get nature(): ComponentNature;
|
|
90
110
|
get anchors(): never[];
|
|
91
|
-
/**
|
|
111
|
+
/**
|
|
112
|
+
* Stacker crane carries at most one load at a time on its forks.
|
|
113
|
+
*
|
|
114
|
+
* localPosition.z = 0 명시 — ContainerCapacity.receive 의 atomic setState 가
|
|
115
|
+
* `carrier.state.zPos = slot.localPosition.z + parentGeoOffset = 0` 강제.
|
|
116
|
+
* 미명시 시 zPos update skip → carrier 의 *이전 holder 또는 board model 의
|
|
117
|
+
* 임의 zPos (음수 가능)* 그대로 → _realObject 미빌드 시점 (transient placement
|
|
118
|
+
* 미설정 = state-driven) 에 carrier 가 *지하* 로 가는 결함.
|
|
119
|
+
*/
|
|
92
120
|
get slots(): SlotDef[];
|
|
121
|
+
/**
|
|
122
|
+
* Acceptance rotation — carrier 가 crane.fork 에 attach 시 *crane 의 local
|
|
123
|
+
* axis (전방)* 으로 정렬. identity quaternion 반환 → atomic setState 가
|
|
124
|
+
* carrier.state.rotation/X/Y = 0 강제. _realObject 미빌드 시점 (transient
|
|
125
|
+
* placement 미설정 = state-driven) fallback 에서도 자세 정렬.
|
|
126
|
+
*
|
|
127
|
+
* follow-holder carryPolicy 와 짝 — 두 path 모두 동일 결과 (local identity).
|
|
128
|
+
*/
|
|
129
|
+
acceptanceRotation(_carrier: Component, _slot?: SlotDef): {
|
|
130
|
+
x: number;
|
|
131
|
+
y: number;
|
|
132
|
+
z: number;
|
|
133
|
+
w: number;
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* Arrangement — carrier.state.left/top 의 *기준* 이 *crane 전체 footprint* 가
|
|
137
|
+
* 아닌 *carriage X (carriagePosition) + fork Z (bladeMidZ)*. carriage / fork
|
|
138
|
+
* 의 위치가 carrier 의 위치.
|
|
139
|
+
*
|
|
140
|
+
* left = carriagePosition − carrier.w/2 (carriage X 중심)
|
|
141
|
+
* top = crane.h/2 + bladeMidZ − carrier.h/2 (fork Z 중심)
|
|
142
|
+
*/
|
|
143
|
+
get arrangementStrategy(): {
|
|
144
|
+
positionAt(_idx: number, _slot: any, _occ: number, component?: any): {
|
|
145
|
+
x: number;
|
|
146
|
+
y: number;
|
|
147
|
+
z: number;
|
|
148
|
+
};
|
|
149
|
+
capacity(slot: any): any;
|
|
150
|
+
};
|
|
93
151
|
/**
|
|
94
152
|
* Return the 3D attach frame on the crane's carriage (fork tip).
|
|
95
153
|
* Carriers are attached here while the crane is in transit (pick phase).
|
|
@@ -118,6 +176,17 @@ export default class Crane extends Crane_base {
|
|
|
118
176
|
* binding sets 'moving' in monitoring mode; override pick()/place() to
|
|
119
177
|
* set it in full simulation environments.
|
|
120
178
|
*/
|
|
179
|
+
/**
|
|
180
|
+
* Crane.moveTo — **Crane 본체 (rail) 은 안 움직임**. *내부 carriage 의 rail-
|
|
181
|
+
* local X 위치 (carriagePosition) 만 lerp*. 실제 gantry / AS/RS crane 의
|
|
182
|
+
* 자연스러운 운동 패턴.
|
|
183
|
+
*
|
|
184
|
+
* target.center 의 world 좌표를 *crane 의 local frame (rail-aligned)* 로
|
|
185
|
+
* 변환 → rail-local X 추출 → carriagePosition setState.
|
|
186
|
+
*
|
|
187
|
+
* Crane.state.rotation = rail 방향. carriage 가 rail 위 X 만 이동.
|
|
188
|
+
*/
|
|
189
|
+
moveTo(target: Component, options?: MoveOptions): Promise<void>;
|
|
121
190
|
engage(target: Component, kind: 'pick' | 'place', _options?: MoveOptions): Promise<void>;
|
|
122
191
|
/** Fetch a carrier from a rack cell (semantically = pick). */
|
|
123
192
|
fetch(carrier: Component, options?: MoveOptions): Promise<void>;
|
|
@@ -141,6 +210,20 @@ export default class Crane extends Crane_base {
|
|
|
141
210
|
*/
|
|
142
211
|
render(ctx: CanvasRenderingContext2D): void;
|
|
143
212
|
added(parent: any): void;
|
|
213
|
+
/**
|
|
214
|
+
* Actuator state 의 *canonical default*. state 미설정 시 모든 read 경로
|
|
215
|
+
* (build / _tween / 외부) 가 *동일 값* 보도록.
|
|
216
|
+
*
|
|
217
|
+
* single source 패턴 — visual fallback 과 state fallback 이 *분리* 되어
|
|
218
|
+
* 첫 _tween 시 start 가 visual current 와 어긋나는 jump 결함을 근본 차단.
|
|
219
|
+
*/
|
|
220
|
+
_canonicalDefault(key: string): number;
|
|
221
|
+
private _startAutoSimulate;
|
|
222
|
+
/**
|
|
223
|
+
* state.simulate 변경 시 자동 simulate 시작/중단. application 이 런타임 toggle
|
|
224
|
+
* 가능 (예: editor 에서 simulate off, view 에서 on).
|
|
225
|
+
*/
|
|
226
|
+
onchange(after: Record<string, unknown>, before: Record<string, unknown>): void;
|
|
144
227
|
buildRealObject(): RealObject | undefined;
|
|
145
228
|
private _simStarted;
|
|
146
229
|
private _simRunning;
|
|
@@ -168,8 +251,9 @@ export default class Crane extends Crane_base {
|
|
|
168
251
|
dispose(): void;
|
|
169
252
|
private _oneCycle;
|
|
170
253
|
/**
|
|
171
|
-
* things-scene 의 `
|
|
172
|
-
* frameClock.simTime
|
|
254
|
+
* frameClock 기반 tween — things-scene 의 표준 `Component.animate()` 사용.
|
|
255
|
+
* frameClock.simTime 진행 (view mode + scene 활성) 시에만 step 호출 → modeler
|
|
256
|
+
* 또는 paused 시 자동 정지. scene.simulationSpeed 도 자동 대응.
|
|
173
257
|
*/
|
|
174
258
|
private _tween;
|
|
175
259
|
}
|