@operato/scene-storage 10.0.0-beta.43 → 10.0.0-beta.46
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 +37 -0
- package/dist/box-3d.d.ts +2 -0
- package/dist/box-3d.js +103 -64
- package/dist/box-3d.js.map +1 -1
- package/dist/crane-3d.d.ts +10 -0
- package/dist/crane-3d.js +34 -5
- package/dist/crane-3d.js.map +1 -1
- package/dist/crane.d.ts +136 -6
- package/dist/crane.js +567 -46
- package/dist/crane.js.map +1 -1
- package/dist/pallet-3d.d.ts +2 -0
- package/dist/pallet-3d.js +103 -53
- package/dist/pallet-3d.js.map +1 -1
- package/dist/parcel-3d.d.ts +1 -0
- package/dist/parcel-3d.js +18 -1
- package/dist/parcel-3d.js.map +1 -1
- package/dist/rack-grid-3d.js +26 -8
- package/dist/rack-grid-3d.js.map +1 -1
- package/dist/rack-grid.d.ts +94 -10
- package/dist/rack-grid.js +468 -86
- package/dist/rack-grid.js.map +1 -1
- package/dist/storage-rack-3d.js +1 -1
- package/dist/storage-rack-3d.js.map +1 -1
- package/dist/storage-rack.d.ts +31 -6
- package/dist/storage-rack.js +96 -14
- package/dist/storage-rack.js.map +1 -1
- package/package.json +3 -3
- package/src/box-3d.ts +121 -68
- package/src/crane-3d.ts +34 -4
- package/src/crane.ts +615 -55
- package/src/pallet-3d.ts +122 -55
- package/src/parcel-3d.ts +19 -1
- package/src/rack-grid-3d.ts +31 -8
- package/src/rack-grid.ts +488 -82
- package/src/storage-rack-3d.ts +1 -1
- package/src/storage-rack.ts +96 -14
- package/test/test-coord-alignment.ts +2 -2
- package/test/test-crane-bay-match.ts +130 -0
- package/test/test-crane-binding-resolve.ts +168 -0
- package/test/test-crane-duration.ts +90 -0
- package/test/test-crane-rotation-reach.ts +218 -0
- package/test/test-rack-grid-3d-alignment.ts +235 -0
- package/test/test-rack-grid-3d-attach-real.ts +375 -0
- package/test/test-rack-grid-cell.ts +2 -2
- package/test/test-rack-grid-location.ts +2 -2
- package/test/test-rack-grid-occupied-slots.ts +165 -0
- package/test/test-rack-grid-picking-position.ts +154 -0
- package/test/test-rack-grid-slot-api.ts +483 -0
- package/test/test-slot-ids-enumeration.ts +137 -0
- package/tsconfig.tsbuildinfo +1 -1
package/src/crane-3d.ts
CHANGED
|
@@ -42,6 +42,26 @@ const RAIL_COLOR = 0x1a1f24 // rail — dark steel
|
|
|
42
42
|
const LAMP_OFF = 0x222222
|
|
43
43
|
|
|
44
44
|
export class Crane3D extends RealObjectGroup {
|
|
45
|
+
/**
|
|
46
|
+
* carriageHeight 의 실제 최댓값 — *mast 의 carriage 이동 가능 범위* 기반.
|
|
47
|
+
* mastH = D - railH * 2 - baseH - topFrameH - topGuideH (mast 의 실제 길이).
|
|
48
|
+
* carriage 의 *top edge 가 mast top 안에 머물도록* carriageH/2 추가 차감.
|
|
49
|
+
*
|
|
50
|
+
* 이전 D * 0.85 magic 대체 — base/top frame 의 실제 차지 비율과 무관한 추정값
|
|
51
|
+
* 이라 crane.depth = rack.depth 동일 모델에서도 carriage 가 rack 상위 cell
|
|
52
|
+
* 도달 못 함. 정확한 mastH 사용으로 *동일 size 모델에서 정상 도달* 보장.
|
|
53
|
+
*/
|
|
54
|
+
static _maxCarriageHeight(D: number, width: number, height: number): number {
|
|
55
|
+
const S = Math.min(width, height)
|
|
56
|
+
const railH = S * 0.04
|
|
57
|
+
const baseH = S * 0.18
|
|
58
|
+
const topFrameH = S * 0.1
|
|
59
|
+
const topGuideH = S * 0.1
|
|
60
|
+
const carriageH = S * 0.12
|
|
61
|
+
const mastH = Math.max(D - railH * 2 - baseH - topFrameH - topGuideH, S * 0.5)
|
|
62
|
+
return Math.max(0, mastH - carriageH / 2)
|
|
63
|
+
}
|
|
64
|
+
|
|
45
65
|
private _forkGroup?: THREE.Group
|
|
46
66
|
private _carrierBaseY: number = 0
|
|
47
67
|
private _bladeMidZ: number = 0
|
|
@@ -79,7 +99,12 @@ export class Crane3D extends RealObjectGroup {
|
|
|
79
99
|
// Actuators
|
|
80
100
|
const D = numOr(depth, Math.max(width, height) * 4)
|
|
81
101
|
const carriageRaw = numOr((this.component.state as any).carriageHeight, (this.component as any)._canonicalDefault?.('carriageHeight') ?? D * 0.4)
|
|
82
|
-
|
|
102
|
+
// carriageHeight clamp — 실제 mast 의 carriage 이동 가능 범위 기반. helper 사용
|
|
103
|
+
// (render + onchange partial update 둘 다 동일 식). 이전엔 D * 0.85 magic 사용 —
|
|
104
|
+
// base/top frame 의 실제 차지 비율과 무관한 추정. crane.depth = rack.depth 동일
|
|
105
|
+
// 모델에서도 carriage 가 rack 상위 cell 도달 불가 → 14 levels rack 의 *마지막
|
|
106
|
+
// shelf 만 한 층 아래에서 포킹* 증상의 root cause 였음.
|
|
107
|
+
const carriageHeight = Math.max(0, Math.min(carriageRaw, Crane3D._maxCarriageHeight(D, width, height)))
|
|
83
108
|
|
|
84
109
|
const forkLength = numOr((this.component.state as any).forkLength, height * 0.6)
|
|
85
110
|
const forkExtensionRaw = numOr((this.component.state as any).forkExtension, 0)
|
|
@@ -362,9 +387,11 @@ export class Crane3D extends RealObjectGroup {
|
|
|
362
387
|
let meshUpdated = false
|
|
363
388
|
if (('carriageHeight' in after || 'forkLiftRT' in after) && this._carriageLiftGroup) {
|
|
364
389
|
const state = this.component.state as any
|
|
365
|
-
const
|
|
390
|
+
const W = numOr(state.width, 100)
|
|
391
|
+
const H = numOr(state.height, 100)
|
|
392
|
+
const D = numOr(state.depth, Math.max(W, H) * 4)
|
|
366
393
|
const carriageRaw = numOr(state.carriageHeight, D * 0.4)
|
|
367
|
-
const carriageHeight = Math.max(0, Math.min(carriageRaw, D
|
|
394
|
+
const carriageHeight = Math.max(0, Math.min(carriageRaw, Crane3D._maxCarriageHeight(D, W, H)))
|
|
368
395
|
const forkLift = numOr(state.forkLiftRT, 0)
|
|
369
396
|
this._carriageLiftGroup.position.y = this._computeLiftGroupY(carriageHeight, forkLift)
|
|
370
397
|
meshUpdated = true
|
|
@@ -458,7 +485,10 @@ export class Crane3D extends RealObjectGroup {
|
|
|
458
485
|
if (this._forkGroup) {
|
|
459
486
|
for (const child of this._forkGroup.children) {
|
|
460
487
|
const ctx = (child as any).userData?.context
|
|
461
|
-
|
|
488
|
+
// `ctx instanceof RealObject` 는 *cross-module identity 실패* 가능
|
|
489
|
+
// (Parcel3D 가 다른 things-scene 인스턴스의 RealObject 를 extend 한 경우
|
|
490
|
+
// instanceof 가 false 반환). duck-type 으로 완화 — *crane 자신만 제외*.
|
|
491
|
+
if (ctx && ctx !== this) {
|
|
462
492
|
child.position.z = this._bladeMidZ
|
|
463
493
|
}
|
|
464
494
|
}
|