@operato/scene-visualizer 1.2.12 → 1.2.13
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 +10 -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/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.js +0 -1
- package/dist/threed/real-object-sprite-2d.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/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 +6 -0
- package/logs/connections-2023-03-05-12.log +35 -0
- package/logs/connections-2023-03-05-23.log +35 -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/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 +0 -2
- package/src/threed/real-object-text.ts +49 -60
- package/src/threed/real-object.ts +15 -22
- 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
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
### [1.2.13](https://github.com/things-scene/operato-scene/compare/v1.2.12...v1.2.13) (2023-03-05)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### :bug: Bug Fix
|
|
10
|
+
|
|
11
|
+
* lighten data binding for 3d objects ([09db97e](https://github.com/things-scene/operato-scene/commit/09db97e1fe70563a734113e70538bdf6d18c6bc7))
|
|
12
|
+
* visualizer 3D component update efficiently ([8065089](https://github.com/things-scene/operato-scene/commit/80650891a837750b23e1bd026850ec045518c8bb))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
6
16
|
### [1.2.12](https://github.com/things-scene/operato-scene/compare/v1.2.11...v1.2.12) (2023-03-03)
|
|
7
17
|
|
|
8
18
|
|
package/db.sqlite
CHANGED
|
Binary file
|
package/dist/cube.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
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 Cube3D extends RealObjectMesh {
|
|
6
|
-
buildGeometry():
|
|
7
|
-
buildMaterial(): THREE.MeshStandardMaterial;
|
|
5
|
+
buildGeometry(): void;
|
|
8
6
|
}
|
|
9
7
|
declare const Cube_base: typeof Shape;
|
|
10
8
|
export declare class Cube extends Cube_base {
|
package/dist/cube.js
CHANGED
|
@@ -14,11 +14,7 @@ const NATURE = {
|
|
|
14
14
|
export class Cube3D extends RealObjectMesh {
|
|
15
15
|
buildGeometry() {
|
|
16
16
|
var { width = 0, height = 0, depth = 0 } = this.component.state;
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
buildMaterial() {
|
|
20
|
-
var { fillStyle = 'lightgray' } = this.component.state;
|
|
21
|
-
return new THREE.MeshStandardMaterial({ color: fillStyle, side: THREE.FrontSide });
|
|
17
|
+
this.object3d.geometry = new THREE.BoxGeometry(width, depth, height);
|
|
22
18
|
}
|
|
23
19
|
}
|
|
24
20
|
export class Cube extends RectPath(Shape) {
|
package/dist/cube.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cube.js","sourceRoot":"","sources":["../src/cube.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAQ,QAAQ,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AACzE,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,EAAE;IACd,IAAI,EAAE,sBAAsB;CAC7B,CAAA;AAED,MAAM,OAAO,MAAO,SAAQ,cAAc;IACxC,aAAa;QACX,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAE/D,
|
|
1
|
+
{"version":3,"file":"cube.js","sourceRoot":"","sources":["../src/cube.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAQ,QAAQ,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AACzE,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,EAAE;IACd,IAAI,EAAE,sBAAsB;CAC7B,CAAA;AAED,MAAM,OAAO,MAAO,SAAQ,cAAc;IACxC,aAAa;QACX,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAE/D,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACtE,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, Rect, 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 help: 'scene/component/cube'\n}\n\nexport class Cube3D extends RealObjectMesh {\n buildGeometry() {\n var { width = 0, height = 0, depth = 0 } = this.component.state\n\n this.object3d.geometry = new THREE.BoxGeometry(width, depth, height)\n }\n}\n\nexport class Cube extends RectPath(Shape) {\n is3dish() {\n return true\n }\n\n buildRealObject(): RealObject | undefined {\n return new Cube3D(this)\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.register('cube', Cube)\n"]}
|
package/dist/cylinder.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { Ellipse } 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 Cylinder3D extends RealObjectMesh {
|
|
6
|
-
buildGeometry():
|
|
7
|
-
buildMaterial(): THREE.MeshStandardMaterial;
|
|
5
|
+
buildGeometry(): void;
|
|
8
6
|
}
|
|
9
7
|
export declare class Cylinder extends Ellipse {
|
|
10
8
|
is3dish(): boolean;
|
package/dist/cylinder.js
CHANGED
|
@@ -14,11 +14,7 @@ const NATURE = {
|
|
|
14
14
|
export class Cylinder3D extends RealObjectMesh {
|
|
15
15
|
buildGeometry() {
|
|
16
16
|
var { depth = 0, rx = 0 } = this.component.state;
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
buildMaterial() {
|
|
20
|
-
var { fillStyle = 'lightgray' } = this.component.state;
|
|
21
|
-
return new THREE.MeshStandardMaterial({ color: fillStyle, side: THREE.FrontSide });
|
|
17
|
+
this.object3d.geometry = new THREE.CylinderGeometry(rx, rx, depth, 25);
|
|
22
18
|
}
|
|
23
19
|
}
|
|
24
20
|
export class Cylinder extends Ellipse {
|
package/dist/cylinder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cylinder.js","sourceRoot":"","sources":["../src/cylinder.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAC3D,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,EAAE;IACd,IAAI,EAAE,0BAA0B;CACjC,CAAA;AAED,MAAM,OAAO,UAAW,SAAQ,cAAc;IAC5C,aAAa;QACX,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAEhD,
|
|
1
|
+
{"version":3,"file":"cylinder.js","sourceRoot":"","sources":["../src/cylinder.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAC3D,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,EAAE;IACd,IAAI,EAAE,0BAA0B;CACjC,CAAA;AAED,MAAM,OAAO,UAAW,SAAQ,cAAc;IAC5C,aAAa;QACX,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAEhD,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;IACxE,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,OAAO;IACnC,OAAO;QACL,OAAO,IAAI,CAAA;IACb,CAAC;IAED,eAAe;QACb,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Component, Ellipse } 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 help: 'scene/component/cylinder'\n}\n\nexport class Cylinder3D extends RealObjectMesh {\n buildGeometry() {\n var { depth = 0, rx = 0 } = this.component.state\n\n this.object3d.geometry = new THREE.CylinderGeometry(rx, rx, depth, 25)\n }\n}\n\nexport class Cylinder extends Ellipse {\n is3dish() {\n return true\n }\n\n buildRealObject(): RealObject | undefined {\n return new Cylinder3D(this)\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.register('cylinder', Cylinder)\n"]}
|
package/dist/rack.js
CHANGED
|
@@ -36,10 +36,10 @@ export class Rack extends RealObject {
|
|
|
36
36
|
if (!Rack._boardMaterial) {
|
|
37
37
|
Rack._boardMaterial = new THREE.MeshStandardMaterial({
|
|
38
38
|
color: '#dedede',
|
|
39
|
-
side: THREE.DoubleSide
|
|
39
|
+
side: THREE.DoubleSide,
|
|
40
|
+
polygonOffset: true,
|
|
41
|
+
polygonOffsetFactor: -0.1
|
|
40
42
|
});
|
|
41
|
-
Rack._boardMaterial.polygonOffset = true;
|
|
42
|
-
Rack._boardMaterial.polygonOffsetFactor = -0.1;
|
|
43
43
|
}
|
|
44
44
|
return Rack._boardMaterial;
|
|
45
45
|
}
|
package/dist/rack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rack.js","sourceRoot":"","sources":["../src/rack.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\n\nimport { Stock } from './stock'\nimport { Material } from 'three'\nimport { RackTable } from './rack-table'\nimport { RealObject } from './threed/real-object'\nimport { Visualizer } from './visualizer'\n\nexport class Rack extends RealObject {\n _frames: any[] = []\n _boards: any[] = []\n\n static frameMaterial: Material = new THREE.MeshStandardMaterial({\n color: 0xcccccc,\n roughness: 0.5,\n metalness: 0.3\n })\n static rackFrameGeometry = new THREE.BoxGeometry(1, 1, 1)\n static boardGeometry = new THREE.PlaneGeometry(1, 1, 1, 1)\n static _boardMaterial?: THREE.MeshStandardMaterial\n\n get visualizer(): Visualizer | undefined {\n var component = this.component\n\n while (component) {\n if (component.state.type == 'visualizer') {\n return component as Visualizer\n }\n component = component.parent\n }\n }\n\n get rackTable(): RackTable | undefined {\n var component = this.component\n\n while (component) {\n if (component.state.type == 'rack-table') {\n return component as RackTable\n }\n component = component.parent\n }\n }\n\n get cz() {\n var { shelves = 1, depth = 1 } = this.rackTable!.state\n\n return 0.5 * depth * shelves\n }\n\n static get boardMaterial() {\n if (!Rack._boardMaterial) {\n Rack._boardMaterial = new THREE.MeshStandardMaterial({\n color: '#dedede',\n side: THREE.DoubleSide\n })\n\n Rack._boardMaterial.polygonOffset = true\n Rack._boardMaterial.polygonOffsetFactor = -0.1\n }\n\n return Rack._boardMaterial\n }\n\n get frames() {\n return this._frames\n }\n\n get boards() {\n return this._boards\n }\n\n build() {\n super.build()\n\n var { depth, hideRackFrame, shelves, shelfLocations: commonShelfLocation, stockScale = 0.7 } = this.rackTable!.state\n\n var { width, height, shelfLocations = commonShelfLocation, binLocations = '' } = this.component.state\n\n let scale = stockScale\n\n if (!hideRackFrame) {\n var frame = this.createRackFrame(width, height, depth * shelves)\n\n this.object3d.add(frame)\n }\n\n var shelfLocIds\n\n if (!shelfLocations) {\n shelfLocIds = []\n for (var i = 0; i < shelves; i++) shelfLocIds.push(i + 1)\n } else shelfLocIds = shelfLocations.split(/\\s*,\\s*/)\n\n var shelfBins = binLocations.trim().split('\\n').reverse()\n\n for (var i = 0; i < shelves; i++) {\n let bottom = -depth * shelves * 0.5\n if (shelfLocIds[i] == '') continue\n\n if (i > 0 && !hideRackFrame) {\n let board = this.createRackBoard(width, height)\n board.position.set(0, bottom + depth * i, 0)\n board.rotation.x = Math.PI / 2\n board.material.opacity = 0.5\n board.material.transparent = true\n\n this.object3d.add(board)\n // frame.geometry.merge(board.geometry, board.matrix)\n\n // this._boards.push(board)\n }\n\n var bins = (shelfBins[i] || '').trim().split(/\\s*,\\s*/)\n\n var binWidth = width / (bins.length || 1)\n for (var b = 0; b < bins.length; b++) {\n let stock = new Stock(this.component, {\n width: binWidth * scale,\n height: height * scale,\n depth: depth * scale\n })\n stock.update()\n\n let stockDepth = depth * scale\n\n stock.object3d.position.set(\n (width / 2) * ((2 * b - (bins.length - 1)) / bins.length),\n bottom + depth * i + stockDepth * 0.5,\n 0\n )\n var binCode = (bins[b] || '').replace('.', '')\n stock.object3d.name = `${this.makeLocationString(shelfLocIds[i])}${binCode}`\n\n this.object3d.add(stock.object3d)\n this.visualizer!.putObject(stock.object3d.name, stock)\n }\n }\n }\n\n createRackFrame(w: number, h: number, d: number) {\n var frameWeight = Math.round(Math.min(w, h) / 10)\n\n var frames = new THREE.Group()\n for (var i = 0; i < 4; i++) {\n var geometry = Rack.rackFrameGeometry\n var material = Rack.frameMaterial\n var frame = new THREE.Mesh(geometry, material)\n frame.scale.set(frameWeight, d, frameWeight)\n switch (i) {\n case 0:\n frame.position.set(w / 2, 0, h / 2)\n break\n case 1:\n frame.position.set(w / 2, 0, -h / 2)\n break\n case 2:\n frame.position.set(-w / 2, 0, h / 2)\n break\n case 3:\n frame.position.set(-w / 2, 0, -h / 2)\n break\n }\n\n frames.add(frame)\n }\n\n return frames\n }\n\n createRackBoard(w: number, h: number) {\n var boardMaterial = Rack.boardMaterial\n var boardGeometry = Rack.boardGeometry\n var board = new THREE.Mesh(boardGeometry, boardMaterial)\n\n board.scale.set(w, h, 1)\n\n return board\n }\n\n makeLocationString(shelfString: string) {\n var { section = '', unit = '' } = this.component.state\n var { locPattern = '{z}{s}-{u}-{sh}', zone = '' } = this.rackTable!.state\n\n var locationString = locPattern\n\n locationString = locationString.replace(/{z}/i, zone)\n locationString = locationString.replace(/{s}/i, section)\n locationString = locationString.replace(/{u}/i, unit)\n locationString = locationString.replace(/{sh}/i, shelfString)\n\n return locationString\n }\n\n makeShelfString(pattern: string, shelf: number, length: number) {\n /**\n * pattern #: 숫자\n * pattern 0: 고정 자리수\n * pattern -: 역순\n */\n\n if (!pattern || !shelf || !length) return\n\n var isReverse = /^\\-/.test(pattern)\n pattern = pattern.replace(/#+/, '#')\n\n var fixedLength = (pattern.match(/0/g) || []).length || 0\n var shelfString = String(isReverse ? length - shelf + 1 : shelf)\n\n if (shelfString.length > fixedLength && fixedLength > 0) {\n shelfString = shelfString.substring(shelfString.length - fixedLength)\n } else {\n var prefix = ''\n for (var i = 0; i < fixedLength - shelfString.length; i++) {\n prefix += '0'\n }\n shelfString = prefix + shelfString\n }\n\n return shelfString\n }\n\n updateAlpha() {}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"rack.js","sourceRoot":"","sources":["../src/rack.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\n\nimport { Stock } from './stock'\nimport { Material } from 'three'\nimport { RackTable } from './rack-table'\nimport { RealObject } from './threed/real-object'\nimport { Visualizer } from './visualizer'\n\nexport class Rack extends RealObject {\n _frames: any[] = []\n _boards: any[] = []\n\n static frameMaterial: Material = new THREE.MeshStandardMaterial({\n color: 0xcccccc,\n roughness: 0.5,\n metalness: 0.3\n })\n static rackFrameGeometry = new THREE.BoxGeometry(1, 1, 1)\n static boardGeometry = new THREE.PlaneGeometry(1, 1, 1, 1)\n static _boardMaterial?: THREE.MeshStandardMaterial\n\n get visualizer(): Visualizer | undefined {\n var component = this.component\n\n while (component) {\n if (component.state.type == 'visualizer') {\n return component as Visualizer\n }\n component = component.parent\n }\n }\n\n get rackTable(): RackTable | undefined {\n var component = this.component\n\n while (component) {\n if (component.state.type == 'rack-table') {\n return component as RackTable\n }\n component = component.parent\n }\n }\n\n get cz() {\n var { shelves = 1, depth = 1 } = this.rackTable!.state\n\n return 0.5 * depth * shelves\n }\n\n static get boardMaterial() {\n if (!Rack._boardMaterial) {\n Rack._boardMaterial = new THREE.MeshStandardMaterial({\n color: '#dedede',\n side: THREE.DoubleSide,\n polygonOffset: true,\n polygonOffsetFactor: -0.1\n })\n }\n\n return Rack._boardMaterial\n }\n\n get frames() {\n return this._frames\n }\n\n get boards() {\n return this._boards\n }\n\n build() {\n super.build()\n\n var { depth, hideRackFrame, shelves, shelfLocations: commonShelfLocation, stockScale = 0.7 } = this.rackTable!.state\n\n var { width, height, shelfLocations = commonShelfLocation, binLocations = '' } = this.component.state\n\n let scale = stockScale\n\n if (!hideRackFrame) {\n var frame = this.createRackFrame(width, height, depth * shelves)\n\n this.object3d.add(frame)\n }\n\n var shelfLocIds\n\n if (!shelfLocations) {\n shelfLocIds = []\n for (var i = 0; i < shelves; i++) shelfLocIds.push(i + 1)\n } else shelfLocIds = shelfLocations.split(/\\s*,\\s*/)\n\n var shelfBins = binLocations.trim().split('\\n').reverse()\n\n for (var i = 0; i < shelves; i++) {\n let bottom = -depth * shelves * 0.5\n if (shelfLocIds[i] == '') continue\n\n if (i > 0 && !hideRackFrame) {\n let board = this.createRackBoard(width, height)\n board.position.set(0, bottom + depth * i, 0)\n board.rotation.x = Math.PI / 2\n board.material.opacity = 0.5\n board.material.transparent = true\n\n this.object3d.add(board)\n // frame.geometry.merge(board.geometry, board.matrix)\n\n // this._boards.push(board)\n }\n\n var bins = (shelfBins[i] || '').trim().split(/\\s*,\\s*/)\n\n var binWidth = width / (bins.length || 1)\n for (var b = 0; b < bins.length; b++) {\n let stock = new Stock(this.component, {\n width: binWidth * scale,\n height: height * scale,\n depth: depth * scale\n })\n stock.update()\n\n let stockDepth = depth * scale\n\n stock.object3d.position.set(\n (width / 2) * ((2 * b - (bins.length - 1)) / bins.length),\n bottom + depth * i + stockDepth * 0.5,\n 0\n )\n var binCode = (bins[b] || '').replace('.', '')\n stock.object3d.name = `${this.makeLocationString(shelfLocIds[i])}${binCode}`\n\n this.object3d.add(stock.object3d)\n this.visualizer!.putObject(stock.object3d.name, stock)\n }\n }\n }\n\n createRackFrame(w: number, h: number, d: number) {\n var frameWeight = Math.round(Math.min(w, h) / 10)\n\n var frames = new THREE.Group()\n for (var i = 0; i < 4; i++) {\n var geometry = Rack.rackFrameGeometry\n var material = Rack.frameMaterial\n var frame = new THREE.Mesh(geometry, material)\n frame.scale.set(frameWeight, d, frameWeight)\n switch (i) {\n case 0:\n frame.position.set(w / 2, 0, h / 2)\n break\n case 1:\n frame.position.set(w / 2, 0, -h / 2)\n break\n case 2:\n frame.position.set(-w / 2, 0, h / 2)\n break\n case 3:\n frame.position.set(-w / 2, 0, -h / 2)\n break\n }\n\n frames.add(frame)\n }\n\n return frames\n }\n\n createRackBoard(w: number, h: number) {\n var boardMaterial = Rack.boardMaterial\n var boardGeometry = Rack.boardGeometry\n var board = new THREE.Mesh(boardGeometry, boardMaterial)\n\n board.scale.set(w, h, 1)\n\n return board\n }\n\n makeLocationString(shelfString: string) {\n var { section = '', unit = '' } = this.component.state\n var { locPattern = '{z}{s}-{u}-{sh}', zone = '' } = this.rackTable!.state\n\n var locationString = locPattern\n\n locationString = locationString.replace(/{z}/i, zone)\n locationString = locationString.replace(/{s}/i, section)\n locationString = locationString.replace(/{u}/i, unit)\n locationString = locationString.replace(/{sh}/i, shelfString)\n\n return locationString\n }\n\n makeShelfString(pattern: string, shelf: number, length: number) {\n /**\n * pattern #: 숫자\n * pattern 0: 고정 자리수\n * pattern -: 역순\n */\n\n if (!pattern || !shelf || !length) return\n\n var isReverse = /^\\-/.test(pattern)\n pattern = pattern.replace(/#+/, '#')\n\n var fixedLength = (pattern.match(/0/g) || []).length || 0\n var shelfString = String(isReverse ? length - shelf + 1 : shelf)\n\n if (shelfString.length > fixedLength && fixedLength > 0) {\n shelfString = shelfString.substring(shelfString.length - fixedLength)\n } else {\n var prefix = ''\n for (var i = 0; i < fixedLength - shelfString.length; i++) {\n prefix += '0'\n }\n shelfString = prefix + shelfString\n }\n\n return shelfString\n }\n\n updateAlpha() {}\n}\n"]}
|
package/dist/sphere.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { Ellipse } 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 Sphere3D extends RealObjectMesh {
|
|
6
|
-
buildGeometry():
|
|
7
|
-
buildMaterial(): THREE.MeshStandardMaterial;
|
|
5
|
+
buildGeometry(): void;
|
|
8
6
|
}
|
|
9
7
|
export declare class Sphere extends Ellipse {
|
|
10
8
|
is3dish(): boolean;
|
package/dist/sphere.js
CHANGED
|
@@ -14,14 +14,7 @@ const NATURE = {
|
|
|
14
14
|
export class Sphere3D extends RealObjectMesh {
|
|
15
15
|
buildGeometry() {
|
|
16
16
|
var { rx = 0 } = this.component.state;
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
buildMaterial() {
|
|
20
|
-
var { fillStyle = 'gray' } = this.component.state;
|
|
21
|
-
return new THREE.MeshStandardMaterial({
|
|
22
|
-
color: fillStyle,
|
|
23
|
-
side: THREE.FrontSide
|
|
24
|
-
});
|
|
17
|
+
this.object3d.geometry = new THREE.SphereGeometry(rx, 20, 20);
|
|
25
18
|
}
|
|
26
19
|
}
|
|
27
20
|
export class Sphere extends Ellipse {
|
package/dist/sphere.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sphere.js","sourceRoot":"","sources":["../src/sphere.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAC3D,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,EAAE;IACd,IAAI,EAAE,wBAAwB;CAC/B,CAAA;AAED,MAAM,OAAO,QAAS,SAAQ,cAAc;IAC1C,aAAa;QACX,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAErC,
|
|
1
|
+
{"version":3,"file":"sphere.js","sourceRoot":"","sources":["../src/sphere.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAC3D,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,EAAE;IACd,IAAI,EAAE,wBAAwB;CAC/B,CAAA;AAED,MAAM,OAAO,QAAS,SAAQ,cAAc;IAC1C,aAAa;QACX,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAErC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IAC/D,CAAC;CACF;AAED,MAAM,OAAO,MAAO,SAAQ,OAAO;IACjC,OAAO;QACL,OAAO,IAAI,CAAA;IACb,CAAC;IAED,eAAe;QACb,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC3B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Component, Ellipse } 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 help: 'scene/component/sphere'\n}\n\nexport class Sphere3D extends RealObjectMesh {\n buildGeometry() {\n var { rx = 0 } = this.component.state\n\n this.object3d.geometry = new THREE.SphereGeometry(rx, 20, 20)\n }\n}\n\nexport class Sphere extends Ellipse {\n is3dish() {\n return true\n }\n\n buildRealObject(): RealObject | undefined {\n return new Sphere3D(this)\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.register('sphere', Sphere)\n"]}
|
package/dist/sprite.js
CHANGED
|
@@ -16,12 +16,6 @@ export class Sprite extends RectPath(Shape) {
|
|
|
16
16
|
buildRealObject() {
|
|
17
17
|
return new RealObjectSprite2D(this);
|
|
18
18
|
}
|
|
19
|
-
// ready() {
|
|
20
|
-
// super.ready()
|
|
21
|
-
// setInterval(() => {
|
|
22
|
-
// this.text = String(Math.random())
|
|
23
|
-
// }, 1000)
|
|
24
|
-
// }
|
|
25
19
|
get nature() {
|
|
26
20
|
return NATURE;
|
|
27
21
|
}
|
package/dist/sprite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sprite.js","sourceRoot":"","sources":["../src/sprite.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAmB,QAAQ,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAEpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAEnE,MAAM,MAAM,GAAoB;IAC9B,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,EAAE;CACf,CAAA;AAED,MAAM,OAAO,MAAO,SAAQ,QAAQ,CAAC,KAAK,CAAC;IACzC,OAAO;QACL,OAAO,IAAI,CAAA;IACb,CAAC;IAED,eAAe;QACb,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"sprite.js","sourceRoot":"","sources":["../src/sprite.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAmB,QAAQ,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAEpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAEnE,MAAM,MAAM,GAAoB;IAC9B,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,EAAE;CACf,CAAA;AAED,MAAM,OAAO,MAAO,SAAQ,QAAQ,CAAC,KAAK,CAAC;IACzC,OAAO;QACL,OAAO,IAAI,CAAA;IACb,CAAC;IAED,eAAe;QACb,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Component, ComponentNature, RectPath, Shape } from '@hatiolab/things-scene'\nimport { RealObject } from './threed/real-object'\nimport { RealObjectSprite2D } from './threed/real-object-sprite-2d'\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: []\n}\n\nexport class Sprite extends RectPath(Shape) {\n is3dish(): boolean {\n return true\n }\n\n buildRealObject(): RealObject | undefined {\n return new RealObjectSprite2D(this)\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.register('sprite', Sprite)\n"]}
|
package/dist/threed/common.js
CHANGED
|
@@ -2,14 +2,15 @@ import tinycolor from 'tinycolor2';
|
|
|
2
2
|
export const SCALE_MIN = 0.001;
|
|
3
3
|
export function applyAlpha(material, alpha, fillStyle) {
|
|
4
4
|
var opacity = 1;
|
|
5
|
-
if (!fillStyle || fillStyle == 'none') {
|
|
6
|
-
opacity =
|
|
5
|
+
if (!fillStyle || fillStyle == 'none' || fillStyle == 'transparent') {
|
|
6
|
+
opacity = 0;
|
|
7
7
|
}
|
|
8
8
|
else {
|
|
9
9
|
var fillAlpha = typeof fillStyle == 'string' ? tinycolor(fillStyle).getAlpha() : 1;
|
|
10
10
|
opacity = alpha * fillAlpha;
|
|
11
11
|
}
|
|
12
12
|
material.opacity = opacity;
|
|
13
|
+
material.transparent = opacity < 1;
|
|
13
14
|
}
|
|
14
15
|
export const UNIT_DIMENSION = { width: 1, height: 1, depth: 1 };
|
|
15
16
|
export const UNIT_SCALE = { x: 1, y: 1, z: 1 };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/threed/common.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAA;AAElC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAA;AAE9B,MAAM,UAAU,UAAU,CAAC,QAAa,EAAE,KAAa,EAAE,SAAc;IACrE,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/threed/common.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAA;AAElC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAA;AAE9B,MAAM,UAAU,UAAU,CAAC,QAAa,EAAE,KAAa,EAAE,SAAc;IACrE,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,aAAa,EAAE;QACnE,OAAO,GAAG,CAAC,CAAA;KACZ;SAAM;QACL,IAAI,SAAS,GAAG,OAAO,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAClF,OAAO,GAAG,KAAK,GAAG,SAAS,CAAA;KAC5B;IAED,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAA;IAC1B,QAAQ,CAAC,WAAW,GAAG,OAAO,GAAG,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA;AAC/D,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;AAC9C,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;AAClD,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA","sourcesContent":["import tinycolor from 'tinycolor2'\n\nexport const SCALE_MIN = 0.001\n\nexport function applyAlpha(material: any, alpha: number, fillStyle: any) {\n var opacity = 1\n if (!fillStyle || fillStyle == 'none' || fillStyle == 'transparent') {\n opacity = 0\n } else {\n var fillAlpha = typeof fillStyle == 'string' ? tinycolor(fillStyle).getAlpha() : 1\n opacity = alpha * fillAlpha\n }\n\n material.opacity = opacity\n material.transparent = opacity < 1\n}\n\nexport const UNIT_DIMENSION = { width: 1, height: 1, depth: 1 }\nexport const UNIT_SCALE = { x: 1, y: 1, z: 1 }\nexport const UNIT_TRANSLATE = { x: 0, y: 0, z: 0 }\nexport const UNIT_ROTATE = { x: 0, y: 0, z: 0 }\n"]}
|
|
@@ -43,7 +43,7 @@ export class RealObjectCamera extends RealObjectMesh {
|
|
|
43
43
|
buildGeometry() {
|
|
44
44
|
var { width = 1, height = 1, depth = 1 } = this.component.state.dimension || UNIT_DIMENSION;
|
|
45
45
|
var radius = Math.min(width, height, depth) / 2;
|
|
46
|
-
|
|
46
|
+
this.object3d.geometry = new THREE.SphereGeometry(radius, 32, 32);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
//# sourceMappingURL=real-object-camera-meshed.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-camera-meshed.js","sourceRoot":"","sources":["../../src/threed/real-object-camera-meshed.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAEzC,MAAM,OAAO,GAAG;IACd,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,EAAE;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAA;AAED,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IAGlD,MAAM;QACJ,KAAK,CAAC,MAAM,EAAE,CAAA;QAEd,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAED,IAAI,MAAM;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;YAClC,IAAI,CAAC,YAAY,EAAE,CAAA;SACpB;QAED,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,YAAY;QACV,OAAO,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAA;IACtC,CAAC;IAED,YAAY;QACV,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAE7G,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAA;QACrB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAA;QACrB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;IACzB,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;QAEb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAA;QAEnB,OAAO,KAAK,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;IAED,aAAa;QACX,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,IAAI,cAAc,CAAA;QAE3F,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;QAE/C,
|
|
1
|
+
{"version":3,"file":"real-object-camera-meshed.js","sourceRoot":"","sources":["../../src/threed/real-object-camera-meshed.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAEzC,MAAM,OAAO,GAAG;IACd,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,EAAE;IACP,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;CACR,CAAA;AAED,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IAGlD,MAAM;QACJ,KAAK,CAAC,MAAM,EAAE,CAAA;QAEd,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAED,IAAI,MAAM;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;YAClC,IAAI,CAAC,YAAY,EAAE,CAAA;SACpB;QAED,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,YAAY;QACV,OAAO,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAA;IACtC,CAAC;IAED,YAAY;QACV,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;QAE7G,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAA;QACrB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAA;QACrB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;IACzB,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;QAEb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAA;QAEnB,OAAO,KAAK,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;IAED,aAAa;QACX,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,IAAI,cAAc,CAAA;QAE3F,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;QAE/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IACnE,CAAC;CACF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\n\nimport { RealObjectMesh } from './real-object-mesh'\nimport { UNIT_DIMENSION } from './common'\n\nconst DEFAULT = {\n far: 100000,\n fov: 80,\n near: 1,\n zoom: 1\n}\n\nexport class RealObjectCamera extends RealObjectMesh {\n protected _camera?: THREE.PerspectiveCamera\n\n update() {\n super.update()\n\n this.updateCamera()\n }\n\n get camera(): THREE.PerspectiveCamera {\n if (!this._camera) {\n this._camera = this.createCamera()\n this.updateCamera()\n }\n\n return this._camera\n }\n\n createCamera() {\n return new THREE.PerspectiveCamera()\n }\n\n updateCamera() {\n var { near = DEFAULT.near, far = DEFAULT.far, fov = DEFAULT.fov, zoom = DEFAULT.zoom } = this.component.state\n\n this.camera.far = far\n this.camera.fov = fov\n this.camera.near = near\n this.camera.zoom = zoom\n }\n\n build() {\n super.build()\n\n this.object3d.add(this.camera)\n }\n\n clear() {\n delete this._camera\n\n return super.clear()\n }\n\n buildGeometry() {\n var { width = 1, height = 1, depth = 1 } = this.component.state.dimension || UNIT_DIMENSION\n\n var radius = Math.min(width, height, depth) / 2\n\n this.object3d.geometry = new THREE.SphereGeometry(radius, 32, 32)\n }\n}\n"]}
|
|
@@ -3,9 +3,6 @@ import { RealObject } from './real-object';
|
|
|
3
3
|
export declare class RealObjectDomElement extends RealObject<CSS3DObject> {
|
|
4
4
|
protected getObject3dInstance(): CSS3DObject;
|
|
5
5
|
build(): void;
|
|
6
|
-
/**
|
|
7
|
-
* Component의 상태값의 변화를 Object3D에 반영 - translate, rotation, scale
|
|
8
|
-
*/
|
|
9
6
|
updateDimension(): void;
|
|
10
7
|
updateAlpha(): void;
|
|
11
8
|
}
|
|
@@ -7,25 +7,6 @@ export class RealObjectDomElement extends RealObject {
|
|
|
7
7
|
getObject3dInstance() {
|
|
8
8
|
return new CSS3DObject(this.component.element);
|
|
9
9
|
}
|
|
10
|
-
// private _cssObject3d?: THREE.Object3D
|
|
11
|
-
// buildGeometry() {
|
|
12
|
-
// var { width, height } = this.component.bounds
|
|
13
|
-
// return new THREE.PlaneGeometry(width, height)
|
|
14
|
-
// }
|
|
15
|
-
// buildMaterial() /* : THREE.MeshMaterialType | THREE.MeshMaterialType[] */ {
|
|
16
|
-
// var material = new THREE.MeshBasicMaterial()
|
|
17
|
-
// material.color.set('black')
|
|
18
|
-
// material.opacity = 0
|
|
19
|
-
// material.side = THREE.DoubleSide
|
|
20
|
-
// material.blending = THREE.NoBlending
|
|
21
|
-
// return material
|
|
22
|
-
// }
|
|
23
|
-
// get cssObject3d(): THREE.Object3D {
|
|
24
|
-
// if (!this._cssObject3d) {
|
|
25
|
-
// this._cssObject3d = this.buildCSS3DObject()
|
|
26
|
-
// }
|
|
27
|
-
// return this._cssObject3d
|
|
28
|
-
// }
|
|
29
10
|
build() {
|
|
30
11
|
super.build();
|
|
31
12
|
var element = this.component.element;
|
|
@@ -34,39 +15,7 @@ export class RealObjectDomElement extends RealObject {
|
|
|
34
15
|
element.style.height = height + 'px';
|
|
35
16
|
element.style.left = '';
|
|
36
17
|
element.style.top = '';
|
|
37
|
-
// this.object3d.add()
|
|
38
|
-
// const cssobj = new CSS3DObject(element)
|
|
39
|
-
// cssobj.position.set(-1, -1, 0)
|
|
40
|
-
// this.object3d.add(cssobj)
|
|
41
|
-
// return cssobj
|
|
42
18
|
}
|
|
43
|
-
/**
|
|
44
|
-
* Component의 상태값의 변화를 Object3D에 반영 - translate, rotation, scale
|
|
45
|
-
*/
|
|
46
|
-
// updateTransform() {
|
|
47
|
-
// super.updateTransform()
|
|
48
|
-
// var { x: tx, y: ty, z: tz } = this.position
|
|
49
|
-
// var { x: rx, y: ry, z: rz } = this.rotation
|
|
50
|
-
// var { x: sx, y: sy, z: sz } = this.scale
|
|
51
|
-
// this.cssObject3d.position.set(tx, ty, tz)
|
|
52
|
-
// this.cssObject3d.rotation.set(rx, ry, rz)
|
|
53
|
-
// this.cssObject3d.scale.set(Math.max(sx, SCALE_MIN), Math.max(sy, SCALE_MIN), Math.max(sz, SCALE_MIN))
|
|
54
|
-
// }
|
|
55
|
-
// updatePosition() {
|
|
56
|
-
// super.updatePosition()
|
|
57
|
-
// var { x: tx, y: ty, z: tz } = this.position
|
|
58
|
-
// this.cssObject3d.position.set(tx, ty, tz)
|
|
59
|
-
// }
|
|
60
|
-
// updateRotate() {
|
|
61
|
-
// super.updateRotate()
|
|
62
|
-
// var { x: rx, y: ry, z: rz } = this.rotation
|
|
63
|
-
// this.cssObject3d.rotation.set(rx, ry, rz)
|
|
64
|
-
// }
|
|
65
|
-
// updateScale() {
|
|
66
|
-
// super.updateScale()
|
|
67
|
-
// var { x: sx, y: sy, z: sz } = this.scale
|
|
68
|
-
// this.cssObject3d.scale.set(Math.max(sx, SCALE_MIN), Math.max(sy, SCALE_MIN), Math.max(sz, SCALE_MIN))
|
|
69
|
-
// }
|
|
70
19
|
updateDimension() {
|
|
71
20
|
super.updateDimension();
|
|
72
21
|
var dimension = this.dimension;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-dom-element.js","sourceRoot":"","sources":["../../src/threed/real-object-dom-element.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG1C,MAAM,OAAO,oBAAqB,SAAQ,UAAuB;IACrD,mBAAmB;QAC3B,OAAO,IAAI,WAAW,CAAE,IAAI,CAAC,SAAuD,CAAC,OAAO,CAAC,CAAA;IAC/F,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"real-object-dom-element.js","sourceRoot":"","sources":["../../src/threed/real-object-dom-element.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAG1C,MAAM,OAAO,oBAAqB,SAAQ,UAAuB;IACrD,mBAAmB;QAC3B,OAAO,IAAI,WAAW,CAAE,IAAI,CAAC,SAAuD,CAAC,OAAO,CAAC,CAAA;IAC/F,CAAC;IAED,KAAK;QACH,KAAK,CAAC,KAAK,EAAE,CAAA;QAEb,IAAI,OAAO,GAAI,IAAI,CAAC,SAAuD,CAAC,OAAO,CAAA;QAEnF,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAA;QAE7C,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAA;QAClC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;QAEpC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAA;QACvB,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAA;IACxB,CAAC;IAED,eAAe;QACb,KAAK,CAAC,eAAe,EAAE,CAAA;QAEvB,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAC7B;QAAC,IAAI,CAAC,SAAuD,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,IAAI,CAC1G;QAAC,IAAI,CAAC,SAAuD,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAA;IAC/G,CAAC;IAED,WAAW;QACT,KAAK,CAAC,WAAW,EAAE,CAAA;QAEnB,sCAAsC;QACtC,uCAAuC;QACvC,iEAAiE;QACjE,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAEvC;QAAC,IAAI,CAAC,SAAuD,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAA;IAC9F,CAAC;CACF","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as THREE from 'three'\nimport { HTMLOverlayElement, HTMLOverlayContainer } from '@hatiolab/things-scene'\n\nimport { RealObjectMesh } from './real-object-mesh'\nimport { CSS3DObject } from 'three/examples/jsm/renderers/CSS3DRenderer.js'\nimport { RealObject } from './real-object'\nimport { SCALE_MIN } from './common'\n\nexport class RealObjectDomElement extends RealObject<CSS3DObject> {\n protected getObject3dInstance() {\n return new CSS3DObject((this.component as HTMLOverlayElement | HTMLOverlayContainer).element)\n }\n\n build() {\n super.build()\n\n var element = (this.component as HTMLOverlayElement | HTMLOverlayContainer).element\n\n var { width, height } = this.component.bounds\n\n element.style.width = width + 'px'\n element.style.height = height + 'px'\n\n element.style.left = ''\n element.style.top = ''\n }\n\n updateDimension() {\n super.updateDimension()\n\n var dimension = this.dimension\n ;(this.component as HTMLOverlayElement | HTMLOverlayContainer).element.style.width = dimension.width + 'px'\n ;(this.component as HTMLOverlayElement | HTMLOverlayContainer).element.style.height = dimension.height + 'px'\n }\n\n updateAlpha() {\n super.updateAlpha()\n\n // material의 opacity는 항상 0으로 유지되어야 하며,\n // dom element의 opacity에 alpha를 적용해야한다.\n // 하지만, 컬러톤의 반영 외에 transparent 기능은 하지 못하므로, 뒤에 있는 오브젝트를 보여주지 못한다.\n var { alpha = 1 } = this.component.state\n\n ;(this.component as HTMLOverlayElement | HTMLOverlayContainer).element.style.opacity = alpha\n }\n}\n"]}
|
|
@@ -10,12 +10,11 @@ export declare class RealObjectExtrude extends RealObject {
|
|
|
10
10
|
get boundUVGenerator(): BoundUVGenerator;
|
|
11
11
|
build(): void;
|
|
12
12
|
createGeometry(shape: THREE.Shape): THREE.BufferGeometry;
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
createMainMaterial(): THREE.MeshStandardMaterial;
|
|
14
|
+
createMainMesh(geometry: THREE.BufferGeometry, material: THREE.Material): THREE.Mesh<THREE.BufferGeometry, THREE.Material>;
|
|
15
15
|
createSideMesh(geometry: THREE.BufferGeometry, shape: THREE.Shape): THREE.Mesh<THREE.ExtrudeGeometry, THREE.MeshStandardMaterial>;
|
|
16
16
|
createTexture(): THREE.CanvasTexture;
|
|
17
17
|
updateAlpha(): void;
|
|
18
18
|
updateStrokeStyle(): void;
|
|
19
19
|
updateFillStyle(): void;
|
|
20
|
-
get rebuildingProperties(): string[];
|
|
21
20
|
}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
3
|
*/
|
|
4
4
|
import * as THREE from 'three';
|
|
5
|
-
import tinycolor from 'tinycolor2';
|
|
6
5
|
import { RealObject } from './real-object';
|
|
7
6
|
import { BoundUVGenerator } from './utils/bound-uv-generator';
|
|
8
7
|
import { createCanvas } from './html/elements';
|
|
@@ -21,7 +20,7 @@ export class RealObjectExtrude extends RealObject {
|
|
|
21
20
|
}
|
|
22
21
|
build() {
|
|
23
22
|
super.build();
|
|
24
|
-
var { depth = 1
|
|
23
|
+
var { depth = 1 } = this.component.state;
|
|
25
24
|
// 다각형 그리기
|
|
26
25
|
var shape = this.shape;
|
|
27
26
|
if (!shape) {
|
|
@@ -37,17 +36,15 @@ export class RealObjectExtrude extends RealObject {
|
|
|
37
36
|
});
|
|
38
37
|
}
|
|
39
38
|
var geometry = this.createGeometry(shape);
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
this.object3d.add(this._sideMesh);
|
|
50
|
-
}
|
|
39
|
+
var material = this.createMainMaterial();
|
|
40
|
+
this._mainMesh = this.createMainMesh(geometry, material);
|
|
41
|
+
this._mainMesh.castShadow = true;
|
|
42
|
+
this.object3d.add(this._mainMesh);
|
|
43
|
+
this._sideMesh = this.createSideMesh(geometry, shape /* FIXME , extrudeSettings */);
|
|
44
|
+
this._sideMesh.castShadow = true;
|
|
45
|
+
this.object3d.add(this._sideMesh);
|
|
46
|
+
this.updateFillStyle();
|
|
47
|
+
this.updateStrokeStyle();
|
|
51
48
|
}
|
|
52
49
|
createGeometry(shape) {
|
|
53
50
|
const { depth = 1 } = this.component.state;
|
|
@@ -61,35 +58,13 @@ export class RealObjectExtrude extends RealObject {
|
|
|
61
58
|
geometry.center();
|
|
62
59
|
return geometry;
|
|
63
60
|
}
|
|
64
|
-
|
|
65
|
-
var { fillStyle = 'black', alpha = 1 } = this.component.state;
|
|
66
|
-
var params = {};
|
|
67
|
-
var opacity = alpha;
|
|
68
|
-
const texture = RealObject.buildFillStyleTexture(this.component);
|
|
69
|
-
if (texture) {
|
|
70
|
-
params = {
|
|
71
|
-
map: texture,
|
|
72
|
-
side: THREE.FrontSide
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
else if (typeof fillStyle == 'string') {
|
|
76
|
-
if (fillStyle !== 'transparent') {
|
|
77
|
-
params.color = fillStyle;
|
|
78
|
-
opacity *= tinycolor(fillStyle).getAlpha();
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
opacity = 0;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
61
|
+
createMainMaterial() {
|
|
84
62
|
return new THREE.MeshStandardMaterial({
|
|
85
|
-
...params,
|
|
86
|
-
opacity,
|
|
87
|
-
transparent: opacity < 1,
|
|
88
63
|
metalness: 0.5,
|
|
89
64
|
roughness: 0.5
|
|
90
65
|
});
|
|
91
66
|
}
|
|
92
|
-
|
|
67
|
+
createMainMesh(geometry, material) {
|
|
93
68
|
var mesh = new THREE.Mesh(geometry, material);
|
|
94
69
|
mesh.rotation.x = -Math.PI / 2;
|
|
95
70
|
mesh.rotation.y = -Math.PI;
|
|
@@ -97,21 +72,16 @@ export class RealObjectExtrude extends RealObject {
|
|
|
97
72
|
return mesh;
|
|
98
73
|
}
|
|
99
74
|
createSideMesh(geometry, shape) {
|
|
100
|
-
var {
|
|
75
|
+
var { depth = 1, lineWidth = 0 } = this.component.state;
|
|
101
76
|
var hole = new THREE.Path();
|
|
102
77
|
hole.setFromPoints(shape.getPoints());
|
|
103
78
|
var sideMaterial = new THREE.MeshStandardMaterial({
|
|
104
|
-
color: strokeStyle,
|
|
105
79
|
metalness: 0.5,
|
|
106
|
-
roughness: 0.5
|
|
80
|
+
roughness: 0.5,
|
|
81
|
+
// prevent overlapped layers flickering
|
|
82
|
+
polygonOffset: true,
|
|
83
|
+
polygonOffsetFactor: -0.1
|
|
107
84
|
});
|
|
108
|
-
var tinyStrokeStyle = tinycolor(strokeStyle);
|
|
109
|
-
var strokeAlpha = tinyStrokeStyle.getAlpha();
|
|
110
|
-
sideMaterial.opacity = alpha * strokeAlpha;
|
|
111
|
-
sideMaterial.transparent = alpha < 1 || strokeAlpha < 1;
|
|
112
|
-
// prevent overlapped layers flickering
|
|
113
|
-
sideMaterial.polygonOffset = true;
|
|
114
|
-
sideMaterial.polygonOffsetFactor = -0.1;
|
|
115
85
|
shape = this.sideShape || shape;
|
|
116
86
|
shape.holes.push(hole);
|
|
117
87
|
var sideExtrudeSettings = {
|
|
@@ -143,7 +113,6 @@ export class RealObjectExtrude extends RealObject {
|
|
|
143
113
|
return 1 << count;
|
|
144
114
|
}
|
|
145
115
|
var { width, height } = this.component.bounds;
|
|
146
|
-
// TODO component.text의 heavy한 로직을 반복적으로 실행하지 않도록, 캐싱하자.
|
|
147
116
|
var poweredWidth = nextPowerOf2(width);
|
|
148
117
|
var poweredHeight = nextPowerOf2(height);
|
|
149
118
|
let canvas = createCanvas(poweredWidth, poweredHeight);
|
|
@@ -158,21 +127,22 @@ export class RealObjectExtrude extends RealObject {
|
|
|
158
127
|
return texture;
|
|
159
128
|
}
|
|
160
129
|
updateAlpha() {
|
|
161
|
-
var { alpha = 1, fillStyle,
|
|
130
|
+
var { alpha = 1, fillStyle, strokeStyle } = this.component.state;
|
|
162
131
|
this._mainMesh && applyAlpha(this._mainMesh.material, alpha, fillStyle);
|
|
163
|
-
this._sideMesh && applyAlpha(this._sideMesh.material, alpha,
|
|
132
|
+
this._sideMesh && applyAlpha(this._sideMesh.material, alpha, strokeStyle);
|
|
164
133
|
}
|
|
165
134
|
updateStrokeStyle() {
|
|
166
135
|
var _a;
|
|
167
|
-
|
|
168
|
-
if (
|
|
169
|
-
;
|
|
170
|
-
((_a = this._sideMesh) === null || _a === void 0 ? void 0 : _a.material).color.set(strokeStyle);
|
|
136
|
+
const material = (_a = this._sideMesh) === null || _a === void 0 ? void 0 : _a.material;
|
|
137
|
+
if (!material) {
|
|
138
|
+
return;
|
|
171
139
|
}
|
|
140
|
+
var { strokeStyle } = this.component.state;
|
|
141
|
+
material.color.set(strokeStyle);
|
|
172
142
|
}
|
|
173
143
|
updateFillStyle() {
|
|
174
144
|
var _a;
|
|
175
|
-
var { fillStyle } = this.component.state;
|
|
145
|
+
var { fillStyle, alpha = 1 } = this.component.state;
|
|
176
146
|
var material = (_a = this._mainMesh) === null || _a === void 0 ? void 0 : _a.material;
|
|
177
147
|
if (!material) {
|
|
178
148
|
return;
|
|
@@ -181,18 +151,9 @@ export class RealObjectExtrude extends RealObject {
|
|
|
181
151
|
if (texture) {
|
|
182
152
|
material.map = texture;
|
|
183
153
|
}
|
|
184
|
-
else
|
|
185
|
-
|
|
186
|
-
material.color.set(fillStyle);
|
|
187
|
-
}
|
|
188
|
-
else {
|
|
189
|
-
// material.color.set(fillStyle)
|
|
190
|
-
material.opacity = 0;
|
|
191
|
-
}
|
|
154
|
+
else {
|
|
155
|
+
material.color.set(fillStyle);
|
|
192
156
|
}
|
|
193
157
|
}
|
|
194
|
-
get rebuildingProperties() {
|
|
195
|
-
return ['width', 'height', 'depth', 'text', 'path'];
|
|
196
|
-
}
|
|
197
158
|
}
|
|
198
159
|
//# sourceMappingURL=real-object-extrude.js.map
|