@anov/3d 0.0.89 → 0.0.91

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.
@@ -0,0 +1 @@
1
+ {"version":3,"names":["EventDispatcher","MOUSE","Object3D","Spherical","TOUCH","Vector2","Vector3","_startEvent","type","_endEvent","defaultFirstPerspectiveControls","object","domElement","style","touchAction","enabled","target","cursor","enableZoom","zoomSpeed","enableRotate","rotateSpeed","enablePan","panSpeed","screenSpacePanning","keyPanSpeed","zoomToCursor","autoRotate","autoRotateSpeed","keys","LEFT","UP","RIGHT","BOTTOM","mouseButtons","ROTATE","MIDDLE","DOLLY","PAN","touches","ONE","TWO","DOLLY_PAN","target0","clone","_domElementKeyEvents","getPolarAngle","spherical","phi","getAzimuthalAngle","theta","getDistance","saveState","scope","copy","position0","position","reset","dispose","removeEventListener","onContextMenu","onPointerDown","onPointerUp","onPointerMove","onKeyDown","STATE","NONE","TOUCH_ROTATE","TOUCH_PAN","TOUCH_DOLLY_PAN","TOUCH_DOLLY_ROTATE","state","rotateStart","rotateEnd","rotateDelta","panStart","dollyStart","dollyDirection","mouse","pointers","pointerPositions","updateZoomParameters","x","y","performCursorZoom","rect","getBoundingClientRect","dx","left","dy","top","w","width","h","height","set","unproject","sub","normalize","handleMouseDownRotate","event","clientX","clientY","handleMouseDownDolly","handleMouseDownPan","handleMouseMoveRotate","subVectors","multiplyScalar","element","rotateLeft","Math","PI","clientHeight","rotateTop","helper","resetZRotation","obj","rotation","z","rotateObject","rotateY","rotateX","handleTouchStartRotate","length","pageX","pageY","getSecondPointerPosition","handleTouchStartPan","handleTouchStartDolly","distance","sqrt","handleTouchStartDollyPan","handleTouchStartDollyRotate","setPointerCapture","pointerId","addEventListener","addPointer","pointerType","onTouchStart","onMouseDown","onMouseMove","removePointer","releasePointerCapture","dispatchEvent","mouseAction","button","ctrlKey","metaKey","shiftKey","trackPointer","DOLLY_ROTATE","preventDefault","push","i","splice","undefined"],"sources":["../../../../src/factory/unit/inspection/defaultFirstPerspectiveControls.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-this-alias */\n/* eslint-disable @typescript-eslint/no-use-before-define */\n// @ts-nocheck\n\nimport {\n EventDispatcher,\n MOUSE,\n Object3D,\n Spherical,\n TOUCH,\n Vector2,\n Vector3,\n} from '@anov/3d-core'\n\nconst _startEvent = { type: 'start' }\nconst _endEvent = { type: 'end' }\n\nclass defaultFirstPerspectiveControls extends EventDispatcher {\n enabled = true\n constructor(object, domElement) {\n super()\n\n this.object = object\n this.domElement = domElement\n this.domElement.style.touchAction = 'none' // disable touch scroll\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 Vector3()\n\n // Sets the 3D cursor (similar to Blender), from which the maxTargetRadius takes effect\n this.cursor = new Vector3()\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 = 0.5\n\n // Set to false to disable panning\n this.enablePan = true\n this.panSpeed = 1.0\n this.screenSpacePanning = true // if false, pan orthogonal to world-space direction camera.up\n this.keyPanSpeed = 7.0// pixels moved per arrow key push\n this.zoomToCursor = false\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 = false\n this.autoRotateSpeed = 2.0 // 30 seconds per orbit when fps is 60\n\n // The four arrow keys\n this.keys = { LEFT: 'ArrowLeft', UP: 'ArrowUp', RIGHT: 'ArrowRight', BOTTOM: 'ArrowDown' }\n\n // Mouse buttons\n this.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN }\n\n // Touch fingers\n this.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN }\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 this._domElementKeyEvents = null\n\n this.getPolarAngle = function () {\n return spherical.phi\n }\n\n this.getAzimuthalAngle = function () {\n return spherical.theta\n }\n\n this.getDistance = function () {\n // return this.object.position.distanceTo(this.target)\n }\n\n this.saveState = function () {\n scope.target0.copy(scope.target)\n scope.position0.copy(scope.object.position)\n }\n\n this.reset = function () {}\n\n this.dispose = function () {\n scope.domElement.removeEventListener('contextmenu', onContextMenu)\n\n scope.domElement.removeEventListener('pointerdown', onPointerDown)\n scope.domElement.removeEventListener('pointercancel', onPointerUp)\n\n scope.domElement.removeEventListener('pointermove', onPointerMove)\n scope.domElement.removeEventListener('pointerup', onPointerUp)\n\n if (scope._domElementKeyEvents !== null) {\n scope._domElementKeyEvents.removeEventListener('keydown', onKeyDown)\n scope._domElementKeyEvents = null\n }\n }\n\n const scope = this\n\n const STATE = {\n NONE: -1,\n ROTATE: 0,\n DOLLY: 1,\n PAN: 2,\n TOUCH_ROTATE: 3,\n TOUCH_PAN: 4,\n TOUCH_DOLLY_PAN: 5,\n TOUCH_DOLLY_ROTATE: 6,\n }\n\n let state = STATE.NONE\n\n const spherical = new Spherical()\n const rotateStart = new Vector2()\n const rotateEnd = new Vector2()\n const rotateDelta = new Vector2()\n\n const panStart = new Vector2()\n\n const dollyStart = new Vector2()\n\n const dollyDirection = new Vector3()\n const mouse = new Vector2()\n\n const pointers = []\n const pointerPositions = {}\n\n function updateZoomParameters(x, y) {\n if (!scope.zoomToCursor)\n\n return\n\n performCursorZoom = true\n\n const rect = scope.domElement.getBoundingClientRect()\n const dx = x - rect.left\n const dy = y - rect.top\n const w = rect.width\n const h = rect.height\n\n mouse.x = (dx / w) * 2 - 1\n mouse.y = -(dy / h) * 2 + 1\n\n dollyDirection.set(mouse.x, mouse.y, 1).unproject(scope.object).sub(scope.object.position).normalize()\n }\n\n function handleMouseDownRotate(event) {\n rotateStart.set(event.clientX, event.clientY)\n }\n\n function handleMouseDownDolly(event) {\n updateZoomParameters(event.clientX, event.clientX)\n dollyStart.set(event.clientX, event.clientY)\n }\n\n function handleMouseDownPan(event) {\n panStart.set(event.clientX, event.clientY)\n }\n\n function handleMouseMoveRotate(event) {\n rotateEnd.set(event.clientX, event.clientY)\n\n rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed)\n\n const element = scope.domElement\n\n const rotateLeft = 2 * Math.PI * rotateDelta.x / element.clientHeight\n const rotateTop = 2 * Math.PI * rotateDelta.y / element.clientHeight\n\n const helper = new Object3D()\n\n function resetZRotation(obj) {\n obj.rotation.z = Math.PI\n }\n\n function rotateObject(object, rotateLeft, rotateTop) {\n helper.rotation.copy(object.rotation)\n\n resetZRotation(helper)\n\n helper.rotateY(-rotateLeft)\n resetZRotation(helper)\n\n helper.rotateX(-rotateTop)\n resetZRotation(helper)\n\n object.rotation.copy(helper.rotation)\n }\n\n rotateObject(scope.object, rotateLeft, rotateTop)\n\n rotateStart.copy(rotateEnd)\n }\n\n function handleTouchStartRotate(event) {\n if (pointers.length === 1) {\n rotateStart.set(event.pageX, event.pageY)\n }\n else {\n const position = getSecondPointerPosition(event)\n\n const x = 0.5 * (event.pageX + position.x)\n const y = 0.5 * (event.pageY + position.y)\n\n rotateStart.set(x, y)\n }\n }\n\n function handleTouchStartPan(event) {\n if (pointers.length === 1) {\n panStart.set(event.pageX, event.pageY)\n }\n else {\n const position = getSecondPointerPosition(event)\n\n const x = 0.5 * (event.pageX + position.x)\n const y = 0.5 * (event.pageY + position.y)\n\n panStart.set(x, y)\n }\n }\n\n function handleTouchStartDolly(event) {\n const position = getSecondPointerPosition(event)\n\n const dx = event.pageX - position.x\n const dy = event.pageY - position.y\n\n const distance = Math.sqrt(dx * dx + dy * dy)\n\n dollyStart.set(0, distance)\n }\n\n function handleTouchStartDollyPan(event) {\n if (scope.enableZoom)\n handleTouchStartDolly(event)\n\n if (scope.enablePan)\n handleTouchStartPan(event)\n }\n\n function handleTouchStartDollyRotate(event) {\n if (scope.enableZoom)\n handleTouchStartDolly(event)\n\n if (scope.enableRotate)\n handleTouchStartRotate(event)\n }\n\n function onPointerDown(event) {\n if (scope.enabled === false)\n return\n\n if (pointers.length === 0) {\n scope.domElement.setPointerCapture(event.pointerId)\n\n scope.domElement.addEventListener('pointermove', onPointerMove)\n scope.domElement.addEventListener('pointerup', onPointerUp)\n }\n\n addPointer(event)\n\n if (event.pointerType === 'touch')\n\n onTouchStart(event)\n\n else\n\n onMouseDown(event)\n }\n\n function onPointerMove(event) {\n onMouseMove(event)\n }\n\n function onPointerUp(event) {\n removePointer(event)\n\n if (pointers.length === 0) {\n scope.domElement.releasePointerCapture(event.pointerId)\n\n scope.domElement.removeEventListener('pointermove', onPointerMove)\n scope.domElement.removeEventListener('pointerup', onPointerUp)\n }\n\n scope.dispatchEvent(_endEvent)\n\n state = STATE.NONE\n\n if (pointers.length === 1) {\n const pointerId = pointers[0]\n const position = pointerPositions[pointerId]\n\n // minimal placeholder event - allows state correction on pointer-up\n onTouchStart({ pointerId, pageX: position.x, pageY: position.y })\n }\n }\n\n function onMouseDown(event) {\n let mouseAction\n\n switch (event.button) {\n case 0:\n\n mouseAction = scope.mouseButtons.LEFT\n break\n\n case 1:\n\n mouseAction = scope.mouseButtons.MIDDLE\n break\n\n case 2:\n\n mouseAction = scope.mouseButtons.RIGHT\n break\n\n default:\n\n mouseAction = -1\n }\n\n switch (mouseAction) {\n case MOUSE.DOLLY:\n\n if (scope.enableZoom === false)\n return\n\n handleMouseDownDolly(event)\n\n state = STATE.DOLLY\n\n break\n\n case MOUSE.ROTATE:\n\n if (event.ctrlKey || event.metaKey || event.shiftKey) {\n if (scope.enablePan === false)\n return\n\n handleMouseDownPan(event)\n\n state = STATE.PAN\n }\n else {\n if (scope.enableRotate === false)\n return\n\n handleMouseDownRotate(event)\n\n state = STATE.ROTATE\n }\n\n break\n\n case MOUSE.PAN:\n\n if (event.ctrlKey || event.metaKey || event.shiftKey) {\n if (scope.enableRotate === false)\n return\n\n handleMouseDownRotate(event)\n\n state = STATE.ROTATE\n }\n else {\n if (scope.enablePan === false)\n return\n\n handleMouseDownPan(event)\n\n state = STATE.PAN\n }\n\n break\n\n default:\n\n state = STATE.NONE\n }\n\n if (state !== STATE.NONE)\n\n scope.dispatchEvent(_startEvent)\n }\n\n function onMouseMove(event) {\n handleMouseMoveRotate(event)\n }\n\n function onTouchStart(event) {\n trackPointer(event)\n\n switch (pointers.length) {\n case 1:\n\n switch (scope.touches.ONE) {\n case TOUCH.ROTATE:\n\n if (scope.enableRotate === false)\n return\n\n handleTouchStartRotate(event)\n\n state = STATE.TOUCH_ROTATE\n\n break\n\n case TOUCH.PAN:\n\n if (scope.enablePan === false)\n return\n\n handleTouchStartPan(event)\n\n state = STATE.TOUCH_PAN\n\n break\n\n default:\n\n state = STATE.NONE\n }\n\n break\n\n case 2:\n\n switch (scope.touches.TWO) {\n case TOUCH.DOLLY_PAN:\n\n if (scope.enableZoom === false && scope.enablePan === false)\n return\n\n handleTouchStartDollyPan(event)\n\n state = STATE.TOUCH_DOLLY_PAN\n\n break\n\n case TOUCH.DOLLY_ROTATE:\n\n if (scope.enableZoom === false && scope.enableRotate === false)\n return\n\n handleTouchStartDollyRotate(event)\n\n state = STATE.TOUCH_DOLLY_ROTATE\n\n break\n\n default:\n\n state = STATE.NONE\n }\n\n break\n\n default:\n\n state = STATE.NONE\n }\n\n if (state !== STATE.NONE)\n\n scope.dispatchEvent(_startEvent)\n }\n\n function onContextMenu(event) {\n if (scope.enabled === false)\n return\n\n event.preventDefault()\n }\n\n function addPointer(event) {\n pointers.push(event.pointerId)\n }\n\n function removePointer(event) {\n delete pointerPositions[event.pointerId]\n\n for (let i = 0; i < pointers.length; i++) {\n if (pointers[i] === event.pointerId) {\n pointers.splice(i, 1)\n return\n }\n }\n }\n\n function trackPointer(event) {\n let position = pointerPositions[event.pointerId]\n\n if (position === undefined) {\n position = new Vector2()\n pointerPositions[event.pointerId] = position\n }\n\n position.set(event.pageX, event.pageY)\n }\n\n function getSecondPointerPosition(event) {\n const pointerId = (event.pointerId === pointers[0]) ? pointers[1] : pointers[0]\n\n return pointerPositions[pointerId]\n }\n\n scope.domElement.addEventListener('contextmenu', onContextMenu)\n scope.domElement.addEventListener('pointerdown', onPointerDown)\n scope.domElement.addEventListener('pointercancel', onPointerUp)\n }\n}\n\nexport default defaultFirstPerspectiveControls\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { Object3D } from '@anov/3d-core';
2
- import { Group, PerspectiveCamera } from '@anov/3d-core';
2
+ import { Group, Mesh, PerspectiveCamera } from '@anov/3d-core';
3
3
  import type Factory3D from '../../3d';
4
4
  declare class Inspection {
5
5
  gobal: Factory3D;
@@ -10,19 +10,27 @@ declare class Inspection {
10
10
  viewElement: HTMLDivElement;
11
11
  isHide: boolean;
12
12
  anchorObject: Map<string, Group>;
13
+ mapAnchorObject: Map<string, Mesh>;
13
14
  anchorGroup: Group;
15
+ mapAnchorGroup: Group;
14
16
  minCamera: PerspectiveCamera;
15
17
  InspectionPathObject: Object3D;
16
18
  groundMaterial: any;
17
19
  mapMaterial: any;
18
20
  map: any;
19
21
  mapCamera: any;
22
+ defaultFirstPerspectiveControls: any;
20
23
  constructor(gobal: Factory3D);
24
+ /**
25
+ * create view element, use to switch view [like a button]
26
+ */
27
+ private createViewElement;
21
28
  /**
22
29
  * generate inspection path
23
30
  * @param linePosition
24
31
  */
25
32
  private generateInspectionPath;
33
+ private onHandleToggleView;
26
34
  setSelectedAnchorObject(params: {
27
35
  target: string;
28
36
  highlight: boolean;
@@ -33,6 +41,7 @@ declare class Inspection {
33
41
  private makeGroundRoad;
34
42
  private anchorMesh;
35
43
  private setMapView;
44
+ private setMapViewAnchorPoint;
36
45
  private setInspectionCamera;
37
46
  get getPathLength(): any;
38
47
  startInspection(line: any): void;
@@ -5,14 +5,15 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
5
5
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
7
7
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
8
- import { Color, CylinderGeometry, Group, Mesh, MeshBasicMaterial, OrthographicCamera, PerspectiveCamera, ShaderMaterial, TubeGeometry, use, utils } from '@anov/3d-core';
9
- import { RoundLineGeometry, initPostEffects } from '@anov/3d-ability';
8
+ import { Color, CylinderGeometry, Group, Mesh, MeshBasicMaterial, OrthographicCamera, PerspectiveCamera, ShaderMaterial, TubeGeometry, Vector4, use, utils } from '@anov/3d-core';
9
+ import { RoundLineGeometry } from '@anov/3d-ability';
10
10
  import fragmentShader from "../glsl/highway/fragmentShader";
11
11
  import vertexShader from "../glsl/highway/vertexShader";
12
12
  import fragmentShader2 from "../glsl/highway/fragmentShader2";
13
13
  import { observe } from "../../utils/observe";
14
14
  import { flyLinePoints, groundLinePoints, targetProgresspoints } from "./lineData";
15
15
  import InspectionObject from "./InspectionObject";
16
+ import DefaultFirstPerspectiveControls from "./defaultFirstPerspectiveControls";
16
17
  var storeManagement = utils.storeManagement;
17
18
  var viewInfoPro = {
18
19
  width: 502,
@@ -29,11 +30,6 @@ var viewInfoDev = {
29
30
  var viewInfo = false ? viewInfoDev : viewInfoPro;
30
31
  var Inspection = /*#__PURE__*/function () {
31
32
  function Inspection(gobal) {
32
- var _app$envServer$scaleR,
33
- _window,
34
- _window$app,
35
- _window$app$envServer,
36
- _this = this;
37
33
  _classCallCheck(this, Inspection);
38
34
  _defineProperty(this, "gobal", void 0);
39
35
  _defineProperty(this, "inspectionObject", void 0);
@@ -43,13 +39,16 @@ var Inspection = /*#__PURE__*/function () {
43
39
  _defineProperty(this, "viewElement", void 0);
44
40
  _defineProperty(this, "isHide", true);
45
41
  _defineProperty(this, "anchorObject", new Map());
42
+ _defineProperty(this, "mapAnchorObject", new Map());
46
43
  _defineProperty(this, "anchorGroup", void 0);
44
+ _defineProperty(this, "mapAnchorGroup", void 0);
47
45
  _defineProperty(this, "minCamera", void 0);
48
46
  _defineProperty(this, "InspectionPathObject", void 0);
49
47
  _defineProperty(this, "groundMaterial", void 0);
50
48
  _defineProperty(this, "mapMaterial", void 0);
51
49
  _defineProperty(this, "map", void 0);
52
50
  _defineProperty(this, "mapCamera", void 0);
51
+ _defineProperty(this, "defaultFirstPerspectiveControls", void 0);
53
52
  this.gobal = gobal;
54
53
  this.generateInspectionPath();
55
54
  this.makeGroundRoad();
@@ -57,44 +56,59 @@ var Inspection = /*#__PURE__*/function () {
57
56
  this.inspectionObject = new InspectionObject(this);
58
57
  this.startInspection(this.curve);
59
58
  this.hide();
60
- var scale = (_app$envServer$scaleR = (_window = window) === null || _window === void 0 ? void 0 : (_window$app = _window.app) === null || _window$app === void 0 ? void 0 : (_window$app$envServer = _window$app.envServer) === null || _window$app$envServer === void 0 ? void 0 : _window$app$envServer.scaleRatio) !== null && _app$envServer$scaleR !== void 0 ? _app$envServer$scaleR : 1;
61
- var _storeManagement$get$ = storeManagement.get('container').querySelector('canvas').getBoundingClientRect(),
62
- left = _storeManagement$get$.left,
63
- top = _storeManagement$get$.top;
64
- var viewElement = document.createElement('div');
65
- viewElement.style.position = 'absolute';
66
- viewElement.style.width = "".concat(viewInfo.width * scale, "px");
67
- viewElement.style.height = "".concat(viewInfo.height * scale, "px");
68
- viewElement.style.cursor = 'pointer';
69
- viewElement.style.top = "".concat(viewInfo.top * scale + top, "px");
70
- viewElement.style.left = "".concat(viewInfo.left * scale + left, "px");
71
- viewElement.addEventListener('click', function () {
72
- _this.gobal.toggleView();
73
- });
74
- var handleObserve = function handleObserve() {
75
- setTimeout(function () {
76
- var _app$envServer$scaleR2, _window2, _window2$app, _window2$app$envServe;
77
- var scale = (_app$envServer$scaleR2 = (_window2 = window) === null || _window2 === void 0 ? void 0 : (_window2$app = _window2.app) === null || _window2$app === void 0 ? void 0 : (_window2$app$envServe = _window2$app.envServer) === null || _window2$app$envServe === void 0 ? void 0 : _window2$app$envServe.scaleRatio) !== null && _app$envServer$scaleR2 !== void 0 ? _app$envServer$scaleR2 : 1;
78
- var _storeManagement$get$2 = storeManagement.get('container').querySelector('canvas').getBoundingClientRect(),
79
- left = _storeManagement$get$2.left,
80
- top = _storeManagement$get$2.top;
81
- viewElement.style.width = "".concat(viewInfo.width * scale, "px");
82
- viewElement.style.height = "".concat(viewInfo.height * scale, "px");
83
- viewElement.style.top = "".concat(viewInfo.top * scale + top, "px");
84
- viewElement.style.left = "".concat(viewInfo.left * scale + left, "px");
85
- }, 500);
86
- };
87
- document.querySelector('.cml-panel-container') && observe(document.querySelector('.cml-panel-container'), function () {
88
- handleObserve();
89
- });
90
- this.viewElement = viewElement;
59
+ this.createViewElement();
60
+ this.onHandleToggleView();
91
61
  }
92
62
 
93
63
  /**
94
- * generate inspection path
95
- * @param linePosition
64
+ * create view element, use to switch view [like a button]
96
65
  */
97
66
  _createClass(Inspection, [{
67
+ key: "createViewElement",
68
+ value: function createViewElement() {
69
+ var _app$envServer$scaleR,
70
+ _window,
71
+ _window$app,
72
+ _window$app$envServer,
73
+ _this = this;
74
+ var scale = (_app$envServer$scaleR = (_window = window) === null || _window === void 0 ? void 0 : (_window$app = _window.app) === null || _window$app === void 0 ? void 0 : (_window$app$envServer = _window$app.envServer) === null || _window$app$envServer === void 0 ? void 0 : _window$app$envServer.scaleRatio) !== null && _app$envServer$scaleR !== void 0 ? _app$envServer$scaleR : 1;
75
+ var _storeManagement$get$ = storeManagement.get('container').querySelector('canvas').getBoundingClientRect(),
76
+ left = _storeManagement$get$.left,
77
+ top = _storeManagement$get$.top;
78
+ var viewElement = document.createElement('div');
79
+ viewElement.style.position = 'absolute';
80
+ viewElement.style.width = "".concat(viewInfo.width * scale, "px");
81
+ viewElement.style.height = "".concat(viewInfo.height * scale, "px");
82
+ viewElement.style.cursor = 'pointer';
83
+ viewElement.style.top = "".concat(viewInfo.top * scale + top, "px");
84
+ viewElement.style.left = "".concat(viewInfo.left * scale + left, "px");
85
+ viewElement.addEventListener('click', function () {
86
+ _this.gobal.toggleView();
87
+ });
88
+ var handleObserve = function handleObserve() {
89
+ setTimeout(function () {
90
+ var _app$envServer$scaleR2, _window2, _window2$app, _window2$app$envServe;
91
+ var scale = (_app$envServer$scaleR2 = (_window2 = window) === null || _window2 === void 0 ? void 0 : (_window2$app = _window2.app) === null || _window2$app === void 0 ? void 0 : (_window2$app$envServe = _window2$app.envServer) === null || _window2$app$envServe === void 0 ? void 0 : _window2$app$envServe.scaleRatio) !== null && _app$envServer$scaleR2 !== void 0 ? _app$envServer$scaleR2 : 1;
92
+ var _storeManagement$get$2 = storeManagement.get('container').querySelector('canvas').getBoundingClientRect(),
93
+ left = _storeManagement$get$2.left,
94
+ top = _storeManagement$get$2.top;
95
+ viewElement.style.width = "".concat(viewInfo.width * scale, "px");
96
+ viewElement.style.height = "".concat(viewInfo.height * scale, "px");
97
+ viewElement.style.top = "".concat(viewInfo.top * scale + top, "px");
98
+ viewElement.style.left = "".concat(viewInfo.left * scale + left, "px");
99
+ }, 500);
100
+ };
101
+ document.querySelector('.cml-panel-container') && observe(document.querySelector('.cml-panel-container'), function () {
102
+ handleObserve();
103
+ });
104
+ this.viewElement = viewElement;
105
+ }
106
+
107
+ /**
108
+ * generate inspection path
109
+ * @param linePosition
110
+ */
111
+ }, {
98
112
  key: "generateInspectionPath",
99
113
  value: function generateInspectionPath() {
100
114
  var flyLine = new RoundLineGeometry(flyLinePoints, {
@@ -103,6 +117,16 @@ var Inspection = /*#__PURE__*/function () {
103
117
  });
104
118
  this.curve = flyLine.curve;
105
119
  }
120
+ }, {
121
+ key: "onHandleToggleView",
122
+ value: function onHandleToggleView() {
123
+ var defaultFirstPerspectiveControls = new DefaultFirstPerspectiveControls(this.minCamera, this.gobal.scene.renderer.domElement);
124
+ this.defaultFirstPerspectiveControls = defaultFirstPerspectiveControls;
125
+ defaultFirstPerspectiveControls.enabled = false;
126
+ utils.emitter.on('toggleView', function (type) {
127
+ if (type === 'Drone') defaultFirstPerspectiveControls.enabled = true;else defaultFirstPerspectiveControls.enabled = false;
128
+ });
129
+ }
106
130
  }, {
107
131
  key: "setSelectedAnchorObject",
108
132
  value: function setSelectedAnchorObject(params) {
@@ -139,6 +163,18 @@ var Inspection = /*#__PURE__*/function () {
139
163
  radius: 20,
140
164
  close: true
141
165
  });
166
+
167
+ // const demo = []
168
+ // for (let i = 0; i < 1000; i++) {
169
+ // demo.push({
170
+ // x: groundLine.curve.getPointAt(i / 1000).x,
171
+ // y: groundLine.curve.getPointAt(i / 1000).y,
172
+ // z: groundLine.curve.getPointAt(i / 1000).z,
173
+ // })
174
+ // }
175
+
176
+ // console.log(JSON.stringify(demo, null, 2))
177
+
142
178
  var tube = new TubeGeometry(groundLine.curve, 10000, 4, 2, false);
143
179
  var groundMaterial = new ShaderMaterial({
144
180
  transparent: true,
@@ -165,6 +201,8 @@ var Inspection = /*#__PURE__*/function () {
165
201
  var mesh2 = new Mesh(tube, groundMaterial);
166
202
  var mapMaterial = new ShaderMaterial({
167
203
  transparent: true,
204
+ depthTest: true,
205
+ depthWrite: false,
168
206
  uniforms: {
169
207
  u_time: {
170
208
  value: 0
@@ -185,6 +223,7 @@ var Inspection = /*#__PURE__*/function () {
185
223
  this.groundMaterial = groundMaterial;
186
224
  this.mapMaterial = mapMaterial;
187
225
  this.anchorMesh();
226
+ this.setMapViewAnchorPoint();
188
227
  }
189
228
  }, {
190
229
  key: "anchorMesh",
@@ -225,6 +264,33 @@ var Inspection = /*#__PURE__*/function () {
225
264
  this.gobal.scene.add(camera);
226
265
  this.mapCamera = camera;
227
266
  }
267
+ }, {
268
+ key: "setMapViewAnchorPoint",
269
+ value: function setMapViewAnchorPoint() {
270
+ var _this3 = this;
271
+ var anchorGroup = new Group();
272
+ Object.keys(targetProgresspoints).forEach(function (key) {
273
+ var demoPoints = _this3.groundCurve.getPointAt(Number(key));
274
+ var mapViewAnchorPoint = new Mesh(new CylinderGeometry(20, 20, 2, 64), new ShaderMaterial({
275
+ uniforms: {
276
+ uColor: {
277
+ value: new Vector4(1, 1, 1, 1)
278
+ }
279
+ },
280
+ vertexShader: /* glsl */"\n varying vec2 vUv;\n void main(){\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n ",
281
+ fragmentShader: /* glsl */"\n uniform vec4 uColor;\n varying vec2 vUv;\n void main(){\n vec2 center = vec2(0.47, 0.47);\n float radius = 0.4;\n float border = 0.05;\n float dist = distance(vUv, center);\n\n if (dist < radius - border) {\n gl_FragColor = uColor;\n } else if (dist < radius + border) {\n gl_FragColor = vec4(0.6, 0.6, 0.6, 1.0); \n } else {\n gl_FragColor = vec4(.7, .7, .7, 1.0); \n }\n }\n ",
282
+ depthTest: true,
283
+ depthWrite: false,
284
+ transparent: true
285
+ }));
286
+ mapViewAnchorPoint.layers.set(5);
287
+ mapViewAnchorPoint.position.set(demoPoints.x, demoPoints.y + 30, demoPoints.z);
288
+ mapViewAnchorPoint.scale.set(1.3, 1, 1);
289
+ anchorGroup.add(mapViewAnchorPoint);
290
+ _this3.mapAnchorObject.set(key, mapViewAnchorPoint);
291
+ });
292
+ this.gobal.scene.add(anchorGroup);
293
+ }
228
294
  }, {
229
295
  key: "setInspectionCamera",
230
296
  value: function setInspectionCamera() {
@@ -276,15 +342,12 @@ var Inspection = /*#__PURE__*/function () {
276
342
  }, {
277
343
  key: "hide",
278
344
  value: function hide() {
279
- var _this3 = this;
345
+ var _this4 = this;
280
346
  this.isHide = true;
281
347
  if (this.viewElement && document.body.contains(this.viewElement)) document.body.removeChild(this.viewElement);
282
348
  if (this.gobal.scene.camera === this.minCamera) {
283
349
  this.gobal.scene.camera = this.gobal.scene.cutoutCamera;
284
350
  this.gobal.scene.cutoutCamera = this.minCamera;
285
- initPostEffects(this.gobal.scene.scene, this.gobal.scene.renderer, this.gobal.scene.cutoutCamera, {
286
- type: 'sub'
287
- });
288
351
  }
289
352
  this.gobal.scene.cutout = false;
290
353
  this.gobal.scene.cutMain(this.gobal.scene.renderer);
@@ -293,8 +356,8 @@ var Inspection = /*#__PURE__*/function () {
293
356
 
294
357
  // this.addeHighSelected([])
295
358
  var check = use.useframe(function () {
296
- if (_this3.inspectionObject.model) {
297
- _this3.inspectionObject.model.visible = false;
359
+ if (_this4.inspectionObject.model) {
360
+ _this4.inspectionObject.model.visible = false;
298
361
  check();
299
362
  }
300
363
  });
@@ -1 +1 @@
1
- {"version":3,"names":["Color","CylinderGeometry","Group","Mesh","MeshBasicMaterial","OrthographicCamera","PerspectiveCamera","ShaderMaterial","TubeGeometry","use","utils","RoundLineGeometry","initPostEffects","fragmentShader","vertexShader","fragmentShader2","observe","flyLinePoints","groundLinePoints","targetProgresspoints","InspectionObject","storeManagement","viewInfoPro","width","height","top","left","viewInfoDev","viewInfo","Inspection","gobal","Map","generateInspectionPath","makeGroundRoad","setInspectionCamera","inspectionObject","startInspection","curve","hide","scale","window","app","envServer","scaleRatio","get","querySelector","getBoundingClientRect","viewElement","document","createElement","style","position","cursor","addEventListener","toggleView","handleObserve","setTimeout","flyLine","radius","close","params","target","highlight","currentAnchor","anchorObject","traverse","child","name","material","color","groundLine","tube","groundMaterial","transparent","uniforms","u_time","value","alpha","centerColor","sideColor","otherColor","mesh2","mapMaterial","mesh3","layers","set","groundGroup","add","y","groundCurve","line","scene","anchorMesh","anchorGroup","Object","keys","forEach","key","demoPoints","getPointAt","Number","singleAnchorGroup","cylinder","cylinder1","x","z","k","s","camera","lookAt","mapCamera","minCamera","innerWidth","innerHeight","cutoutCamera","cutoutArea","setMapView","getLength","startMove","targetProgress","targetPosition","gotoTarget","isHide","body","appendChild","cutout","visible","model","contains","removeChild","renderer","type","cutMain","check","useframe"],"sources":["../../../../src/factory/unit/inspection/index.ts"],"sourcesContent":["import type { Object3D, Vector3 } from '@anov/3d-core'\nimport { Color, CylinderGeometry, Group, Mesh, MeshBasicMaterial, MirroredRepeatWrapping, OrthographicCamera, PerspectiveCamera, PlaneGeometry, RepeatWrapping, ShaderChunk, ShaderMaterial, TextureLoader, TubeGeometry, lib, use, utils } from '@anov/3d-core'\nimport { RoundLineGeometry, addColorifyPass, createBloomSelectedTool, createHighSelectedTool, initPostEffects } from '@anov/3d-ability'\nimport type Factory3D from '../../3d'\nimport { usePath } from '../../3d'\nimport fragmentShader from '../glsl/highway/fragmentShader'\nimport vertexShader from '../glsl/highway/vertexShader'\nimport fragmentShader2 from '../glsl/highway/fragmentShader2'\nimport { observe } from '../../utils/observe'\nimport { flyLinePoints, groundLinePoints, targetProgresspoints } from './lineData'\nimport InspectionObject from './InspectionObject'\nimport InspectionMap from './map'\n\nconst { storeManagement } = utils\n\nconst viewInfoPro = {\n width: 502,\n height: 256,\n top: 110,\n left: 40,\n}\n\nconst viewInfoDev = {\n width: 300,\n height: 200,\n top: 50,\n left: 0,\n}\n\nconst viewInfo = process.env.ENV === 'dev' ? viewInfoDev : viewInfoPro\n\nclass Inspection {\n gobal: Factory3D\n inspectionObject\n curve\n groundCurve\n line: Group\n viewElement: HTMLDivElement\n isHide = true\n anchorObject: Map<string, Group> = new Map()\n anchorGroup: Group\n minCamera: PerspectiveCamera\n InspectionPathObject: Object3D\n groundMaterial\n mapMaterial: any\n map\n mapCamera\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.generateInspectionPath()\n this.makeGroundRoad()\n this.setInspectionCamera()\n\n this.inspectionObject = new InspectionObject(this)\n\n this.startInspection(this.curve)\n\n this.hide()\n\n const scale = (window as any)?.app?.envServer?.scaleRatio ?? 1\n const { left, top } = storeManagement.get<HTMLElement>('container').querySelector('canvas').getBoundingClientRect()\n\n const viewElement = document.createElement('div')\n viewElement.style.position = 'absolute'\n viewElement.style.width = `${viewInfo.width * scale}px`\n viewElement.style.height = `${viewInfo.height * scale}px`\n viewElement.style.cursor = 'pointer'\n viewElement.style.top = `${(viewInfo.top) * scale + top}px`\n viewElement.style.left = `${(viewInfo.left) * scale + left}px`\n\n viewElement.addEventListener('click', () => {\n this.gobal.toggleView()\n })\n\n const handleObserve = () => {\n setTimeout(() => {\n const scale = (window as any)?.app?.envServer?.scaleRatio ?? 1\n const { left, top } = storeManagement.get<HTMLElement>('container').querySelector('canvas').getBoundingClientRect()\n\n viewElement.style.width = `${viewInfo.width * scale}px`\n viewElement.style.height = `${viewInfo.height * scale}px`\n viewElement.style.top = `${(viewInfo.top) * scale + top}px`\n viewElement.style.left = `${(viewInfo.left) * scale + left}px`\n }, 500)\n }\n\n document.querySelector('.cml-panel-container') && observe(document.querySelector('.cml-panel-container'), () => {\n handleObserve()\n })\n\n this.viewElement = viewElement\n }\n\n /**\n * generate inspection path\n * @param linePosition\n */\n private generateInspectionPath() {\n const flyLine = new RoundLineGeometry(flyLinePoints, {\n radius: 20,\n close: true,\n })\n\n this.curve = flyLine.curve\n }\n\n setSelectedAnchorObject(params: { target: string; highlight: boolean }) {\n const { target, highlight } = params\n const currentAnchor = this.anchorObject.get(target) as any\n\n if (!currentAnchor)\n return\n\n if (highlight) {\n currentAnchor.traverse((child) => {\n if (child.name === 'cylinder')\n child.material = new MeshBasicMaterial({ color: new Color('yellow') })\n else\n child.material = new MeshBasicMaterial({ color: new Color('#facb2b') })\n })\n }\n else {\n currentAnchor.traverse((child) => {\n if (child.name === 'cylinder')\n child.material = new MeshBasicMaterial({ color: new Color('#cdccca') })\n else\n child.material = new MeshBasicMaterial({ color: new Color('#fff') })\n })\n }\n }\n\n /**\n * make ground road\n */\n private makeGroundRoad() {\n const groundLine = new RoundLineGeometry(groundLinePoints, {\n radius: 20,\n close: true,\n })\n\n const tube = new TubeGeometry(groundLine.curve, 10000, 4, 2, false)\n const groundMaterial = new ShaderMaterial({\n transparent: true,\n uniforms: {\n u_time: {\n value: 0,\n },\n alpha: {\n value: 0.6,\n },\n centerColor: {\n value: new Color(0xFFFFFF),\n },\n sideColor: {\n value: new Color('#F75332'),\n },\n otherColor: {\n value: new Color('#D23F22'),\n },\n },\n vertexShader,\n fragmentShader,\n })\n const mesh2 = new Mesh(tube, groundMaterial)\n\n const mapMaterial = new ShaderMaterial({\n transparent: true,\n uniforms: {\n u_time: {\n value: 0,\n },\n },\n vertexShader,\n fragmentShader: fragmentShader2,\n })\n\n const mesh3 = new Mesh(tube, mapMaterial)\n\n mesh3.layers.set(5)\n\n const groundGroup = new Group()\n\n groundGroup.add(mesh3)\n groundGroup.add(mesh2)\n groundGroup.position.y = 3\n\n this.groundCurve = groundLine.curve\n this.line = groundGroup\n this.gobal.scene.add(groundGroup)\n\n this.groundMaterial = groundMaterial\n this.mapMaterial = mapMaterial\n\n this.anchorMesh()\n }\n\n private anchorMesh() {\n const anchorGroup = new Group()\n\n Object.keys(targetProgresspoints).forEach((key) => {\n const demoPoints = this.groundCurve.getPointAt(Number(key))\n const singleAnchorGroup = new Group()\n\n const cylinder = new Mesh(new CylinderGeometry(10, 10, 2, 64), new MeshBasicMaterial({ color: new Color('#cdccca') }))\n const cylinder1 = new Mesh(new CylinderGeometry(5, 5, 1, 64), new MeshBasicMaterial({ color: new Color('#fff') }))\n cylinder1.position.y = 2\n\n cylinder.name = 'cylinder'\n cylinder1.name = 'cylinder1'\n\n singleAnchorGroup.add(cylinder, cylinder1)\n singleAnchorGroup.position.set(demoPoints.x, demoPoints.y + 5, demoPoints.z)\n\n this.anchorObject.set(targetProgresspoints[key].name, singleAnchorGroup)\n anchorGroup.add(singleAnchorGroup)\n })\n this.anchorGroup = anchorGroup\n this.gobal.scene.add(anchorGroup)\n }\n\n private setMapView() {\n const width = 1470\n const height = 800\n const k = width / height\n const s = 273\n\n const camera = new OrthographicCamera(-s * k + 5, s * k, s - 35, -s + 40, 1, 1000)\n\n camera.position.set(0, 400, 0)\n camera.lookAt(0, 0, 0)\n\n camera.layers.set(5)\n\n this.gobal.scene.add(camera)\n\n this.mapCamera = camera\n }\n\n private setInspectionCamera() {\n let minCamera\n\n if (this.minCamera) {\n minCamera = this.minCamera\n }\n else {\n minCamera = new PerspectiveCamera(30,\n window.innerWidth / window.innerHeight\n , 0.1, 1000)\n }\n\n this.gobal.scene.cutoutCamera = minCamera\n\n this.gobal.scene.cutoutArea = { x: viewInfo.left, y: viewInfo.top, width: viewInfo.width, height: viewInfo.height }\n this.gobal.scene.add(minCamera)\n\n this.minCamera = minCamera\n\n this.minCamera.layers.set(0)\n\n this.setMapView()\n }\n\n get getPathLength() {\n return this.curve.getLength()\n }\n\n startInspection(line) {\n this.setInspectionCamera()\n this.inspectionObject.startMove(line)\n }\n\n goToInspectionTarget(targetProgress: number) {\n const targetPosition = this.curve.getPointAt(targetProgress)\n this.inspectionObject.gotoTarget(targetPosition, targetProgress)\n }\n\n show() {\n this.isHide = false\n\n document.body.appendChild(this.viewElement)\n this.gobal.scene.cutout = true\n this.anchorGroup.visible = true\n this.line.visible = true\n this.inspectionObject.model && (this.inspectionObject.model.visible = true)\n }\n\n hide() {\n this.isHide = true\n\n if (this.viewElement && document.body.contains(this.viewElement))\n document.body.removeChild(this.viewElement)\n\n if (this.gobal.scene.camera === this.minCamera) {\n this.gobal.scene.camera = this.gobal.scene.cutoutCamera\n this.gobal.scene.cutoutCamera = this.minCamera\n\n initPostEffects(this.gobal.scene.scene, this.gobal.scene.renderer, this.gobal.scene.cutoutCamera, {\n type: 'sub',\n })\n }\n\n this.gobal.scene.cutout = false\n this.gobal.scene.cutMain(this.gobal.scene.renderer)\n this.line.visible = false\n this.anchorGroup.visible = false\n\n // this.addeHighSelected([])\n const check = use.useframe(() => {\n if (this.inspectionObject.model) {\n this.inspectionObject.model.visible = false\n check()\n }\n })\n }\n}\n\nexport default Inspection"],"mappings":"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"}
1
+ {"version":3,"names":["Color","CylinderGeometry","Group","Mesh","MeshBasicMaterial","OrthographicCamera","PerspectiveCamera","ShaderMaterial","TubeGeometry","Vector4","use","utils","RoundLineGeometry","fragmentShader","vertexShader","fragmentShader2","observe","flyLinePoints","groundLinePoints","targetProgresspoints","InspectionObject","DefaultFirstPerspectiveControls","storeManagement","viewInfoPro","width","height","top","left","viewInfoDev","viewInfo","Inspection","gobal","Map","generateInspectionPath","makeGroundRoad","setInspectionCamera","inspectionObject","startInspection","curve","hide","createViewElement","onHandleToggleView","scale","window","app","envServer","scaleRatio","get","querySelector","getBoundingClientRect","viewElement","document","createElement","style","position","cursor","addEventListener","toggleView","handleObserve","setTimeout","flyLine","radius","close","defaultFirstPerspectiveControls","minCamera","scene","renderer","domElement","enabled","emitter","on","type","params","target","highlight","currentAnchor","anchorObject","traverse","child","name","material","color","groundLine","tube","groundMaterial","transparent","uniforms","u_time","value","alpha","centerColor","sideColor","otherColor","mesh2","mapMaterial","depthTest","depthWrite","mesh3","layers","set","groundGroup","add","y","groundCurve","line","anchorMesh","setMapViewAnchorPoint","anchorGroup","Object","keys","forEach","key","demoPoints","getPointAt","Number","singleAnchorGroup","cylinder","cylinder1","x","z","k","s","camera","lookAt","mapCamera","mapViewAnchorPoint","uColor","mapAnchorObject","innerWidth","innerHeight","cutoutCamera","cutoutArea","setMapView","getLength","startMove","targetProgress","targetPosition","gotoTarget","isHide","body","appendChild","cutout","visible","model","contains","removeChild","cutMain","check","useframe"],"sources":["../../../../src/factory/unit/inspection/index.ts"],"sourcesContent":["import type { Object3D } from '@anov/3d-core'\nimport { Color, CylinderGeometry, Group, Mesh, MeshBasicMaterial, NormalBlending, OrthographicCamera, PerspectiveCamera, ShaderMaterial, TubeGeometry, Vector4, use, utils } from '@anov/3d-core'\nimport { RoundLineGeometry } from '@anov/3d-ability'\nimport type Factory3D from '../../3d'\nimport fragmentShader from '../glsl/highway/fragmentShader'\nimport vertexShader from '../glsl/highway/vertexShader'\nimport fragmentShader2 from '../glsl/highway/fragmentShader2'\nimport { observe } from '../../utils/observe'\nimport { flyLinePoints, groundLinePoints, targetProgresspoints } from './lineData'\nimport InspectionObject from './InspectionObject'\nimport DefaultFirstPerspectiveControls from './defaultFirstPerspectiveControls'\n\nconst { storeManagement } = utils\n\nconst viewInfoPro = {\n width: 502,\n height: 256,\n top: 110,\n left: 40,\n}\n\nconst viewInfoDev = {\n width: 300,\n height: 200,\n top: 50,\n left: 0,\n}\n\nconst viewInfo = process.env.ENV === 'dev' ? viewInfoDev : viewInfoPro\n\nclass Inspection {\n gobal: Factory3D\n inspectionObject\n curve\n groundCurve\n line: Group\n viewElement: HTMLDivElement\n isHide = true\n anchorObject: Map<string, Group> = new Map()\n mapAnchorObject: Map<string, Mesh> = new Map()\n anchorGroup: Group\n mapAnchorGroup: Group\n minCamera: PerspectiveCamera\n InspectionPathObject: Object3D\n groundMaterial\n mapMaterial: any\n map\n mapCamera\n defaultFirstPerspectiveControls\n\n constructor(gobal: Factory3D) {\n this.gobal = gobal\n this.generateInspectionPath()\n this.makeGroundRoad()\n this.setInspectionCamera()\n\n this.inspectionObject = new InspectionObject(this)\n\n this.startInspection(this.curve)\n this.hide()\n this.createViewElement()\n this.onHandleToggleView()\n }\n\n /**\n * create view element, use to switch view [like a button]\n */\n private createViewElement() {\n const scale = (window as any)?.app?.envServer?.scaleRatio ?? 1\n const { left, top } = storeManagement.get<HTMLElement>('container').querySelector('canvas').getBoundingClientRect()\n\n const viewElement = document.createElement('div')\n viewElement.style.position = 'absolute'\n viewElement.style.width = `${viewInfo.width * scale}px`\n viewElement.style.height = `${viewInfo.height * scale}px`\n viewElement.style.cursor = 'pointer'\n viewElement.style.top = `${(viewInfo.top) * scale + top}px`\n viewElement.style.left = `${(viewInfo.left) * scale + left}px`\n\n viewElement.addEventListener('click', () => {\n this.gobal.toggleView()\n })\n\n const handleObserve = () => {\n setTimeout(() => {\n const scale = (window as any)?.app?.envServer?.scaleRatio ?? 1\n const { left, top } = storeManagement.get<HTMLElement>('container').querySelector('canvas').getBoundingClientRect()\n\n viewElement.style.width = `${viewInfo.width * scale}px`\n viewElement.style.height = `${viewInfo.height * scale}px`\n viewElement.style.top = `${(viewInfo.top) * scale + top}px`\n viewElement.style.left = `${(viewInfo.left) * scale + left}px`\n }, 500)\n }\n\n document.querySelector('.cml-panel-container') && observe(document.querySelector('.cml-panel-container'), () => {\n handleObserve()\n })\n\n this.viewElement = viewElement\n }\n\n /**\n * generate inspection path\n * @param linePosition\n */\n private generateInspectionPath() {\n const flyLine = new RoundLineGeometry(flyLinePoints, {\n radius: 20,\n close: true,\n })\n\n this.curve = flyLine.curve\n }\n\n private onHandleToggleView() {\n const defaultFirstPerspectiveControls = new DefaultFirstPerspectiveControls(\n this.minCamera,\n this.gobal.scene.renderer.domElement,\n )\n\n this.defaultFirstPerspectiveControls = defaultFirstPerspectiveControls\n\n defaultFirstPerspectiveControls.enabled = false\n\n utils.emitter.on('toggleView', (type: 'Drone' | 'Global') => {\n if (type === 'Drone')\n defaultFirstPerspectiveControls.enabled = true\n\n else\n defaultFirstPerspectiveControls.enabled = false\n })\n }\n\n setSelectedAnchorObject(params: { target: string; highlight: boolean }) {\n const { target, highlight } = params\n const currentAnchor = this.anchorObject.get(target) as any\n\n if (!currentAnchor)\n return\n\n if (highlight) {\n currentAnchor.traverse((child) => {\n if (child.name === 'cylinder')\n child.material = new MeshBasicMaterial({ color: new Color('yellow') })\n else\n child.material = new MeshBasicMaterial({ color: new Color('#facb2b') })\n })\n }\n else {\n currentAnchor.traverse((child) => {\n if (child.name === 'cylinder')\n child.material = new MeshBasicMaterial({ color: new Color('#cdccca') })\n else\n child.material = new MeshBasicMaterial({ color: new Color('#fff') })\n })\n }\n }\n\n /**\n * make ground road\n */\n private makeGroundRoad() {\n const groundLine = new RoundLineGeometry(groundLinePoints, {\n radius: 20,\n close: true,\n })\n\n // const demo = []\n // for (let i = 0; i < 1000; i++) {\n // demo.push({\n // x: groundLine.curve.getPointAt(i / 1000).x,\n // y: groundLine.curve.getPointAt(i / 1000).y,\n // z: groundLine.curve.getPointAt(i / 1000).z,\n // })\n // }\n\n // console.log(JSON.stringify(demo, null, 2))\n\n const tube = new TubeGeometry(groundLine.curve, 10000, 4, 2, false)\n const groundMaterial = new ShaderMaterial({\n transparent: true,\n uniforms: {\n u_time: {\n value: 0,\n },\n alpha: {\n value: 0.6,\n },\n centerColor: {\n value: new Color(0xFFFFFF),\n },\n sideColor: {\n value: new Color('#F75332'),\n },\n otherColor: {\n value: new Color('#D23F22'),\n },\n },\n vertexShader,\n fragmentShader,\n })\n const mesh2 = new Mesh(tube, groundMaterial)\n\n const mapMaterial = new ShaderMaterial({\n transparent: true,\n depthTest: true,\n depthWrite: false,\n uniforms: {\n u_time: {\n value: 0,\n },\n },\n vertexShader,\n fragmentShader: fragmentShader2,\n })\n\n const mesh3 = new Mesh(tube, mapMaterial)\n\n mesh3.layers.set(5)\n\n const groundGroup = new Group()\n\n groundGroup.add(mesh3)\n groundGroup.add(mesh2)\n groundGroup.position.y = 3\n\n this.groundCurve = groundLine.curve\n\n this.line = groundGroup\n this.gobal.scene.add(groundGroup)\n\n this.groundMaterial = groundMaterial\n this.mapMaterial = mapMaterial\n\n this.anchorMesh()\n this.setMapViewAnchorPoint()\n }\n\n private anchorMesh() {\n const anchorGroup = new Group()\n\n Object.keys(targetProgresspoints).forEach((key) => {\n const demoPoints = this.groundCurve.getPointAt(Number(key))\n const singleAnchorGroup = new Group()\n\n const cylinder = new Mesh(new CylinderGeometry(10, 10, 2, 64), new MeshBasicMaterial({ color: new Color('#cdccca') }))\n const cylinder1 = new Mesh(new CylinderGeometry(5, 5, 1, 64), new MeshBasicMaterial({ color: new Color('#fff') }))\n cylinder1.position.y = 2\n\n cylinder.name = 'cylinder'\n cylinder1.name = 'cylinder1'\n\n singleAnchorGroup.add(cylinder, cylinder1)\n singleAnchorGroup.position.set(demoPoints.x, demoPoints.y + 5, demoPoints.z)\n\n this.anchorObject.set(targetProgresspoints[key].name, singleAnchorGroup)\n anchorGroup.add(singleAnchorGroup)\n })\n this.anchorGroup = anchorGroup\n this.gobal.scene.add(anchorGroup)\n }\n\n private setMapView() {\n const width = 1470\n const height = 800\n const k = width / height\n const s = 273\n\n const camera = new OrthographicCamera(-s * k + 5, s * k, s - 35, -s + 40, 1, 1000)\n\n camera.position.set(0, 400, 0)\n camera.lookAt(0, 0, 0)\n\n camera.layers.set(5)\n\n this.gobal.scene.add(camera)\n\n this.mapCamera = camera\n }\n\n private setMapViewAnchorPoint() {\n const anchorGroup = new Group()\n\n Object.keys(targetProgresspoints).forEach((key) => {\n const demoPoints = this.groundCurve.getPointAt(Number(key))\n const mapViewAnchorPoint = new Mesh(new CylinderGeometry(20, 20, 2, 64),\n new ShaderMaterial({\n uniforms: {\n uColor: {\n value: new Vector4(1, 1, 1, 1),\n },\n },\n vertexShader: /* glsl */ `\n varying vec2 vUv;\n void main(){\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n }\n `,\n fragmentShader: /* glsl */ `\n uniform vec4 uColor;\n varying vec2 vUv;\n void main(){\n vec2 center = vec2(0.47, 0.47);\n float radius = 0.4;\n float border = 0.05;\n float dist = distance(vUv, center);\n\n if (dist < radius - border) {\n gl_FragColor = uColor;\n } else if (dist < radius + border) {\n gl_FragColor = vec4(0.6, 0.6, 0.6, 1.0); \n } else {\n gl_FragColor = vec4(.7, .7, .7, 1.0); \n }\n }\n `,\n depthTest: true,\n depthWrite: false,\n transparent: true,\n }))\n\n mapViewAnchorPoint.layers.set(5)\n mapViewAnchorPoint.position.set(demoPoints.x, demoPoints.y + 30, demoPoints.z)\n mapViewAnchorPoint.scale.set(1.3, 1, 1)\n\n anchorGroup.add(mapViewAnchorPoint)\n this.mapAnchorObject.set(key, mapViewAnchorPoint)\n })\n\n this.gobal.scene.add(anchorGroup)\n }\n\n private setInspectionCamera() {\n let minCamera\n\n if (this.minCamera) {\n minCamera = this.minCamera\n }\n else {\n minCamera = new PerspectiveCamera(30,\n window.innerWidth / window.innerHeight\n , 0.1, 1000)\n }\n\n this.gobal.scene.cutoutCamera = minCamera\n\n this.gobal.scene.cutoutArea = { x: viewInfo.left, y: viewInfo.top, width: viewInfo.width, height: viewInfo.height }\n this.gobal.scene.add(minCamera)\n\n this.minCamera = minCamera\n this.minCamera.layers.set(0)\n\n this.setMapView()\n }\n\n get getPathLength() {\n return this.curve.getLength()\n }\n\n startInspection(line) {\n this.setInspectionCamera()\n this.inspectionObject.startMove(line)\n }\n\n goToInspectionTarget(targetProgress: number) {\n const targetPosition = this.curve.getPointAt(targetProgress)\n this.inspectionObject.gotoTarget(targetPosition, targetProgress)\n }\n\n show() {\n this.isHide = false\n\n document.body.appendChild(this.viewElement)\n this.gobal.scene.cutout = true\n this.anchorGroup.visible = true\n this.line.visible = true\n this.inspectionObject.model && (this.inspectionObject.model.visible = true)\n }\n\n hide() {\n this.isHide = true\n\n if (this.viewElement && document.body.contains(this.viewElement))\n document.body.removeChild(this.viewElement)\n\n if (this.gobal.scene.camera === this.minCamera) {\n this.gobal.scene.camera = this.gobal.scene.cutoutCamera\n this.gobal.scene.cutoutCamera = this.minCamera\n }\n\n this.gobal.scene.cutout = false\n this.gobal.scene.cutMain(this.gobal.scene.renderer)\n this.line.visible = false\n this.anchorGroup.visible = false\n\n // this.addeHighSelected([])\n const check = use.useframe(() => {\n if (this.inspectionObject.model) {\n this.inspectionObject.model.visible = false\n check()\n }\n })\n }\n}\n\nexport default Inspection"],"mappings":"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"}
@@ -93,7 +93,6 @@ var Camera = /*#__PURE__*/function () {
93
93
  value: function handleChanged() {
94
94
  var _this = this;
95
95
  this.controls.addEventListener('change', function () {
96
- console.log(_this.isTransitionPeriod, _this.isTrigger);
97
96
  if (!_this.isTransitionPeriod && !_this.isTrigger) {
98
97
  var lookat = _this.controls.target;
99
98
  var position = _this.camera.position;
@@ -1 +1 @@
1
- {"version":3,"names":["Box3","MathUtils","Vector3","TWEEN","MessageType","sendToMessage","EMessageStatus","Camera","app","isTrigger","camera","sceneControl","controls","handleChanged","currentPos","pitch","box","setFromPoints","map","item","center","getCenter","size","getSize","halfDiagonal","length","maxDistance","Math","tan","fov","PI","cameraToCenterDistance","directionVector","position","clone","sub","target","normalize","lastPosition","multiplyScalar","add","lastLookat","caclTargetByPitch","subVectors","upVector","localPitchAxis","crossVectors","applyAxisAngle","degToRad","distance","distanceTo","newTarget","prevTarget","prevPosition","lastTarget","addEventListener","console","log","isTransitionPeriod","lookat","Event","Success","undefined","toArray","params","Promise","res","duration","moveOptions","onUpdate","onComplate","userInput","Array","isArray","caclCurrentPos","moveCameraTo","caclSingleCoordinate","fromArray","_","x","y","z","options","currentPoition","currentPositionInterpolation","copy","requestAnimationFrame","renderer","render","scene","tween","stop","Tween","t","p","to","rotation","onStart","enabled","easing","Easing","Quadratic","InOut","rotationParent","currentPosition","lerpVectors","onComplete","setTimeout","start"],"sources":["../../../src/module/camera/index.ts"],"sourcesContent":["import type { OrbitControls, PerspectiveCamera } from '@anov/3d-core'\nimport { Box3, MathUtils, Vector3 } from '@anov/3d-core'\nimport * as TWEEN from '@tweenjs/tween.js'\nimport { MessageType, sendToMessage } from '../../utils/messageFn'\nimport type { BaseModule } from '../../utils/abstract'\nimport { EMessageStatus } from '../../messageStatus'\nimport type Anov3D from '../../sdkEntry'\n\ntype vector3Array = [number, number, number]\ninterface ChangeCameraPresetOptions {\n duration?: number\n onUpdate?: (params: { position: Vector3; lookat: Vector3 }) => void\n onStart?: () => void\n onComplate?: () => void\n isTrigger?: boolean\n}\n\nclass Camera implements BaseModule {\n app: Anov3D\n private camera: PerspectiveCamera\n private controls: OrbitControls\n private isTransitionPeriod = false\n private isTrigger = true\n private tween: any\n\n constructor(app: Anov3D) {\n this.app = app\n this.isTrigger = false\n this.camera = app.sceneControl.camera!\n this.controls = app.sceneControl.controls!\n this.handleChanged()\n }\n\n /**\n * caclCurrentPos\n * @param currentPos\n * @returns\n */\n private caclCurrentPos(currentPos: vector3Array[], pitch: number) {\n const box = new Box3()\n\n box.setFromPoints(currentPos.map(item => new Vector3(item[0], item[1], item[2])))\n\n const center = box.getCenter(new Vector3())\n const size = box.getSize(new Vector3())\n const halfDiagonal = size.length() * 0.5\n\n const maxDistance = halfDiagonal / Math.tan(this.camera.fov / 2 * Math.PI / 180)\n const cameraToCenterDistance = maxDistance\n const directionVector = (this.camera.position.clone()).sub(this.controls.target).normalize() // 相机指向物体中心的向量\n\n const lastPosition = directionVector.multiplyScalar(cameraToCenterDistance).add(center)\n const lastLookat = this.caclTargetByPitch(pitch, center, lastPosition)\n\n return {\n lastPosition,\n lastLookat,\n }\n }\n\n /**\n * caclTargetByPitch\n * @param pitch\n * @param target\n * @param position\n * @returns\n */\n private caclTargetByPitch(pitch: number, target: Vector3, position: Vector3) {\n const directionVector = new Vector3().subVectors(target, position)\n const upVector = new Vector3(0, 1, 0)\n const localPitchAxis = new Vector3().crossVectors(directionVector, upVector).normalize()\n\n directionVector.applyAxisAngle(localPitchAxis, MathUtils.degToRad(pitch))\n\n const distance = position.distanceTo(target)\n const newTarget = position.clone().add(directionVector.normalize().multiplyScalar(distance))\n\n return newTarget\n }\n\n /**\n * caclSingleCoordinate\n * @param prevTarget\n * @param prevPosition\n * @param lastTarget\n * @returns\n */\n private caclSingleCoordinate(prevTarget: Vector3, prevPosition: Vector3, lastTarget: Vector3) {\n const directionVector = lastTarget.clone().sub(prevTarget).normalize()\n return directionVector.multiplyScalar(lastTarget.distanceTo(prevTarget)).add(prevPosition)\n }\n\n /**\n * handle camera changed\n */\n private handleChanged() {\n this.controls.addEventListener('change', () => {\n console.log(this.isTransitionPeriod, this.isTrigger)\n if (!this.isTransitionPeriod && !this.isTrigger) {\n const lookat = this.controls.target\n const position = this.camera.position\n\n sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n\n position: position.toArray(),\n target: lookat.toArray(),\n })\n }\n\n // if (this.isTransitionPeriod)\n // this.app.sceneControl.renderer!.render(this.app.sceneControl.scene!, this.app.sceneControl.camera!)\n })\n }\n\n /**\n * focus On Position\n * @param params\n */\n focus(params: { target: vector3Array | vector3Array[]; pitch?: number; duration?: number; isTrigger?: boolean }) {\n return new Promise((res) => {\n const { target: position, pitch, duration } = params\n const moveOptions = () => ({\n duration: (duration && duration * 1000) ?? 1000,\n isTrigger: params.isTrigger ?? true,\n onUpdate: ({ position, lookat }) => {\n this.isTrigger = params.isTrigger ?? true\n params.isTrigger\n && sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n position: position.toArray(),\n target: lookat.toArray(),\n })\n },\n onComplate: () => {\n this.isTrigger = false\n\n res({\n position: this.camera.position.toArray(),\n target: this.controls.target.toArray(),\n duration: params.duration ?? 0,\n userInput: true,\n pitch: pitch ?? 40,\n })\n },\n }) as ChangeCameraPresetOptions\n\n if (Array.isArray(position[0])) {\n const currentPos = position as vector3Array[]\n const { lastPosition, lastLookat } = this.caclCurrentPos(currentPos, 0)\n\n this.moveCameraTo(\n lastPosition,\n lastLookat,\n pitch,\n moveOptions(),\n )\n }\n else {\n const currentPos = position as vector3Array\n const lastPosition = this.caclSingleCoordinate(this.controls.target, this.camera.position, new Vector3().fromArray(currentPos))\n const lastLookat = this.caclTargetByPitch(0, new Vector3().fromArray(currentPos), lastPosition)\n\n this.moveCameraTo(\n lastPosition,\n lastLookat,\n pitch,\n moveOptions(),\n )\n }\n })\n }\n\n /**\n * set camera\n * @param params\n */\n set(params: { position: vector3Array; target: vector3Array; isTrigger?: boolean; duration?: number }) {\n return new Promise((res, _) => {\n this.moveCameraTo(\n new Vector3(params.position[0], params.position[1], params.position[2]),\n new Vector3(params.target[0], params.target[1], params.target[2]),\n 0,\n {\n isTrigger: params.isTrigger ?? true,\n duration: (params.duration && params.duration * 1000) ?? 1000,\n onUpdate: ({ position, lookat }) => {\n this.isTrigger = params.isTrigger ?? true\n params.isTrigger\n && sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n position: position.toArray(),\n target: lookat.toArray(),\n })\n },\n onComplate: () => {\n this.isTrigger = false\n\n res({\n position: this.camera.position.toArray(),\n target: this.controls.target.toArray(),\n isTrigger: true,\n duration: params.duration ?? 0,\n userInput: true,\n })\n },\n })\n })\n }\n\n /**\n * get Camera info\n * @returns\n */\n get() {\n return {\n position: [this.camera.position.x, this.camera.position.y, this.camera.position.z],\n target: [this.controls.target.x, this.controls.target.y, this.controls.target.z],\n }\n }\n\n /**\n * interpolation move camera\n * @param position\n * @param target\n * @param options\n */\n private moveCameraTo(position: Vector3, target: Vector3, pitch = 0, options?: ChangeCameraPresetOptions) {\n const currentPoition = this.camera.position.clone()\n const currentPositionInterpolation = new Vector3()\n\n if (options?.duration === 0) {\n this.isTrigger = !options.isTrigger\n this.camera.position.copy(position)\n this.controls.target.copy(target)\n\n requestAnimationFrame(() => {\n options?.onComplate && options.onComplate()\n this.app.sceneControl.renderer!.render(this.app.sceneControl.scene!, this.app.sceneControl.camera!)\n })\n\n return\n }\n\n if (this.tween)\n this.tween.stop()\n\n this.tween = new TWEEN.Tween({ t: 0, lookat: this.controls.target.clone(), p: 0 }).to({ t: 1, lookat: target, p: (-this.camera.rotation.x + (pitch ? MathUtils.degToRad(-pitch) : 0)) }, options?.duration || 1000)\n .onStart(() => {\n options?.onStart && options.onStart()\n this.controls.enabled = false\n this.isTransitionPeriod = true\n })\n .easing(TWEEN.Easing.Quadratic.InOut)\n .onUpdate(({ t, lookat, p }) => {\n this.controls.target.copy(lookat)\n\n if (pitch)\n // @ts-ignore\n this.camera.rotationParent.x = p\n\n const currentPosition = currentPositionInterpolation.lerpVectors(currentPoition, position, t)\n this.camera.position.copy(currentPosition)\n options?.onUpdate && options.onUpdate({ position: currentPosition, lookat })\n })\n .onComplete(() => {\n requestAnimationFrame(() => {\n options?.onComplate && options.onComplate()\n })\n\n this.controls.enabled = true\n\n setTimeout(() => {\n this.isTransitionPeriod = false\n })\n })\n .start()\n }\n}\n\nexport default Camera"],"mappings":"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"}
1
+ {"version":3,"names":["Box3","MathUtils","Vector3","TWEEN","MessageType","sendToMessage","EMessageStatus","Camera","app","isTrigger","camera","sceneControl","controls","handleChanged","currentPos","pitch","box","setFromPoints","map","item","center","getCenter","size","getSize","halfDiagonal","length","maxDistance","Math","tan","fov","PI","cameraToCenterDistance","directionVector","position","clone","sub","target","normalize","lastPosition","multiplyScalar","add","lastLookat","caclTargetByPitch","subVectors","upVector","localPitchAxis","crossVectors","applyAxisAngle","degToRad","distance","distanceTo","newTarget","prevTarget","prevPosition","lastTarget","addEventListener","isTransitionPeriod","lookat","Event","Success","undefined","toArray","params","Promise","res","duration","moveOptions","onUpdate","onComplate","userInput","Array","isArray","caclCurrentPos","moveCameraTo","caclSingleCoordinate","fromArray","_","x","y","z","options","currentPoition","currentPositionInterpolation","copy","requestAnimationFrame","renderer","render","scene","tween","stop","Tween","t","p","to","rotation","onStart","enabled","easing","Easing","Quadratic","InOut","rotationParent","currentPosition","lerpVectors","onComplete","setTimeout","start"],"sources":["../../../src/module/camera/index.ts"],"sourcesContent":["import type { OrbitControls, PerspectiveCamera } from '@anov/3d-core'\nimport { Box3, MathUtils, Vector3 } from '@anov/3d-core'\nimport * as TWEEN from '@tweenjs/tween.js'\nimport { MessageType, sendToMessage } from '../../utils/messageFn'\nimport type { BaseModule } from '../../utils/abstract'\nimport { EMessageStatus } from '../../messageStatus'\nimport type Anov3D from '../../sdkEntry'\n\ntype vector3Array = [number, number, number]\ninterface ChangeCameraPresetOptions {\n duration?: number\n onUpdate?: (params: { position: Vector3; lookat: Vector3 }) => void\n onStart?: () => void\n onComplate?: () => void\n isTrigger?: boolean\n}\n\nclass Camera implements BaseModule {\n app: Anov3D\n private camera: PerspectiveCamera\n private controls: OrbitControls\n private isTransitionPeriod = false\n private isTrigger = true\n private tween: any\n\n constructor(app: Anov3D) {\n this.app = app\n this.isTrigger = false\n this.camera = app.sceneControl.camera!\n this.controls = app.sceneControl.controls!\n this.handleChanged()\n }\n\n /**\n * caclCurrentPos\n * @param currentPos\n * @returns\n */\n private caclCurrentPos(currentPos: vector3Array[], pitch: number) {\n const box = new Box3()\n\n box.setFromPoints(currentPos.map(item => new Vector3(item[0], item[1], item[2])))\n\n const center = box.getCenter(new Vector3())\n const size = box.getSize(new Vector3())\n const halfDiagonal = size.length() * 0.5\n\n const maxDistance = halfDiagonal / Math.tan(this.camera.fov / 2 * Math.PI / 180)\n const cameraToCenterDistance = maxDistance\n const directionVector = (this.camera.position.clone()).sub(this.controls.target).normalize() // 相机指向物体中心的向量\n\n const lastPosition = directionVector.multiplyScalar(cameraToCenterDistance).add(center)\n const lastLookat = this.caclTargetByPitch(pitch, center, lastPosition)\n\n return {\n lastPosition,\n lastLookat,\n }\n }\n\n /**\n * caclTargetByPitch\n * @param pitch\n * @param target\n * @param position\n * @returns\n */\n private caclTargetByPitch(pitch: number, target: Vector3, position: Vector3) {\n const directionVector = new Vector3().subVectors(target, position)\n const upVector = new Vector3(0, 1, 0)\n const localPitchAxis = new Vector3().crossVectors(directionVector, upVector).normalize()\n\n directionVector.applyAxisAngle(localPitchAxis, MathUtils.degToRad(pitch))\n\n const distance = position.distanceTo(target)\n const newTarget = position.clone().add(directionVector.normalize().multiplyScalar(distance))\n\n return newTarget\n }\n\n /**\n * caclSingleCoordinate\n * @param prevTarget\n * @param prevPosition\n * @param lastTarget\n * @returns\n */\n private caclSingleCoordinate(prevTarget: Vector3, prevPosition: Vector3, lastTarget: Vector3) {\n const directionVector = lastTarget.clone().sub(prevTarget).normalize()\n return directionVector.multiplyScalar(lastTarget.distanceTo(prevTarget)).add(prevPosition)\n }\n\n /**\n * handle camera changed\n */\n private handleChanged() {\n this.controls.addEventListener('change', () => {\n if (!this.isTransitionPeriod && !this.isTrigger) {\n const lookat = this.controls.target\n const position = this.camera.position\n\n sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n\n position: position.toArray(),\n target: lookat.toArray(),\n })\n }\n\n // if (this.isTransitionPeriod)\n // this.app.sceneControl.renderer!.render(this.app.sceneControl.scene!, this.app.sceneControl.camera!)\n })\n }\n\n /**\n * focus On Position\n * @param params\n */\n focus(params: { target: vector3Array | vector3Array[]; pitch?: number; duration?: number; isTrigger?: boolean }) {\n return new Promise((res) => {\n const { target: position, pitch, duration } = params\n const moveOptions = () => ({\n duration: (duration && duration * 1000) ?? 1000,\n isTrigger: params.isTrigger ?? true,\n onUpdate: ({ position, lookat }) => {\n this.isTrigger = params.isTrigger ?? true\n params.isTrigger\n && sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n position: position.toArray(),\n target: lookat.toArray(),\n })\n },\n onComplate: () => {\n this.isTrigger = false\n\n res({\n position: this.camera.position.toArray(),\n target: this.controls.target.toArray(),\n duration: params.duration ?? 0,\n userInput: true,\n pitch: pitch ?? 40,\n })\n },\n }) as ChangeCameraPresetOptions\n\n if (Array.isArray(position[0])) {\n const currentPos = position as vector3Array[]\n const { lastPosition, lastLookat } = this.caclCurrentPos(currentPos, 0)\n\n this.moveCameraTo(\n lastPosition,\n lastLookat,\n pitch,\n moveOptions(),\n )\n }\n else {\n const currentPos = position as vector3Array\n const lastPosition = this.caclSingleCoordinate(this.controls.target, this.camera.position, new Vector3().fromArray(currentPos))\n const lastLookat = this.caclTargetByPitch(0, new Vector3().fromArray(currentPos), lastPosition)\n\n this.moveCameraTo(\n lastPosition,\n lastLookat,\n pitch,\n moveOptions(),\n )\n }\n })\n }\n\n /**\n * set camera\n * @param params\n */\n set(params: { position: vector3Array; target: vector3Array; isTrigger?: boolean; duration?: number }) {\n return new Promise((res, _) => {\n this.moveCameraTo(\n new Vector3(params.position[0], params.position[1], params.position[2]),\n new Vector3(params.target[0], params.target[1], params.target[2]),\n 0,\n {\n isTrigger: params.isTrigger ?? true,\n duration: (params.duration && params.duration * 1000) ?? 1000,\n onUpdate: ({ position, lookat }) => {\n this.isTrigger = params.isTrigger ?? true\n params.isTrigger\n && sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n position: position.toArray(),\n target: lookat.toArray(),\n })\n },\n onComplate: () => {\n this.isTrigger = false\n\n res({\n position: this.camera.position.toArray(),\n target: this.controls.target.toArray(),\n isTrigger: true,\n duration: params.duration ?? 0,\n userInput: true,\n })\n },\n })\n })\n }\n\n /**\n * get Camera info\n * @returns\n */\n get() {\n return {\n position: [this.camera.position.x, this.camera.position.y, this.camera.position.z],\n target: [this.controls.target.x, this.controls.target.y, this.controls.target.z],\n }\n }\n\n /**\n * interpolation move camera\n * @param position\n * @param target\n * @param options\n */\n private moveCameraTo(position: Vector3, target: Vector3, pitch = 0, options?: ChangeCameraPresetOptions) {\n const currentPoition = this.camera.position.clone()\n const currentPositionInterpolation = new Vector3()\n\n if (options?.duration === 0) {\n this.isTrigger = !options.isTrigger\n this.camera.position.copy(position)\n this.controls.target.copy(target)\n\n requestAnimationFrame(() => {\n options?.onComplate && options.onComplate()\n this.app.sceneControl.renderer!.render(this.app.sceneControl.scene!, this.app.sceneControl.camera!)\n })\n\n return\n }\n\n if (this.tween)\n this.tween.stop()\n\n this.tween = new TWEEN.Tween({ t: 0, lookat: this.controls.target.clone(), p: 0 }).to({ t: 1, lookat: target, p: (-this.camera.rotation.x + (pitch ? MathUtils.degToRad(-pitch) : 0)) }, options?.duration || 1000)\n .onStart(() => {\n options?.onStart && options.onStart()\n this.controls.enabled = false\n this.isTransitionPeriod = true\n })\n .easing(TWEEN.Easing.Quadratic.InOut)\n .onUpdate(({ t, lookat, p }) => {\n this.controls.target.copy(lookat)\n\n if (pitch)\n // @ts-ignore\n this.camera.rotationParent.x = p\n\n const currentPosition = currentPositionInterpolation.lerpVectors(currentPoition, position, t)\n this.camera.position.copy(currentPosition)\n options?.onUpdate && options.onUpdate({ position: currentPosition, lookat })\n })\n .onComplete(() => {\n requestAnimationFrame(() => {\n options?.onComplate && options.onComplate()\n })\n\n this.controls.enabled = true\n\n setTimeout(() => {\n this.isTransitionPeriod = false\n })\n })\n .start()\n }\n}\n\nexport default Camera"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anov/3d",
3
- "version": "0.0.89",
3
+ "version": "0.0.91",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "MIT",