@operato/scene-visualizer 1.2.27 → 1.2.29
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 +18 -0
- package/db.sqlite +0 -0
- package/dist/editors/property-editor-gltf-info.js.map +1 -1
- package/dist/editors/property-editor-location-increase-pattern.js.map +1 -1
- package/dist/rack.js +2 -1
- package/dist/rack.js.map +1 -1
- package/dist/stock.d.ts +2 -2
- package/dist/stock.js +2 -1
- package/dist/stock.js.map +1 -1
- package/dist/three-controls.js +1 -1
- package/dist/three-controls.js.map +1 -1
- package/dist/threed/real-object-gltf.js +2 -1
- package/dist/threed/real-object-gltf.js.map +1 -1
- package/logs/.08636eb59927f12972f6774f5947c8507b3564c2-audit.json +6 -6
- package/logs/.5e5d741d8b7784a2fbad65eedc0fd46946aaf6f2-audit.json +10 -5
- package/logs/application-2023-04-24-13.log +15 -0
- package/logs/application-2023-04-24-14.log +12 -0
- package/logs/connections-2023-04-24-13.log +82 -0
- package/logs/connections-2023-04-24-14.log +82 -0
- package/package.json +7 -7
- package/schema.gql +8 -0
- package/src/three-controls.ts +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/logs/application-2023-04-22-10.log +0 -12
- package/logs/application-2023-04-22-11.log +0 -6
- package/logs/connections-2023-04-09-04.log +0 -35
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,24 @@
|
|
|
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.29](https://github.com/things-scene/operato-scene/compare/v1.2.28...v1.2.29) (2023-04-30)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### :bug: Bug Fix
|
|
10
|
+
|
|
11
|
+
* update module's version ([047d08b](https://github.com/things-scene/operato-scene/commit/047d08b5d912d12c04b2f6b63156d1e812588365))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### [1.2.28](https://github.com/things-scene/operato-scene/compare/v1.2.27...v1.2.28) (2023-04-24)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### :bug: Bug Fix
|
|
19
|
+
|
|
20
|
+
* disable automatic rotating of 3d-container when it's in edit mode. ([26e73c8](https://github.com/things-scene/operato-scene/commit/26e73c8c70a690fde18da2a9aec0321e08f210ee))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
6
24
|
### [1.2.27](https://github.com/things-scene/operato-scene/compare/v1.2.26...v1.2.27) (2023-04-22)
|
|
7
25
|
|
|
8
26
|
|
package/db.sqlite
CHANGED
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"property-editor-gltf-info.js","sourceRoot":"","sources":["../../src/editors/property-editor-gltf-info.ts"],"names":[],"mappings":";AAAA,OAAO,0BAA0B,CAAA;AAEjC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAkC,MAAM,KAAK,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAElE,OAAO,EAAE,gBAAgB,EAAgB,MAAM,0BAA0B,CAAA;AAGzE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAA;
|
|
1
|
+
{"version":3,"file":"property-editor-gltf-info.js","sourceRoot":"","sources":["../../src/editors/property-editor-gltf-info.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/i18n/ox-i18n.js'\n\nimport { css, html, PropertyValues, TemplateResult } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\nimport { OxPropertyEditor, PropertySpec } from '@operato/property-editor'\nimport { Component } from '@hatiolab/things-scene'\n\nimport * as THREE from 'three'\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader'\n\n@customElement('property-editor-gltf-info')\nexport default class GLTFInfoEditor extends OxPropertyEditor {\n static styles = [\n ...OxPropertyEditor.styles,\n css`\n div[info] {\n display: flex;\n flex-direction: row;\n font-size: 12px;\n }\n\n div[info] * {\n align-self: center;\n }\n\n div[info] title {\n font-weight: bold;\n }\n\n div[info] mwc-icon-button {\n margin-left: auto;\n --mdc-icon-button-size: 24px;\n }\n `\n ]\n\n @property({ type: Number }) src?: string\n\n @state() width: number = 0\n @state() height: number = 0\n @state() depth: number = 0\n\n editorTemplate(value: any, spec: PropertySpec): TemplateResult {\n const valid = this.width && this.height && this.depth\n\n var property = spec.property || {}\n var { action } = property\n\n return html`\n <fieldset fullwidth>\n <legend><ox-i18n msgid=\"label.gltf-info\">GLTF info.</ox-i18n></legend>\n\n <div>\n <div info>\n <div label>[W x H x D] :</div>\n ${valid\n ? html` <div value>${this.width} x ${this.height} x ${this.depth}</div>\n <mwc-icon-button\n icon=\"autorenew\"\n @click=${(e: MouseEvent) => {\n this.dispatchEvent(\n new CustomEvent('i-need-selected', {\n bubbles: true,\n composed: true,\n detail: {\n callback: (selected: any[]) => {\n typeof action === 'function' &&\n action(selected[0], {\n width: this.width,\n height: this.height,\n depth: this.depth\n })\n }\n }\n })\n )\n }}\n ></mwc-icon-button>`\n : html` <div></div> `}\n </div>\n </div>\n </fieldset>\n `\n }\n\n updated(changes: PropertyValues<this>) {\n if (changes.has('src')) {\n this.dispatchEvent(\n new CustomEvent('i-need-selected', {\n bubbles: true,\n composed: true,\n detail: {\n callback: async (selected: any[]) => {\n await this.fetchSourceInfo(selected[0], this.src!)\n }\n }\n })\n )\n }\n }\n\n async fetchSourceInfo(component: Component, src: string) {\n if (!src || !src.trim()) {\n return\n }\n\n try {\n const path = component.app.url(src)\n\n let gltfLoader = new GLTFLoader()\n\n gltfLoader.setCrossOrigin('use-credentials')\n\n return new Promise((resolve: any) => {\n gltfLoader.load(path, gltf => {\n var box = new THREE.Box3().setFromObject(gltf.scene)\n var { x, y, z } = box.getSize(new THREE.Vector3())\n\n this.width = Math.floor(x)\n this.depth = Math.floor(y)\n this.height = Math.floor(z)\n\n resolve()\n })\n })\n } catch (e) {\n console.error(e)\n return\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"property-editor-location-increase-pattern.js","sourceRoot":"","sources":["../../src/editors/property-editor-location-increase-pattern.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/i18n/ox-i18n.js'\n\nimport { css, html, TemplateResult } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { OxPropertyEditor, PropertySpec } from '@operato/property-editor'\n\n@customElement('property-editor-location-increase-pattern')\nexport default class LocationIncreasePatternEditor extends OxPropertyEditor {\n static styles = [\n ...OxPropertyEditor.styles,\n css`\n fieldset {\n border: none;\n border-bottom: 1px solid #cfd8dc;\n color: var(--primary-text-color);\n font-size: 12px;\n padding: 0 0 10px 0;\n margin: 0 0 10px 0;\n }\n\n fieldset legend {\n padding: 5px 0 0 5px;\n font-size: 11px;\n color: #e46c2e;\n font-weight: bold;\n text-transform: capitalize;\n }\n\n .property-grid {\n display: grid;\n grid-template-columns: repeat(10, 1fr);\n grid-gap: 5px;\n grid-auto-rows: minmax(24px, auto);\n margin: 10px 0 0 0;\n }\n\n .property-grid > * {\n line-height: 1.5;\n }\n\n #border-set > mwc-icon {\n grid-column: span 2;\n margin: 0 0 0 8px;\n width: 32px;\n height: 32px;\n }\n\n .property-grid > label {\n grid-column: span 3;\n text-align: right;\n text-transform: capitalize;\n }\n\n .property-grid > paper-dropdown-menu,\n .property-grid > input {\n grid-column: span 7;\n padding: 0;\n margin: 0;\n }\n\n .property-grid > .checkbox-row {\n grid-column: span 10;\n\n display: grid;\n grid-template-columns: repeat(10, 1fr);\n grid-gap: 5px;\n grid-auto-rows: minmax(24px, auto);\n align-items: center;\n }\n\n .checkbox-row > input {\n grid-column: span 4 / auto;\n order: 1;\n place-self: center end;\n }\n\n .checkbox-row > label {\n grid-column: span 6;\n text-align: left;\n }\n\n #pattern-set {\n overflow: hidden;\n grid-column: 1 / -1;\n }\n\n #pattern-set paper-button {\n background: url('data:image/png;base64,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')\n no-repeat;\n display: block;\n float: left;\n margin: 0 7px 10px 0 !important;\n width: 55px;\n height: 40px;\n min-width: inherit;\n }\n #pattern-set paper-button iron-icon {\n display: none;\n }\n #pattern-set paper-button[data-value='+u+s'] {\n background-position: 50% 3px;\n }\n #pattern-set paper-button[data-value='+u-s'] {\n background-position: 50% -97px;\n }\n #pattern-set paper-button[data-value='-u+s'] {\n background-position: 50% -197px;\n }\n #pattern-set paper-button[data-value='-u-s'] {\n background-position: 50% -297px;\n }\n #pattern-set paper-button[data-value='+s+u'] {\n background-position: 50% -397px;\n }\n #pattern-set paper-button[data-value='+s-u'] {\n background-position: 50% -497px;\n }\n #pattern-set paper-button[data-value='-s+u'] {\n background-position: 50% -597px;\n }\n #pattern-set paper-button[data-value='-s-u'] {\n background-position: 50% -697px;\n }\n #pattern-set paper-button[data-value='cw'] {\n background-position: 50% -797px;\n }\n #pattern-set paper-button[data-value='ccw'] {\n background-position: 50% -897px;\n }\n #pattern-set paper-button[data-value='zigzag'] {\n background-position: 50% -997px;\n }\n #pattern-set paper-button[data-value='zigzag-reverse'] {\n background-position: 50% -1097px;\n }\n\n label {\n order: initial;\n }\n\n input {\n order: initial;\n }\n\n #skip-numbering {\n order: initial;\n grid-column: span 4;\n }\n label[for='skip-numbering'] {\n order: 1;\n grid-column: span 5;\n text-align: left;\n }\n `\n ]\n\n editorTemplate(value: any, spec: PropertySpec): TemplateResult {\n // TODO: background image change to use the url-loader\n return html`\n <fieldset fullwidth>\n <legend><ox-i18n msgid=\"label.location-increase-pattern\">Increase Pattern</ox-i18n></legend>\n\n <div class=\"property-grid\">\n <label> <ox-i18n msgid=\"label.start-section\">Start Section</ox-i18n> </label>\n <input\n type=\"number\"\n data-start-section\n value=\"${this.startSection}\"\n @change=${(e: Event) => (this.startSection = (e.target! as HTMLInputElement).valueAsNumber)}\n />\n\n <label> <ox-i18n msgid=\"label.start-unit\">Start Unit</ox-i18n> </label>\n <input\n type=\"number\"\n data-start-unit\n value=\"${this.startUnit}\"\n @change=${(e: Event) => (this.startUnit = (e.target! as HTMLInputElement).valueAsNumber)}\n />\n\n <div class=\"checkbox-row\" fullwidth>\n <input id=\"skip-numbering\" type=\"checkbox\" data-skip-numbering ?checked=\"${this.skipNumbering}\" />\n <label for=\"skip-numbering\">\n <ox-i18n msgid=\"label.skip-numbering\">Skip Numbering</ox-i18n>\n </label>\n </div>\n\n <div\n id=\"pattern-set\"\n class=\"property-grid location-increase-pattern-btn\"\n @click=${(e: Event) => this._onTapType(e)}\n >\n <paper-button data-value=\"cw\"> <iron-icon icon=\"editor:border-outer\"></iron-icon> </paper-button>\n <paper-button data-value=\"ccw\">\n <iron-icon icon=\"editor:border-inner\"></iron-icon>\n </paper-button>\n <paper-button data-value=\"zigzag\">\n <iron-icon icon=\"editor:border-inner\"></iron-icon>\n </paper-button>\n <paper-button data-value=\"zigzag-reverse\">\n <iron-icon icon=\"editor:border-inner\"></iron-icon>\n </paper-button>\n </div>\n </div>\n </fieldset>\n `\n }\n\n @property({ type: Number }) startSection: number = 1\n @property({ type: Number }) startUnit: number = 1\n @property({ type: Boolean }) skipNumbering: boolean = true\n @property({ type: Object }) _specificPropEl: HTMLElement | null = null\n\n connectedCallback() {\n super.connectedCallback()\n if (this.property && this.property.event) {\n Object.entries(this.property.event).forEach(entry => {\n if (entry[0]) {\n document.addEventListener(entry[0] as any, entry[1] as any)\n }\n })\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n\n if (this.property && this.property.event) {\n Object.entries(this.property.event).forEach(entry => {\n if (entry[0]) {\n document.removeEventListener(entry[0] as any, entry[1] as any)\n }\n })\n }\n }\n\n _onTapType(e: Event) {\n var target = e.target as HTMLElement\n\n const increasingDirection = target?.closest('[data-value]')?.getAttribute('data-value')\n if (!increasingDirection) {\n return\n }\n\n this.dispatchEvent(\n new CustomEvent('i-need-selected', {\n bubbles: true,\n composed: true,\n detail: {\n callback: (selected: any[]) => {\n const table = selected[0].parent\n table.increaseLocation(increasingDirection, this.skipNumbering, this.startSection, this.startUnit)\n }\n }\n })\n )\n\n e.stopPropagation()\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"property-editor-location-increase-pattern.js","sourceRoot":"","sources":["../../src/editors/property-editor-location-increase-pattern.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/i18n/ox-i18n.js'\n\nimport { css, html, TemplateResult } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { OxPropertyEditor, PropertySpec } from '@operato/property-editor'\n\n@customElement('property-editor-location-increase-pattern')\nexport default class LocationIncreasePatternEditor extends OxPropertyEditor {\n static styles = [\n ...OxPropertyEditor.styles,\n css`\n fieldset {\n border: none;\n border-bottom: 1px solid #cfd8dc;\n color: var(--primary-text-color);\n font-size: 12px;\n padding: 0 0 10px 0;\n margin: 0 0 10px 0;\n }\n\n fieldset legend {\n padding: 5px 0 0 5px;\n font-size: 11px;\n color: #e46c2e;\n font-weight: bold;\n text-transform: capitalize;\n }\n\n .property-grid {\n display: grid;\n grid-template-columns: repeat(10, 1fr);\n grid-gap: 5px;\n grid-auto-rows: minmax(24px, auto);\n margin: 10px 0 0 0;\n }\n\n .property-grid > * {\n line-height: 1.5;\n }\n\n #border-set > mwc-icon {\n grid-column: span 2;\n margin: 0 0 0 8px;\n width: 32px;\n height: 32px;\n }\n\n .property-grid > label {\n grid-column: span 3;\n text-align: right;\n text-transform: capitalize;\n }\n\n .property-grid > paper-dropdown-menu,\n .property-grid > input {\n grid-column: span 7;\n padding: 0;\n margin: 0;\n }\n\n .property-grid > .checkbox-row {\n grid-column: span 10;\n\n display: grid;\n grid-template-columns: repeat(10, 1fr);\n grid-gap: 5px;\n grid-auto-rows: minmax(24px, auto);\n align-items: center;\n }\n\n .checkbox-row > input {\n grid-column: span 4 / auto;\n order: 1;\n place-self: center end;\n }\n\n .checkbox-row > label {\n grid-column: span 6;\n text-align: left;\n }\n\n #pattern-set {\n overflow: hidden;\n grid-column: 1 / -1;\n }\n\n #pattern-set paper-button {\n background: url('data:image/png;base64,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')\n no-repeat;\n display: block;\n float: left;\n margin: 0 7px 10px 0 !important;\n width: 55px;\n height: 40px;\n min-width: inherit;\n }\n #pattern-set paper-button iron-icon {\n display: none;\n }\n #pattern-set paper-button[data-value='+u+s'] {\n background-position: 50% 3px;\n }\n #pattern-set paper-button[data-value='+u-s'] {\n background-position: 50% -97px;\n }\n #pattern-set paper-button[data-value='-u+s'] {\n background-position: 50% -197px;\n }\n #pattern-set paper-button[data-value='-u-s'] {\n background-position: 50% -297px;\n }\n #pattern-set paper-button[data-value='+s+u'] {\n background-position: 50% -397px;\n }\n #pattern-set paper-button[data-value='+s-u'] {\n background-position: 50% -497px;\n }\n #pattern-set paper-button[data-value='-s+u'] {\n background-position: 50% -597px;\n }\n #pattern-set paper-button[data-value='-s-u'] {\n background-position: 50% -697px;\n }\n #pattern-set paper-button[data-value='cw'] {\n background-position: 50% -797px;\n }\n #pattern-set paper-button[data-value='ccw'] {\n background-position: 50% -897px;\n }\n #pattern-set paper-button[data-value='zigzag'] {\n background-position: 50% -997px;\n }\n #pattern-set paper-button[data-value='zigzag-reverse'] {\n background-position: 50% -1097px;\n }\n\n label {\n order: initial;\n }\n\n input {\n order: initial;\n }\n\n #skip-numbering {\n order: initial;\n grid-column: span 4;\n }\n label[for='skip-numbering'] {\n order: 1;\n grid-column: span 5;\n text-align: left;\n }\n `\n ]\n\n editorTemplate(value: any, spec: PropertySpec): TemplateResult {\n // TODO: background image change to use the url-loader\n return html`\n <fieldset fullwidth>\n <legend><ox-i18n msgid=\"label.location-increase-pattern\">Increase Pattern</ox-i18n></legend>\n\n <div class=\"property-grid\">\n <label> <ox-i18n msgid=\"label.start-section\">Start Section</ox-i18n> </label>\n <input\n type=\"number\"\n data-start-section\n value=\"${this.startSection}\"\n @change=${(e: Event) => (this.startSection = (e.target! as HTMLInputElement).valueAsNumber)}\n />\n\n <label> <ox-i18n msgid=\"label.start-unit\">Start Unit</ox-i18n> </label>\n <input\n type=\"number\"\n data-start-unit\n value=\"${this.startUnit}\"\n @change=${(e: Event) => (this.startUnit = (e.target! as HTMLInputElement).valueAsNumber)}\n />\n\n <div class=\"checkbox-row\" fullwidth>\n <input id=\"skip-numbering\" type=\"checkbox\" data-skip-numbering ?checked=\"${this.skipNumbering}\" />\n <label for=\"skip-numbering\">\n <ox-i18n msgid=\"label.skip-numbering\">Skip Numbering</ox-i18n>\n </label>\n </div>\n\n <div\n id=\"pattern-set\"\n class=\"property-grid location-increase-pattern-btn\"\n @click=${(e: Event) => this._onTapType(e)}\n >\n <paper-button data-value=\"cw\"> <iron-icon icon=\"editor:border-outer\"></iron-icon> </paper-button>\n <paper-button data-value=\"ccw\">\n <iron-icon icon=\"editor:border-inner\"></iron-icon>\n </paper-button>\n <paper-button data-value=\"zigzag\">\n <iron-icon icon=\"editor:border-inner\"></iron-icon>\n </paper-button>\n <paper-button data-value=\"zigzag-reverse\">\n <iron-icon icon=\"editor:border-inner\"></iron-icon>\n </paper-button>\n </div>\n </div>\n </fieldset>\n `\n }\n\n @property({ type: Number }) startSection: number = 1\n @property({ type: Number }) startUnit: number = 1\n @property({ type: Boolean }) skipNumbering: boolean = true\n @property({ type: Object }) _specificPropEl: HTMLElement | null = null\n\n connectedCallback() {\n super.connectedCallback()\n if (this.property && this.property.event) {\n Object.entries(this.property.event).forEach(entry => {\n if (entry[0]) {\n document.addEventListener(entry[0] as any, entry[1] as any)\n }\n })\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n\n if (this.property && this.property.event) {\n Object.entries(this.property.event).forEach(entry => {\n if (entry[0]) {\n document.removeEventListener(entry[0] as any, entry[1] as any)\n }\n })\n }\n }\n\n _onTapType(e: Event) {\n var target = e.target as HTMLElement\n\n const increasingDirection = target?.closest('[data-value]')?.getAttribute('data-value')\n if (!increasingDirection) {\n return\n }\n\n this.dispatchEvent(\n new CustomEvent('i-need-selected', {\n bubbles: true,\n composed: true,\n detail: {\n callback: (selected: any[]) => {\n const table = selected[0].parent\n table.increaseLocation(increasingDirection, this.skipNumbering, this.startSection, this.startUnit)\n }\n }\n })\n )\n\n e.stopPropagation()\n }\n}\n"]}
|
package/dist/rack.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import * as THREE from 'three';
|
|
5
5
|
import { Stock } from './stock';
|
|
6
6
|
import { RealObject } from './threed/real-object';
|
|
7
|
-
|
|
7
|
+
class Rack extends RealObject {
|
|
8
8
|
constructor() {
|
|
9
9
|
super(...arguments);
|
|
10
10
|
this._frames = [];
|
|
@@ -175,4 +175,5 @@ Rack.frameMaterial = new THREE.MeshStandardMaterial({
|
|
|
175
175
|
});
|
|
176
176
|
Rack.rackFrameGeometry = new THREE.BoxGeometry(1, 1, 1);
|
|
177
177
|
Rack.boardGeometry = new THREE.PlaneGeometry(1, 1, 1, 1);
|
|
178
|
+
export { Rack };
|
|
178
179
|
//# sourceMappingURL=rack.js.map
|
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 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"]}
|
|
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/stock.d.ts
CHANGED
|
@@ -11,10 +11,10 @@ export declare class Stock extends RealObject<THREE.Mesh> {
|
|
|
11
11
|
model: Model;
|
|
12
12
|
constructor(component: Component, model: Model);
|
|
13
13
|
protected getObject3dInstance(): THREE.Mesh<THREE.BufferGeometry, THREE.Material | THREE.Material[]>;
|
|
14
|
-
getMaterial(index: number): THREE.Material
|
|
14
|
+
getMaterial(index: number): THREE.Material;
|
|
15
15
|
get visualizer(): Visualizer | undefined;
|
|
16
16
|
get stockMaterials(): THREE.Material[];
|
|
17
|
-
get userDefineDefaultMaterial(): THREE.Material
|
|
17
|
+
get userDefineDefaultMaterial(): THREE.Material;
|
|
18
18
|
get emptyMaterial(): THREE.Material;
|
|
19
19
|
build(): void;
|
|
20
20
|
createStock(w: number, h: number, d: number): void;
|
package/dist/stock.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import * as THREE from 'three';
|
|
5
5
|
import { RealObject } from './threed/real-object';
|
|
6
6
|
const STOCK_COLOR = '#ccaa76';
|
|
7
|
-
|
|
7
|
+
class Stock extends RealObject {
|
|
8
8
|
constructor(component, model) {
|
|
9
9
|
super(component);
|
|
10
10
|
this._hideEmptyStock = false;
|
|
@@ -212,4 +212,5 @@ Stock.defaultMaterial = new THREE.MeshStandardMaterial({
|
|
|
212
212
|
roughness: 0.7
|
|
213
213
|
});
|
|
214
214
|
Stock.stockGeometry = new THREE.BoxGeometry(1, 1, 1);
|
|
215
|
+
export { Stock };
|
|
215
216
|
//# sourceMappingURL=stock.js.map
|
package/dist/stock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stock.js","sourceRoot":"","sources":["../src/stock.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright � HatioLab Inc. All rights reserved.\n */\n\nimport { Component, Model } from '@hatiolab/things-scene'\nimport * as THREE from 'three'\nimport { RealObject } from './threed/real-object'\nimport { Visualizer } from './visualizer'\n\nconst STOCK_COLOR = '#ccaa76'\n\nexport class Stock extends RealObject<THREE.Mesh> {\n static defaultMaterial = new THREE.MeshStandardMaterial({\n color: STOCK_COLOR,\n side: THREE.FrontSide,\n roughness: 0.7\n })\n static stockGeometry = new THREE.BoxGeometry(1, 1, 1)\n\n _hideEmptyStock: boolean = false\n _focused: boolean = false\n _focusedAt?: number\n\n model: Model\n\n constructor(component: Component, model: Model) {\n super(component)\n this.model = model\n }\n\n protected getObject3dInstance() {\n return new THREE.Mesh()\n }\n\n getMaterial(index: number) {\n var visualizer = this.visualizer\n\n if (!(visualizer && visualizer && visualizer!.legendTarget && visualizer!.legendTarget.get('status')))\n return this.userDefineDefaultMaterial\n\n var stockStatus = visualizer.legendTarget.get('status')\n var range = stockStatus.ranges[index]\n if (!(range && range.color)) {\n this.stockMaterials[index] = this.userDefineDefaultMaterial\n }\n\n if (!this.stockMaterials[index]) {\n this.stockMaterials[index] = new THREE.MeshStandardMaterial({\n color: range.color,\n side: THREE.FrontSide,\n roughness: 0.7\n })\n }\n\n var alpha = range.color.replace(/^.*,(.+)\\)/, '$1')\n if (alpha > 0 && alpha < 1) {\n this.stockMaterials[index].opacity = alpha\n this.stockMaterials[index].transparent = true\n }\n\n return this.stockMaterials[index]\n }\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 stockMaterials() {\n return this.visualizer!._stock_materials\n }\n\n get userDefineDefaultMaterial() {\n var visualizer = this.visualizer\n\n if (!visualizer!._default_material) {\n if (!(visualizer && visualizer && visualizer!.legendTarget && visualizer!.legendTarget.get('status')))\n return Stock.defaultMaterial\n\n var stockStatus = visualizer!.legendTarget.get('status')\n var defaultColor = stockStatus.defaultColor\n\n if (!defaultColor) return Stock.defaultMaterial\n\n visualizer!._default_material = new THREE.MeshStandardMaterial({\n color: defaultColor,\n side: THREE.FrontSide,\n roughness: 0.7\n })\n var alpha = defaultColor.replace(/^.*,(.+)\\)/, '$1')\n if (alpha > 0 && alpha < 1) {\n visualizer!._default_material.opacity = alpha\n visualizer!._default_material.transparent = true\n }\n }\n return visualizer!._default_material\n }\n\n get emptyMaterial() {\n var visualizer = this.visualizer\n\n var defaultColor = STOCK_COLOR\n if (!visualizer!._empty_material) {\n if (visualizer && visualizer && visualizer!.legendTarget && visualizer!.legendTarget.get('status')) {\n var stockStatus = visualizer!.legendTarget.get('status')\n defaultColor = stockStatus.defaultColor || STOCK_COLOR\n }\n\n visualizer!._empty_material = new THREE.MeshStandardMaterial({\n color: defaultColor\n })\n var alpha = Number(defaultColor.replace(/^.*,(.+)\\)/, '$1'))\n if (alpha > 0 && alpha < 1) {\n visualizer!._empty_material.opacity = alpha\n visualizer!._empty_material.transparent = true\n } else {\n visualizer!._empty_material.opacity = 0.33\n visualizer!._empty_material.transparent = true\n }\n }\n\n return visualizer!._empty_material\n }\n\n build() {\n super.build()\n\n var visualizer = this.visualizer\n var { width, height, depth } = this.model\n\n this._hideEmptyStock = visualizer && visualizer!.model.hideEmptyStock\n\n this.createStock(width, height, depth)\n }\n\n createStock(w: number, h: number, d: number) {\n this.object3d.geometry = Stock.stockGeometry\n this.object3d.material = this._hideEmptyStock ? this.emptyMaterial : this.userDefineDefaultMaterial\n\n this.object3d.scale.set(w, d, h)\n\n this.object3d.receiveShadow = true\n\n this.object3d.castShadow = true\n this.object3d.onBeforeRender = () => {\n this.onBeforeRender()\n }\n }\n\n onchangeStockData(data: any) {\n this.object3d.userData = {\n ...this.object3d.userData,\n data\n }\n var visualizer = this.visualizer\n\n if (!(visualizer && visualizer && visualizer!.legendTarget && visualizer!.legendTarget.get('status'))) return\n\n var stockStatus = visualizer!.legendTarget.get('status') as {\n field: string\n ranges: { min: number; max: number }[]\n }\n\n var statusField = stockStatus.field\n var ranges = stockStatus.ranges\n\n if (!(statusField && ranges)) return\n\n var items = data.items\n\n if (!items) {\n this.object3d.material = this._hideEmptyStock ? this.emptyMaterial : this.userDefineDefaultMaterial\n return\n }\n\n for (let item of items) {\n var status = item && item[statusField]\n\n if (status == undefined) {\n this.object3d.material = this._hideEmptyStock ? this.emptyMaterial : this.userDefineDefaultMaterial\n return\n }\n\n var isInRanges = ranges.some((range, index) => {\n let { min, max } = range\n\n min = Number(min) || min\n max = Number(max) || max\n\n if (max > status) {\n if (min !== undefined) {\n if (min <= status) {\n this.object3d.material = this.getMaterial(index)\n } else return false\n } else {\n this.object3d.material = this.getMaterial(index)\n }\n\n return true\n } else {\n this.object3d.material = this._hideEmptyStock ? this.emptyMaterial : this.userDefineDefaultMaterial\n }\n })\n if (!isInRanges) {\n this.object3d.material = this.userDefineDefaultMaterial\n }\n }\n }\n\n onBeforeRender = () => {\n if (this._focused) {\n var lastTime = performance.now() - this._focusedAt!\n var progress = lastTime / 2000\n\n this.object3d.rotation.y = 2 * Math.PI * progress\n this.component.invalidate()\n } else if (this._focusedAt) {\n delete this._focusedAt\n this.object3d.rotation.y = 0\n this.component.invalidate()\n }\n }\n\n onmouseup(e: MouseEvent, visualizer: Visualizer, callback: (arg: { data: any; location: string }) => void) {\n if (!this.object3d.visible) return\n\n if (!this.object3d.userData || !this.object3d.userData.data)\n this.object3d.userData = {\n ...this.object3d.userData,\n data: {\n loc: this.object3d.name,\n items: [\n {\n loc: this.object3d.name\n }\n ]\n }\n }\n\n if (callback && typeof callback == 'function') {\n callback({\n ...this.object3d.userData.data,\n color: '#' + (this.object3d.material as any).color?.getHexString()\n })\n }\n }\n\n // all update functions should be intentionally empty. important!\n updateTransform() {}\n updateDimension() {}\n updateAlpha() {}\n updateFillStyle() {}\n updateStrokeStyle() {}\n updateHidden() {}\n updateText() {}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"stock.js","sourceRoot":"","sources":["../src/stock.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright � HatioLab Inc. All rights reserved.\n */\n\nimport { Component, Model } from '@hatiolab/things-scene'\nimport * as THREE from 'three'\nimport { RealObject } from './threed/real-object'\nimport { Visualizer } from './visualizer'\n\nconst STOCK_COLOR = '#ccaa76'\n\nexport class Stock extends RealObject<THREE.Mesh> {\n static defaultMaterial = new THREE.MeshStandardMaterial({\n color: STOCK_COLOR,\n side: THREE.FrontSide,\n roughness: 0.7\n })\n static stockGeometry = new THREE.BoxGeometry(1, 1, 1)\n\n _hideEmptyStock: boolean = false\n _focused: boolean = false\n _focusedAt?: number\n\n model: Model\n\n constructor(component: Component, model: Model) {\n super(component)\n this.model = model\n }\n\n protected getObject3dInstance() {\n return new THREE.Mesh()\n }\n\n getMaterial(index: number) {\n var visualizer = this.visualizer\n\n if (!(visualizer && visualizer && visualizer!.legendTarget && visualizer!.legendTarget.get('status')))\n return this.userDefineDefaultMaterial\n\n var stockStatus = visualizer.legendTarget.get('status')\n var range = stockStatus.ranges[index]\n if (!(range && range.color)) {\n this.stockMaterials[index] = this.userDefineDefaultMaterial\n }\n\n if (!this.stockMaterials[index]) {\n this.stockMaterials[index] = new THREE.MeshStandardMaterial({\n color: range.color,\n side: THREE.FrontSide,\n roughness: 0.7\n })\n }\n\n var alpha = range.color.replace(/^.*,(.+)\\)/, '$1')\n if (alpha > 0 && alpha < 1) {\n this.stockMaterials[index].opacity = alpha\n this.stockMaterials[index].transparent = true\n }\n\n return this.stockMaterials[index]\n }\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 stockMaterials() {\n return this.visualizer!._stock_materials\n }\n\n get userDefineDefaultMaterial() {\n var visualizer = this.visualizer\n\n if (!visualizer!._default_material) {\n if (!(visualizer && visualizer && visualizer!.legendTarget && visualizer!.legendTarget.get('status')))\n return Stock.defaultMaterial\n\n var stockStatus = visualizer!.legendTarget.get('status')\n var defaultColor = stockStatus.defaultColor\n\n if (!defaultColor) return Stock.defaultMaterial\n\n visualizer!._default_material = new THREE.MeshStandardMaterial({\n color: defaultColor,\n side: THREE.FrontSide,\n roughness: 0.7\n })\n var alpha = defaultColor.replace(/^.*,(.+)\\)/, '$1')\n if (alpha > 0 && alpha < 1) {\n visualizer!._default_material.opacity = alpha\n visualizer!._default_material.transparent = true\n }\n }\n return visualizer!._default_material\n }\n\n get emptyMaterial() {\n var visualizer = this.visualizer\n\n var defaultColor = STOCK_COLOR\n if (!visualizer!._empty_material) {\n if (visualizer && visualizer && visualizer!.legendTarget && visualizer!.legendTarget.get('status')) {\n var stockStatus = visualizer!.legendTarget.get('status')\n defaultColor = stockStatus.defaultColor || STOCK_COLOR\n }\n\n visualizer!._empty_material = new THREE.MeshStandardMaterial({\n color: defaultColor\n })\n var alpha = Number(defaultColor.replace(/^.*,(.+)\\)/, '$1'))\n if (alpha > 0 && alpha < 1) {\n visualizer!._empty_material.opacity = alpha\n visualizer!._empty_material.transparent = true\n } else {\n visualizer!._empty_material.opacity = 0.33\n visualizer!._empty_material.transparent = true\n }\n }\n\n return visualizer!._empty_material\n }\n\n build() {\n super.build()\n\n var visualizer = this.visualizer\n var { width, height, depth } = this.model\n\n this._hideEmptyStock = visualizer && visualizer!.model.hideEmptyStock\n\n this.createStock(width, height, depth)\n }\n\n createStock(w: number, h: number, d: number) {\n this.object3d.geometry = Stock.stockGeometry\n this.object3d.material = this._hideEmptyStock ? this.emptyMaterial : this.userDefineDefaultMaterial\n\n this.object3d.scale.set(w, d, h)\n\n this.object3d.receiveShadow = true\n\n this.object3d.castShadow = true\n this.object3d.onBeforeRender = () => {\n this.onBeforeRender()\n }\n }\n\n onchangeStockData(data: any) {\n this.object3d.userData = {\n ...this.object3d.userData,\n data\n }\n var visualizer = this.visualizer\n\n if (!(visualizer && visualizer && visualizer!.legendTarget && visualizer!.legendTarget.get('status'))) return\n\n var stockStatus = visualizer!.legendTarget.get('status') as {\n field: string\n ranges: { min: number; max: number }[]\n }\n\n var statusField = stockStatus.field\n var ranges = stockStatus.ranges\n\n if (!(statusField && ranges)) return\n\n var items = data.items\n\n if (!items) {\n this.object3d.material = this._hideEmptyStock ? this.emptyMaterial : this.userDefineDefaultMaterial\n return\n }\n\n for (let item of items) {\n var status = item && item[statusField]\n\n if (status == undefined) {\n this.object3d.material = this._hideEmptyStock ? this.emptyMaterial : this.userDefineDefaultMaterial\n return\n }\n\n var isInRanges = ranges.some((range, index) => {\n let { min, max } = range\n\n min = Number(min) || min\n max = Number(max) || max\n\n if (max > status) {\n if (min !== undefined) {\n if (min <= status) {\n this.object3d.material = this.getMaterial(index)\n } else return false\n } else {\n this.object3d.material = this.getMaterial(index)\n }\n\n return true\n } else {\n this.object3d.material = this._hideEmptyStock ? this.emptyMaterial : this.userDefineDefaultMaterial\n }\n })\n if (!isInRanges) {\n this.object3d.material = this.userDefineDefaultMaterial\n }\n }\n }\n\n onBeforeRender = () => {\n if (this._focused) {\n var lastTime = performance.now() - this._focusedAt!\n var progress = lastTime / 2000\n\n this.object3d.rotation.y = 2 * Math.PI * progress\n this.component.invalidate()\n } else if (this._focusedAt) {\n delete this._focusedAt\n this.object3d.rotation.y = 0\n this.component.invalidate()\n }\n }\n\n onmouseup(e: MouseEvent, visualizer: Visualizer, callback: (arg: { data: any; location: string }) => void) {\n if (!this.object3d.visible) return\n\n if (!this.object3d.userData || !this.object3d.userData.data)\n this.object3d.userData = {\n ...this.object3d.userData,\n data: {\n loc: this.object3d.name,\n items: [\n {\n loc: this.object3d.name\n }\n ]\n }\n }\n\n if (callback && typeof callback == 'function') {\n callback({\n ...this.object3d.userData.data,\n color: '#' + (this.object3d.material as any).color?.getHexString()\n })\n }\n }\n\n // all update functions should be intentionally empty. important!\n updateTransform() {}\n updateDimension() {}\n updateAlpha() {}\n updateFillStyle() {}\n updateStrokeStyle() {}\n updateHidden() {}\n updateText() {}\n}\n"]}
|
package/dist/three-controls.js
CHANGED
|
@@ -46,7 +46,7 @@ var ThreeControls = function (object, component) {
|
|
|
46
46
|
this.keyPanSpeed = 7.0; // pixels moved per arrow key push
|
|
47
47
|
// Set to true to automatically rotate around the target
|
|
48
48
|
// If auto-rotate is enabled, you must call controls.update() in your animation loop
|
|
49
|
-
this.autoRotate = this.component.state.autoRotate || false;
|
|
49
|
+
this.autoRotate = (this.component.app && !this.component.app.isEditMode && this.component.state.autoRotate) || false;
|
|
50
50
|
this.autoRotateSpeed = this.component.state.rotationSpeed || 2.0; // 30 seconds per round when fps is 60
|
|
51
51
|
// Set to false to disable use of the keys
|
|
52
52
|
this.enableKeys = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"three-controls.js","sourceRoot":"","sources":["../src/three-controls.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n/**\n * @author qiao / https://github.com/qiao\n * @author mrdoob / http://mrdoob.com\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author erich666 / http://erichaines.com\n */\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one finger move\n// Zoom - middle mouse, or mousewheel / touch: two finger spread or squish\n// Pan - right mouse, or arrow keys / touch: three finger swipe\nimport { Component } from '@hatiolab/things-scene'\nimport * as THREE from 'three'\n\nvar ThreeControls = function (this: any, object: THREE.Camera, component: Component) {\n this.object = object\n\n this.component = component\n\n // Set to false to disable this control\n this.enabled = true\n\n // \"target\" sets the location of focus, where the object orbits around\n this.target = new THREE.Vector3()\n\n // How far you can dolly in and out ( PerspectiveCamera only )\n this.minDistance = 0\n this.maxDistance = Infinity\n\n // How far you can zoom in and out ( OrthographicCamera only )\n this.minZoom = 0\n this.maxZoom = Infinity\n\n // How far you can orbit vertically, upper and lower limits.\n // Range is 0 to Math.PI radians.\n this.minPolarAngle = 0 // radians\n this.maxPolarAngle = Math.PI // radians\n\n // How far you can orbit horizontally, upper and lower limits.\n // If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ].\n this.minAzimuthAngle = -Infinity // radians\n this.maxAzimuthAngle = Infinity // radians\n\n // Set to true to enable damping (inertia)\n // If damping is enabled, you must call controls.update() in your animation loop\n this.enableDamping = false\n this.dampingFactor = 0.25\n\n // This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n // Set to false to disable zooming\n this.enableZoom = true\n this.zoomSpeed = 1.0\n\n // Set to false to disable rotating\n this.enableRotate = true\n this.rotateSpeed = 1.0\n\n // Set to false to disable panning\n this.enablePan = true\n this.keyPanSpeed = 7.0 // pixels moved per arrow key push\n\n // Set to true to automatically rotate around the target\n // If auto-rotate is enabled, you must call controls.update() in your animation loop\n this.autoRotate = this.component.state.autoRotate || false\n this.autoRotateSpeed = this.component.state.rotationSpeed || 2.0 // 30 seconds per round when fps is 60\n\n // Set to false to disable use of the keys\n this.enableKeys = true\n\n // The four arrow keys\n this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 }\n\n // Mouse buttons\n this.mouseButtons = { ORBIT: THREE.MOUSE.LEFT, ZOOM: THREE.MOUSE.MIDDLE, PAN: THREE.MOUSE.RIGHT }\n\n // for reset\n this.target0 = this.target.clone()\n this.position0 = this.object.position.clone()\n this.zoom0 = this.object.zoom\n\n // flags\n this.cameraChanged = false\n\n //\n // public methods\n //\n\n this.getPolarAngle = function () {\n return spherical.phi\n }\n\n this.getAzimuthalAngle = function () {\n return spherical.theta\n }\n\n this.saveState = function () {\n scope.target0.copy(scope.target)\n scope.position0.copy(scope.object.position)\n scope.zoom0 = scope.object.zoom\n }\n\n this.reset = function () {\n scope.target.copy(scope.target0)\n scope.object.position.copy(scope.position0)\n scope.object.zoom = scope.zoom0\n\n scope.object.updateProjectionMatrix()\n // scope.dispatchEvent( changeEvent );\n\n scope.update()\n\n state = STATE.NONE\n }\n\n // this method is exposed, but perhaps it would be better if we can make it private...\n this.update = (function () {\n var offset = new THREE.Vector3()\n\n // so camera.up is the orbit axis\n var quat = new THREE.Quaternion().setFromUnitVectors(object.up, new THREE.Vector3(0, 1, 0))\n var quatInverse = quat.clone().invert()\n\n var lastPosition = new THREE.Vector3()\n var lastQuaternion = new THREE.Quaternion()\n\n return function update() {\n // if (!(scope.cameraChanged || scope.autoRotate))\n // return false;\n\n var position = scope.object.position\n\n offset.copy(position).sub(scope.target)\n\n // rotate offset to \"y-axis-is-up\" space\n offset.applyQuaternion(quat)\n\n // angle from z-axis around y-axis\n spherical.setFromVector3(offset)\n\n if (scope.autoRotate && state === STATE.NONE) {\n // theta = getAutoRotationAngle();\n // thetaDelta = - getAutoRotationAngle();\n // theta = 0;\n\n rotateLeft(getAutoRotationAngle())\n scope.component.invalidate()\n // spherical.theta = getAutoRotationAngle();\n }\n\n spherical.theta += sphericalDelta.theta\n spherical.phi += sphericalDelta.phi\n\n // restrict theta to be between desired limits\n spherical.theta = Math.max(scope.minAzimuthAngle, Math.min(scope.maxAzimuthAngle, spherical.theta))\n\n // restrict phi to be between desired limits\n spherical.phi = Math.max(scope.minPolarAngle, Math.min(scope.maxPolarAngle, spherical.phi))\n\n spherical.makeSafe()\n\n spherical.radius *= scale\n\n // restrict radius to be between desired limits\n spherical.radius = Math.max(scope.minDistance, Math.min(scope.maxDistance, spherical.radius))\n\n // move target to panned location\n scope.target.add(panOffset)\n\n offset.setFromSpherical(spherical)\n\n // rotate offset back to \"camera-up-vector-is-up\" space\n offset.applyQuaternion(quatInverse)\n\n position.copy(scope.target).add(offset)\n\n scope.object.lookAt(scope.target)\n\n if (scope.enableDamping === true) {\n sphericalDelta.theta *= 1 - scope.dampingFactor\n sphericalDelta.phi *= 1 - scope.dampingFactor\n } else {\n sphericalDelta.set(0, 0, 0)\n }\n\n scale = 1\n panOffset.set(0, 0, 0)\n\n // update condition is:\n // min(camera displacement, camera rotation in radians)^2 > EPS\n // using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n // if ((scope.cameraChanged || zoomChanged) && (\n // lastPosition.distanceToSquared(scope.object.position) > EPS ||\n // 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS)) {\n if (\n zoomChanged ||\n lastPosition.distanceToSquared(scope.object.position) > EPS ||\n 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS\n ) {\n lastPosition.copy(scope.object.position)\n lastQuaternion.copy(scope.object.quaternion)\n\n scope.component.invalidate()\n scope.cameraChanged = false\n zoomChanged = false\n\n return true\n }\n\n // if (this.autoRotate) {\n // scope.component.invalidate()\n // }\n return false\n }\n })()\n\n this.dispose = function () {}\n\n //\n // event handlers - FSM: listen for events and reset state\n //\n\n this.onMouseDown = function (event: MouseEvent) {}\n\n this.onMouseMove = function (event: MouseEvent) {}\n\n this.onMouseUp = function (event: MouseEvent) {}\n\n this.onDragStart = function (event: DragEvent) {\n if (this.enabled === false || this.enableRotate === false) return\n\n scope.component.stop()\n this.autoRotate = false\n\n if (event.altKey === true) state = STATE.PAN\n else state = STATE.ROTATE\n\n switch (state) {\n case STATE.ROTATE:\n if (this.enableRotate) handleDragStartRotate(event)\n break\n\n case STATE.DOLLY:\n if (this.enableZoom) handleDragStartDolly(event)\n break\n\n case STATE.PAN:\n if (this.enablePan) handleDragStartPan(event)\n break\n }\n }\n\n this.onDragMove = function (event: DragEvent) {\n if (!this.enabled) return\n\n if (event.altKey === true) state = STATE.PAN\n else state = STATE.ROTATE\n\n switch (state) {\n case STATE.ROTATE:\n if (this.enableRotate) handleDragMoveRotate(event)\n break\n\n case STATE.DOLLY:\n if (this.enableZoom) handleDragMoveDolly(event)\n break\n\n case STATE.PAN:\n if (this.enablePan) handleDragMovePan(event)\n break\n }\n }\n\n this.onDragEnd = function (event: DragEvent) {\n if (this.enabled === false || this.enableRotate === false) return\n\n state = STATE.NONE\n\n START_TIME = null\n this.autoRotate = this.component.state.autoRotate || false\n\n scope.component.threed_animate()\n // scope.update();\n }\n\n this.onKeyDown = function (event: KeyboardEvent) {\n if (this.enabled === false || this.enableKeys === false || this.enablePan === false) return\n\n handleKeyDown(event)\n }\n\n this.onTouchStart = function (event: TouchEvent) {\n if (this.enabled === false) return\n\n switch (event.touches.length) {\n case 1: // one-fingered touch: rotate\n if (this.enableRotate === false) return\n handleTouchStartRotate(event)\n state = STATE.TOUCH_ROTATE\n break\n\n case 2: // two-fingered touch: pan\n this.lastScale = (event as any).scale || 1\n if (this.enablePan === false) return\n handleTouchStartPan(event)\n state = STATE.TOUCH_PAN\n break\n // case 2: // two-fingered touch: dolly\n // if ( this.enableZoom === false ) return;\n // handleTouchStartDolly( event );\n // state = STATE.TOUCH_DOLLY;\n // break;\n\n // case 3: // three-fingered touch: pan\n // if ( this.enablePan === false ) return;\n // handleTouchStartPan( event );\n // state = STATE.TOUCH_PAN;\n // break;\n\n default:\n state = STATE.NONE\n }\n }\n\n this.onTouchMove = function (event: TouchEvent) {\n if (this.enabled === false) return\n\n switch (event.touches.length) {\n case 1: // one-fingered touch: rotate\n if (this.enableRotate === false) return\n if (state !== STATE.TOUCH_ROTATE) return // is this needed?...\n handleTouchMoveRotate(event)\n break\n case 2: // two-fingered touch: pan\n if (Math.abs(this.lastScale - (event as any).scale || 1) > 0.05) {\n return\n }\n if (this.enablePan === false) return\n if (state !== STATE.TOUCH_PAN) return // is this needed?...\n handleTouchMovePan(event)\n break\n // case 2: // two-fingered touch: dolly\n // if ( this.enableZoom === false ) return;\n // if ( state !== STATE.TOUCH_DOLLY ) return; // is this needed?...\n // handleTouchMoveDolly( event );\n // break;\n // case 3: // three-fingered touch: pan\n // if ( this.enablePan === false ) return;\n // if ( state !== STATE.TOUCH_PAN ) return; // is this needed?...\n // handleTouchMovePan( event );\n // break;\n default:\n state = STATE.NONE\n }\n }\n\n this.onTouchEnd = function (event: TouchEvent) {\n if (this.enabled === false) return\n this.lastScale = 1\n\n handleTouchEnd(event)\n // this.dispatchEvent( endEvent );\n state = STATE.NONE\n }\n\n this.doAutoRotate = function (autoRotate: boolean) {\n START_TIME = null\n this.cameraChanged = true\n this.autoRotate = autoRotate\n this.update()\n }\n\n //\n // internals\n //\n\n var scope = this\n\n var changeEvent = { type: 'change' }\n var startEvent = { type: 'start' }\n var endEvent = { type: 'end' }\n\n var STATE = { NONE: -1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY: 4, TOUCH_PAN: 5 }\n\n var state = STATE.NONE\n\n var EPS = 0.000001\n\n // current position in spherical coordinates\n var spherical = new THREE.Spherical()\n var sphericalDelta = new THREE.Spherical()\n\n var scale = 1\n var panOffset = new THREE.Vector3()\n var zoomChanged = false\n\n var rotateStart = new THREE.Vector2()\n var rotateEnd = new THREE.Vector2()\n var rotateDelta = new THREE.Vector2()\n\n var panStart = new THREE.Vector2()\n var panEnd = new THREE.Vector2()\n var panDelta = new THREE.Vector2()\n\n var dollyStart = new THREE.Vector2()\n var dollyEnd = new THREE.Vector2()\n var dollyDelta = new THREE.Vector2()\n\n var START_TIME: number | null = null\n var offsetTheta = 0\n\n function getAutoRotationAngle() {\n if (!START_TIME) {\n START_TIME = performance.now()\n offsetTheta = spherical.theta\n return 0\n }\n\n var lastTime = performance.now() - START_TIME\n var progress = lastTime / (60000 / scope.autoRotateSpeed)\n\n // return - 2 * Math.PI * progress;\n return 2 * Math.PI * progress + spherical.theta - offsetTheta\n // return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n }\n\n function getZoomScale() {\n return Math.pow(0.95, scope.zoomSpeed)\n }\n\n function rotateLeft(angle: number) {\n sphericalDelta.theta -= angle\n }\n\n function rotateUp(angle: number) {\n sphericalDelta.phi -= angle\n }\n\n var panLeft = (function () {\n var v = new THREE.Vector3()\n\n return function panLeft(distance: number, objectMatrix: any) {\n v.setFromMatrixColumn(objectMatrix, 0) // get X column of objectMatrix\n v.multiplyScalar(-distance)\n\n panOffset.add(v)\n }\n })()\n\n var panUp = (function () {\n var v = new THREE.Vector3()\n\n return function panUp(distance: number, objectMatrix: any) {\n v.setFromMatrixColumn(objectMatrix, 1) // get Y column of objectMatrix\n v.multiplyScalar(distance)\n\n panOffset.add(v)\n }\n })()\n\n // deltaX and deltaY are in pixels; right and down are positive\n var pan = (function () {\n var offset = new THREE.Vector3()\n\n return function pan(deltaX: number, deltaY: number) {\n // var element = scope.component === document ? scope.component.body : scope.component\n const { width, height } = scope.component.bounds\n\n if (scope.object.isPerspectiveCamera) {\n // perspective\n var position = scope.object.position\n offset.copy(position).sub(scope.target)\n var targetDistance = offset.length()\n\n // half of the fov is center to top of screen\n targetDistance *= Math.tan(((scope.object.fov / 2) * Math.PI) / 180.0)\n\n // we actually don't use screenWidth, since perspective camera is fixed to screen height\n panLeft((2 * deltaX * targetDistance) / height, scope.object.matrix)\n // panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n panUp((2 * deltaY * targetDistance) / height, scope.object.matrix)\n // panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n } else if (scope.object.isOrthographicCamera) {\n // orthographic\n panLeft((deltaX * (scope.object.right - scope.object.left)) / scope.object.zoom / width, scope.object.matrix)\n // panLeft( deltaX * ( scope.object.right - scope.object.left ) / element.clientWidth, scope.object.matrix );\n panUp((deltaY * (scope.object.top - scope.object.bottom)) / scope.object.zoom / height, scope.object.matrix)\n // panUp( deltaY * ( scope.object.top - scope.object.bottom ) / element.clientHeight, scope.object.matrix );\n } else {\n // camera neither orthographic nor perspective\n console.warn('WARNING: ThreeControls.js encountered an unknown camera type - pan disabled.')\n scope.enablePan = false\n }\n }\n })()\n\n function dollyIn(dollyScale: number) {\n if (scope.object.isPerspectiveCamera) {\n scale /= dollyScale\n } else if (scope.object.isOrthographicCamera) {\n scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom * dollyScale))\n scope.object.updateProjectionMatrix()\n zoomChanged = true\n } else {\n console.warn('WARNING: ThreeControls.js encountered an unknown camera type - dolly/zoom disabled.')\n scope.enableZoom = false\n }\n }\n\n function dollyOut(dollyScale: number) {\n if (scope.object.isPerspectiveCamera) {\n scale *= dollyScale\n } else if (scope.object.isOrthographicCamera) {\n scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / dollyScale))\n scope.object.updateProjectionMatrix()\n zoomChanged = true\n } else {\n console.warn('WARNING: ThreeControls.js encountered an unknown camera type - dolly/zoom disabled.')\n scope.enableZoom = false\n }\n }\n\n //\n // event callbacks - update the object state\n //\n\n function handleDragStartRotate(event: DragEvent) {\n rotateStart.set(event.offsetX, event.offsetY)\n }\n\n function handleDragStartDolly(event: DragEvent) {\n dollyStart.set(event.offsetX, event.offsetY)\n }\n\n function handleDragStartPan(event: DragEvent) {\n panStart.set(event.offsetX, event.offsetY)\n }\n\n function handleDragMoveRotate(event: DragEvent) {\n rotateEnd.set(event.offsetX, event.offsetY)\n rotateDelta.subVectors(rotateEnd, rotateStart)\n\n var element = scope.component\n\n // rotating across whole screen goes 360 degrees around\n rotateLeft(((2 * Math.PI * rotateDelta.x) / element.get('width')) * scope.rotateSpeed)\n\n // rotating up and down along whole screen attempts to go 360, but limited to 180\n rotateUp(((2 * Math.PI * rotateDelta.y) / element.get('height')) * scope.rotateSpeed)\n\n rotateStart.copy(rotateEnd)\n\n scope.update()\n }\n\n function handleDragMoveDolly(event: DragEvent) {\n dollyEnd.set(event.offsetX, event.offsetY)\n\n dollyDelta.subVectors(dollyEnd, dollyStart)\n\n if (dollyDelta.y > 0) {\n dollyIn(getZoomScale())\n } else if (dollyDelta.y < 0) {\n dollyOut(getZoomScale())\n }\n\n dollyStart.copy(dollyEnd)\n\n scope.update()\n }\n\n function handleDragMovePan(event: DragEvent) {\n panEnd.set(event.offsetX, event.offsetY)\n\n panDelta.subVectors(panEnd, panStart)\n\n pan(panDelta.x, panDelta.y)\n\n panStart.copy(panEnd)\n\n scope.update()\n }\n\n function handleMouseUp(event: MouseEvent) {}\n\n function handleKeyDown(event: KeyboardEvent) {\n switch (event.keyCode) {\n case scope.keys.UP:\n pan(0, scope.keyPanSpeed)\n scope.update()\n break\n\n case scope.keys.BOTTOM:\n pan(0, -scope.keyPanSpeed)\n scope.update()\n break\n\n case scope.keys.LEFT:\n pan(scope.keyPanSpeed, 0)\n scope.update()\n break\n\n case scope.keys.RIGHT:\n pan(-scope.keyPanSpeed, 0)\n scope.update()\n break\n }\n }\n\n function handleTouchStartRotate(event: TouchEvent) {\n var x = (event.touches[0] as any).offsetX || event.touches[0].pageX\n var y = (event.touches[0] as any).offsetY || event.touches[0].pageY\n\n rotateStart.set(x, y)\n }\n\n function handleTouchStartDolly(event: TouchEvent) {\n var dx = event.touches[0].pageX - event.touches[1].pageX\n var dy = event.touches[0].pageY - event.touches[1].pageY\n\n var distance = Math.sqrt(dx * dx + dy * dy)\n\n dollyStart.set(0, distance)\n }\n\n function handleTouchStartPan(event: TouchEvent) {\n var x = (event.touches[0] as any).offsetX || event.touches[0].pageX\n var y = (event.touches[0] as any).offsetY || event.touches[0].pageY\n\n panStart.set(x, y)\n }\n\n function handleTouchMoveRotate(event: TouchEvent) {\n var x = (event.touches[0] as any).offsetX || event.touches[0].pageX\n var y = (event.touches[0] as any).offsetY || event.touches[0].pageY\n\n rotateEnd.set(x, y)\n rotateDelta.subVectors(rotateEnd, rotateStart)\n\n var element = scope.component === document ? scope.component.body : scope.component\n\n // rotating across whole screen goes 360 degrees around\n rotateLeft(((2 * Math.PI * rotateDelta.x) / element.model.width) * scope.rotateSpeed)\n // rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed );\n\n // rotating up and down along whole screen attempts to go 360, but limited to 180\n rotateUp(((2 * Math.PI * rotateDelta.y) / element.model.height) * scope.rotateSpeed)\n // rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed );\n\n rotateStart.copy(rotateEnd)\n\n scope.update()\n }\n\n function handleTouchMoveDolly(event: TouchEvent) {\n var dx = event.touches[0].pageX - event.touches[1].pageX\n var dy = event.touches[0].pageY - event.touches[1].pageY\n\n var distance = Math.sqrt(dx * dx + dy * dy)\n\n dollyEnd.set(0, distance)\n\n dollyDelta.subVectors(dollyEnd, dollyStart)\n\n if (dollyDelta.y > 0) {\n dollyOut(getZoomScale())\n } else if (dollyDelta.y < 0) {\n dollyIn(getZoomScale())\n }\n\n dollyStart.copy(dollyEnd)\n\n scope.update()\n }\n\n function handleTouchMovePan(event: TouchEvent) {\n var x = (event.touches[0] as any).offsetX || event.touches[0].pageX\n var y = (event.touches[0] as any).offsetY || event.touches[0].pageY\n\n panEnd.set(x, y)\n\n panDelta.subVectors(panEnd, panStart)\n\n pan(panDelta.x, panDelta.y)\n\n panStart.copy(panEnd)\n\n scope.update()\n }\n\n function handleTouchEnd(event: TouchEvent) {}\n\n this.update()\n}\n\nThreeControls.prototype = {} //Object.create( THREE.EventDispatcher.prototype );\nThreeControls.prototype.constructor = ThreeControls\nObject.defineProperties(ThreeControls.prototype, {\n center: {\n get: function () {\n console.warn('THREE.OrbitControls: .center has been renamed to .target')\n return this.target\n }\n },\n\n // backward compatibility\n\n noZoom: {\n get: function () {\n console.warn('THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.')\n return !this.enableZoom\n },\n\n set: function (value) {\n console.warn('THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.')\n this.enableZoom = !value\n }\n },\n\n noRotate: {\n get: function () {\n console.warn('THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.')\n return !this.enableRotate\n },\n\n set: function (value) {\n console.warn('THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.')\n this.enableRotate = !value\n }\n },\n\n noPan: {\n get: function () {\n console.warn('THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.')\n return !this.enablePan\n },\n\n set: function (value) {\n console.warn('THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.')\n this.enablePan = !value\n }\n },\n\n noKeys: {\n get: function () {\n console.warn('THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.')\n return !this.enableKeys\n },\n\n set: function (value) {\n console.warn('THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.')\n this.enableKeys = !value\n }\n },\n\n staticMoving: {\n get: function () {\n console.warn('THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.')\n return !this.enableDamping\n },\n\n set: function (value) {\n console.warn('THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.')\n this.enableDamping = !value\n }\n },\n\n dynamicDampingFactor: {\n get: function () {\n console.warn('THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.')\n return this.dampingFactor\n },\n\n set: function (value) {\n console.warn('THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.')\n this.dampingFactor = value\n }\n }\n})\n\nexport default ThreeControls\n"]}
|
|
1
|
+
{"version":3,"file":"three-controls.js","sourceRoot":"","sources":["../src/three-controls.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n/**\n * @author qiao / https://github.com/qiao\n * @author mrdoob / http://mrdoob.com\n * @author alteredq / http://alteredqualia.com/\n * @author WestLangley / http://github.com/WestLangley\n * @author erich666 / http://erichaines.com\n */\n\n// This set of controls performs orbiting, dollying (zooming), and panning.\n// Unlike TrackballControls, it maintains the \"up\" direction object.up (+Y by default).\n//\n// Orbit - left mouse / touch: one finger move\n// Zoom - middle mouse, or mousewheel / touch: two finger spread or squish\n// Pan - right mouse, or arrow keys / touch: three finger swipe\nimport { Component } from '@hatiolab/things-scene'\nimport * as THREE from 'three'\n\nvar ThreeControls = function (this: any, object: THREE.Camera, component: Component) {\n this.object = object\n\n this.component = component\n\n // Set to false to disable this control\n this.enabled = true\n\n // \"target\" sets the location of focus, where the object orbits around\n this.target = new THREE.Vector3()\n\n // How far you can dolly in and out ( PerspectiveCamera only )\n this.minDistance = 0\n this.maxDistance = Infinity\n\n // How far you can zoom in and out ( OrthographicCamera only )\n this.minZoom = 0\n this.maxZoom = Infinity\n\n // How far you can orbit vertically, upper and lower limits.\n // Range is 0 to Math.PI radians.\n this.minPolarAngle = 0 // radians\n this.maxPolarAngle = Math.PI // radians\n\n // How far you can orbit horizontally, upper and lower limits.\n // If set, must be a sub-interval of the interval [ - Math.PI, Math.PI ].\n this.minAzimuthAngle = -Infinity // radians\n this.maxAzimuthAngle = Infinity // radians\n\n // Set to true to enable damping (inertia)\n // If damping is enabled, you must call controls.update() in your animation loop\n this.enableDamping = false\n this.dampingFactor = 0.25\n\n // This option actually enables dollying in and out; left as \"zoom\" for backwards compatibility.\n // Set to false to disable zooming\n this.enableZoom = true\n this.zoomSpeed = 1.0\n\n // Set to false to disable rotating\n this.enableRotate = true\n this.rotateSpeed = 1.0\n\n // Set to false to disable panning\n this.enablePan = true\n this.keyPanSpeed = 7.0 // pixels moved per arrow key push\n\n // Set to true to automatically rotate around the target\n // If auto-rotate is enabled, you must call controls.update() in your animation loop\n this.autoRotate = (this.component.app && !this.component.app.isEditMode && this.component.state.autoRotate) || false\n this.autoRotateSpeed = this.component.state.rotationSpeed || 2.0 // 30 seconds per round when fps is 60\n\n // Set to false to disable use of the keys\n this.enableKeys = true\n\n // The four arrow keys\n this.keys = { LEFT: 37, UP: 38, RIGHT: 39, BOTTOM: 40 }\n\n // Mouse buttons\n this.mouseButtons = { ORBIT: THREE.MOUSE.LEFT, ZOOM: THREE.MOUSE.MIDDLE, PAN: THREE.MOUSE.RIGHT }\n\n // for reset\n this.target0 = this.target.clone()\n this.position0 = this.object.position.clone()\n this.zoom0 = this.object.zoom\n\n // flags\n this.cameraChanged = false\n\n //\n // public methods\n //\n\n this.getPolarAngle = function () {\n return spherical.phi\n }\n\n this.getAzimuthalAngle = function () {\n return spherical.theta\n }\n\n this.saveState = function () {\n scope.target0.copy(scope.target)\n scope.position0.copy(scope.object.position)\n scope.zoom0 = scope.object.zoom\n }\n\n this.reset = function () {\n scope.target.copy(scope.target0)\n scope.object.position.copy(scope.position0)\n scope.object.zoom = scope.zoom0\n\n scope.object.updateProjectionMatrix()\n // scope.dispatchEvent( changeEvent );\n\n scope.update()\n\n state = STATE.NONE\n }\n\n // this method is exposed, but perhaps it would be better if we can make it private...\n this.update = (function () {\n var offset = new THREE.Vector3()\n\n // so camera.up is the orbit axis\n var quat = new THREE.Quaternion().setFromUnitVectors(object.up, new THREE.Vector3(0, 1, 0))\n var quatInverse = quat.clone().invert()\n\n var lastPosition = new THREE.Vector3()\n var lastQuaternion = new THREE.Quaternion()\n\n return function update() {\n // if (!(scope.cameraChanged || scope.autoRotate))\n // return false;\n\n var position = scope.object.position\n\n offset.copy(position).sub(scope.target)\n\n // rotate offset to \"y-axis-is-up\" space\n offset.applyQuaternion(quat)\n\n // angle from z-axis around y-axis\n spherical.setFromVector3(offset)\n\n if (scope.autoRotate && state === STATE.NONE) {\n // theta = getAutoRotationAngle();\n // thetaDelta = - getAutoRotationAngle();\n // theta = 0;\n\n rotateLeft(getAutoRotationAngle())\n scope.component.invalidate()\n // spherical.theta = getAutoRotationAngle();\n }\n\n spherical.theta += sphericalDelta.theta\n spherical.phi += sphericalDelta.phi\n\n // restrict theta to be between desired limits\n spherical.theta = Math.max(scope.minAzimuthAngle, Math.min(scope.maxAzimuthAngle, spherical.theta))\n\n // restrict phi to be between desired limits\n spherical.phi = Math.max(scope.minPolarAngle, Math.min(scope.maxPolarAngle, spherical.phi))\n\n spherical.makeSafe()\n\n spherical.radius *= scale\n\n // restrict radius to be between desired limits\n spherical.radius = Math.max(scope.minDistance, Math.min(scope.maxDistance, spherical.radius))\n\n // move target to panned location\n scope.target.add(panOffset)\n\n offset.setFromSpherical(spherical)\n\n // rotate offset back to \"camera-up-vector-is-up\" space\n offset.applyQuaternion(quatInverse)\n\n position.copy(scope.target).add(offset)\n\n scope.object.lookAt(scope.target)\n\n if (scope.enableDamping === true) {\n sphericalDelta.theta *= 1 - scope.dampingFactor\n sphericalDelta.phi *= 1 - scope.dampingFactor\n } else {\n sphericalDelta.set(0, 0, 0)\n }\n\n scale = 1\n panOffset.set(0, 0, 0)\n\n // update condition is:\n // min(camera displacement, camera rotation in radians)^2 > EPS\n // using small-angle approximation cos(x/2) = 1 - x^2 / 8\n\n // if ((scope.cameraChanged || zoomChanged) && (\n // lastPosition.distanceToSquared(scope.object.position) > EPS ||\n // 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS)) {\n if (\n zoomChanged ||\n lastPosition.distanceToSquared(scope.object.position) > EPS ||\n 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS\n ) {\n lastPosition.copy(scope.object.position)\n lastQuaternion.copy(scope.object.quaternion)\n\n scope.component.invalidate()\n scope.cameraChanged = false\n zoomChanged = false\n\n return true\n }\n\n // if (this.autoRotate) {\n // scope.component.invalidate()\n // }\n return false\n }\n })()\n\n this.dispose = function () {}\n\n //\n // event handlers - FSM: listen for events and reset state\n //\n\n this.onMouseDown = function (event: MouseEvent) {}\n\n this.onMouseMove = function (event: MouseEvent) {}\n\n this.onMouseUp = function (event: MouseEvent) {}\n\n this.onDragStart = function (event: DragEvent) {\n if (this.enabled === false || this.enableRotate === false) return\n\n scope.component.stop()\n this.autoRotate = false\n\n if (event.altKey === true) state = STATE.PAN\n else state = STATE.ROTATE\n\n switch (state) {\n case STATE.ROTATE:\n if (this.enableRotate) handleDragStartRotate(event)\n break\n\n case STATE.DOLLY:\n if (this.enableZoom) handleDragStartDolly(event)\n break\n\n case STATE.PAN:\n if (this.enablePan) handleDragStartPan(event)\n break\n }\n }\n\n this.onDragMove = function (event: DragEvent) {\n if (!this.enabled) return\n\n if (event.altKey === true) state = STATE.PAN\n else state = STATE.ROTATE\n\n switch (state) {\n case STATE.ROTATE:\n if (this.enableRotate) handleDragMoveRotate(event)\n break\n\n case STATE.DOLLY:\n if (this.enableZoom) handleDragMoveDolly(event)\n break\n\n case STATE.PAN:\n if (this.enablePan) handleDragMovePan(event)\n break\n }\n }\n\n this.onDragEnd = function (event: DragEvent) {\n if (this.enabled === false || this.enableRotate === false) return\n\n state = STATE.NONE\n\n START_TIME = null\n this.autoRotate = this.component.state.autoRotate || false\n\n scope.component.threed_animate()\n // scope.update();\n }\n\n this.onKeyDown = function (event: KeyboardEvent) {\n if (this.enabled === false || this.enableKeys === false || this.enablePan === false) return\n\n handleKeyDown(event)\n }\n\n this.onTouchStart = function (event: TouchEvent) {\n if (this.enabled === false) return\n\n switch (event.touches.length) {\n case 1: // one-fingered touch: rotate\n if (this.enableRotate === false) return\n handleTouchStartRotate(event)\n state = STATE.TOUCH_ROTATE\n break\n\n case 2: // two-fingered touch: pan\n this.lastScale = (event as any).scale || 1\n if (this.enablePan === false) return\n handleTouchStartPan(event)\n state = STATE.TOUCH_PAN\n break\n // case 2: // two-fingered touch: dolly\n // if ( this.enableZoom === false ) return;\n // handleTouchStartDolly( event );\n // state = STATE.TOUCH_DOLLY;\n // break;\n\n // case 3: // three-fingered touch: pan\n // if ( this.enablePan === false ) return;\n // handleTouchStartPan( event );\n // state = STATE.TOUCH_PAN;\n // break;\n\n default:\n state = STATE.NONE\n }\n }\n\n this.onTouchMove = function (event: TouchEvent) {\n if (this.enabled === false) return\n\n switch (event.touches.length) {\n case 1: // one-fingered touch: rotate\n if (this.enableRotate === false) return\n if (state !== STATE.TOUCH_ROTATE) return // is this needed?...\n handleTouchMoveRotate(event)\n break\n case 2: // two-fingered touch: pan\n if (Math.abs(this.lastScale - (event as any).scale || 1) > 0.05) {\n return\n }\n if (this.enablePan === false) return\n if (state !== STATE.TOUCH_PAN) return // is this needed?...\n handleTouchMovePan(event)\n break\n // case 2: // two-fingered touch: dolly\n // if ( this.enableZoom === false ) return;\n // if ( state !== STATE.TOUCH_DOLLY ) return; // is this needed?...\n // handleTouchMoveDolly( event );\n // break;\n // case 3: // three-fingered touch: pan\n // if ( this.enablePan === false ) return;\n // if ( state !== STATE.TOUCH_PAN ) return; // is this needed?...\n // handleTouchMovePan( event );\n // break;\n default:\n state = STATE.NONE\n }\n }\n\n this.onTouchEnd = function (event: TouchEvent) {\n if (this.enabled === false) return\n this.lastScale = 1\n\n handleTouchEnd(event)\n // this.dispatchEvent( endEvent );\n state = STATE.NONE\n }\n\n this.doAutoRotate = function (autoRotate: boolean) {\n START_TIME = null\n this.cameraChanged = true\n this.autoRotate = autoRotate\n this.update()\n }\n\n //\n // internals\n //\n\n var scope = this\n\n var changeEvent = { type: 'change' }\n var startEvent = { type: 'start' }\n var endEvent = { type: 'end' }\n\n var STATE = { NONE: -1, ROTATE: 0, DOLLY: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_DOLLY: 4, TOUCH_PAN: 5 }\n\n var state = STATE.NONE\n\n var EPS = 0.000001\n\n // current position in spherical coordinates\n var spherical = new THREE.Spherical()\n var sphericalDelta = new THREE.Spherical()\n\n var scale = 1\n var panOffset = new THREE.Vector3()\n var zoomChanged = false\n\n var rotateStart = new THREE.Vector2()\n var rotateEnd = new THREE.Vector2()\n var rotateDelta = new THREE.Vector2()\n\n var panStart = new THREE.Vector2()\n var panEnd = new THREE.Vector2()\n var panDelta = new THREE.Vector2()\n\n var dollyStart = new THREE.Vector2()\n var dollyEnd = new THREE.Vector2()\n var dollyDelta = new THREE.Vector2()\n\n var START_TIME: number | null = null\n var offsetTheta = 0\n\n function getAutoRotationAngle() {\n if (!START_TIME) {\n START_TIME = performance.now()\n offsetTheta = spherical.theta\n return 0\n }\n\n var lastTime = performance.now() - START_TIME\n var progress = lastTime / (60000 / scope.autoRotateSpeed)\n\n // return - 2 * Math.PI * progress;\n return 2 * Math.PI * progress + spherical.theta - offsetTheta\n // return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;\n }\n\n function getZoomScale() {\n return Math.pow(0.95, scope.zoomSpeed)\n }\n\n function rotateLeft(angle: number) {\n sphericalDelta.theta -= angle\n }\n\n function rotateUp(angle: number) {\n sphericalDelta.phi -= angle\n }\n\n var panLeft = (function () {\n var v = new THREE.Vector3()\n\n return function panLeft(distance: number, objectMatrix: any) {\n v.setFromMatrixColumn(objectMatrix, 0) // get X column of objectMatrix\n v.multiplyScalar(-distance)\n\n panOffset.add(v)\n }\n })()\n\n var panUp = (function () {\n var v = new THREE.Vector3()\n\n return function panUp(distance: number, objectMatrix: any) {\n v.setFromMatrixColumn(objectMatrix, 1) // get Y column of objectMatrix\n v.multiplyScalar(distance)\n\n panOffset.add(v)\n }\n })()\n\n // deltaX and deltaY are in pixels; right and down are positive\n var pan = (function () {\n var offset = new THREE.Vector3()\n\n return function pan(deltaX: number, deltaY: number) {\n // var element = scope.component === document ? scope.component.body : scope.component\n const { width, height } = scope.component.bounds\n\n if (scope.object.isPerspectiveCamera) {\n // perspective\n var position = scope.object.position\n offset.copy(position).sub(scope.target)\n var targetDistance = offset.length()\n\n // half of the fov is center to top of screen\n targetDistance *= Math.tan(((scope.object.fov / 2) * Math.PI) / 180.0)\n\n // we actually don't use screenWidth, since perspective camera is fixed to screen height\n panLeft((2 * deltaX * targetDistance) / height, scope.object.matrix)\n // panLeft( 2 * deltaX * targetDistance / element.clientHeight, scope.object.matrix );\n panUp((2 * deltaY * targetDistance) / height, scope.object.matrix)\n // panUp( 2 * deltaY * targetDistance / element.clientHeight, scope.object.matrix );\n } else if (scope.object.isOrthographicCamera) {\n // orthographic\n panLeft((deltaX * (scope.object.right - scope.object.left)) / scope.object.zoom / width, scope.object.matrix)\n // panLeft( deltaX * ( scope.object.right - scope.object.left ) / element.clientWidth, scope.object.matrix );\n panUp((deltaY * (scope.object.top - scope.object.bottom)) / scope.object.zoom / height, scope.object.matrix)\n // panUp( deltaY * ( scope.object.top - scope.object.bottom ) / element.clientHeight, scope.object.matrix );\n } else {\n // camera neither orthographic nor perspective\n console.warn('WARNING: ThreeControls.js encountered an unknown camera type - pan disabled.')\n scope.enablePan = false\n }\n }\n })()\n\n function dollyIn(dollyScale: number) {\n if (scope.object.isPerspectiveCamera) {\n scale /= dollyScale\n } else if (scope.object.isOrthographicCamera) {\n scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom * dollyScale))\n scope.object.updateProjectionMatrix()\n zoomChanged = true\n } else {\n console.warn('WARNING: ThreeControls.js encountered an unknown camera type - dolly/zoom disabled.')\n scope.enableZoom = false\n }\n }\n\n function dollyOut(dollyScale: number) {\n if (scope.object.isPerspectiveCamera) {\n scale *= dollyScale\n } else if (scope.object.isOrthographicCamera) {\n scope.object.zoom = Math.max(scope.minZoom, Math.min(scope.maxZoom, scope.object.zoom / dollyScale))\n scope.object.updateProjectionMatrix()\n zoomChanged = true\n } else {\n console.warn('WARNING: ThreeControls.js encountered an unknown camera type - dolly/zoom disabled.')\n scope.enableZoom = false\n }\n }\n\n //\n // event callbacks - update the object state\n //\n\n function handleDragStartRotate(event: DragEvent) {\n rotateStart.set(event.offsetX, event.offsetY)\n }\n\n function handleDragStartDolly(event: DragEvent) {\n dollyStart.set(event.offsetX, event.offsetY)\n }\n\n function handleDragStartPan(event: DragEvent) {\n panStart.set(event.offsetX, event.offsetY)\n }\n\n function handleDragMoveRotate(event: DragEvent) {\n rotateEnd.set(event.offsetX, event.offsetY)\n rotateDelta.subVectors(rotateEnd, rotateStart)\n\n var element = scope.component\n\n // rotating across whole screen goes 360 degrees around\n rotateLeft(((2 * Math.PI * rotateDelta.x) / element.get('width')) * scope.rotateSpeed)\n\n // rotating up and down along whole screen attempts to go 360, but limited to 180\n rotateUp(((2 * Math.PI * rotateDelta.y) / element.get('height')) * scope.rotateSpeed)\n\n rotateStart.copy(rotateEnd)\n\n scope.update()\n }\n\n function handleDragMoveDolly(event: DragEvent) {\n dollyEnd.set(event.offsetX, event.offsetY)\n\n dollyDelta.subVectors(dollyEnd, dollyStart)\n\n if (dollyDelta.y > 0) {\n dollyIn(getZoomScale())\n } else if (dollyDelta.y < 0) {\n dollyOut(getZoomScale())\n }\n\n dollyStart.copy(dollyEnd)\n\n scope.update()\n }\n\n function handleDragMovePan(event: DragEvent) {\n panEnd.set(event.offsetX, event.offsetY)\n\n panDelta.subVectors(panEnd, panStart)\n\n pan(panDelta.x, panDelta.y)\n\n panStart.copy(panEnd)\n\n scope.update()\n }\n\n function handleMouseUp(event: MouseEvent) {}\n\n function handleKeyDown(event: KeyboardEvent) {\n switch (event.keyCode) {\n case scope.keys.UP:\n pan(0, scope.keyPanSpeed)\n scope.update()\n break\n\n case scope.keys.BOTTOM:\n pan(0, -scope.keyPanSpeed)\n scope.update()\n break\n\n case scope.keys.LEFT:\n pan(scope.keyPanSpeed, 0)\n scope.update()\n break\n\n case scope.keys.RIGHT:\n pan(-scope.keyPanSpeed, 0)\n scope.update()\n break\n }\n }\n\n function handleTouchStartRotate(event: TouchEvent) {\n var x = (event.touches[0] as any).offsetX || event.touches[0].pageX\n var y = (event.touches[0] as any).offsetY || event.touches[0].pageY\n\n rotateStart.set(x, y)\n }\n\n function handleTouchStartDolly(event: TouchEvent) {\n var dx = event.touches[0].pageX - event.touches[1].pageX\n var dy = event.touches[0].pageY - event.touches[1].pageY\n\n var distance = Math.sqrt(dx * dx + dy * dy)\n\n dollyStart.set(0, distance)\n }\n\n function handleTouchStartPan(event: TouchEvent) {\n var x = (event.touches[0] as any).offsetX || event.touches[0].pageX\n var y = (event.touches[0] as any).offsetY || event.touches[0].pageY\n\n panStart.set(x, y)\n }\n\n function handleTouchMoveRotate(event: TouchEvent) {\n var x = (event.touches[0] as any).offsetX || event.touches[0].pageX\n var y = (event.touches[0] as any).offsetY || event.touches[0].pageY\n\n rotateEnd.set(x, y)\n rotateDelta.subVectors(rotateEnd, rotateStart)\n\n var element = scope.component === document ? scope.component.body : scope.component\n\n // rotating across whole screen goes 360 degrees around\n rotateLeft(((2 * Math.PI * rotateDelta.x) / element.model.width) * scope.rotateSpeed)\n // rotateLeft( 2 * Math.PI * rotateDelta.x / element.clientWidth * scope.rotateSpeed );\n\n // rotating up and down along whole screen attempts to go 360, but limited to 180\n rotateUp(((2 * Math.PI * rotateDelta.y) / element.model.height) * scope.rotateSpeed)\n // rotateUp( 2 * Math.PI * rotateDelta.y / element.clientHeight * scope.rotateSpeed );\n\n rotateStart.copy(rotateEnd)\n\n scope.update()\n }\n\n function handleTouchMoveDolly(event: TouchEvent) {\n var dx = event.touches[0].pageX - event.touches[1].pageX\n var dy = event.touches[0].pageY - event.touches[1].pageY\n\n var distance = Math.sqrt(dx * dx + dy * dy)\n\n dollyEnd.set(0, distance)\n\n dollyDelta.subVectors(dollyEnd, dollyStart)\n\n if (dollyDelta.y > 0) {\n dollyOut(getZoomScale())\n } else if (dollyDelta.y < 0) {\n dollyIn(getZoomScale())\n }\n\n dollyStart.copy(dollyEnd)\n\n scope.update()\n }\n\n function handleTouchMovePan(event: TouchEvent) {\n var x = (event.touches[0] as any).offsetX || event.touches[0].pageX\n var y = (event.touches[0] as any).offsetY || event.touches[0].pageY\n\n panEnd.set(x, y)\n\n panDelta.subVectors(panEnd, panStart)\n\n pan(panDelta.x, panDelta.y)\n\n panStart.copy(panEnd)\n\n scope.update()\n }\n\n function handleTouchEnd(event: TouchEvent) {}\n\n this.update()\n}\n\nThreeControls.prototype = {} //Object.create( THREE.EventDispatcher.prototype );\nThreeControls.prototype.constructor = ThreeControls\nObject.defineProperties(ThreeControls.prototype, {\n center: {\n get: function () {\n console.warn('THREE.OrbitControls: .center has been renamed to .target')\n return this.target\n }\n },\n\n // backward compatibility\n\n noZoom: {\n get: function () {\n console.warn('THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.')\n return !this.enableZoom\n },\n\n set: function (value) {\n console.warn('THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.')\n this.enableZoom = !value\n }\n },\n\n noRotate: {\n get: function () {\n console.warn('THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.')\n return !this.enableRotate\n },\n\n set: function (value) {\n console.warn('THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.')\n this.enableRotate = !value\n }\n },\n\n noPan: {\n get: function () {\n console.warn('THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.')\n return !this.enablePan\n },\n\n set: function (value) {\n console.warn('THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead.')\n this.enablePan = !value\n }\n },\n\n noKeys: {\n get: function () {\n console.warn('THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.')\n return !this.enableKeys\n },\n\n set: function (value) {\n console.warn('THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.')\n this.enableKeys = !value\n }\n },\n\n staticMoving: {\n get: function () {\n console.warn('THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.')\n return !this.enableDamping\n },\n\n set: function (value) {\n console.warn('THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.')\n this.enableDamping = !value\n }\n },\n\n dynamicDampingFactor: {\n get: function () {\n console.warn('THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.')\n return this.dampingFactor\n },\n\n set: function (value) {\n console.warn('THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.')\n this.dampingFactor = value\n }\n }\n})\n\nexport default ThreeControls\n"]}
|
|
@@ -9,7 +9,7 @@ import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader';
|
|
|
9
9
|
import { KTX2Loader } from 'three/examples/jsm/loaders/KTX2Loader';
|
|
10
10
|
// @ts-ignore
|
|
11
11
|
import { MeshoptDecoder } from 'three/examples/jsm/libs/meshopt_decoder.module.js';
|
|
12
|
-
|
|
12
|
+
class RealObjectGLTF extends RealObject {
|
|
13
13
|
constructor() {
|
|
14
14
|
super(...arguments);
|
|
15
15
|
this.objectSize = new THREE.Vector3();
|
|
@@ -98,4 +98,5 @@ export class RealObjectGLTF extends RealObject {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
RealObjectGLTF._GLTFLoader = new GLTFLoader();
|
|
101
|
+
export { RealObjectGLTF };
|
|
101
102
|
//# sourceMappingURL=real-object-gltf.js.map
|