@operato/scene-visualizer 1.2.12 → 1.2.14
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 +19 -0
- package/db.sqlite +0 -0
- package/dist/cube.d.ts +1 -3
- package/dist/cube.js +1 -5
- package/dist/cube.js.map +1 -1
- package/dist/cylinder.d.ts +1 -3
- package/dist/cylinder.js +1 -5
- package/dist/cylinder.js.map +1 -1
- package/dist/rack.js +3 -3
- package/dist/rack.js.map +1 -1
- package/dist/sphere.d.ts +1 -3
- package/dist/sphere.js +1 -8
- package/dist/sphere.js.map +1 -1
- package/dist/sprite.js +0 -6
- package/dist/sprite.js.map +1 -1
- package/dist/stock.d.ts +7 -2
- package/dist/stock.js +8 -4
- package/dist/stock.js.map +1 -1
- package/dist/threed/common.js +3 -2
- package/dist/threed/common.js.map +1 -1
- package/dist/threed/real-object-camera-meshed.d.ts +1 -1
- package/dist/threed/real-object-camera-meshed.js +1 -1
- package/dist/threed/real-object-camera-meshed.js.map +1 -1
- package/dist/threed/real-object-dom-element.d.ts +0 -3
- package/dist/threed/real-object-dom-element.js +0 -51
- package/dist/threed/real-object-dom-element.js.map +1 -1
- package/dist/threed/real-object-extrude.d.ts +2 -3
- package/dist/threed/real-object-extrude.js +27 -66
- package/dist/threed/real-object-extrude.js.map +1 -1
- package/dist/threed/real-object-gltf.d.ts +0 -2
- package/dist/threed/real-object-gltf.js +2 -8
- package/dist/threed/real-object-gltf.js.map +1 -1
- package/dist/threed/real-object-mesh.d.ts +3 -2
- package/dist/threed/real-object-mesh.js +22 -13
- package/dist/threed/real-object-mesh.js.map +1 -1
- package/dist/threed/real-object-plane.d.ts +2 -3
- package/dist/threed/real-object-plane.js +6 -7
- package/dist/threed/real-object-plane.js.map +1 -1
- package/dist/threed/real-object-sprite-2d.d.ts +2 -2
- package/dist/threed/real-object-sprite-2d.js +12 -9
- package/dist/threed/real-object-sprite-2d.js.map +1 -1
- package/dist/threed/real-object-sprite.d.ts +4 -1
- package/dist/threed/real-object-sprite.js +30 -1
- package/dist/threed/real-object-sprite.js.map +1 -1
- package/dist/threed/real-object-text.d.ts +3 -4
- package/dist/threed/real-object-text.js +41 -47
- package/dist/threed/real-object-text.js.map +1 -1
- package/dist/threed/real-object.d.ts +0 -1
- package/dist/threed/real-object.js +14 -18
- package/dist/threed/real-object.js.map +1 -1
- package/dist/threed/texture/canvas-texture.js +3 -1
- package/dist/threed/texture/canvas-texture.js.map +1 -1
- package/dist/wall.d.ts +2 -3
- package/dist/wall.js +4 -5
- package/dist/wall.js.map +1 -1
- package/logs/.08636eb59927f12972f6774f5947c8507b3564c2-audit.json +6 -21
- package/logs/.5e5d741d8b7784a2fbad65eedc0fd46946aaf6f2-audit.json +10 -0
- package/logs/application-2023-03-05-12.log +6 -0
- package/logs/application-2023-03-05-23.log +12 -0
- package/logs/connections-2023-03-05-12.log +35 -0
- package/logs/connections-2023-03-05-23.log +70 -0
- package/package.json +2 -2
- package/src/cube.ts +1 -7
- package/src/cylinder.ts +1 -7
- package/src/rack.ts +3 -4
- package/src/sphere.ts +1 -10
- package/src/sprite.ts +0 -8
- package/src/stock.ts +9 -6
- package/src/threed/common.ts +3 -2
- package/src/threed/real-object-camera-meshed.ts +1 -1
- package/src/threed/real-object-dom-element.ts +0 -71
- package/src/threed/real-object-extrude.ts +31 -69
- package/src/threed/real-object-gltf.ts +2 -10
- package/src/threed/real-object-mesh.ts +21 -14
- package/src/threed/real-object-plane.ts +6 -9
- package/src/threed/real-object-sprite-2d.ts +15 -12
- package/src/threed/real-object-sprite.ts +36 -2
- package/src/threed/real-object-text.ts +49 -60
- package/src/threed/real-object.ts +15 -22
- package/src/threed/texture/canvas-texture.ts +3 -1
- package/src/wall.ts +5 -6
- package/tsconfig.tsbuildinfo +1 -1
- package/logs/application-2023-03-01-03.log +0 -6
- package/logs/application-2023-03-01-13.log +0 -6
- package/logs/application-2023-03-01-15.log +0 -6
- package/logs/application-2023-03-03-00.log +0 -25
- package/logs/application-2023-03-03-01.log +0 -6
|
@@ -1,58 +1,16 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import { RealObjectMesh } from './real-object-mesh';
|
|
5
4
|
import * as THREE from 'three';
|
|
6
|
-
import {
|
|
5
|
+
import { applyAlpha } from './common';
|
|
6
|
+
import { RealObjectMesh } from './real-object-mesh';
|
|
7
|
+
import { textTexture } from './texture/text-texture';
|
|
7
8
|
/**
|
|
8
9
|
* RealObjectText
|
|
9
10
|
*/
|
|
10
11
|
export class RealObjectText extends RealObjectMesh {
|
|
11
|
-
buildGeometry() {
|
|
12
|
-
// TODO component.text의 heavy한 로직을 반복적으로 실행하지 않도록, 캐싱하자.
|
|
13
|
-
var { bold = false, italic = false, fontFamily = 'Serif', fontSize = 10, fontColor = 'black' } = this.component.state;
|
|
14
|
-
var text = this.component.text;
|
|
15
|
-
let { width, height } = textBounds(text, {
|
|
16
|
-
bold,
|
|
17
|
-
italic,
|
|
18
|
-
fontFamily,
|
|
19
|
-
fontSize,
|
|
20
|
-
fontColor
|
|
21
|
-
});
|
|
22
|
-
// FIXME
|
|
23
|
-
// ;(this.component as any).dimension = {
|
|
24
|
-
// width,
|
|
25
|
-
// height,
|
|
26
|
-
// depth: 1
|
|
27
|
-
// }
|
|
28
|
-
this.component.setState({
|
|
29
|
-
width,
|
|
30
|
-
depth: 1,
|
|
31
|
-
height
|
|
32
|
-
});
|
|
33
|
-
return new THREE.PlaneGeometry(width, height);
|
|
34
|
-
}
|
|
35
|
-
buildMaterial() {
|
|
36
|
-
var { width, height, bold = false, italic = false, fontFamily = 'Serif', fontSize = 10, fontColor = 'black' } = this.component.state;
|
|
37
|
-
// TODO component.text의 heavy한 로직을 반복적으로 실행하지 않도록, 캐싱하자.
|
|
38
|
-
var text = this.component.text;
|
|
39
|
-
return new THREE.MeshBasicMaterial({
|
|
40
|
-
map: textTexture(text, width, height, {
|
|
41
|
-
bold,
|
|
42
|
-
italic,
|
|
43
|
-
fontFamily,
|
|
44
|
-
fontSize,
|
|
45
|
-
fontColor
|
|
46
|
-
}),
|
|
47
|
-
transparent: true,
|
|
48
|
-
alphaTest: 0.2,
|
|
49
|
-
side: THREE.DoubleSide
|
|
50
|
-
});
|
|
51
|
-
}
|
|
12
|
+
buildGeometry() { }
|
|
52
13
|
/* overide */
|
|
53
|
-
updateDimension() {
|
|
54
|
-
// Intentionally do nothing
|
|
55
|
-
}
|
|
56
14
|
get rotation() {
|
|
57
15
|
const { rotationX = 0, rotationY = 0, rotation = 0 } = this.component.state;
|
|
58
16
|
return {
|
|
@@ -61,9 +19,45 @@ export class RealObjectText extends RealObjectMesh {
|
|
|
61
19
|
z: rotation
|
|
62
20
|
};
|
|
63
21
|
}
|
|
22
|
+
updateDimension() {
|
|
23
|
+
var { width, height } = this.component.state;
|
|
24
|
+
if (this.object3d.geometry) {
|
|
25
|
+
this.object3d.geometry.dispose();
|
|
26
|
+
}
|
|
27
|
+
/* scaling으로 해결되지 않기때문에, 새로 geometry를 만드는 방법을 사용한다 */
|
|
28
|
+
this.object3d.geometry = new THREE.PlaneGeometry(width, height);
|
|
29
|
+
}
|
|
30
|
+
updateText() {
|
|
31
|
+
var material = this.object3d.material;
|
|
32
|
+
if (!material) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
var { width, height, bold = false, italic = false, fontFamily = 'Serif', fontSize = 10, fontColor = 'black', fillStyle } = this.component.state;
|
|
36
|
+
var text = this.component.text;
|
|
37
|
+
const texture = textTexture(text, width, height, {
|
|
38
|
+
bold,
|
|
39
|
+
italic,
|
|
40
|
+
fontFamily,
|
|
41
|
+
fontSize,
|
|
42
|
+
fontColor
|
|
43
|
+
});
|
|
44
|
+
if (texture) {
|
|
45
|
+
material.map = texture;
|
|
46
|
+
texture.needsUpdate = true;
|
|
47
|
+
}
|
|
48
|
+
else if (typeof fillStyle == 'string') {
|
|
49
|
+
if (fillStyle !== 'transparent') {
|
|
50
|
+
material.color.set(fillStyle);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
material.opacity = 0;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
64
57
|
updateAlpha() {
|
|
65
58
|
// material의 transparency는 항상 true으로 유지되어야 한다.
|
|
66
|
-
|
|
59
|
+
var { alpha = 1, fontColor } = this.component.state;
|
|
60
|
+
applyAlpha(this.object3d.material, alpha, fontColor);
|
|
67
61
|
this.object3d.material.transparent = true;
|
|
68
62
|
}
|
|
69
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-text.js","sourceRoot":"","sources":["../../src/threed/real-object-text.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"real-object-text.js","sourceRoot":"","sources":["../../src/threed/real-object-text.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,cAAc;IAChD,aAAa,KAAI,CAAC;IAElB,aAAa;IAEb,IAAI,QAAQ;QACV,MAAM,EAAE,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAE3E,OAAO;YACL,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;YAC1B,CAAC,EAAE,SAAS;YACZ,CAAC,EAAE,QAAQ;SACZ,CAAA;IACH,CAAC;IAED,eAAe;QACb,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAE5C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC1B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA;SACjC;QAED,qDAAqD;QACrD,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACjE,CAAC;IAED,UAAU;QACR,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAsC,CAAA;QACnE,IAAI,CAAC,QAAQ,EAAE;YACb,OAAM;SACP;QAED,IAAI,EACF,KAAK,EACL,MAAM,EACN,IAAI,GAAG,KAAK,EACZ,MAAM,GAAG,KAAK,EACd,UAAU,GAAG,OAAO,EACpB,QAAQ,GAAG,EAAE,EACb,SAAS,GAAG,OAAO,EACnB,SAAS,EACV,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAExB,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAA;QAE9B,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;YAC/C,IAAI;YACJ,MAAM;YACN,UAAU;YACV,QAAQ;YACR,SAAS;SACV,CAAC,CAAA;QAEF,IAAI,OAAO,EAAE;YACX,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAA;YACtB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAA;SAC3B;aAAM,IAAI,OAAO,SAAS,IAAI,QAAQ,EAAE;YACvC,IAAI,SAAS,KAAK,aAAa,EAAE;gBAC/B,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;aAC9B;iBAAM;gBACL,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAA;aACrB;SACF;IACH,CAAC;IAED,WAAW;QACT,8CAA8C;QAC9C,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAEnD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CACnD;QAAC,IAAI,CAAC,QAAQ,CAAC,QAAgB,CAAC,WAAW,GAAG,IAAI,CAAA;IACrD,CAAC;CACF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\nimport { applyAlpha } from './common'\n\nimport { RealObjectMesh } from './real-object-mesh'\nimport { textTexture } from './texture/text-texture'\n\n/**\n * RealObjectText\n */\nexport class RealObjectText extends RealObjectMesh {\n buildGeometry() {}\n\n /* overide */\n\n get rotation() {\n const { rotationX = 0, rotationY = 0, rotation = 0 } = this.component.state\n\n return {\n x: rotationX - Math.PI / 2,\n y: rotationY,\n z: rotation\n }\n }\n\n updateDimension() {\n var { width, height } = this.component.state\n\n if (this.object3d.geometry) {\n this.object3d.geometry.dispose()\n }\n\n /* scaling으로 해결되지 않기때문에, 새로 geometry를 만드는 방법을 사용한다 */\n this.object3d.geometry = new THREE.PlaneGeometry(width, height)\n }\n\n updateText() {\n var material = this.object3d.material as THREE.MeshStandardMaterial\n if (!material) {\n return\n }\n\n var {\n width,\n height,\n bold = false,\n italic = false,\n fontFamily = 'Serif',\n fontSize = 10,\n fontColor = 'black',\n fillStyle\n } = this.component.state\n\n var text = this.component.text\n\n const texture = textTexture(text, width, height, {\n bold,\n italic,\n fontFamily,\n fontSize,\n fontColor\n })\n\n if (texture) {\n material.map = texture\n texture.needsUpdate = true\n } else if (typeof fillStyle == 'string') {\n if (fillStyle !== 'transparent') {\n material.color.set(fillStyle)\n } else {\n material.opacity = 0\n }\n }\n }\n\n updateAlpha() {\n // material의 transparency는 항상 true으로 유지되어야 한다.\n var { alpha = 1, fontColor } = this.component.state\n\n applyAlpha(this.object3d.material, alpha, fontColor)\n ;(this.object3d.material as any).transparent = true\n }\n}\n"]}
|
|
@@ -14,6 +14,7 @@ export class RealObject {
|
|
|
14
14
|
texture.minFilter = THREE.LinearFilter;
|
|
15
15
|
texture.encoding = THREE.sRGBEncoding;
|
|
16
16
|
texture.repeat.set(1, 1);
|
|
17
|
+
texture.needsUpdate = true;
|
|
17
18
|
component.invalidate();
|
|
18
19
|
}, e => {
|
|
19
20
|
console.error(e);
|
|
@@ -29,9 +30,13 @@ export class RealObject {
|
|
|
29
30
|
update() {
|
|
30
31
|
this.clear();
|
|
31
32
|
this.build();
|
|
33
|
+
this.updateDimension();
|
|
32
34
|
this.updateTransform();
|
|
35
|
+
this.updateFillStyle();
|
|
36
|
+
this.updateStrokeStyle();
|
|
33
37
|
this.updateAlpha();
|
|
34
38
|
this.updateHidden();
|
|
39
|
+
this.updateText();
|
|
35
40
|
}
|
|
36
41
|
getObject3dInstance() {
|
|
37
42
|
return new THREE.Object3D();
|
|
@@ -192,7 +197,8 @@ export class RealObject {
|
|
|
192
197
|
this.object3d.scale.set(Math.max(x, SCALE_MIN), Math.max(y, SCALE_MIN), Math.max(z, SCALE_MIN));
|
|
193
198
|
}
|
|
194
199
|
updateDimension() {
|
|
195
|
-
this.
|
|
200
|
+
var { width, height, depth } = this.dimension;
|
|
201
|
+
this.object3d.scale.set(width, height, depth);
|
|
196
202
|
}
|
|
197
203
|
updateAlpha() {
|
|
198
204
|
var { alpha } = this.component.state;
|
|
@@ -213,26 +219,19 @@ export class RealObject {
|
|
|
213
219
|
updateHidden() {
|
|
214
220
|
this.object3d.visible = !this.component.state.hidden;
|
|
215
221
|
}
|
|
216
|
-
updateStrokeStyle() {
|
|
217
|
-
|
|
218
|
-
}
|
|
219
|
-
updateFillStyle() {
|
|
220
|
-
this.update();
|
|
221
|
-
}
|
|
222
|
-
updateText() {
|
|
223
|
-
this.update();
|
|
224
|
-
}
|
|
222
|
+
updateStrokeStyle() { }
|
|
223
|
+
updateFillStyle() { }
|
|
224
|
+
updateText() { }
|
|
225
225
|
onchange(after, before) {
|
|
226
|
-
if (hasProperties(this.rebuildingProperties, after)) {
|
|
227
|
-
this.update();
|
|
228
|
-
return;
|
|
229
|
-
}
|
|
230
226
|
if (hasProperties(['cx', 'cy', 'cz', 'zPos', 'left', 'top'], after)) {
|
|
231
|
-
this.
|
|
227
|
+
this.updatePosition();
|
|
232
228
|
}
|
|
233
229
|
if (hasProperties(['width', 'height', 'depth'], after)) {
|
|
234
230
|
this.updateDimension();
|
|
235
231
|
}
|
|
232
|
+
if (hasProperties(['rotationX', 'rotationY', 'rotation'], after)) {
|
|
233
|
+
this.updateRotate();
|
|
234
|
+
}
|
|
236
235
|
if ('scale' in after) {
|
|
237
236
|
this.updateScale();
|
|
238
237
|
}
|
|
@@ -252,8 +251,5 @@ export class RealObject {
|
|
|
252
251
|
this.updateText();
|
|
253
252
|
}
|
|
254
253
|
}
|
|
255
|
-
get rebuildingProperties() {
|
|
256
|
-
return ['width', 'height', 'depth', 'fillStyle', 'strokeStyle', 'text', 'path'];
|
|
257
|
-
}
|
|
258
254
|
}
|
|
259
255
|
//# sourceMappingURL=real-object.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-object.js","sourceRoot":"","sources":["../../src/threed/real-object.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\nimport { Component, Properties, DELTA } from '@hatiolab/things-scene'\n\nimport { SCALE_MIN } from './common'\nimport { ThreeDimensionalContainer } from './three-dimensional-container'\n\nfunction hasProperties(props: string[], obj: object) {\n return props.findIndex(prop => prop in obj) !== -1\n}\n\nexport abstract class RealObject<T extends THREE.Object3D = THREE.Object3D> {\n protected _component: Component\n protected _focused: boolean = false\n\n public object3d: T\n\n static buildFillStyleTexture(component: Component) {\n const { fillStyle } = component.state\n\n if (typeof fillStyle == 'object' && fillStyle.type == 'pattern' && fillStyle.image) {\n return new THREE.TextureLoader(THREE.DefaultLoadingManager).load(\n component.app.url(fillStyle.image),\n texture => {\n texture.minFilter = THREE.LinearFilter\n texture.encoding = THREE.sRGBEncoding\n texture.repeat.set(1, 1)\n\n component.invalidate()\n },\n e => {\n console.error(e)\n }\n )\n }\n }\n\n constructor(component: Component) {\n this._component = component\n this.object3d = this.getObject3dInstance()\n\n this.component.on('change', this.onchange, this)\n }\n\n update() {\n this.clear()\n this.build()\n\n this.updateTransform()\n this.updateAlpha()\n this.updateHidden()\n }\n\n protected getObject3dInstance(): T {\n return new THREE.Object3D() as T\n }\n\n build() {\n this.object3d.userData.context = this\n this.object3d.castShadow = true\n this.object3d.name = this.component.state.id\n }\n\n get component(): Component {\n return this._component!\n }\n\n get threeContainer(): ThreeDimensionalContainer | undefined {\n var component = this.component\n\n while (component) {\n if ('is3dContainer' in component && (component as ThreeDimensionalContainer).is3dContainer()) {\n return component as ThreeDimensionalContainer\n }\n component = component.parent\n }\n }\n\n get focused(): boolean {\n return this._focused\n }\n\n set focused(focused: boolean) {\n this._focused = focused\n }\n\n dispose() {\n this.component.off('change', this.onchange, this)\n delete this.component._realObject\n\n this.clear()\n }\n\n clear() {\n this.object3d.children.slice().forEach((child: any) => {\n if (child['dispose']) child['dispose']()\n if (child['geometry'] && child['geometry']['dispose']) child['geometry']['dispose']()\n if (child['material'] && child['material']['dispose']) child['material']['dispose']()\n if (child['texture'] && child['texture']['dispose']) child['texture']['dispose']()\n this.object3d.remove(child)\n })\n\n this.object3d.userData = {}\n return this.object3d.clear()\n }\n\n /**\n * Component의 상태값의 변화를 Object3D에 반영 - translate, rotation, scale\n */\n updateTransform() {\n // var {\n // scale: { x: sx = 1, y: sy = 1, z: sz = 1 } = UNIT_SCALE,\n // translate: { x: tx = 0, y: ty = 0, z: tz = 0 } = UNIT_TRANSLATE,\n // rotate: { x: rx = 0, y: ry = 0, z: rz = 0 } = UNIT_ROTATE\n // } = this.component.state\n\n var { x: tx, y: ty, z: tz } = this.position\n var { x: rx, y: ry, z: rz } = this.rotation\n var { x: sx, y: sy, z: sz } = this.scale\n\n this.object3d.position.set(tx, ty, tz)\n this.object3d.rotation.set(rx, ry, rz)\n this.object3d.scale.set(Math.max(sx, SCALE_MIN), Math.max(sy, SCALE_MIN), Math.max(sz, SCALE_MIN))\n }\n\n get position() {\n const { x, y, z } = this.center\n return {\n x,\n y: z,\n z: y\n }\n }\n\n get rotation() {\n const { rotationX = 0, rotationY = 0, rotation = 0 } = this.component.state\n\n return {\n x: rotationX,\n y: rotationY,\n z: -rotation\n }\n }\n\n get scale() {\n const { scale = 1 } = this.component.state\n\n return {\n x: scale,\n y: scale,\n z: scale\n }\n }\n\n get cx() {\n var { x = 0 } = this.component.center\n var { width: parentWidth = 0 } = this.component.parent.bounds\n var { tx = 0 } = this.component.delta() as DELTA\n\n return x + tx - parentWidth / 2\n }\n\n get cy() {\n var { y = 0 } = this.component.center\n var { height: parentHeight = 0 } = this.component.parent.bounds\n var { ty = 0 } = this.component.delta() as DELTA\n\n return y + ty - parentHeight / 2\n }\n\n get cz() {\n var { zPos = 0, depth = 1 } = this.component.state\n var { tz = 0 } = this.component.delta() as DELTA\n\n return zPos + tz + depth / 2\n }\n\n get center() {\n var { x = 0, y = 0 } = this.component.center\n var { width: parentWidth = 0, height: parentHeight = 0 } = this.component.parent.bounds\n\n var { tx = 0, ty = 0, tz = 0 } = this.component.delta() as DELTA\n\n return {\n x: x + tx - parentWidth / 2,\n y: y + ty - parentHeight / 2,\n z: this.cz\n }\n }\n\n get dimension() {\n const { width, height } = this.component.bounds\n const { depth } = this.component.state\n return {\n width,\n height,\n depth\n }\n }\n\n /**\n * Object3D 모델의 변화를 Component의 모델값에 반영\n */\n // updateTransformReverse() {\n // var { rotation, position, scale } = this.object3d\n\n // this.component.set({\n // rotate: {\n // x: rotation.x,\n // y: rotation.y,\n // z: rotation.z\n // },\n // translate: {\n // x: position.x,\n // y: position.y,\n // z: position.z\n // },\n // scale: {\n // x: scale.x,\n // y: scale.y,\n // z: scale.z\n // }\n // })\n // }\n\n /* update functions - 전체적인 rebuilding이 필요하지 않은 update 기능 들임 */\n updatePosition() {\n var { x = 0, y = 0, z = 0 } = this.position\n this.object3d.position.set(x, y, z)\n }\n\n updateRotate() {\n var { x = 0, y = 0, z = 0 } = this.rotation\n this.object3d.rotation.set(x, y, z)\n }\n\n updateScale() {\n var { x = 1, y = 1, z = 1 } = this.scale\n this.object3d.scale.set(Math.max(x, SCALE_MIN), Math.max(y, SCALE_MIN), Math.max(z, SCALE_MIN))\n }\n\n updateDimension() {\n this.update()\n }\n\n updateAlpha() {\n var { alpha } = this.component.state\n\n alpha = alpha == undefined ? 1 : alpha\n\n this.object3d.traverse((o: any) => {\n var materials = o.material\n if (!o.material) return\n\n if (!Array.isArray(materials)) {\n materials = [materials]\n }\n\n materials.forEach((m: any) => {\n m.opacity *= alpha\n m.transparent = alpha < 1\n })\n })\n }\n\n updateHidden() {\n this.object3d.visible = !this.component.state.hidden\n }\n\n updateStrokeStyle() {\n this.update()\n }\n\n updateFillStyle() {\n this.update()\n }\n\n updateText() {\n this.update()\n }\n\n onchange(after: Properties, before: Properties) {\n if (hasProperties(this.rebuildingProperties, after)) {\n this.update()\n return\n }\n\n if (hasProperties(['cx', 'cy', 'cz', 'zPos', 'left', 'top'], after)) {\n this.updateDimension()\n }\n\n if (hasProperties(['width', 'height', 'depth'], after)) {\n this.updateDimension()\n }\n\n if ('scale' in after) {\n this.updateScale()\n }\n\n if ('hidden' in after) {\n this.updateHidden()\n }\n\n if ('alpha' in after) {\n this.updateAlpha()\n }\n\n if ('strokeStyle' in after) {\n this.updateStrokeStyle()\n }\n\n if ('fillStyle' in after) {\n this.updateFillStyle()\n }\n\n if ('text' in after) {\n this.updateText()\n }\n }\n\n get rebuildingProperties(): string[] {\n return ['width', 'height', 'depth', 'fillStyle', 'strokeStyle', 'text', 'path']\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"real-object.js","sourceRoot":"","sources":["../../src/threed/real-object.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\nimport { Component, Properties, DELTA } from '@hatiolab/things-scene'\n\nimport { SCALE_MIN } from './common'\nimport { ThreeDimensionalContainer } from './three-dimensional-container'\n\nfunction hasProperties(props: string[], obj: object) {\n return props.findIndex(prop => prop in obj) !== -1\n}\n\nexport abstract class RealObject<T extends THREE.Object3D = THREE.Object3D> {\n protected _component: Component\n protected _focused: boolean = false\n\n public object3d: T\n\n static buildFillStyleTexture(component: Component) {\n const { fillStyle } = component.state\n\n if (typeof fillStyle == 'object' && fillStyle.type == 'pattern' && fillStyle.image) {\n return new THREE.TextureLoader(THREE.DefaultLoadingManager).load(\n component.app.url(fillStyle.image),\n texture => {\n texture.minFilter = THREE.LinearFilter\n texture.encoding = THREE.sRGBEncoding\n texture.repeat.set(1, 1)\n texture.needsUpdate = true\n\n component.invalidate()\n },\n e => {\n console.error(e)\n }\n )\n }\n }\n\n constructor(component: Component) {\n this._component = component\n this.object3d = this.getObject3dInstance()\n\n this.component.on('change', this.onchange, this)\n }\n\n update() {\n this.clear()\n this.build()\n\n this.updateDimension()\n this.updateTransform()\n this.updateFillStyle()\n this.updateStrokeStyle()\n this.updateAlpha()\n this.updateHidden()\n this.updateText()\n }\n\n protected getObject3dInstance(): T {\n return new THREE.Object3D() as T\n }\n\n build() {\n this.object3d.userData.context = this\n this.object3d.castShadow = true\n this.object3d.name = this.component.state.id\n }\n\n get component(): Component {\n return this._component!\n }\n\n get threeContainer(): ThreeDimensionalContainer | undefined {\n var component = this.component\n\n while (component) {\n if ('is3dContainer' in component && (component as ThreeDimensionalContainer).is3dContainer()) {\n return component as ThreeDimensionalContainer\n }\n component = component.parent\n }\n }\n\n get focused(): boolean {\n return this._focused\n }\n\n set focused(focused: boolean) {\n this._focused = focused\n }\n\n dispose() {\n this.component.off('change', this.onchange, this)\n delete this.component._realObject\n\n this.clear()\n }\n\n clear() {\n this.object3d.children.slice().forEach((child: any) => {\n if (child['dispose']) child['dispose']()\n if (child['geometry'] && child['geometry']['dispose']) child['geometry']['dispose']()\n if (child['material'] && child['material']['dispose']) child['material']['dispose']()\n if (child['texture'] && child['texture']['dispose']) child['texture']['dispose']()\n this.object3d.remove(child)\n })\n\n this.object3d.userData = {}\n return this.object3d.clear()\n }\n\n /**\n * Component의 상태값의 변화를 Object3D에 반영 - translate, rotation, scale\n */\n updateTransform() {\n // var {\n // scale: { x: sx = 1, y: sy = 1, z: sz = 1 } = UNIT_SCALE,\n // translate: { x: tx = 0, y: ty = 0, z: tz = 0 } = UNIT_TRANSLATE,\n // rotate: { x: rx = 0, y: ry = 0, z: rz = 0 } = UNIT_ROTATE\n // } = this.component.state\n\n var { x: tx, y: ty, z: tz } = this.position\n var { x: rx, y: ry, z: rz } = this.rotation\n var { x: sx, y: sy, z: sz } = this.scale\n\n this.object3d.position.set(tx, ty, tz)\n this.object3d.rotation.set(rx, ry, rz)\n this.object3d.scale.set(Math.max(sx, SCALE_MIN), Math.max(sy, SCALE_MIN), Math.max(sz, SCALE_MIN))\n }\n\n get position() {\n const { x, y, z } = this.center\n return {\n x,\n y: z,\n z: y\n }\n }\n\n get rotation() {\n const { rotationX = 0, rotationY = 0, rotation = 0 } = this.component.state\n\n return {\n x: rotationX,\n y: rotationY,\n z: -rotation\n }\n }\n\n get scale() {\n const { scale = 1 } = this.component.state\n\n return {\n x: scale,\n y: scale,\n z: scale\n }\n }\n\n get cx() {\n var { x = 0 } = this.component.center\n var { width: parentWidth = 0 } = this.component.parent.bounds\n var { tx = 0 } = this.component.delta() as DELTA\n\n return x + tx - parentWidth / 2\n }\n\n get cy() {\n var { y = 0 } = this.component.center\n var { height: parentHeight = 0 } = this.component.parent.bounds\n var { ty = 0 } = this.component.delta() as DELTA\n\n return y + ty - parentHeight / 2\n }\n\n get cz() {\n var { zPos = 0, depth = 1 } = this.component.state\n var { tz = 0 } = this.component.delta() as DELTA\n\n return zPos + tz + depth / 2\n }\n\n get center() {\n var { x = 0, y = 0 } = this.component.center\n var { width: parentWidth = 0, height: parentHeight = 0 } = this.component.parent.bounds\n\n var { tx = 0, ty = 0, tz = 0 } = this.component.delta() as DELTA\n\n return {\n x: x + tx - parentWidth / 2,\n y: y + ty - parentHeight / 2,\n z: this.cz\n }\n }\n\n get dimension() {\n const { width, height } = this.component.bounds\n const { depth } = this.component.state\n return {\n width,\n height,\n depth\n }\n }\n\n /**\n * Object3D 모델의 변화를 Component의 모델값에 반영\n */\n // updateTransformReverse() {\n // var { rotation, position, scale } = this.object3d\n\n // this.component.set({\n // rotate: {\n // x: rotation.x,\n // y: rotation.y,\n // z: rotation.z\n // },\n // translate: {\n // x: position.x,\n // y: position.y,\n // z: position.z\n // },\n // scale: {\n // x: scale.x,\n // y: scale.y,\n // z: scale.z\n // }\n // })\n // }\n\n /* update functions - 전체적인 rebuilding이 필요하지 않은 update 기능 들임 */\n updatePosition() {\n var { x = 0, y = 0, z = 0 } = this.position\n this.object3d.position.set(x, y, z)\n }\n\n updateRotate() {\n var { x = 0, y = 0, z = 0 } = this.rotation\n this.object3d.rotation.set(x, y, z)\n }\n\n updateScale() {\n var { x = 1, y = 1, z = 1 } = this.scale\n this.object3d.scale.set(Math.max(x, SCALE_MIN), Math.max(y, SCALE_MIN), Math.max(z, SCALE_MIN))\n }\n\n updateDimension() {\n var { width, height, depth } = this.dimension\n this.object3d.scale.set(width, height, depth)\n }\n\n updateAlpha() {\n var { alpha } = this.component.state\n\n alpha = alpha == undefined ? 1 : alpha\n\n this.object3d.traverse((o: any) => {\n var materials = o.material\n if (!o.material) return\n\n if (!Array.isArray(materials)) {\n materials = [materials]\n }\n\n materials.forEach((m: any) => {\n m.opacity *= alpha\n m.transparent = alpha < 1\n })\n })\n }\n\n updateHidden() {\n this.object3d.visible = !this.component.state.hidden\n }\n\n updateStrokeStyle() {}\n updateFillStyle() {}\n updateText() {}\n\n onchange(after: Properties, before: Properties) {\n if (hasProperties(['cx', 'cy', 'cz', 'zPos', 'left', 'top'], after)) {\n this.updatePosition()\n }\n\n if (hasProperties(['width', 'height', 'depth'], after)) {\n this.updateDimension()\n }\n\n if (hasProperties(['rotationX', 'rotationY', 'rotation'], after)) {\n this.updateRotate()\n }\n\n if ('scale' in after) {\n this.updateScale()\n }\n\n if ('hidden' in after) {\n this.updateHidden()\n }\n\n if ('alpha' in after) {\n this.updateAlpha()\n }\n\n if ('strokeStyle' in after) {\n this.updateStrokeStyle()\n }\n\n if ('fillStyle' in after) {\n this.updateFillStyle()\n }\n\n if ('text' in after) {\n this.updateText()\n }\n }\n}\n"]}
|
|
@@ -14,7 +14,9 @@ export function createCanvasTexture(component) {
|
|
|
14
14
|
texture.wrapT = THREE.RepeatWrapping;
|
|
15
15
|
texture.offset.set(0, 0);
|
|
16
16
|
texture.repeat.set(1, 1);
|
|
17
|
-
texture.
|
|
17
|
+
texture.magFilter = THREE.NearestFilter;
|
|
18
|
+
texture.minFilter = THREE.LinearMipMapLinearFilter;
|
|
19
|
+
texture.encoding = THREE.sRGBEncoding;
|
|
18
20
|
return texture;
|
|
19
21
|
}
|
|
20
22
|
export function renderCanvasTexture(canvas, component, scale) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas-texture.js","sourceRoot":"","sources":["../../../src/threed/texture/canvas-texture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,MAAM,UAAU,mBAAmB,CAAC,SAAoB;;IACtD,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAA;IAExC,0CAA0C;IAC1C,mEAAmE;IACnE,MAAM,KAAK,GAAG,CAAC,MAAA,MAAA,SAAS,CAAC,UAAU,0CAAE,cAAc,0CAAE,IAAe,IAAG,CAAC,CAAA;IAExE,IAAI,MAAM,GAAG,YAAY,CAAC,KAAK,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,CAAA;IAExD,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAE7C,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;IAE7C,OAAO,CAAC,WAAW,GAAG,IAAI,CAAA;IAC1B,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,CAAA;IACpC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,CAAA;IACpC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACxB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACxB,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"canvas-texture.js","sourceRoot":"","sources":["../../../src/threed/texture/canvas-texture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,MAAM,UAAU,mBAAmB,CAAC,SAAoB;;IACtD,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAA;IAExC,0CAA0C;IAC1C,mEAAmE;IACnE,MAAM,KAAK,GAAG,CAAC,MAAA,MAAA,SAAS,CAAC,UAAU,0CAAE,cAAc,0CAAE,IAAe,IAAG,CAAC,CAAA;IAExE,IAAI,MAAM,GAAG,YAAY,CAAC,KAAK,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,CAAA;IAExD,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IAE7C,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;IAE7C,OAAO,CAAC,WAAW,GAAG,IAAI,CAAA;IAC1B,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,CAAA;IACpC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,CAAA;IACpC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACxB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACxB,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAA;IACvC,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,wBAAwB,CAAA;IAClD,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAA;IAErC,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAyB,EAAE,SAAoB,EAAE,KAAa;IAChG,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,CAAA;IAEpC,IAAI,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAErC,OAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC5B,OAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;IAC/B,SAAS,CAAC,MAAM,CAAC,OAAQ,CAAC,CAAA;IAC1B,SAAS,CAAC,UAAU,CAAC,OAAQ,CAAC,CAAA;AAChC,CAAC","sourcesContent":["import * as THREE from 'three'\nimport { Component } from '@hatiolab/things-scene'\n\nimport { createCanvas } from '../html/elements'\n\nexport function createCanvasTexture(component: Component): THREE.Texture {\n var { width, height } = component.bounds\n\n // Factor for increasing image resolution.\n // TODO to be able to redraw according to the change in zoom value.\n const scale = (component.realObject?.threeContainer?.zoom as number) * 2\n\n let canvas = createCanvas(width * scale, height * scale)\n\n var texture = new THREE.CanvasTexture(canvas)\n\n renderCanvasTexture(canvas, component, scale)\n\n texture.needsUpdate = true\n texture.wrapS = THREE.RepeatWrapping\n texture.wrapT = THREE.RepeatWrapping\n texture.offset.set(0, 0)\n texture.repeat.set(1, 1)\n texture.magFilter = THREE.NearestFilter\n texture.minFilter = THREE.LinearMipMapLinearFilter\n texture.encoding = THREE.sRGBEncoding\n\n return texture\n}\n\nexport function renderCanvasTexture(canvas: HTMLCanvasElement, component: Component, scale: number) {\n var { left, top } = component.bounds\n\n let context = canvas.getContext('2d')\n\n context!.scale(scale, scale)\n context!.translate(-left, -top)\n component.render(context!)\n component.postrender(context!)\n}\n"]}
|
package/dist/wall.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Shape } from '@hatiolab/things-scene';
|
|
2
|
-
import * as THREE from 'three';
|
|
3
2
|
import { RealObject } from './threed/real-object';
|
|
4
3
|
import { RealObjectMesh } from './threed/real-object-mesh';
|
|
5
4
|
export declare class Wall3D extends RealObjectMesh {
|
|
6
|
-
buildGeometry():
|
|
7
|
-
|
|
5
|
+
buildGeometry(): void;
|
|
6
|
+
updateDimension(): void;
|
|
8
7
|
}
|
|
9
8
|
declare const Wall_base: typeof Shape;
|
|
10
9
|
export declare class Wall extends Wall_base {
|
package/dist/wall.js
CHANGED
|
@@ -20,12 +20,11 @@ const NATURE = {
|
|
|
20
20
|
};
|
|
21
21
|
export class Wall3D extends RealObjectMesh {
|
|
22
22
|
buildGeometry() {
|
|
23
|
-
|
|
24
|
-
return new THREE.BoxGeometry(width, depth, height);
|
|
23
|
+
this.object3d.geometry = new THREE.BoxGeometry(1, 1, 1);
|
|
25
24
|
}
|
|
26
|
-
|
|
27
|
-
var {
|
|
28
|
-
|
|
25
|
+
updateDimension() {
|
|
26
|
+
var { width, height, depth = 1 } = this.component.state;
|
|
27
|
+
this.object3d.scale.set(width, depth, height);
|
|
29
28
|
}
|
|
30
29
|
}
|
|
31
30
|
export class Wall extends RectPath(Shape) {
|
package/dist/wall.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wall.js","sourceRoot":"","sources":["../src/wall.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"wall.js","sourceRoot":"","sources":["../src/wall.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAc,QAAQ,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE1D,MAAM,MAAM,GAAG;IACb,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE;QACV;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,OAAO;SAClB;KACF;IACD,IAAI,EAAE,sBAAsB;CAC7B,CAAA;AAED,MAAM,OAAO,MAAO,SAAQ,cAAc;IACxC,aAAa;QACX,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACzD,CAAC;IAED,eAAe;QACb,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAEvD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;CACF;AAED,MAAM,OAAO,IAAK,SAAQ,QAAQ,CAAC,KAAK,CAAC;IACvC,OAAO;QACL,OAAO,IAAI,CAAA;IACb,CAAC;IAED,eAAe;QACb,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Component, Properties, RectPath, Shape } from '@hatiolab/things-scene'\nimport * as THREE from 'three'\nimport { RealObject } from './threed/real-object'\nimport { RealObjectMesh } from './threed/real-object-mesh'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'number',\n label: 'depth',\n name: 'depth',\n property: 'depth'\n }\n ],\n help: 'scene/component/wall'\n}\n\nexport class Wall3D extends RealObjectMesh {\n buildGeometry() {\n this.object3d.geometry = new THREE.BoxGeometry(1, 1, 1)\n }\n\n updateDimension(): void {\n var { width, height, depth = 1 } = this.component.state\n\n this.object3d.scale.set(width, depth, height)\n }\n}\n\nexport class Wall extends RectPath(Shape) {\n is3dish() {\n return true\n }\n\n buildRealObject(): RealObject | undefined {\n return new Wall3D(this)\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.register('wall', Wall)\n"]}
|
|
@@ -6,29 +6,14 @@
|
|
|
6
6
|
"auditLog": "logs/.08636eb59927f12972f6774f5947c8507b3564c2-audit.json",
|
|
7
7
|
"files": [
|
|
8
8
|
{
|
|
9
|
-
"date":
|
|
10
|
-
"name": "logs/application-2023-03-
|
|
11
|
-
"hash": "
|
|
9
|
+
"date": 1677986779847,
|
|
10
|
+
"name": "logs/application-2023-03-05-12.log",
|
|
11
|
+
"hash": "b1491e6040f9ae51f97238e436babcce355a8fcfb99640f0e6291efa2dcb4fa1"
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
|
-
"date":
|
|
15
|
-
"name": "logs/application-2023-03-
|
|
16
|
-
"hash": "
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
"date": 1677651216796,
|
|
20
|
-
"name": "logs/application-2023-03-01-15.log",
|
|
21
|
-
"hash": "0632ba06863b1caa1df0f1e955f7cd363f3b0b0f0a93ba8a45ee6eb66430813c"
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"date": 1677769390251,
|
|
25
|
-
"name": "logs/application-2023-03-03-00.log",
|
|
26
|
-
"hash": "3fe90aa25fcc912b5b407fcc5e5daf3c95233a379872c3a4b66ad446b53417ff"
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
"date": 1677772961148,
|
|
30
|
-
"name": "logs/application-2023-03-03-01.log",
|
|
31
|
-
"hash": "604655a0040727b80c6c4b55aacdb4013b09a98256e273e47e8a8940c3053c53"
|
|
14
|
+
"date": 1678026248957,
|
|
15
|
+
"name": "logs/application-2023-03-05-23.log",
|
|
16
|
+
"hash": "d76e61c4122d462e689279e776a5adccb0d78492a54a2410e86c85f3cebdc37d"
|
|
32
17
|
}
|
|
33
18
|
],
|
|
34
19
|
"hashType": "sha256"
|
|
@@ -89,6 +89,16 @@
|
|
|
89
89
|
"date": 1677772962126,
|
|
90
90
|
"name": "logs/connections-2023-03-03-01.log",
|
|
91
91
|
"hash": "fc5531e11c4749dfce844fbb20984c87511eb069cda9d105048aa09e4a5f50d9"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"date": 1677986781600,
|
|
95
|
+
"name": "logs/connections-2023-03-05-12.log",
|
|
96
|
+
"hash": "a49891708de1da2d8dd2aef1fdd7dacb049daa2a80973bf57d9ca3d6f42ea105"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"date": 1678026250498,
|
|
100
|
+
"name": "logs/connections-2023-03-05-23.log",
|
|
101
|
+
"hash": "f0755fba64d96b7ddaf4a77da762e735bed176f67a348c4b6079a55857543572"
|
|
92
102
|
}
|
|
93
103
|
],
|
|
94
104
|
"hashType": "sha256"
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
2023-03-05T12:26:20+09:00 info: File Storage is Ready.
|
|
2
|
+
2023-03-05T12:26:21+09:00 error: oracledb module loading failed
|
|
3
|
+
2023-03-05T12:26:22+09:00 info: Default DataSource established
|
|
4
|
+
2023-03-05T12:26:22+09:00 info: Transaction DataSource established
|
|
5
|
+
2023-03-05T12:26:23+09:00 info: 🚀 Server ready at http://0.0.0.0:3000/graphql
|
|
6
|
+
2023-03-05T12:26:23+09:00 info: 🚀 Subscriptions ready at ws://0.0.0.0:3000/graphql
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
2023-03-05T23:24:09+09:00 info: File Storage is Ready.
|
|
2
|
+
2023-03-05T23:24:10+09:00 error: oracledb module loading failed
|
|
3
|
+
2023-03-05T23:24:11+09:00 info: Default DataSource established
|
|
4
|
+
2023-03-05T23:24:11+09:00 info: Transaction DataSource established
|
|
5
|
+
2023-03-05T23:24:12+09:00 info: 🚀 Server ready at http://0.0.0.0:3000/graphql
|
|
6
|
+
2023-03-05T23:24:12+09:00 info: 🚀 Subscriptions ready at ws://0.0.0.0:3000/graphql
|
|
7
|
+
2023-03-05T23:43:51+09:00 info: File Storage is Ready.
|
|
8
|
+
2023-03-05T23:43:51+09:00 error: oracledb module loading failed
|
|
9
|
+
2023-03-05T23:43:52+09:00 info: Default DataSource established
|
|
10
|
+
2023-03-05T23:43:52+09:00 info: Transaction DataSource established
|
|
11
|
+
2023-03-05T23:43:53+09:00 info: 🚀 Server ready at http://0.0.0.0:3000/graphql
|
|
12
|
+
2023-03-05T23:43:53+09:00 info: 🚀 Subscriptions ready at ws://0.0.0.0:3000/graphql
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
2023-03-05T12:26:23+09:00 info: Initializing ConnectionManager...
|
|
2
|
+
2023-03-05T12:26:23+09:00 info: Connector 'echo-back-server' started to ready
|
|
3
|
+
2023-03-05T12:26:23+09:00 info: Connector 'echo-back' started to ready
|
|
4
|
+
2023-03-05T12:26:23+09:00 info: Connector 'http-connector' started to ready
|
|
5
|
+
2023-03-05T12:26:23+09:00 info: Connector 'graphql-connector' started to ready
|
|
6
|
+
2023-03-05T12:26:23+09:00 info: Connector 'sqlite-connector' started to ready
|
|
7
|
+
2023-03-05T12:26:23+09:00 info: Connector 'postgresql-connector' started to ready
|
|
8
|
+
2023-03-05T12:26:23+09:00 info: Connector 'mqtt-connector' started to ready
|
|
9
|
+
2023-03-05T12:26:23+09:00 info: Connector 'mssql-connector' started to ready
|
|
10
|
+
2023-03-05T12:26:23+09:00 info: Connector 'oracle-connector' started to ready
|
|
11
|
+
2023-03-05T12:26:23+09:00 info: Connector 'mysql-connector' started to ready
|
|
12
|
+
2023-03-05T12:26:23+09:00 info: Connector 'socket-server' started to ready
|
|
13
|
+
2023-03-05T12:26:23+09:00 info: echo-back-servers are ready
|
|
14
|
+
2023-03-05T12:26:23+09:00 info: echo-back connections are ready
|
|
15
|
+
2023-03-05T12:26:23+09:00 info: http-connector connections are ready
|
|
16
|
+
2023-03-05T12:26:23+09:00 info: graphql-connector connections are ready
|
|
17
|
+
2023-03-05T12:26:23+09:00 info: sqlite-connector connections are ready
|
|
18
|
+
2023-03-05T12:26:23+09:00 info: postgresql-connector connections are ready
|
|
19
|
+
2023-03-05T12:26:23+09:00 info: mqtt-connector connections are ready
|
|
20
|
+
2023-03-05T12:26:23+09:00 info: mssql-connector connections are ready
|
|
21
|
+
2023-03-05T12:26:23+09:00 info: oracle-connector connections are ready
|
|
22
|
+
2023-03-05T12:26:23+09:00 info: mysql-connector connections are ready
|
|
23
|
+
2023-03-05T12:26:23+09:00 info: socket servers are ready
|
|
24
|
+
2023-03-05T12:26:23+09:00 info: All connector for 'echo-back-server' ready
|
|
25
|
+
2023-03-05T12:26:23+09:00 info: All connector for 'echo-back' ready
|
|
26
|
+
2023-03-05T12:26:23+09:00 info: All connector for 'http-connector' ready
|
|
27
|
+
2023-03-05T12:26:23+09:00 info: All connector for 'graphql-connector' ready
|
|
28
|
+
2023-03-05T12:26:23+09:00 info: All connector for 'sqlite-connector' ready
|
|
29
|
+
2023-03-05T12:26:23+09:00 info: All connector for 'postgresql-connector' ready
|
|
30
|
+
2023-03-05T12:26:23+09:00 info: All connector for 'mqtt-connector' ready
|
|
31
|
+
2023-03-05T12:26:23+09:00 info: All connector for 'mssql-connector' ready
|
|
32
|
+
2023-03-05T12:26:23+09:00 info: All connector for 'oracle-connector' ready
|
|
33
|
+
2023-03-05T12:26:23+09:00 info: All connector for 'mysql-connector' ready
|
|
34
|
+
2023-03-05T12:26:23+09:00 info: All connector for 'socket-server' ready
|
|
35
|
+
2023-03-05T12:26:23+09:00 info: ConnectionManager initialization done:
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
2023-03-05T23:24:12+09:00 info: Initializing ConnectionManager...
|
|
2
|
+
2023-03-05T23:24:12+09:00 info: Connector 'echo-back-server' started to ready
|
|
3
|
+
2023-03-05T23:24:12+09:00 info: Connector 'echo-back' started to ready
|
|
4
|
+
2023-03-05T23:24:12+09:00 info: Connector 'http-connector' started to ready
|
|
5
|
+
2023-03-05T23:24:12+09:00 info: Connector 'graphql-connector' started to ready
|
|
6
|
+
2023-03-05T23:24:12+09:00 info: Connector 'sqlite-connector' started to ready
|
|
7
|
+
2023-03-05T23:24:12+09:00 info: Connector 'postgresql-connector' started to ready
|
|
8
|
+
2023-03-05T23:24:12+09:00 info: Connector 'mqtt-connector' started to ready
|
|
9
|
+
2023-03-05T23:24:12+09:00 info: Connector 'mssql-connector' started to ready
|
|
10
|
+
2023-03-05T23:24:12+09:00 info: Connector 'oracle-connector' started to ready
|
|
11
|
+
2023-03-05T23:24:12+09:00 info: Connector 'mysql-connector' started to ready
|
|
12
|
+
2023-03-05T23:24:12+09:00 info: Connector 'socket-server' started to ready
|
|
13
|
+
2023-03-05T23:24:12+09:00 info: echo-back-servers are ready
|
|
14
|
+
2023-03-05T23:24:12+09:00 info: echo-back connections are ready
|
|
15
|
+
2023-03-05T23:24:12+09:00 info: http-connector connections are ready
|
|
16
|
+
2023-03-05T23:24:12+09:00 info: graphql-connector connections are ready
|
|
17
|
+
2023-03-05T23:24:12+09:00 info: sqlite-connector connections are ready
|
|
18
|
+
2023-03-05T23:24:12+09:00 info: postgresql-connector connections are ready
|
|
19
|
+
2023-03-05T23:24:12+09:00 info: mqtt-connector connections are ready
|
|
20
|
+
2023-03-05T23:24:12+09:00 info: mssql-connector connections are ready
|
|
21
|
+
2023-03-05T23:24:12+09:00 info: oracle-connector connections are ready
|
|
22
|
+
2023-03-05T23:24:12+09:00 info: mysql-connector connections are ready
|
|
23
|
+
2023-03-05T23:24:12+09:00 info: socket servers are ready
|
|
24
|
+
2023-03-05T23:24:12+09:00 info: All connector for 'echo-back-server' ready
|
|
25
|
+
2023-03-05T23:24:12+09:00 info: All connector for 'echo-back' ready
|
|
26
|
+
2023-03-05T23:24:12+09:00 info: All connector for 'http-connector' ready
|
|
27
|
+
2023-03-05T23:24:12+09:00 info: All connector for 'graphql-connector' ready
|
|
28
|
+
2023-03-05T23:24:12+09:00 info: All connector for 'sqlite-connector' ready
|
|
29
|
+
2023-03-05T23:24:12+09:00 info: All connector for 'postgresql-connector' ready
|
|
30
|
+
2023-03-05T23:24:12+09:00 info: All connector for 'mqtt-connector' ready
|
|
31
|
+
2023-03-05T23:24:12+09:00 info: All connector for 'mssql-connector' ready
|
|
32
|
+
2023-03-05T23:24:12+09:00 info: All connector for 'oracle-connector' ready
|
|
33
|
+
2023-03-05T23:24:12+09:00 info: All connector for 'mysql-connector' ready
|
|
34
|
+
2023-03-05T23:24:12+09:00 info: All connector for 'socket-server' ready
|
|
35
|
+
2023-03-05T23:24:12+09:00 info: ConnectionManager initialization done:
|
|
36
|
+
2023-03-05T23:43:53+09:00 info: Initializing ConnectionManager...
|
|
37
|
+
2023-03-05T23:43:53+09:00 info: Connector 'echo-back-server' started to ready
|
|
38
|
+
2023-03-05T23:43:53+09:00 info: Connector 'echo-back' started to ready
|
|
39
|
+
2023-03-05T23:43:53+09:00 info: Connector 'http-connector' started to ready
|
|
40
|
+
2023-03-05T23:43:53+09:00 info: Connector 'graphql-connector' started to ready
|
|
41
|
+
2023-03-05T23:43:53+09:00 info: Connector 'sqlite-connector' started to ready
|
|
42
|
+
2023-03-05T23:43:53+09:00 info: Connector 'postgresql-connector' started to ready
|
|
43
|
+
2023-03-05T23:43:53+09:00 info: Connector 'mqtt-connector' started to ready
|
|
44
|
+
2023-03-05T23:43:53+09:00 info: Connector 'mssql-connector' started to ready
|
|
45
|
+
2023-03-05T23:43:53+09:00 info: Connector 'oracle-connector' started to ready
|
|
46
|
+
2023-03-05T23:43:53+09:00 info: Connector 'mysql-connector' started to ready
|
|
47
|
+
2023-03-05T23:43:53+09:00 info: Connector 'socket-server' started to ready
|
|
48
|
+
2023-03-05T23:43:53+09:00 info: echo-back-servers are ready
|
|
49
|
+
2023-03-05T23:43:53+09:00 info: echo-back connections are ready
|
|
50
|
+
2023-03-05T23:43:53+09:00 info: http-connector connections are ready
|
|
51
|
+
2023-03-05T23:43:53+09:00 info: graphql-connector connections are ready
|
|
52
|
+
2023-03-05T23:43:53+09:00 info: sqlite-connector connections are ready
|
|
53
|
+
2023-03-05T23:43:53+09:00 info: postgresql-connector connections are ready
|
|
54
|
+
2023-03-05T23:43:53+09:00 info: mqtt-connector connections are ready
|
|
55
|
+
2023-03-05T23:43:53+09:00 info: mssql-connector connections are ready
|
|
56
|
+
2023-03-05T23:43:53+09:00 info: oracle-connector connections are ready
|
|
57
|
+
2023-03-05T23:43:53+09:00 info: mysql-connector connections are ready
|
|
58
|
+
2023-03-05T23:43:53+09:00 info: socket servers are ready
|
|
59
|
+
2023-03-05T23:43:53+09:00 info: All connector for 'echo-back-server' ready
|
|
60
|
+
2023-03-05T23:43:53+09:00 info: All connector for 'echo-back' ready
|
|
61
|
+
2023-03-05T23:43:53+09:00 info: All connector for 'http-connector' ready
|
|
62
|
+
2023-03-05T23:43:53+09:00 info: All connector for 'graphql-connector' ready
|
|
63
|
+
2023-03-05T23:43:53+09:00 info: All connector for 'sqlite-connector' ready
|
|
64
|
+
2023-03-05T23:43:53+09:00 info: All connector for 'postgresql-connector' ready
|
|
65
|
+
2023-03-05T23:43:53+09:00 info: All connector for 'mqtt-connector' ready
|
|
66
|
+
2023-03-05T23:43:53+09:00 info: All connector for 'mssql-connector' ready
|
|
67
|
+
2023-03-05T23:43:53+09:00 info: All connector for 'oracle-connector' ready
|
|
68
|
+
2023-03-05T23:43:53+09:00 info: All connector for 'mysql-connector' ready
|
|
69
|
+
2023-03-05T23:43:53+09:00 info: All connector for 'socket-server' ready
|
|
70
|
+
2023-03-05T23:43:53+09:00 info: ConnectionManager initialization done:
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@operato/scene-visualizer",
|
|
3
3
|
"description": "visualizer component for operato-scene",
|
|
4
4
|
"author": "heartyoh",
|
|
5
|
-
"version": "1.2.
|
|
5
|
+
"version": "1.2.14",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"module": "dist/index.js",
|
|
8
8
|
"things-scene": true,
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"prettier --write"
|
|
62
62
|
]
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "58d3f506485a33ce6cfedf50ec20659f38dd6c44"
|
|
65
65
|
}
|
package/src/cube.ts
CHANGED
|
@@ -18,13 +18,7 @@ export class Cube3D extends RealObjectMesh {
|
|
|
18
18
|
buildGeometry() {
|
|
19
19
|
var { width = 0, height = 0, depth = 0 } = this.component.state
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
buildMaterial() {
|
|
25
|
-
var { fillStyle = 'lightgray' } = this.component.state
|
|
26
|
-
|
|
27
|
-
return new THREE.MeshStandardMaterial({ color: fillStyle, side: THREE.FrontSide })
|
|
21
|
+
this.object3d.geometry = new THREE.BoxGeometry(width, depth, height)
|
|
28
22
|
}
|
|
29
23
|
}
|
|
30
24
|
|
package/src/cylinder.ts
CHANGED
|
@@ -18,13 +18,7 @@ export class Cylinder3D extends RealObjectMesh {
|
|
|
18
18
|
buildGeometry() {
|
|
19
19
|
var { depth = 0, rx = 0 } = this.component.state
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
buildMaterial() {
|
|
25
|
-
var { fillStyle = 'lightgray' } = this.component.state
|
|
26
|
-
|
|
27
|
-
return new THREE.MeshStandardMaterial({ color: fillStyle, side: THREE.FrontSide })
|
|
21
|
+
this.object3d.geometry = new THREE.CylinderGeometry(rx, rx, depth, 25)
|
|
28
22
|
}
|
|
29
23
|
}
|
|
30
24
|
|
package/src/rack.ts
CHANGED
|
@@ -55,11 +55,10 @@ export class Rack extends RealObject {
|
|
|
55
55
|
if (!Rack._boardMaterial) {
|
|
56
56
|
Rack._boardMaterial = new THREE.MeshStandardMaterial({
|
|
57
57
|
color: '#dedede',
|
|
58
|
-
side: THREE.DoubleSide
|
|
58
|
+
side: THREE.DoubleSide,
|
|
59
|
+
polygonOffset: true,
|
|
60
|
+
polygonOffsetFactor: -0.1
|
|
59
61
|
})
|
|
60
|
-
|
|
61
|
-
Rack._boardMaterial.polygonOffset = true
|
|
62
|
-
Rack._boardMaterial.polygonOffsetFactor = -0.1
|
|
63
62
|
}
|
|
64
63
|
|
|
65
64
|
return Rack._boardMaterial
|