@roomle/web-sdk 3.4.0 → 3.5.0-alpha.2
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/lib/{BufferGeometry-Br8QIDeK.mjs → BufferGeometry-zhwL66xZ.mjs} +170 -178
- package/lib/BufferGeometry-zhwL66xZ.mjs.map +1 -0
- package/lib/ConfiguratorKernel.wasm +0 -0
- package/lib/{GLTFExporter-DUjuGznV.mjs → GLTFExporter-DmFnAzRr.mjs} +24 -24
- package/lib/GLTFExporter-DmFnAzRr.mjs.map +1 -0
- package/lib/{PointLightHelper-_pWwb-rd.mjs → PointLightHelper-SLT01bR2.mjs} +19 -19
- package/lib/PointLightHelper-SLT01bR2.mjs.map +1 -0
- package/lib/RoomleCore.wasm +0 -0
- package/lib/RoomleToolsCore.wasm +0 -0
- package/lib/{SpotLightHelper-DiuKfHVi.mjs → SpotLightHelper-CC4_xqY4.mjs} +24 -24
- package/lib/SpotLightHelper-CC4_xqY4.mjs.map +1 -0
- package/lib/USDZExporter-Cpnpkq95.mjs +545 -0
- package/lib/USDZExporter-Cpnpkq95.mjs.map +1 -0
- package/lib/{banana-for-scale-Bio4mpMQ.mjs → banana-for-scale-evc4Yb9f.mjs} +2 -2
- package/lib/{banana-for-scale-Bio4mpMQ.mjs.map → banana-for-scale-evc4Yb9f.mjs.map} +1 -1
- package/lib/component-dimensioning-Dvorqw_7.mjs +229 -0
- package/lib/component-dimensioning-Dvorqw_7.mjs.map +1 -0
- package/lib/{continuous-drawing-helper-BYjzGaWD.mjs → continuous-drawing-helper-BfZl8h5N.mjs} +2 -2
- package/lib/{continuous-drawing-helper-BYjzGaWD.mjs.map → continuous-drawing-helper-BfZl8h5N.mjs.map} +1 -1
- package/lib/homag-intelligence-CJgnNjgW.mjs +547 -0
- package/lib/homag-intelligence-CJgnNjgW.mjs.map +1 -0
- package/lib/{imos-ix-poc-export-helper-Bl13RKd1.mjs → imos-ix-poc-export-helper--y8HNzbW.mjs} +2 -2
- package/lib/{imos-ix-poc-export-helper-Bl13RKd1.mjs.map → imos-ix-poc-export-helper--y8HNzbW.mjs.map} +1 -1
- package/lib/{index-DYoZpNEJ.mjs → index-E00NytVZ.mjs} +18423 -15546
- package/lib/index-E00NytVZ.mjs.map +1 -0
- package/lib/{material-viewer-DqZ9kv7j.mjs → material-viewer-DdvFNwKG.mjs} +2 -2
- package/lib/{material-viewer-DqZ9kv7j.mjs.map → material-viewer-DdvFNwKG.mjs.map} +1 -1
- package/lib/roomle-sdk.d.ts +46 -14
- package/lib/roomle-sdk.js +22 -22
- package/lib/static/roomle-core-hsc/ConfiguratorKernel.wasm +0 -0
- package/lib/static/roomle-core-hsc/RoomleCore.wasm +0 -0
- package/lib/static/roomle-core-hsc/RoomleServiceCore.wasm +0 -0
- package/lib/static/roomle-core-hsc/RoomleToolsCore.wasm +0 -0
- package/lib/static/roomle-core-hsc/embind/plannerCoreInterface.d.ts +8 -4
- package/lib/static/roomle-core-hsc/embind/plannerCoreInterface.js +6 -2
- package/lib/static/roomle-core-hsc/embind/plannerCoreInterface.js.map +1 -1
- package/lib/static/roomle-core-hsc/package.json +1 -1
- package/lib/static/roomle-core-hsc/plannerCoreInterface.d.ts +8 -4
- package/lib/static/roomle-core-hsc/plannerCoreInterface.js +6 -2
- package/lib/static/roomle-core-hsc/plannerCoreInterface.js.map +1 -1
- package/lib/static/roomle-core-hsc/src/embind/plannerCoreInterface.d.ts +8 -4
- package/lib/static/roomle-core-hsc/src/embind/plannerCoreInterface.js +6 -2
- package/lib/static/roomle-core-hsc/src/embind/plannerCoreInterface.js.map +1 -1
- package/lib/static/roomle-core-hsc/wasm_modern/ConfiguratorKernel.wasm +0 -0
- package/lib/static/roomle-core-hsc/wasm_modern/RoomleCore.wasm +0 -0
- package/lib/static/roomle-core-hsc/wasm_modern/RoomleServiceCore.wasm +0 -0
- package/lib/static/roomle-core-hsc/wasm_modern/RoomleToolsCore.wasm +0 -0
- package/lib/{stats-helper-BedaceYL.mjs → stats-helper-NaTxB7Fu.mjs} +2 -2
- package/lib/{stats-helper-BedaceYL.mjs.map → stats-helper-NaTxB7Fu.mjs.map} +1 -1
- package/lib/{three.webgpu-Bk8XgilA.mjs → three.webgpu-DN1k7B0u.mjs} +7222 -4815
- package/lib/three.webgpu-DN1k7B0u.mjs.map +1 -0
- package/lib/{tools-core-D1vOTlAR.mjs → tools-core-By95pE-u.mjs} +2 -2
- package/lib/{tools-core-D1vOTlAR.mjs.map → tools-core-By95pE-u.mjs.map} +1 -1
- package/package.json +3 -3
- package/lib/BufferGeometry-Br8QIDeK.mjs.map +0 -1
- package/lib/GLTFExporter-DUjuGznV.mjs.map +0 -1
- package/lib/PointLightHelper-_pWwb-rd.mjs.map +0 -1
- package/lib/SpotLightHelper-DiuKfHVi.mjs.map +0 -1
- package/lib/USDZExporter-B9ygWQMw.mjs +0 -545
- package/lib/USDZExporter-B9ygWQMw.mjs.map +0 -1
- package/lib/component-dimensioning-Bar2YYNs.mjs +0 -148
- package/lib/component-dimensioning-Bar2YYNs.mjs.map +0 -1
- package/lib/homag-intelligence-Bb8gfi80.mjs +0 -1626
- package/lib/homag-intelligence-Bb8gfi80.mjs.map +0 -1
- package/lib/index-DYoZpNEJ.mjs.map +0 -1
- package/lib/three.webgpu-Bk8XgilA.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banana-for-scale-
|
|
1
|
+
{"version":3,"file":"banana-for-scale-evc4Yb9f.mjs","sources":["../../packages/configurator-core/public/geometry/banana.glb?no-inline?url","../../packages/configurator-core/src/webgl/banana-for-scale.ts"],"sourcesContent":["export default \"__VITE_ASSET__CEZkpbOl__\"","import inject from '../../../common-core/src/di/inject';\nimport type StaticItemLoader from '../../../common-core/src/webgl/static-item-loader';\nimport { ScenePluginDefaultImplementation } from './plugin-system';\nimport { BANANA_FILE_NAME } from '../static-files/geometries';\nimport type { Box3, Object3D, Scene } from 'three';\nimport { Vector3 } from 'three';\n\nexport default class BananaForScale extends ScenePluginDefaultImplementation {\n private _scene: Scene;\n private _bounds: Box3;\n private _banana: Object3D;\n\n @inject\n private _staticItemLoader: StaticItemLoader;\n\n public setScene(scene: Scene) {\n this._scene = scene;\n\n this._staticItemLoader.loadGLB(BANANA_FILE_NAME).then((glb) => {\n this._banana = glb.scene;\n this.updateBounds(null);\n });\n\n console.log(\n '%c' + 'Banana 3D model by https://sketchfab.com/daniel132',\n 'color: #ffe135',\n );\n console.log(\n '%c' +\n 'Banana source: https://sketchfab.com/3d-models/banana-mark-2-a7fef734bf4544cb8a780a858fa6af97',\n 'color: #ffe135',\n );\n console.log(\n '%c' +\n 'Licensed under Creative Commons 4.0: https://creativecommons.org/licenses/by/4.0/',\n 'color: #ffe135',\n );\n }\n\n public updateBounds(bounds: Box3) {\n if (bounds) {\n this._bounds = bounds;\n }\n if (!this._bounds) {\n return;\n }\n if (this._banana) {\n const size = this._bounds.getSize(new Vector3());\n const center = this._bounds.getCenter(new Vector3());\n const position = center.clone();\n position.x -= size.x / 2 + 0.18;\n position.z += size.z / 2 + 0.05;\n position.y = 0;\n let scale = 0.1;\n this._banana.scale.copy(new Vector3(scale, scale, scale));\n this._banana.rotation.y = 0.6;\n this._banana.position.copy(position);\n }\n if (!this._scene.children.includes(this._banana)) {\n this.addToScene();\n }\n }\n\n public clearScene(scene: Scene, uiScene: Scene): void {\n super.clearScene(scene, uiScene);\n\n this.removeFromScene();\n }\n\n public addToScene(): void {\n if (!this._scene || !this._banana) {\n return;\n }\n this._scene.add(this._banana);\n }\n\n public removeFromScene(): void {\n if (!this._scene || !this._banana) {\n return;\n }\n this._scene.remove(this._banana);\n }\n}\n"],"names":["BANANA_FILE_NAME","BananaForScale","ScenePluginDefaultImplementation","scene","glb","bounds","size","Vector3","position","scale","uiScene","__decorateClass","inject"],"mappings":";AAAA,MAAAA,IAAe;;;;;;ACOf,MAAqBC,UAAuBC,EAAiC;AAAA,EAQpE,SAASC,GAAc;AAC5B,SAAK,SAASA,GAEd,KAAK,kBAAkB,QAAQH,CAAgB,EAAE,KAAK,CAACI,MAAQ;AAC7D,WAAK,UAAUA,EAAI,OACnB,KAAK,aAAa,IAAI;AAAA,IACxB,CAAC,GAED,QAAQ;AAAA,MACN;AAAA,MACA;AAAA,IAAA,GAEF,QAAQ;AAAA,MACN;AAAA,MAEA;AAAA,IAAA,GAEF,QAAQ;AAAA,MACN;AAAA,MAEA;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEO,aAAaC,GAAc;AAIhC,QAHIA,MACF,KAAK,UAAUA,IAEb,EAAC,KAAK,SAGV;AAAA,UAAI,KAAK,SAAS;AAChB,cAAMC,IAAO,KAAK,QAAQ,QAAQ,IAAIC,GAAS,GAEzCC,IADS,KAAK,QAAQ,UAAU,IAAID,GAAS,EAC3B,MAAA;AACxB,QAAAC,EAAS,KAAKF,EAAK,IAAI,IAAI,MAC3BE,EAAS,KAAKF,EAAK,IAAI,IAAI,MAC3BE,EAAS,IAAI;AACb,YAAIC,IAAQ;AACZ,aAAK,QAAQ,MAAM,KAAK,IAAIF,EAAQE,GAAOA,GAAOA,CAAK,CAAC,GACxD,KAAK,QAAQ,SAAS,IAAI,KAC1B,KAAK,QAAQ,SAAS,KAAKD,CAAQ;AAAA,MACrC;AACA,MAAK,KAAK,OAAO,SAAS,SAAS,KAAK,OAAO,KAC7C,KAAK,WAAA;AAAA;AAAA,EAET;AAAA,EAEO,WAAWL,GAAcO,GAAsB;AACpD,UAAM,WAAWP,GAAOO,CAAO,GAE/B,KAAK,gBAAA;AAAA,EACP;AAAA,EAEO,aAAmB;AACxB,IAAI,CAAC,KAAK,UAAU,CAAC,KAAK,WAG1B,KAAK,OAAO,IAAI,KAAK,OAAO;AAAA,EAC9B;AAAA,EAEO,kBAAwB;AAC7B,IAAI,CAAC,KAAK,UAAU,CAAC,KAAK,WAG1B,KAAK,OAAO,OAAO,KAAK,OAAO;AAAA,EACjC;AACF;AArEUC,EAAA;AAAA,EADPC;AAAA,GALkBX,EAMX,WAAA,mBAAA;"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { at as M, au as S, as as n, av as W, aw as v, ax as C, ay as x, az as p, aA as y, aB as w, aC as E, aD as P, aE as u, r as g } from "./index-E00NytVZ.mjs";
|
|
2
|
+
var j = Object.defineProperty, T = (m, t, e, i) => {
|
|
3
|
+
for (var a = void 0, l = m.length - 1, s; l >= 0; l--)
|
|
4
|
+
(s = m[l]) && (a = s(t, e, a) || a);
|
|
5
|
+
return a && j(t, e, a), a;
|
|
6
|
+
};
|
|
7
|
+
const L = "component_dimensioning_line_material", F = 0.025, I = 0.05;
|
|
8
|
+
class c {
|
|
9
|
+
constructor(t, e, i) {
|
|
10
|
+
this._direction = c._getDirection(t);
|
|
11
|
+
const a = c._getDefaultLabelDirection(
|
|
12
|
+
t,
|
|
13
|
+
this._direction
|
|
14
|
+
), l = i.dot(a) >= 0;
|
|
15
|
+
this._labelDirection = c._calculateActualLabelDirection(
|
|
16
|
+
t,
|
|
17
|
+
l,
|
|
18
|
+
a
|
|
19
|
+
), this._origin = c._calculateOrigin(
|
|
20
|
+
t,
|
|
21
|
+
e,
|
|
22
|
+
l
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
get direction() {
|
|
26
|
+
return this._direction;
|
|
27
|
+
}
|
|
28
|
+
get labelDirection() {
|
|
29
|
+
return this._labelDirection;
|
|
30
|
+
}
|
|
31
|
+
getEdge(t, e, i) {
|
|
32
|
+
const a = this._origin.clone().add(this._direction.clone().multiplyScalar(t)).add(this._labelDirection.clone().multiplyScalar(i)), l = this._origin.clone().add(this._direction.clone().multiplyScalar(e)).add(this._labelDirection.clone().multiplyScalar(i));
|
|
33
|
+
return new P(a, l);
|
|
34
|
+
}
|
|
35
|
+
static _getDirection(t) {
|
|
36
|
+
return t.axis ? u(t.axis.direction).normalize() : t.dimensioning.axis === "x" ? new n(1, 0, 0) : t.dimensioning.axis === "y" ? new n(0, 0, 1) : new n(0, 1, 0);
|
|
37
|
+
}
|
|
38
|
+
static _getDefaultLabelDirection(t, e) {
|
|
39
|
+
if (t.axis) {
|
|
40
|
+
const i = u(
|
|
41
|
+
t.axis.labelDirection
|
|
42
|
+
);
|
|
43
|
+
return e.clone().cross(i).cross(e).normalize();
|
|
44
|
+
} else {
|
|
45
|
+
if (t.dimensioning.axis === "x")
|
|
46
|
+
return new n(0, 1, 0);
|
|
47
|
+
if (t.dimensioning.axis === "y")
|
|
48
|
+
return new n(-1, 0, 0);
|
|
49
|
+
}
|
|
50
|
+
return new n(-1, 0, 0);
|
|
51
|
+
}
|
|
52
|
+
static _calculateActualLabelDirection(t, e, i) {
|
|
53
|
+
if (e) {
|
|
54
|
+
if (t.axis) {
|
|
55
|
+
if (t.axis.alternativeOrigin)
|
|
56
|
+
return i.clone().multiplyScalar(-1);
|
|
57
|
+
} else if (t.dimensioning.axis === "y" || t.dimensioning.axis === "z")
|
|
58
|
+
return i.clone().multiplyScalar(-1);
|
|
59
|
+
}
|
|
60
|
+
return i;
|
|
61
|
+
}
|
|
62
|
+
static _calculateOrigin(t, e, i) {
|
|
63
|
+
const a = e.getCenter(new n()), l = e.getSize(new n());
|
|
64
|
+
return t.axis ? i && t.axis.alternativeOrigin ? u(t.axis.alternativeOrigin) : u(t.axis.origin) : t.dimensioning.axis === "x" ? new n(0, a.y + l.y * 0.5, a.z - l.z * 0.5) : t.dimensioning.axis === "y" ? new n(
|
|
65
|
+
a.x + l.x * (i ? 0.5 : -0.5),
|
|
66
|
+
a.y - l.y * 0.5,
|
|
67
|
+
0
|
|
68
|
+
) : new n(
|
|
69
|
+
a.x + l.x * (i ? 0.5 : -0.5),
|
|
70
|
+
0,
|
|
71
|
+
a.z - l.z * 0.5
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
class z extends M {
|
|
76
|
+
constructor(t, e, i, a) {
|
|
77
|
+
super(), this._camera = null, this._mainLineObject = null, this._labelText = null, this.name = S, this._font = a || null, this._size = e.getSize(new n()), this._dimensioning = W(
|
|
78
|
+
t.dimensioning
|
|
79
|
+
), this._axis = new c(
|
|
80
|
+
t,
|
|
81
|
+
e,
|
|
82
|
+
i
|
|
83
|
+
), this._level = this._dimensioning.maxLevel - this._dimensioning.level, this._init();
|
|
84
|
+
}
|
|
85
|
+
clone() {
|
|
86
|
+
console.warn("Will not clone ComponentDimensioning");
|
|
87
|
+
}
|
|
88
|
+
setCamera(t) {
|
|
89
|
+
this._camera = t, this._textLabel && this._updateLabelOrientation();
|
|
90
|
+
}
|
|
91
|
+
_initMaterials() {
|
|
92
|
+
this._cacheHolder.materialCache && (this._cacheHolder.materialCache.has(L) ? this._lineMaterial = this._cacheHolder.materialCache.get(
|
|
93
|
+
L
|
|
94
|
+
) : (this._lineMaterial = new v({
|
|
95
|
+
color: C
|
|
96
|
+
}), this._cacheHolder.materialCache.set(L, this._lineMaterial)));
|
|
97
|
+
}
|
|
98
|
+
_init() {
|
|
99
|
+
this._initMaterials();
|
|
100
|
+
const t = Math.round(
|
|
101
|
+
Math.max(this._size.y, this._size.x, this._size.z)
|
|
102
|
+
), e = Math.abs(this._dimensioning.to - this._dimensioning.from);
|
|
103
|
+
let i = F + (t < 4 ? 0 : t * 5e-3);
|
|
104
|
+
e < 0.3 && (i *= 0.5 + e);
|
|
105
|
+
const a = i * 1.4, l = I + (3 * x + a) * this._level, s = this._axis.getEdge(
|
|
106
|
+
this._dimensioning.from,
|
|
107
|
+
this._dimensioning.to,
|
|
108
|
+
l
|
|
109
|
+
);
|
|
110
|
+
this._addEdgeSideLines(
|
|
111
|
+
a,
|
|
112
|
+
s,
|
|
113
|
+
this._axis.labelDirection.clone()
|
|
114
|
+
);
|
|
115
|
+
const r = new p(), h = [
|
|
116
|
+
s.start.x,
|
|
117
|
+
s.start.y,
|
|
118
|
+
s.start.z,
|
|
119
|
+
s.end.x,
|
|
120
|
+
s.end.y,
|
|
121
|
+
s.end.z
|
|
122
|
+
];
|
|
123
|
+
r.setAttribute(
|
|
124
|
+
"position",
|
|
125
|
+
new y(new Float32Array(h), 3)
|
|
126
|
+
);
|
|
127
|
+
const o = new w(r, this._lineMaterial);
|
|
128
|
+
if (o.name = "component dimension line " + this._dimensioning.axis, o.renderOrder = 0, this._mainLineObject = o, this.add(o), this._font) {
|
|
129
|
+
const d = Math.abs(this._dimensioning.to - this._dimensioning.from);
|
|
130
|
+
this._labelText = this._unitFormatter.formatMMValueToUnitString(
|
|
131
|
+
d * 1e3
|
|
132
|
+
), this._textLabel = new E(this._font), this._textLabel.userData.isLabel = !0, this._textLabel.renderOrder = 1, this.add(this._textLabel);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Get the world position center of the main dimension line (same logic as getDimensionLineCenter)
|
|
136
|
+
_getMainLineCenterWorldPosition() {
|
|
137
|
+
if (!this._mainLineObject)
|
|
138
|
+
return null;
|
|
139
|
+
this.updateMatrixWorld(!0), this._mainLineObject.updateMatrixWorld(!0);
|
|
140
|
+
const t = this._mainLineObject.geometry.attributes.position.array;
|
|
141
|
+
if (t.length < 6)
|
|
142
|
+
return null;
|
|
143
|
+
const e = new n(t[0], t[1], t[2]), i = new n(t[3], t[4], t[5]);
|
|
144
|
+
return e.applyMatrix4(this._mainLineObject.matrixWorld), i.applyMatrix4(this._mainLineObject.matrixWorld), e.clone().add(i).multiplyScalar(0.5);
|
|
145
|
+
}
|
|
146
|
+
_updateLabelOrientation() {
|
|
147
|
+
if (!this._textLabel || !this._camera || !this._labelText)
|
|
148
|
+
return;
|
|
149
|
+
const t = new n();
|
|
150
|
+
this._camera.getWorldDirection(t);
|
|
151
|
+
const e = new n();
|
|
152
|
+
this._camera.getWorldPosition(e);
|
|
153
|
+
const i = this._mainLineObject.geometry.attributes.position.array, a = new n(i[0], i[1], i[2]), l = new n(i[3], i[4], i[5]), s = a.clone().add(l).multiplyScalar(0.5), r = this.localToWorld(s.clone()), h = e.clone().sub(r).normalize(), o = this.worldToLocal(
|
|
154
|
+
this.localToWorld(new n()).add(h)
|
|
155
|
+
).sub(this.worldToLocal(this.localToWorld(new n()))), d = s.clone().add(o.multiplyScalar(2e-3));
|
|
156
|
+
if (Math.abs(t.y) > 0.95) {
|
|
157
|
+
const O = l.clone().sub(a), _ = this.localToWorld(O.clone()).sub(
|
|
158
|
+
this.localToWorld(new n())
|
|
159
|
+
);
|
|
160
|
+
_.y = 0, _.normalize();
|
|
161
|
+
const f = e.clone();
|
|
162
|
+
f.y = r.y;
|
|
163
|
+
const b = f.clone().sub(r);
|
|
164
|
+
b.y = 0, b.normalize(), _.dot(b) < 0 && _.multiplyScalar(-1);
|
|
165
|
+
const D = r.clone().add(_.multiplyScalar(0.01)).add(new n(0, 1, 0));
|
|
166
|
+
this._textLabel.update(d, this._labelText, D);
|
|
167
|
+
} else
|
|
168
|
+
this._textLabel.update(d, this._labelText, e);
|
|
169
|
+
}
|
|
170
|
+
initializeTextLabels() {
|
|
171
|
+
if (!(!this._font || !this._labelText || !this._textLabel) && !this._textLabel.children.length)
|
|
172
|
+
try {
|
|
173
|
+
if (this.updateMatrixWorld(!0), this._camera)
|
|
174
|
+
this._updateLabelOrientation();
|
|
175
|
+
else {
|
|
176
|
+
const t = this._getMainLineCenterWorldPosition();
|
|
177
|
+
if (t) {
|
|
178
|
+
const e = this.worldToLocal(t.clone());
|
|
179
|
+
this._textLabel.position.copy(e);
|
|
180
|
+
const i = new n(0, 0, 1);
|
|
181
|
+
e.add(new n(0, 0, 2e-3)), this._textLabel.update(
|
|
182
|
+
e,
|
|
183
|
+
this._labelText,
|
|
184
|
+
i
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
} catch (t) {
|
|
189
|
+
console.warn("Failed to initialize text label for dimension:", t), this._textLabel && (this.remove(this._textLabel), this._textLabel = null);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
updateLabelForCamera(t) {
|
|
193
|
+
this._textLabel && (this._camera = t, this._textLabel.children.length ? this._updateLabelOrientation() : this.initializeTextLabels());
|
|
194
|
+
}
|
|
195
|
+
_addEdgeSideLines(t, e, i) {
|
|
196
|
+
const a = -(3 * x + t) * 0.5, l = e.start.clone(), s = e.start.clone().add(i.clone().multiplyScalar(a)), r = e.end.clone(), h = e.end.clone().add(i.clone().multiplyScalar(a));
|
|
197
|
+
this._addLine(s, l), this._addLine(h, r);
|
|
198
|
+
}
|
|
199
|
+
_addLine(t, e) {
|
|
200
|
+
const i = new p(), a = [t.x, t.y, t.z, e.x, e.y, e.z];
|
|
201
|
+
i.setAttribute(
|
|
202
|
+
"position",
|
|
203
|
+
new y(new Float32Array(a), 3)
|
|
204
|
+
);
|
|
205
|
+
const l = new w(i, this._lineMaterial);
|
|
206
|
+
l.renderOrder = 0, this.add(l);
|
|
207
|
+
}
|
|
208
|
+
dispose() {
|
|
209
|
+
if (this._textLabel) {
|
|
210
|
+
try {
|
|
211
|
+
this._textLabel.dispose();
|
|
212
|
+
} catch (t) {
|
|
213
|
+
console.warn("Error disposing text label:", t);
|
|
214
|
+
}
|
|
215
|
+
this._textLabel = null;
|
|
216
|
+
}
|
|
217
|
+
this._mainLineObject = null, this._labelText = null, this._camera = null;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
T([
|
|
221
|
+
g
|
|
222
|
+
], z.prototype, "_cacheHolder");
|
|
223
|
+
T([
|
|
224
|
+
g
|
|
225
|
+
], z.prototype, "_unitFormatter");
|
|
226
|
+
export {
|
|
227
|
+
z as default
|
|
228
|
+
};
|
|
229
|
+
//# sourceMappingURL=component-dimensioning-Dvorqw_7.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-dimensioning-Dvorqw_7.mjs","sources":["../../packages/configurator-core/src/utils/component-dimensioning.ts"],"sourcesContent":["import type CacheHolder from '../../../common-core/src/services/cache-holder';\nimport type UnitFormatter from '../services/unit-formatter';\nimport type { Dimensioning, DimensioningAxis } from '../../../typings/kernel';\n\nimport type { Box3, Camera } from 'three';\nimport {\n BufferAttribute,\n BufferGeometry,\n Line,\n Line3,\n LineBasicMaterial,\n Object3D,\n Vector3,\n} from 'three';\nimport { kernelDimensioningToThree } from '../../../common-core/src/utils/threejs-utils';\nimport { convertToTHREE } from '../../../common-core/src/utils/kernel-utils';\nimport { DIMENSIONING_GEOMETRY } from './dimensioning-helper';\nimport type { Font } from 'three/examples/jsm/loaders/FontLoader.js';\nimport TextWithBackground, {\n TEXT_COLOR,\n TEXT_SPACING,\n} from './text-with-background';\nimport inject from '../../../common-core/src/di/inject';\n\nconst LINE_MATERIAL = 'component_dimensioning_line_material';\n\nconst TEXT_SIZE = 0.025;\nconst LINE_SPACING = 0.05;\n\nexport interface DimensioningAndAxis {\n dimensioning: Dimensioning;\n axis?: DimensioningAxis;\n}\n\nclass ComponentDimensioningAxis {\n private _origin: Vector3;\n private _direction: Vector3;\n private _labelDirection: Vector3;\n\n constructor(\n dimensioningAndAxis: DimensioningAndAxis,\n boundingBox: Box3,\n cameraPosition: Vector3,\n ) {\n this._direction =\n ComponentDimensioningAxis._getDirection(dimensioningAndAxis);\n const defaultLabelDirection =\n ComponentDimensioningAxis._getDefaultLabelDirection(\n dimensioningAndAxis,\n this._direction,\n );\n const lookAtOppositeSide = cameraPosition.dot(defaultLabelDirection) >= 0;\n this._labelDirection =\n ComponentDimensioningAxis._calculateActualLabelDirection(\n dimensioningAndAxis,\n lookAtOppositeSide,\n defaultLabelDirection,\n );\n this._origin = ComponentDimensioningAxis._calculateOrigin(\n dimensioningAndAxis,\n boundingBox,\n lookAtOppositeSide,\n );\n }\n\n get direction(): Vector3 {\n return this._direction;\n }\n\n get labelDirection(): Vector3 {\n return this._labelDirection;\n }\n\n getEdge(from: number, to: number, lineOffset: number): Line3 {\n const start = this._origin\n .clone()\n .add(this._direction.clone().multiplyScalar(from))\n .add(this._labelDirection.clone().multiplyScalar(lineOffset));\n const end = this._origin\n .clone()\n .add(this._direction.clone().multiplyScalar(to))\n .add(this._labelDirection.clone().multiplyScalar(lineOffset));\n return new Line3(start, end);\n }\n\n private static _getDirection(\n dimensioningAndAxis: DimensioningAndAxis,\n ): Vector3 {\n if (dimensioningAndAxis.axis) {\n return convertToTHREE(dimensioningAndAxis.axis.direction).normalize();\n } else if (dimensioningAndAxis.dimensioning.axis === 'x') {\n return new Vector3(1, 0, 0);\n } else if (dimensioningAndAxis.dimensioning.axis === 'y') {\n return new Vector3(0, 0, 1);\n }\n return new Vector3(0, 1, 0);\n }\n\n private static _getDefaultLabelDirection(\n dimensioningAndAxis: DimensioningAndAxis,\n direction: Vector3,\n ): Vector3 {\n if (dimensioningAndAxis.axis) {\n const labelDirection = convertToTHREE(\n dimensioningAndAxis.axis.labelDirection,\n );\n const planeNormal = direction.clone().cross(labelDirection);\n return planeNormal.cross(direction).normalize();\n } else if (dimensioningAndAxis.dimensioning.axis === 'x') {\n return new Vector3(0, 1, 0);\n } else if (dimensioningAndAxis.dimensioning.axis === 'y') {\n return new Vector3(-1, 0, 0);\n }\n return new Vector3(-1, 0, 0);\n }\n\n private static _calculateActualLabelDirection(\n dimensioningAndAxis: DimensioningAndAxis,\n lookAtOppositeSide: boolean,\n labelDirection: Vector3,\n ): Vector3 {\n if (lookAtOppositeSide) {\n if (dimensioningAndAxis.axis) {\n if (dimensioningAndAxis.axis.alternativeOrigin) {\n return labelDirection.clone().multiplyScalar(-1);\n }\n } else if (\n dimensioningAndAxis.dimensioning.axis === 'y' ||\n dimensioningAndAxis.dimensioning.axis === 'z'\n ) {\n return labelDirection.clone().multiplyScalar(-1);\n }\n }\n return labelDirection;\n }\n\n private static _calculateOrigin(\n dimensioningAndAxis: DimensioningAndAxis,\n boundingBox: Box3,\n lookAtOppositeSide: boolean,\n ): Vector3 {\n const center = boundingBox.getCenter(new Vector3());\n const size = boundingBox.getSize(new Vector3());\n if (dimensioningAndAxis.axis) {\n return lookAtOppositeSide && dimensioningAndAxis.axis.alternativeOrigin\n ? convertToTHREE(dimensioningAndAxis.axis.alternativeOrigin)\n : convertToTHREE(dimensioningAndAxis.axis.origin);\n } else if (dimensioningAndAxis.dimensioning.axis === 'x') {\n return new Vector3(0, center.y + size.y * 0.5, center.z - size.z * 0.5);\n } else if (dimensioningAndAxis.dimensioning.axis === 'y') {\n return new Vector3(\n center.x + size.x * (lookAtOppositeSide ? 0.5 : -0.5),\n center.y - size.y * 0.5,\n 0,\n );\n }\n return new Vector3(\n center.x + size.x * (lookAtOppositeSide ? 0.5 : -0.5),\n 0,\n center.z - size.z * 0.5,\n );\n }\n}\n\nexport default class ComponentDimensioning extends Object3D {\n @inject\n private _cacheHolder: CacheHolder;\n\n @inject\n private _unitFormatter: UnitFormatter;\n\n private _dimensioning: Dimensioning;\n private _axis: ComponentDimensioningAxis;\n private _size: Vector3;\n\n private _level: number;\n private _lineMaterial: LineBasicMaterial;\n private _font: Font;\n\n private _textLabel: TextWithBackground;\n private _camera: Camera | null = null;\n\n private _mainLineObject: Line | null = null;\n private _labelText: string | null = null;\n\n constructor(\n dimensioningAndAxis: DimensioningAndAxis,\n boundingBox: Box3,\n relativeCameraDirection: Vector3,\n font?: Font,\n ) {\n super();\n this.name = DIMENSIONING_GEOMETRY;\n\n this._font = font || null;\n\n this._size = boundingBox.getSize(new Vector3());\n this._dimensioning = kernelDimensioningToThree(\n dimensioningAndAxis.dimensioning,\n );\n this._axis = new ComponentDimensioningAxis(\n dimensioningAndAxis,\n boundingBox,\n relativeCameraDirection,\n );\n this._level = this._dimensioning.maxLevel - this._dimensioning.level;\n\n this._init();\n }\n\n clone() {\n // We do not clone ComponentDimensioning because this can break the\n // generation of perspective images. If the ComponentDimensioning is\n // visible during the generation of the perspective image, three.js\n // tries to clone it but clone does not give any parameters to the\n // constructor and therefore the clone breaks. Since we do not need\n // to clone ComponentDimensioning, we return undefined\n console.warn('Will not clone ComponentDimensioning');\n return undefined as any;\n }\n\n public setCamera(camera: Camera): void {\n this._camera = camera;\n if (this._textLabel) {\n this._updateLabelOrientation();\n }\n }\n\n private _initMaterials() {\n if (!this._cacheHolder.materialCache) {\n return;\n }\n\n if (this._cacheHolder.materialCache.has(LINE_MATERIAL)) {\n this._lineMaterial = this._cacheHolder.materialCache.get(\n LINE_MATERIAL,\n ) as LineBasicMaterial;\n } else {\n this._lineMaterial = new LineBasicMaterial({\n color: TEXT_COLOR,\n });\n this._cacheHolder.materialCache.set(LINE_MATERIAL, this._lineMaterial);\n }\n }\n\n private _init() {\n this._initMaterials();\n\n const maxSize = Math.round(\n Math.max(this._size.y, this._size.x, this._size.z),\n );\n const length = Math.abs(this._dimensioning.to - this._dimensioning.from);\n\n let fontSize = TEXT_SIZE + (maxSize < 4 ? 0 : maxSize * 0.005);\n if (length < 0.3) {\n fontSize *= 0.5 + length;\n }\n\n // Approximate text height for spacing calculations\n // Based on typical font metrics (height is roughly 1.4x the font size)\n const levelSpacing = fontSize * 1.4;\n\n const lineOffset =\n LINE_SPACING + (3 * TEXT_SPACING + levelSpacing) * this._level;\n\n const line = this._axis.getEdge(\n this._dimensioning.from,\n this._dimensioning.to,\n lineOffset,\n );\n\n this._addEdgeSideLines(\n levelSpacing,\n line,\n this._axis.labelDirection.clone(),\n );\n\n const lineGeometry = new BufferGeometry();\n const vertices = [\n line.start.x,\n line.start.y,\n line.start.z,\n line.end.x,\n line.end.y,\n line.end.z,\n ];\n lineGeometry.setAttribute(\n 'position',\n new BufferAttribute(new Float32Array(vertices), 3),\n );\n\n const lineObject = new Line(lineGeometry, this._lineMaterial);\n lineObject.name = 'component dimension line ' + this._dimensioning.axis;\n lineObject.renderOrder = 0;\n\n this._mainLineObject = lineObject;\n\n this.add(lineObject);\n\n if (this._font) {\n const length = Math.abs(this._dimensioning.to - this._dimensioning.from);\n this._labelText = this._unitFormatter.formatMMValueToUnitString(\n length * 1000,\n );\n\n this._textLabel = new TextWithBackground(this._font);\n this._textLabel.userData.isLabel = true;\n\n this._textLabel.renderOrder = 1;\n\n this.add(this._textLabel);\n }\n }\n\n // Get the world position center of the main dimension line (same logic as getDimensionLineCenter)\n private _getMainLineCenterWorldPosition(): Vector3 | null {\n if (!this._mainLineObject) {\n return null;\n }\n\n this.updateMatrixWorld(true);\n this._mainLineObject.updateMatrixWorld(true);\n\n const positions = this._mainLineObject.geometry.attributes.position.array;\n\n if (positions.length < 6) {\n return null;\n }\n\n const start = new Vector3(positions[0], positions[1], positions[2]);\n const end = new Vector3(positions[3], positions[4], positions[5]);\n\n start.applyMatrix4(this._mainLineObject.matrixWorld);\n end.applyMatrix4(this._mainLineObject.matrixWorld);\n\n return start.clone().add(end).multiplyScalar(0.5);\n }\n\n private _updateLabelOrientation(): void {\n if (!this._textLabel || !this._camera || !this._labelText) {\n return;\n }\n\n const cameraDir = new Vector3();\n this._camera.getWorldDirection(cameraDir);\n const cameraWorldPos = new Vector3();\n this._camera.getWorldPosition(cameraWorldPos);\n\n const positions = this._mainLineObject.geometry.attributes.position.array;\n const start = new Vector3(positions[0], positions[1], positions[2]);\n const end = new Vector3(positions[3], positions[4], positions[5]);\n const labelPosition = start.clone().add(end).multiplyScalar(0.5);\n const labelWorldPos = this.localToWorld(labelPosition.clone());\n\n const toCameraWorld = cameraWorldPos.clone().sub(labelWorldPos).normalize();\n const toCameraLocal = this.worldToLocal(\n this.localToWorld(new Vector3()).add(toCameraWorld),\n ).sub(this.worldToLocal(this.localToWorld(new Vector3())));\n\n const offsetPosition = labelPosition\n .clone()\n .add(toCameraLocal.multiplyScalar(0.002));\n\n const isTopDown = Math.abs(cameraDir.y) > 0.95;\n\n if (isTopDown) {\n const lineDir = end.clone().sub(start);\n const lineDirWorld = this.localToWorld(lineDir.clone()).sub(\n this.localToWorld(new Vector3()),\n );\n lineDirWorld.y = 0;\n lineDirWorld.normalize();\n\n const cameraFlat = cameraWorldPos.clone();\n cameraFlat.y = labelWorldPos.y;\n\n const toCameraFlat = cameraFlat.clone().sub(labelWorldPos);\n toCameraFlat.y = 0;\n toCameraFlat.normalize();\n\n const shouldFlip = lineDirWorld.dot(toCameraFlat) < 0;\n if (shouldFlip) {\n lineDirWorld.multiplyScalar(-1);\n }\n\n const pseudoCameraPos = labelWorldPos\n .clone()\n .add(lineDirWorld.multiplyScalar(0.01))\n .add(new Vector3(0, 1, 0));\n\n this._textLabel.update(offsetPosition, this._labelText, pseudoCameraPos);\n } else {\n this._textLabel.update(offsetPosition, this._labelText, cameraWorldPos);\n }\n }\n\n public initializeTextLabels(): void {\n if (!this._font || !this._labelText || !this._textLabel) {\n return;\n }\n\n if (this._textLabel.children.length) {\n return;\n }\n\n try {\n this.updateMatrixWorld(true);\n\n if (this._camera) {\n this._updateLabelOrientation();\n } else {\n const labelWorldPos = this._getMainLineCenterWorldPosition();\n if (labelWorldPos) {\n const labelLocalPos = this.worldToLocal(labelWorldPos.clone());\n this._textLabel.position.copy(labelLocalPos);\n const defaultCameraDir = new Vector3(0, 0, 1);\n labelLocalPos.add(new Vector3(0, 0, 0.002));\n this._textLabel.update(\n labelLocalPos,\n this._labelText,\n defaultCameraDir,\n );\n }\n }\n } catch (error) {\n console.warn('Failed to initialize text label for dimension:', error);\n if (this._textLabel) {\n this.remove(this._textLabel);\n this._textLabel = null;\n }\n }\n }\n\n public updateLabelForCamera(camera: Camera): void {\n if (!this._textLabel) {\n return;\n }\n\n this._camera = camera;\n\n if (!this._textLabel.children.length) {\n this.initializeTextLabels();\n } else {\n this._updateLabelOrientation();\n }\n }\n\n private _addEdgeSideLines(\n levelSpacing: number,\n line: Line3,\n labelDirection: Vector3,\n ) {\n const sideOffset = -(3 * TEXT_SPACING + levelSpacing) * 0.5;\n const endFrom = line.start.clone();\n const startFrom = line.start\n .clone()\n .add(labelDirection.clone().multiplyScalar(sideOffset));\n const endTo = line.end.clone();\n const startTo = line.end\n .clone()\n .add(labelDirection.clone().multiplyScalar(sideOffset));\n this._addLine(startFrom, endFrom);\n this._addLine(startTo, endTo);\n }\n\n private _addLine(start: Vector3, end: Vector3) {\n const lineGeometry = new BufferGeometry();\n const vertices = [start.x, start.y, start.z, end.x, end.y, end.z];\n lineGeometry.setAttribute(\n 'position',\n new BufferAttribute(new Float32Array(vertices), 3),\n );\n const line = new Line(lineGeometry, this._lineMaterial);\n line.renderOrder = 0;\n this.add(line);\n }\n\n public dispose() {\n if (this._textLabel) {\n try {\n this._textLabel.dispose();\n } catch (error) {\n console.warn('Error disposing text label:', error);\n }\n this._textLabel = null;\n }\n this._mainLineObject = null;\n this._labelText = null;\n this._camera = null;\n }\n}\n"],"names":["LINE_MATERIAL","TEXT_SIZE","LINE_SPACING","ComponentDimensioningAxis","dimensioningAndAxis","boundingBox","cameraPosition","defaultLabelDirection","lookAtOppositeSide","from","to","lineOffset","start","end","Line3","convertToTHREE","Vector3","direction","labelDirection","center","size","ComponentDimensioning","Object3D","relativeCameraDirection","font","DIMENSIONING_GEOMETRY","kernelDimensioningToThree","camera","LineBasicMaterial","TEXT_COLOR","maxSize","length","fontSize","levelSpacing","TEXT_SPACING","line","lineGeometry","BufferGeometry","vertices","BufferAttribute","lineObject","Line","TextWithBackground","positions","cameraDir","cameraWorldPos","labelPosition","labelWorldPos","toCameraWorld","toCameraLocal","offsetPosition","lineDir","lineDirWorld","cameraFlat","toCameraFlat","pseudoCameraPos","labelLocalPos","defaultCameraDir","error","sideOffset","endFrom","startFrom","endTo","startTo","__decorateClass","inject"],"mappings":";;;;;;AAwBA,MAAMA,IAAgB,wCAEhBC,IAAY,OACZC,IAAe;AAOrB,MAAMC,EAA0B;AAAA,EAK9B,YACEC,GACAC,GACAC,GACA;AACA,SAAK,aACHH,EAA0B,cAAcC,CAAmB;AAC7D,UAAMG,IACJJ,EAA0B;AAAA,MACxBC;AAAA,MACA,KAAK;AAAA,IAAA,GAEHI,IAAqBF,EAAe,IAAIC,CAAqB,KAAK;AACxE,SAAK,kBACHJ,EAA0B;AAAA,MACxBC;AAAA,MACAI;AAAA,MACAD;AAAA,IAAA,GAEJ,KAAK,UAAUJ,EAA0B;AAAA,MACvCC;AAAA,MACAC;AAAA,MACAG;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,IAAI,YAAqB;AACvB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,iBAA0B;AAC5B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,QAAQC,GAAcC,GAAYC,GAA2B;AAC3D,UAAMC,IAAQ,KAAK,QAChB,MAAA,EACA,IAAI,KAAK,WAAW,MAAA,EAAQ,eAAeH,CAAI,CAAC,EAChD,IAAI,KAAK,gBAAgB,MAAA,EAAQ,eAAeE,CAAU,CAAC,GACxDE,IAAM,KAAK,QACd,MAAA,EACA,IAAI,KAAK,WAAW,MAAA,EAAQ,eAAeH,CAAE,CAAC,EAC9C,IAAI,KAAK,gBAAgB,MAAA,EAAQ,eAAeC,CAAU,CAAC;AAC9D,WAAO,IAAIG,EAAMF,GAAOC,CAAG;AAAA,EAC7B;AAAA,EAEA,OAAe,cACbT,GACS;AACT,WAAIA,EAAoB,OACfW,EAAeX,EAAoB,KAAK,SAAS,EAAE,UAAA,IACjDA,EAAoB,aAAa,SAAS,MAC5C,IAAIY,EAAQ,GAAG,GAAG,CAAC,IACjBZ,EAAoB,aAAa,SAAS,MAC5C,IAAIY,EAAQ,GAAG,GAAG,CAAC,IAErB,IAAIA,EAAQ,GAAG,GAAG,CAAC;AAAA,EAC5B;AAAA,EAEA,OAAe,0BACbZ,GACAa,GACS;AACT,QAAIb,EAAoB,MAAM;AAC5B,YAAMc,IAAiBH;AAAA,QACrBX,EAAoB,KAAK;AAAA,MAAA;AAG3B,aADoBa,EAAU,MAAA,EAAQ,MAAMC,CAAc,EACvC,MAAMD,CAAS,EAAE,UAAA;AAAA,IACtC,OAAA;AAAA,UAAWb,EAAoB,aAAa,SAAS;AACnD,eAAO,IAAIY,EAAQ,GAAG,GAAG,CAAC;AAC5B,UAAWZ,EAAoB,aAAa,SAAS;AACnD,eAAO,IAAIY,EAAQ,IAAI,GAAG,CAAC;AAAA;AAE7B,WAAO,IAAIA,EAAQ,IAAI,GAAG,CAAC;AAAA,EAC7B;AAAA,EAEA,OAAe,+BACbZ,GACAI,GACAU,GACS;AACT,QAAIV;AACF,UAAIJ,EAAoB;AACtB,YAAIA,EAAoB,KAAK;AAC3B,iBAAOc,EAAe,QAAQ,eAAe,EAAE;AAAA,iBAGjDd,EAAoB,aAAa,SAAS,OAC1CA,EAAoB,aAAa,SAAS;AAE1C,eAAOc,EAAe,QAAQ,eAAe,EAAE;AAAA;AAGnD,WAAOA;AAAA,EACT;AAAA,EAEA,OAAe,iBACbd,GACAC,GACAG,GACS;AACT,UAAMW,IAASd,EAAY,UAAU,IAAIW,GAAS,GAC5CI,IAAOf,EAAY,QAAQ,IAAIW,GAAS;AAC9C,WAAIZ,EAAoB,OACfI,KAAsBJ,EAAoB,KAAK,oBAClDW,EAAeX,EAAoB,KAAK,iBAAiB,IACzDW,EAAeX,EAAoB,KAAK,MAAM,IACzCA,EAAoB,aAAa,SAAS,MAC5C,IAAIY,EAAQ,GAAGG,EAAO,IAAIC,EAAK,IAAI,KAAKD,EAAO,IAAIC,EAAK,IAAI,GAAG,IAC7DhB,EAAoB,aAAa,SAAS,MAC5C,IAAIY;AAAA,MACTG,EAAO,IAAIC,EAAK,KAAKZ,IAAqB,MAAM;AAAA,MAChDW,EAAO,IAAIC,EAAK,IAAI;AAAA,MACpB;AAAA,IAAA,IAGG,IAAIJ;AAAA,MACTG,EAAO,IAAIC,EAAK,KAAKZ,IAAqB,MAAM;AAAA,MAChD;AAAA,MACAW,EAAO,IAAIC,EAAK,IAAI;AAAA,IAAA;AAAA,EAExB;AACF;AAEA,MAAqBC,UAA8BC,EAAS;AAAA,EAqB1D,YACElB,GACAC,GACAkB,GACAC,GACA;AACA,UAAA,GAXF,KAAQ,UAAyB,MAEjC,KAAQ,kBAA+B,MACvC,KAAQ,aAA4B,MASlC,KAAK,OAAOC,GAEZ,KAAK,QAAQD,KAAQ,MAErB,KAAK,QAAQnB,EAAY,QAAQ,IAAIW,GAAS,GAC9C,KAAK,gBAAgBU;AAAA,MACnBtB,EAAoB;AAAA,IAAA,GAEtB,KAAK,QAAQ,IAAID;AAAA,MACfC;AAAA,MACAC;AAAA,MACAkB;AAAA,IAAA,GAEF,KAAK,SAAS,KAAK,cAAc,WAAW,KAAK,cAAc,OAE/D,KAAK,MAAA;AAAA,EACP;AAAA,EAEA,QAAQ;AAON,YAAQ,KAAK,sCAAsC;AAAA,EAErD;AAAA,EAEO,UAAUI,GAAsB;AACrC,SAAK,UAAUA,GACX,KAAK,cACP,KAAK,wBAAA;AAAA,EAET;AAAA,EAEQ,iBAAiB;AACvB,IAAK,KAAK,aAAa,kBAInB,KAAK,aAAa,cAAc,IAAI3B,CAAa,IACnD,KAAK,gBAAgB,KAAK,aAAa,cAAc;AAAA,MACnDA;AAAA,IAAA,KAGF,KAAK,gBAAgB,IAAI4B,EAAkB;AAAA,MACzC,OAAOC;AAAA,IAAA,CACR,GACD,KAAK,aAAa,cAAc,IAAI7B,GAAe,KAAK,aAAa;AAAA,EAEzE;AAAA,EAEQ,QAAQ;AACd,SAAK,eAAA;AAEL,UAAM8B,IAAU,KAAK;AAAA,MACnB,KAAK,IAAI,KAAK,MAAM,GAAG,KAAK,MAAM,GAAG,KAAK,MAAM,CAAC;AAAA,IAAA,GAE7CC,IAAS,KAAK,IAAI,KAAK,cAAc,KAAK,KAAK,cAAc,IAAI;AAEvE,QAAIC,IAAW/B,KAAa6B,IAAU,IAAI,IAAIA,IAAU;AACxD,IAAIC,IAAS,QACXC,KAAY,MAAMD;AAKpB,UAAME,IAAeD,IAAW,KAE1BrB,IACJT,KAAgB,IAAIgC,IAAeD,KAAgB,KAAK,QAEpDE,IAAO,KAAK,MAAM;AAAA,MACtB,KAAK,cAAc;AAAA,MACnB,KAAK,cAAc;AAAA,MACnBxB;AAAA,IAAA;AAGF,SAAK;AAAA,MACHsB;AAAA,MACAE;AAAA,MACA,KAAK,MAAM,eAAe,MAAA;AAAA,IAAM;AAGlC,UAAMC,IAAe,IAAIC,EAAA,GACnBC,IAAW;AAAA,MACfH,EAAK,MAAM;AAAA,MACXA,EAAK,MAAM;AAAA,MACXA,EAAK,MAAM;AAAA,MACXA,EAAK,IAAI;AAAA,MACTA,EAAK,IAAI;AAAA,MACTA,EAAK,IAAI;AAAA,IAAA;AAEX,IAAAC,EAAa;AAAA,MACX;AAAA,MACA,IAAIG,EAAgB,IAAI,aAAaD,CAAQ,GAAG,CAAC;AAAA,IAAA;AAGnD,UAAME,IAAa,IAAIC,EAAKL,GAAc,KAAK,aAAa;AAQ5D,QAPAI,EAAW,OAAO,8BAA8B,KAAK,cAAc,MACnEA,EAAW,cAAc,GAEzB,KAAK,kBAAkBA,GAEvB,KAAK,IAAIA,CAAU,GAEf,KAAK,OAAO;AACd,YAAMT,IAAS,KAAK,IAAI,KAAK,cAAc,KAAK,KAAK,cAAc,IAAI;AACvE,WAAK,aAAa,KAAK,eAAe;AAAA,QACpCA,IAAS;AAAA,MAAA,GAGX,KAAK,aAAa,IAAIW,EAAmB,KAAK,KAAK,GACnD,KAAK,WAAW,SAAS,UAAU,IAEnC,KAAK,WAAW,cAAc,GAE9B,KAAK,IAAI,KAAK,UAAU;AAAA,IAC1B;AAAA,EACF;AAAA;AAAA,EAGQ,kCAAkD;AACxD,QAAI,CAAC,KAAK;AACR,aAAO;AAGT,SAAK,kBAAkB,EAAI,GAC3B,KAAK,gBAAgB,kBAAkB,EAAI;AAE3C,UAAMC,IAAY,KAAK,gBAAgB,SAAS,WAAW,SAAS;AAEpE,QAAIA,EAAU,SAAS;AACrB,aAAO;AAGT,UAAM/B,IAAQ,IAAII,EAAQ2B,EAAU,CAAC,GAAGA,EAAU,CAAC,GAAGA,EAAU,CAAC,CAAC,GAC5D9B,IAAM,IAAIG,EAAQ2B,EAAU,CAAC,GAAGA,EAAU,CAAC,GAAGA,EAAU,CAAC,CAAC;AAEhE,WAAA/B,EAAM,aAAa,KAAK,gBAAgB,WAAW,GACnDC,EAAI,aAAa,KAAK,gBAAgB,WAAW,GAE1CD,EAAM,QAAQ,IAAIC,CAAG,EAAE,eAAe,GAAG;AAAA,EAClD;AAAA,EAEQ,0BAAgC;AACtC,QAAI,CAAC,KAAK,cAAc,CAAC,KAAK,WAAW,CAAC,KAAK;AAC7C;AAGF,UAAM+B,IAAY,IAAI5B,EAAA;AACtB,SAAK,QAAQ,kBAAkB4B,CAAS;AACxC,UAAMC,IAAiB,IAAI7B,EAAA;AAC3B,SAAK,QAAQ,iBAAiB6B,CAAc;AAE5C,UAAMF,IAAY,KAAK,gBAAgB,SAAS,WAAW,SAAS,OAC9D/B,IAAQ,IAAII,EAAQ2B,EAAU,CAAC,GAAGA,EAAU,CAAC,GAAGA,EAAU,CAAC,CAAC,GAC5D9B,IAAM,IAAIG,EAAQ2B,EAAU,CAAC,GAAGA,EAAU,CAAC,GAAGA,EAAU,CAAC,CAAC,GAC1DG,IAAgBlC,EAAM,MAAA,EAAQ,IAAIC,CAAG,EAAE,eAAe,GAAG,GACzDkC,IAAgB,KAAK,aAAaD,EAAc,OAAO,GAEvDE,IAAgBH,EAAe,MAAA,EAAQ,IAAIE,CAAa,EAAE,UAAA,GAC1DE,IAAgB,KAAK;AAAA,MACzB,KAAK,aAAa,IAAIjC,GAAS,EAAE,IAAIgC,CAAa;AAAA,IAAA,EAClD,IAAI,KAAK,aAAa,KAAK,aAAa,IAAIhC,EAAA,CAAS,CAAC,CAAC,GAEnDkC,IAAiBJ,EACpB,MAAA,EACA,IAAIG,EAAc,eAAe,IAAK,CAAC;AAI1C,QAFkB,KAAK,IAAIL,EAAU,CAAC,IAAI,MAE3B;AACb,YAAMO,IAAUtC,EAAI,MAAA,EAAQ,IAAID,CAAK,GAC/BwC,IAAe,KAAK,aAAaD,EAAQ,MAAA,CAAO,EAAE;AAAA,QACtD,KAAK,aAAa,IAAInC,EAAA,CAAS;AAAA,MAAA;AAEjC,MAAAoC,EAAa,IAAI,GACjBA,EAAa,UAAA;AAEb,YAAMC,IAAaR,EAAe,MAAA;AAClC,MAAAQ,EAAW,IAAIN,EAAc;AAE7B,YAAMO,IAAeD,EAAW,MAAA,EAAQ,IAAIN,CAAa;AACzD,MAAAO,EAAa,IAAI,GACjBA,EAAa,UAAA,GAEMF,EAAa,IAAIE,CAAY,IAAI,KAElDF,EAAa,eAAe,EAAE;AAGhC,YAAMG,IAAkBR,EACrB,MAAA,EACA,IAAIK,EAAa,eAAe,IAAI,CAAC,EACrC,IAAI,IAAIpC,EAAQ,GAAG,GAAG,CAAC,CAAC;AAE3B,WAAK,WAAW,OAAOkC,GAAgB,KAAK,YAAYK,CAAe;AAAA,IACzE;AACE,WAAK,WAAW,OAAOL,GAAgB,KAAK,YAAYL,CAAc;AAAA,EAE1E;AAAA,EAEO,uBAA6B;AAClC,QAAI,GAAC,KAAK,SAAS,CAAC,KAAK,cAAc,CAAC,KAAK,eAIzC,MAAK,WAAW,SAAS;AAI7B,UAAI;AAGF,YAFA,KAAK,kBAAkB,EAAI,GAEvB,KAAK;AACP,eAAK,wBAAA;AAAA,aACA;AACL,gBAAME,IAAgB,KAAK,gCAAA;AAC3B,cAAIA,GAAe;AACjB,kBAAMS,IAAgB,KAAK,aAAaT,EAAc,OAAO;AAC7D,iBAAK,WAAW,SAAS,KAAKS,CAAa;AAC3C,kBAAMC,IAAmB,IAAIzC,EAAQ,GAAG,GAAG,CAAC;AAC5C,YAAAwC,EAAc,IAAI,IAAIxC,EAAQ,GAAG,GAAG,IAAK,CAAC,GAC1C,KAAK,WAAW;AAAA,cACdwC;AAAA,cACA,KAAK;AAAA,cACLC;AAAA,YAAA;AAAA,UAEJ;AAAA,QACF;AAAA,MACF,SAASC,GAAO;AACd,gBAAQ,KAAK,kDAAkDA,CAAK,GAChE,KAAK,eACP,KAAK,OAAO,KAAK,UAAU,GAC3B,KAAK,aAAa;AAAA,MAEtB;AAAA,EACF;AAAA,EAEO,qBAAqB/B,GAAsB;AAChD,IAAK,KAAK,eAIV,KAAK,UAAUA,GAEV,KAAK,WAAW,SAAS,SAG5B,KAAK,wBAAA,IAFL,KAAK,qBAAA;AAAA,EAIT;AAAA,EAEQ,kBACNM,GACAE,GACAjB,GACA;AACA,UAAMyC,IAAa,EAAE,IAAIzB,IAAeD,KAAgB,KAClD2B,IAAUzB,EAAK,MAAM,MAAA,GACrB0B,IAAY1B,EAAK,MACpB,MAAA,EACA,IAAIjB,EAAe,MAAA,EAAQ,eAAeyC,CAAU,CAAC,GAClDG,IAAQ3B,EAAK,IAAI,MAAA,GACjB4B,IAAU5B,EAAK,IAClB,MAAA,EACA,IAAIjB,EAAe,MAAA,EAAQ,eAAeyC,CAAU,CAAC;AACxD,SAAK,SAASE,GAAWD,CAAO,GAChC,KAAK,SAASG,GAASD,CAAK;AAAA,EAC9B;AAAA,EAEQ,SAASlD,GAAgBC,GAAc;AAC7C,UAAMuB,IAAe,IAAIC,EAAA,GACnBC,IAAW,CAAC1B,EAAM,GAAGA,EAAM,GAAGA,EAAM,GAAGC,EAAI,GAAGA,EAAI,GAAGA,EAAI,CAAC;AAChE,IAAAuB,EAAa;AAAA,MACX;AAAA,MACA,IAAIG,EAAgB,IAAI,aAAaD,CAAQ,GAAG,CAAC;AAAA,IAAA;AAEnD,UAAMH,IAAO,IAAIM,EAAKL,GAAc,KAAK,aAAa;AACtD,IAAAD,EAAK,cAAc,GACnB,KAAK,IAAIA,CAAI;AAAA,EACf;AAAA,EAEO,UAAU;AACf,QAAI,KAAK,YAAY;AACnB,UAAI;AACF,aAAK,WAAW,QAAA;AAAA,MAClB,SAASuB,GAAO;AACd,gBAAQ,KAAK,+BAA+BA,CAAK;AAAA,MACnD;AACA,WAAK,aAAa;AAAA,IACpB;AACA,SAAK,kBAAkB,MACvB,KAAK,aAAa,MAClB,KAAK,UAAU;AAAA,EACjB;AACF;AApUUM,EAAA;AAAA,EADPC;AAAA,GADkB5C,EAEX,WAAA,cAAA;AAGA2C,EAAA;AAAA,EADPC;AAAA,GAJkB5C,EAKX,WAAA,gBAAA;"}
|
package/lib/{continuous-drawing-helper-BYjzGaWD.mjs → continuous-drawing-helper-BfZl8h5N.mjs}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { aF as s, aG as n, j as o, d as c, aE as a } from "./index-E00NytVZ.mjs";
|
|
2
2
|
class u {
|
|
3
3
|
constructor() {
|
|
4
4
|
this._currentInnerRadius = 0;
|
|
@@ -45,4 +45,4 @@ class u {
|
|
|
45
45
|
export {
|
|
46
46
|
u as default
|
|
47
47
|
};
|
|
48
|
-
//# sourceMappingURL=continuous-drawing-helper-
|
|
48
|
+
//# sourceMappingURL=continuous-drawing-helper-BfZl8h5N.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"continuous-drawing-helper-
|
|
1
|
+
{"version":3,"file":"continuous-drawing-helper-BfZl8h5N.mjs","sources":["../../packages/planner-core/src/webgl/continuous-drawing-helper.ts"],"sourcesContent":["import type { ContinuousDrawingManager } from '../../../typings/planner';\nimport { convertToTHREE } from '../../../common-core/src/utils/kernel-utils';\nimport type { Group } from 'three';\nimport { DoubleSide, Mesh, MeshBasicMaterial, RingGeometry } from 'three';\n\nexport default class ContinuousDrawingHelper {\n private _drawingGroup: Group;\n private _continuousDrawingManager: ContinuousDrawingManager;\n\n private _circleMesh: Mesh;\n\n private _kernelZoomFactor: number;\n\n private _currentInnerRadius: number = 0;\n\n init(\n drawingGroup: Group,\n continuousDrawingManager: ContinuousDrawingManager,\n kernelZoomFactor: number,\n ) {\n this._drawingGroup = drawingGroup;\n this._continuousDrawingManager = continuousDrawingManager;\n this._kernelZoomFactor = kernelZoomFactor;\n this.update();\n }\n\n public update() {\n this._initCircle();\n this._updateCircle();\n }\n\n private _initCircle() {\n if (this._circleMesh) {\n return;\n }\n\n const innerRadius = 70 / this._kernelZoomFactor / 1000;\n const outerRadius = innerRadius + innerRadius / 50;\n\n const innerRingGeometry = new RingGeometry(innerRadius, outerRadius, 32);\n const innerRingMaterial = new MeshBasicMaterial({\n color: 0x999999,\n side: DoubleSide,\n });\n this._circleMesh = new Mesh(innerRingGeometry, innerRingMaterial);\n this._circleMesh.name = 'Circle';\n this._circleMesh.rotation.set(Math.PI / 2, 0, 0);\n this._circleMesh.visible =\n this._continuousDrawingManager.shouldShowCircle();\n\n this._drawingGroup.add(this._circleMesh);\n }\n\n private _updateCircle() {\n if (!this._circleMesh) {\n return;\n }\n\n const innerRadius = 70 / this._kernelZoomFactor / 1000;\n if (innerRadius !== this._currentInnerRadius) {\n const outerRadius = innerRadius + innerRadius / 50;\n\n this._circleMesh.geometry = new RingGeometry(\n innerRadius,\n outerRadius,\n 32,\n );\n }\n\n const position = convertToTHREE(\n this._continuousDrawingManager.getStartPoint(),\n );\n position.y = 5;\n\n this._circleMesh.position.copy(position);\n this._circleMesh.visible =\n this._continuousDrawingManager.shouldShowCircle();\n\n this._currentInnerRadius = innerRadius;\n }\n\n public setKernelZoomFactor(kernelZoomFactor: number) {\n this._kernelZoomFactor = kernelZoomFactor;\n }\n\n public endDrawing() {\n this._drawingGroup.remove(this._circleMesh);\n this._circleMesh = null;\n }\n}\n"],"names":["ContinuousDrawingHelper","drawingGroup","continuousDrawingManager","kernelZoomFactor","innerRadius","outerRadius","innerRingGeometry","RingGeometry","innerRingMaterial","MeshBasicMaterial","DoubleSide","Mesh","position","convertToTHREE"],"mappings":";AAKA,MAAqBA,EAAwB;AAAA,EAA7C,cAAA;AAQE,SAAQ,sBAA8B;AAAA,EAAA;AAAA,EAEtC,KACEC,GACAC,GACAC,GACA;AACA,SAAK,gBAAgBF,GACrB,KAAK,4BAA4BC,GACjC,KAAK,oBAAoBC,GACzB,KAAK,OAAA;AAAA,EACP;AAAA,EAEO,SAAS;AACd,SAAK,YAAA,GACL,KAAK,cAAA;AAAA,EACP;AAAA,EAEQ,cAAc;AACpB,QAAI,KAAK;AACP;AAGF,UAAMC,IAAc,KAAK,KAAK,oBAAoB,KAC5CC,IAAcD,IAAcA,IAAc,IAE1CE,IAAoB,IAAIC,EAAaH,GAAaC,GAAa,EAAE,GACjEG,IAAoB,IAAIC,EAAkB;AAAA,MAC9C,OAAO;AAAA,MACP,MAAMC;AAAA,IAAA,CACP;AACD,SAAK,cAAc,IAAIC,EAAKL,GAAmBE,CAAiB,GAChE,KAAK,YAAY,OAAO,UACxB,KAAK,YAAY,SAAS,IAAI,KAAK,KAAK,GAAG,GAAG,CAAC,GAC/C,KAAK,YAAY,UACf,KAAK,0BAA0B,iBAAA,GAEjC,KAAK,cAAc,IAAI,KAAK,WAAW;AAAA,EACzC;AAAA,EAEQ,gBAAgB;AACtB,QAAI,CAAC,KAAK;AACR;AAGF,UAAMJ,IAAc,KAAK,KAAK,oBAAoB;AAClD,QAAIA,MAAgB,KAAK,qBAAqB;AAC5C,YAAMC,IAAcD,IAAcA,IAAc;AAEhD,WAAK,YAAY,WAAW,IAAIG;AAAA,QAC9BH;AAAA,QACAC;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ;AAEA,UAAMO,IAAWC;AAAA,MACf,KAAK,0BAA0B,cAAA;AAAA,IAAc;AAE/C,IAAAD,EAAS,IAAI,GAEb,KAAK,YAAY,SAAS,KAAKA,CAAQ,GACvC,KAAK,YAAY,UACf,KAAK,0BAA0B,iBAAA,GAEjC,KAAK,sBAAsBR;AAAA,EAC7B;AAAA,EAEO,oBAAoBD,GAA0B;AACnD,SAAK,oBAAoBA;AAAA,EAC3B;AAAA,EAEO,aAAa;AAClB,SAAK,cAAc,OAAO,KAAK,WAAW,GAC1C,KAAK,cAAc;AAAA,EACrB;AACF;"}
|