@anov/3d-ability 0.0.6 → 0.0.8

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.
Files changed (51) hide show
  1. package/dist/camera/index.d.ts +11 -7
  2. package/dist/camera/index.js +48 -45
  3. package/dist/camera/index.js.map +1 -1
  4. package/dist/index.d.ts +7 -3
  5. package/dist/index.js +7 -3
  6. package/dist/index.js.map +1 -1
  7. package/dist/poi/2D/index.d.ts +1 -0
  8. package/dist/poi/2D/index.js +10 -0
  9. package/dist/poi/2D/index.js.map +1 -1
  10. package/dist/poi/3D/index.d.ts +12 -18
  11. package/dist/poi/3D/index.js +159 -123
  12. package/dist/poi/3D/index.js.map +1 -1
  13. package/dist/poi/3D/index1.d.ts +19 -0
  14. package/dist/poi/3D/index1.js +144 -0
  15. package/dist/poi/3D/index1.js.map +1 -0
  16. package/dist/poi/Sprite/index.js +44 -51
  17. package/dist/poi/Sprite/index.js.map +1 -1
  18. package/dist/poi/index.d.ts +2 -1
  19. package/dist/poi/index.js +2 -1
  20. package/dist/poi/index.js.map +1 -1
  21. package/dist/poi/utils/type.d.ts +4 -4
  22. package/dist/poi/utils/type.js +2 -1
  23. package/dist/poi/utils/type.js.map +1 -1
  24. package/dist/postEffects/addACESFilmicToneMappingPass.d.ts +4 -0
  25. package/dist/postEffects/addACESFilmicToneMappingPass.js +28 -0
  26. package/dist/postEffects/addACESFilmicToneMappingPass.js.map +1 -0
  27. package/dist/postEffects/addBrightnessContrastPass.d.ts +4 -0
  28. package/dist/postEffects/addBrightnessContrastPass.js +28 -0
  29. package/dist/postEffects/addBrightnessContrastPass.js.map +1 -0
  30. package/dist/postEffects/bloomPass.d.ts +2 -2
  31. package/dist/postEffects/bloomPass.js +14 -19
  32. package/dist/postEffects/bloomPass.js.map +1 -1
  33. package/dist/postEffects/colorifyPass.d.ts +6 -0
  34. package/dist/postEffects/colorifyPass.js +33 -0
  35. package/dist/postEffects/colorifyPass.js.map +1 -0
  36. package/dist/postEffects/index.d.ts +7 -1
  37. package/dist/postEffects/index.js +16 -5
  38. package/dist/postEffects/index.js.map +1 -1
  39. package/dist/postEffects/shader/colorify.d.ts +17 -0
  40. package/dist/postEffects/shader/colorify.js +19 -0
  41. package/dist/postEffects/shader/colorify.js.map +1 -0
  42. package/dist/postEffects/shader/gammaCorrectionShader.d.ts +15 -0
  43. package/dist/postEffects/shader/gammaCorrectionShader.js +18 -0
  44. package/dist/postEffects/shader/gammaCorrectionShader.js.map +1 -0
  45. package/dist/postEffects/shader/mapping.d.ts +19 -0
  46. package/dist/postEffects/shader/mapping.js +22 -0
  47. package/dist/postEffects/shader/mapping.js.map +1 -0
  48. package/dist/postEffects/shader/thermalMaging.d.ts +17 -0
  49. package/dist/postEffects/shader/thermalMaging.js +18 -0
  50. package/dist/postEffects/shader/thermalMaging.js.map +1 -0
  51. package/package.json +3 -3
@@ -1,14 +1,13 @@
1
- import type { OrbitControls, PerspectiveCamera } from '@anov/3d-core';
1
+ import type { OrbitControls, PerspectiveCamera, SceneControl } from '@anov/3d-core';
2
2
  declare type vector3Array = [number, number, number];
3
3
  declare class Camera {
4
4
  private camera;
5
5
  private controls;
6
+ private sceneControl;
6
7
  private isTransitionPeriod;
7
- constructor(camera: PerspectiveCamera, controls: OrbitControls);
8
- /**
9
- * handle camera changed
10
- */
11
- private handleChanged;
8
+ private isTrigger;
9
+ private tween;
10
+ constructor(camera: PerspectiveCamera, controls: OrbitControls, sceneControl: SceneControl);
12
11
  /**
13
12
  * caclCurrentPos
14
13
  * @param currentPos
@@ -24,13 +23,17 @@ declare class Camera {
24
23
  */
25
24
  private caclTargetByPitch;
26
25
  /**
27
- * caclSingle Coordinate
26
+ * caclSingleCoordinate
28
27
  * @param prevTarget
29
28
  * @param prevPosition
30
29
  * @param lastTarget
31
30
  * @returns
32
31
  */
33
32
  private caclSingleCoordinate;
33
+ /**
34
+ * handle camera changed
35
+ */
36
+ private handleChanged;
34
37
  /**
35
38
  * focus On Position
36
39
  * @param params
@@ -39,6 +42,7 @@ declare class Camera {
39
42
  target: vector3Array | vector3Array[];
40
43
  pitch?: number;
41
44
  duration?: number;
45
+ isTrigger?: boolean;
42
46
  }): Promise<unknown>;
43
47
  /**
44
48
  * set camera
@@ -7,39 +7,27 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _ty
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
8
  import { Box3, MathUtils, TWEEN, Vector3 } from '@anov/3d-core';
9
9
  var Camera = /*#__PURE__*/function () {
10
- function Camera(camera, controls) {
10
+ function Camera(camera, controls, sceneControl) {
11
11
  _classCallCheck(this, Camera);
12
12
  _defineProperty(this, "camera", void 0);
13
13
  _defineProperty(this, "controls", void 0);
14
+ _defineProperty(this, "sceneControl", void 0);
14
15
  _defineProperty(this, "isTransitionPeriod", false);
15
- this.camera = camera;
16
- this.controls = controls;
17
- this.controls.object = this.camera;
18
- // this.handleChanged()
16
+ _defineProperty(this, "isTrigger", true);
17
+ _defineProperty(this, "tween", void 0);
18
+ this.isTrigger = true;
19
+ this.camera = sceneControl.camera;
20
+ this.controls = sceneControl.controls;
21
+ this.sceneControl = sceneControl;
22
+ this.handleChanged();
19
23
  }
20
24
 
21
25
  /**
22
- * handle camera changed
23
- */
26
+ * caclCurrentPos
27
+ * @param currentPos
28
+ * @returns
29
+ */
24
30
  _createClass(Camera, [{
25
- key: "handleChanged",
26
- value: function handleChanged() {
27
- var _this = this;
28
- this.controls.addEventListener('change', function () {
29
- if (!_this.isTransitionPeriod) {
30
- var lookat = _this.controls.target;
31
- var position = _this.camera.position;
32
- console.log('camera changed', lookat, position);
33
- }
34
- });
35
- }
36
-
37
- /**
38
- * caclCurrentPos
39
- * @param currentPos
40
- * @returns
41
- */
42
- }, {
43
31
  key: "caclCurrentPos",
44
32
  value: function caclCurrentPos(currentPos, pitch) {
45
33
  var box = new Box3();
@@ -81,7 +69,7 @@ var Camera = /*#__PURE__*/function () {
81
69
  }
82
70
 
83
71
  /**
84
- * caclSingle Coordinate
72
+ * caclSingleCoordinate
85
73
  * @param prevTarget
86
74
  * @param prevPosition
87
75
  * @param lastTarget
@@ -94,6 +82,18 @@ var Camera = /*#__PURE__*/function () {
94
82
  return directionVector.multiplyScalar(lastTarget.distanceTo(prevTarget)).add(prevPosition);
95
83
  }
96
84
 
85
+ /**
86
+ * handle camera changed
87
+ */
88
+ }, {
89
+ key: "handleChanged",
90
+ value: function handleChanged() {
91
+ var _this = this;
92
+ this.controls.addEventListener('change', function () {
93
+ if (_this.isTransitionPeriod) _this.sceneControl.renderer.render(_this.sceneControl.scene, _this.sceneControl.camera);
94
+ });
95
+ }
96
+
97
97
  /**
98
98
  * focus On Position
99
99
  * @param params
@@ -107,24 +107,22 @@ var Camera = /*#__PURE__*/function () {
107
107
  pitch = params.pitch,
108
108
  duration = params.duration;
109
109
  var moveOptions = function moveOptions() {
110
- var _ref;
110
+ var _ref, _params$isTrigger;
111
111
  return {
112
112
  duration: (_ref = duration && duration * 1000) !== null && _ref !== void 0 ? _ref : 1000,
113
+ isTrigger: (_params$isTrigger = params.isTrigger) !== null && _params$isTrigger !== void 0 ? _params$isTrigger : true,
113
114
  onUpdate: function onUpdate(_ref2) {
115
+ var _params$isTrigger2;
114
116
  var position = _ref2.position,
115
117
  lookat = _ref2.lookat;
116
- } // sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {
117
- // position: position.toArray(),
118
- // target: lookat.toArray(),
119
- // })
120
- ,
121
-
118
+ _this2.isTrigger = (_params$isTrigger2 = params.isTrigger) !== null && _params$isTrigger2 !== void 0 ? _params$isTrigger2 : true;
119
+ },
122
120
  onComplate: function onComplate() {
123
121
  var _params$duration;
122
+ _this2.isTrigger = false;
124
123
  res({
125
124
  position: _this2.camera.position.toArray(),
126
125
  target: _this2.controls.target.toArray(),
127
- isTrigger: true,
128
126
  duration: (_params$duration = params.duration) !== null && _params$duration !== void 0 ? _params$duration : 0,
129
127
  userInput: true,
130
128
  pitch: pitch !== null && pitch !== void 0 ? pitch : 40
@@ -156,21 +154,19 @@ var Camera = /*#__PURE__*/function () {
156
154
  value: function set(params) {
157
155
  var _this3 = this;
158
156
  return new Promise(function (res, _) {
159
- var _ref3;
157
+ var _params$isTrigger3, _ref3;
160
158
  _this3.moveCameraTo(new Vector3(params.position[0], params.position[1], params.position[2]), new Vector3(params.target[0], params.target[1], params.target[2]), 0, {
159
+ isTrigger: (_params$isTrigger3 = params.isTrigger) !== null && _params$isTrigger3 !== void 0 ? _params$isTrigger3 : true,
161
160
  duration: (_ref3 = params.duration && params.duration * 1000) !== null && _ref3 !== void 0 ? _ref3 : 1000,
162
161
  onUpdate: function onUpdate(_ref4) {
162
+ var _params$isTrigger4;
163
163
  var position = _ref4.position,
164
164
  lookat = _ref4.lookat;
165
- } // params.isTrigger
166
- // && sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {
167
- // position: position.toArray(),
168
- // target: lookat.toArray(),
169
- // })
170
- ,
171
-
165
+ _this3.isTrigger = (_params$isTrigger4 = params.isTrigger) !== null && _params$isTrigger4 !== void 0 ? _params$isTrigger4 : true;
166
+ },
172
167
  onComplate: function onComplate() {
173
168
  var _params$duration2;
169
+ _this3.isTrigger = false;
174
170
  res({
175
171
  position: _this3.camera.position.toArray(),
176
172
  target: _this3.controls.target.toArray(),
@@ -211,12 +207,17 @@ var Camera = /*#__PURE__*/function () {
211
207
  var currentPoition = this.camera.position.clone();
212
208
  var currentPositionInterpolation = new Vector3();
213
209
  if ((options === null || options === void 0 ? void 0 : options.duration) === 0) {
210
+ this.isTrigger = !options.isTrigger;
214
211
  this.camera.position.copy(position);
215
212
  this.controls.target.copy(target);
216
- (options === null || options === void 0 ? void 0 : options.onComplate) && options.onComplate();
213
+ requestAnimationFrame(function () {
214
+ (options === null || options === void 0 ? void 0 : options.onComplate) && options.onComplate();
215
+ _this4.sceneControl.renderer.render(_this4.sceneControl.scene, _this4.sceneControl.camera);
216
+ });
217
217
  return;
218
218
  }
219
- new TWEEN.Tween({
219
+ if (this.tween) this.tween.stop();
220
+ this.tween = new TWEEN.Tween({
220
221
  t: 0,
221
222
  lookat: this.controls.target.clone(),
222
223
  p: 0
@@ -243,7 +244,9 @@ var Camera = /*#__PURE__*/function () {
243
244
  lookat: lookat
244
245
  });
245
246
  }).onComplete(function () {
246
- (options === null || options === void 0 ? void 0 : options.onComplate) && options.onComplate();
247
+ requestAnimationFrame(function () {
248
+ (options === null || options === void 0 ? void 0 : options.onComplate) && options.onComplate();
249
+ });
247
250
  _this4.controls.enabled = true;
248
251
  setTimeout(function () {
249
252
  _this4.isTransitionPeriod = false;
@@ -1 +1 @@
1
- {"version":3,"names":["Box3","MathUtils","TWEEN","Vector3","Camera","camera","controls","object","addEventListener","isTransitionPeriod","lookat","target","position","console","log","currentPos","pitch","box","setFromPoints","map","item","center","getCenter","size","getSize","halfDiagonal","length","maxDistance","Math","tan","fov","PI","cameraToCenterDistance","directionVector","clone","sub","normalize","lastPosition","multiplyScalar","add","lastLookat","caclTargetByPitch","subVectors","upVector","localPitchAxis","crossVectors","applyAxisAngle","degToRad","distance","distanceTo","newTarget","prevTarget","prevPosition","lastTarget","params","Promise","res","duration","moveOptions","onUpdate","onComplate","toArray","isTrigger","userInput","Array","isArray","caclCurrentPos","moveCameraTo","caclSingleCoordinate","fromArray","_","x","y","z","options","currentPoition","currentPositionInterpolation","copy","Tween","t","p","to","rotation","onStart","enabled","easing","Easing","Quadratic","InOut","rotationParent","currentPosition","lerpVectors","onComplete","setTimeout","start"],"sources":["../../src/camera/index.ts"],"sourcesContent":["import type { OrbitControls, PerspectiveCamera } from '@anov/3d-core'\nimport { Box3, MathUtils, TWEEN, Vector3 } from '@anov/3d-core'\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}\n\nclass Camera {\n private camera: PerspectiveCamera\n private controls: OrbitControls\n private isTransitionPeriod = false\n\n constructor(camera: PerspectiveCamera, controls: OrbitControls) {\n this.camera = camera\n this.controls = controls\n\n this.controls.object = this.camera\n // this.handleChanged()\n }\n\n /**\n * handle camera changed\n */\n private handleChanged() {\n this.controls.addEventListener('change', () => {\n if (!this.isTransitionPeriod) {\n const lookat = this.controls.target\n const position = this.camera.position\n\n console.log('camera changed', lookat, position)\n }\n })\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 * caclSingle Coordinate\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 * focus On Position\n * @param params\n */\n focus(params: { target: vector3Array | vector3Array[]; pitch?: number; duration?: number }) {\n return new Promise((res) => {\n const { target: position, pitch, duration } = params\n const moveOptions = () => ({\n duration: (duration && duration * 1000) ?? 1000,\n onUpdate: ({ position, lookat }) => {\n // sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n // position: position.toArray(),\n // target: lookat.toArray(),\n // })\n },\n onComplate: () => {\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 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 duration: (params.duration && params.duration * 1000) ?? 1000,\n onUpdate: ({ position, lookat }) => {\n // params.isTrigger\n // && sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n // position: position.toArray(),\n // target: lookat.toArray(),\n // })\n },\n onComplate: () => {\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.camera.position.copy(position)\n this.controls.target.copy(target)\n\n options?.onComplate && options.onComplate()\n return\n }\n\n 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 options?.onComplate && options.onComplate()\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","TWEEN","Vector3","Camera","camera","controls","sceneControl","isTrigger","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","renderer","render","scene","params","Promise","res","duration","moveOptions","onUpdate","lookat","onComplate","toArray","userInput","Array","isArray","caclCurrentPos","moveCameraTo","caclSingleCoordinate","fromArray","_","x","y","z","options","currentPoition","currentPositionInterpolation","copy","requestAnimationFrame","tween","stop","Tween","t","p","to","rotation","onStart","enabled","easing","Easing","Quadratic","InOut","rotationParent","currentPosition","lerpVectors","onComplete","setTimeout","start"],"sources":["../../src/camera/index.ts"],"sourcesContent":["import type { OrbitControls, PerspectiveCamera, SceneControl } from '@anov/3d-core'\nimport { Box3, MathUtils, TWEEN, Vector3 } from '@anov/3d-core'\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 {\n private camera: PerspectiveCamera\n private controls: OrbitControls\n private sceneControl: SceneControl\n private isTransitionPeriod = false\n private isTrigger = true\n private tween: any\n\n constructor(camera: PerspectiveCamera, controls: OrbitControls, sceneControl: SceneControl) {\n this.isTrigger = true\n this.camera = sceneControl.camera!\n this.controls = sceneControl.controls!\n this.sceneControl = sceneControl\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)\n this.sceneControl.renderer!.render(this.sceneControl.scene!, this.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 },\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 },\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.sceneControl.renderer!.render(this.sceneControl.scene!, this.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/dist/index.d.ts CHANGED
@@ -11,13 +11,17 @@ import createVolumetricCloud from './environment/volumetricCloud/inex';
11
11
  import createSkyCloud from './environment/shaderCloud/index';
12
12
  import Snow from './environment/showShader';
13
13
  import Rain from './environment/rainShader';
14
- import { Css2DPoi, EAnimationType, SpritePoi } from './poi';
14
+ import { Css2DPoi, Css3DPoi, EAnimationType, SpritePoi } from './poi';
15
15
  import HeatMap from './heatmap/index';
16
16
  import SkyBox from './environment/skyBox';
17
17
  import Camera from './camera/index';
18
18
  import { RoundLineGeometry, createRoundLineWallMesh } from './line/round-curve';
19
19
  import Fog2DMesh from './weather/fog2DMesh';
20
+ import addColorifyPass from './postEffects/colorifyPass';
21
+ import addBloomSelected from './postEffects/bloomPass';
22
+ import addBrightnessContrastPass from './postEffects/addBrightnessContrastPass';
23
+ import addMappingExposurePass from './postEffects/addACESFilmicToneMappingPass';
20
24
  export * from './scene';
21
25
  export { SceneControl, // todo remove
22
- createRain, createSnow, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, Css2DPoi, SpritePoi, EAnimationType, HeatMap, initPostEffects, // effect
23
- createHighSelectedTool, GridMaterial, SkyBox, ViewHelper, Camera, RoundLineGeometry, createRoundLineWallMesh, Fog2DMesh, };
26
+ createRain, createSnow, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, Css2DPoi, Css3DPoi, SpritePoi, EAnimationType, HeatMap, initPostEffects, // effect
27
+ createHighSelectedTool, GridMaterial, SkyBox, ViewHelper, Camera, RoundLineGeometry, createRoundLineWallMesh, Fog2DMesh, addColorifyPass, addBloomSelected, addBrightnessContrastPass, addMappingExposurePass, };
package/dist/index.js CHANGED
@@ -11,16 +11,20 @@ import createVolumetricCloud from "./environment/volumetricCloud/inex";
11
11
  import createSkyCloud from "./environment/shaderCloud/index";
12
12
  import Snow from "./environment/showShader";
13
13
  import Rain from "./environment/rainShader";
14
- import { Css2DPoi, EAnimationType, SpritePoi } from "./poi";
14
+ import { Css2DPoi, Css3DPoi, EAnimationType, SpritePoi } from "./poi";
15
15
  import HeatMap from "./heatmap/index";
16
16
  import SkyBox from "./environment/skyBox";
17
17
  import Camera from "./camera/index";
18
18
  import { RoundLineGeometry, createRoundLineWallMesh } from "./line/round-curve";
19
19
  import Fog2DMesh from "./weather/fog2DMesh";
20
+ import addColorifyPass from "./postEffects/colorifyPass";
21
+ import addBloomSelected from "./postEffects/bloomPass";
22
+ import addBrightnessContrastPass from "./postEffects/addBrightnessContrastPass";
23
+ import addMappingExposurePass from "./postEffects/addACESFilmicToneMappingPass";
20
24
  export * from "./scene";
21
25
  export { SceneControl,
22
26
  // todo remove
23
- createRain, createSnow, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, Css2DPoi, SpritePoi, EAnimationType, HeatMap, initPostEffects,
27
+ createRain, createSnow, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, Css2DPoi, Css3DPoi, SpritePoi, EAnimationType, HeatMap, initPostEffects,
24
28
  // effect
25
- createHighSelectedTool, GridMaterial, SkyBox, ViewHelper, Camera, RoundLineGeometry, createRoundLineWallMesh, Fog2DMesh };
29
+ createHighSelectedTool, GridMaterial, SkyBox, ViewHelper, Camera, RoundLineGeometry, createRoundLineWallMesh, Fog2DMesh, addColorifyPass, addBloomSelected, addBrightnessContrastPass, addMappingExposurePass };
26
30
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["SceneControl","createSnow","createRain","initPostEffects","createHighSelectedTool","createSun","GridMaterial","ViewHelper","createSkySystem","createVolumetricCloud","createSkyCloud","Snow","Rain","Css2DPoi","EAnimationType","SpritePoi","HeatMap","SkyBox","Camera","RoundLineGeometry","createRoundLineWallMesh","Fog2DMesh"],"sources":["../src/index.ts"],"sourcesContent":["import { SceneControl } from '@anov/3d-core'\nimport { createSnow } from './environment/snow'\nimport { createRain } from './environment/rain'\nimport { initPostEffects } from './postEffects'\nimport createHighSelectedTool from './postEffects/outlinePass'\nimport { createSun } from './environment/sun'\nimport GridMaterial from './material/pristineGridMaterial'\nimport ViewHelper from './helper/view'\nimport createSkySystem from './environment/sky'\nimport createVolumetricCloud from './environment/volumetricCloud/inex'\nimport createSkyCloud from './environment/shaderCloud/index'\nimport Snow from './environment/showShader'\nimport Rain from './environment/rainShader'\nimport { Css2DPoi, EAnimationType, SpritePoi } from './poi'\nimport HeatMap from './heatmap/index'\nimport SkyBox from './environment/skyBox'\nimport Camera from './camera/index'\nimport { RoundLineGeometry, createRoundLineWallMesh } from './line/round-curve'\nimport Fog2DMesh from './weather/fog2DMesh'\n\nexport * from './scene'\n\nexport {\n SceneControl, // todo remove\n createRain,\n createSnow,\n createSun,\n createSkySystem,\n createVolumetricCloud,\n createSkyCloud,\n Snow,\n Rain,\n Css2DPoi,\n SpritePoi,\n EAnimationType,\n HeatMap,\n initPostEffects, // effect\n createHighSelectedTool,\n GridMaterial,\n SkyBox,\n ViewHelper,\n Camera,\n RoundLineGeometry,\n createRoundLineWallMesh,\n Fog2DMesh,\n}\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,eAAe;AAC5C,SAASC,UAAU;AACnB,SAASC,UAAU;AACnB,SAASC,eAAe;AACxB,OAAOC,sBAAsB;AAC7B,SAASC,SAAS;AAClB,OAAOC,YAAY;AACnB,OAAOC,UAAU;AACjB,OAAOC,eAAe;AACtB,OAAOC,qBAAqB;AAC5B,OAAOC,cAAc;AACrB,OAAOC,IAAI;AACX,OAAOC,IAAI;AACX,SAASC,QAAQ,EAAEC,cAAc,EAAEC,SAAS;AAC5C,OAAOC,OAAO;AACd,OAAOC,MAAM;AACb,OAAOC,MAAM;AACb,SAASC,iBAAiB,EAAEC,uBAAuB;AACnD,OAAOC,SAAS;AAEhB;AAEA,SACErB,YAAY;AAAE;AACdE,UAAU,EACVD,UAAU,EACVI,SAAS,EACTG,eAAe,EACfC,qBAAqB,EACrBC,cAAc,EACdC,IAAI,EACJC,IAAI,EACJC,QAAQ,EACRE,SAAS,EACTD,cAAc,EACdE,OAAO,EACPb,eAAe;AAAE;AACjBC,sBAAsB,EACtBE,YAAY,EACZW,MAAM,EACNV,UAAU,EACVW,MAAM,EACNC,iBAAiB,EACjBC,uBAAuB,EACvBC,SAAS"}
1
+ {"version":3,"names":["SceneControl","createSnow","createRain","initPostEffects","createHighSelectedTool","createSun","GridMaterial","ViewHelper","createSkySystem","createVolumetricCloud","createSkyCloud","Snow","Rain","Css2DPoi","Css3DPoi","EAnimationType","SpritePoi","HeatMap","SkyBox","Camera","RoundLineGeometry","createRoundLineWallMesh","Fog2DMesh","addColorifyPass","addBloomSelected","addBrightnessContrastPass","addMappingExposurePass"],"sources":["../src/index.ts"],"sourcesContent":["import { SceneControl } from '@anov/3d-core'\nimport { createSnow } from './environment/snow'\nimport { createRain } from './environment/rain'\nimport { initPostEffects } from './postEffects'\nimport createHighSelectedTool from './postEffects/outlinePass'\nimport { createSun } from './environment/sun'\nimport GridMaterial from './material/pristineGridMaterial'\nimport ViewHelper from './helper/view'\nimport createSkySystem from './environment/sky'\nimport createVolumetricCloud from './environment/volumetricCloud/inex'\nimport createSkyCloud from './environment/shaderCloud/index'\nimport Snow from './environment/showShader'\nimport Rain from './environment/rainShader'\nimport { Css2DPoi, Css3DPoi, EAnimationType, SpritePoi } from './poi'\nimport HeatMap from './heatmap/index'\nimport SkyBox from './environment/skyBox'\nimport Camera from './camera/index'\nimport { RoundLineGeometry, createRoundLineWallMesh } from './line/round-curve'\nimport Fog2DMesh from './weather/fog2DMesh'\nimport addColorifyPass from './postEffects/colorifyPass'\nimport addBloomSelected from './postEffects/bloomPass'\nimport addBrightnessContrastPass from './postEffects/addBrightnessContrastPass'\nimport addMappingExposurePass from './postEffects/addACESFilmicToneMappingPass'\n\nexport * from './scene'\n\nexport {\n SceneControl, // todo remove\n createRain,\n createSnow,\n createSun,\n createSkySystem,\n createVolumetricCloud,\n createSkyCloud,\n Snow,\n Rain,\n Css2DPoi,\n Css3DPoi,\n SpritePoi,\n EAnimationType,\n HeatMap,\n initPostEffects, // effect\n createHighSelectedTool,\n GridMaterial,\n SkyBox,\n ViewHelper,\n Camera,\n RoundLineGeometry,\n createRoundLineWallMesh,\n Fog2DMesh,\n addColorifyPass,\n addBloomSelected,\n addBrightnessContrastPass,\n addMappingExposurePass,\n}\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,eAAe;AAC5C,SAASC,UAAU;AACnB,SAASC,UAAU;AACnB,SAASC,eAAe;AACxB,OAAOC,sBAAsB;AAC7B,SAASC,SAAS;AAClB,OAAOC,YAAY;AACnB,OAAOC,UAAU;AACjB,OAAOC,eAAe;AACtB,OAAOC,qBAAqB;AAC5B,OAAOC,cAAc;AACrB,OAAOC,IAAI;AACX,OAAOC,IAAI;AACX,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,cAAc,EAAEC,SAAS;AACtD,OAAOC,OAAO;AACd,OAAOC,MAAM;AACb,OAAOC,MAAM;AACb,SAASC,iBAAiB,EAAEC,uBAAuB;AACnD,OAAOC,SAAS;AAChB,OAAOC,eAAe;AACtB,OAAOC,gBAAgB;AACvB,OAAOC,yBAAyB;AAChC,OAAOC,sBAAsB;AAE7B;AAEA,SACE1B,YAAY;AAAE;AACdE,UAAU,EACVD,UAAU,EACVI,SAAS,EACTG,eAAe,EACfC,qBAAqB,EACrBC,cAAc,EACdC,IAAI,EACJC,IAAI,EACJC,QAAQ,EACRC,QAAQ,EACRE,SAAS,EACTD,cAAc,EACdE,OAAO,EACPd,eAAe;AAAE;AACjBC,sBAAsB,EACtBE,YAAY,EACZY,MAAM,EACNX,UAAU,EACVY,MAAM,EACNC,iBAAiB,EACjBC,uBAAuB,EACvBC,SAAS,EACTC,eAAe,EACfC,gBAAgB,EAChBC,yBAAyB,EACzBC,sBAAsB"}
@@ -8,5 +8,6 @@ declare class Css2DPoi extends Poi {
8
8
  constructor(data: any, option?: IOption);
9
9
  getElement(): HTMLElement;
10
10
  play(): void;
11
+ copy(source: any, recursive: boolean): this;
11
12
  }
12
13
  export default Css2DPoi;
@@ -4,6 +4,8 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
4
4
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5
5
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
6
6
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
7
+ function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
8
+ function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
7
9
  function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
8
10
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
9
11
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
@@ -173,6 +175,14 @@ var Css2DPoi = /*#__PURE__*/function (_Poi) {
173
175
  hasExecuted = true;
174
176
  };
175
177
  }
178
+ }, {
179
+ key: "copy",
180
+ value: function copy(source, recursive) {
181
+ _get(_getPrototypeOf(Css2DPoi.prototype), "copy", this).call(this, source, recursive);
182
+ this.element = source.element.cloneNode(true);
183
+ this.center = source.center;
184
+ return this;
185
+ }
176
186
  }]);
177
187
  return Css2DPoi;
178
188
  }(Poi);
@@ -1 +1 @@
1
- {"version":3,"names":["Vector2","gsap","EAnimationType","EventType","createContentElement","createTitleElement","Poi","_default","animation","type","fadeIn","duration","Css2DPoi","data","option","element","getElement","Error","style","position","userSelect","setAttribute","isCSS2DObject","center","setAnimation","play","addEventListener","traverse","object","Element","parentNode","removeChild","HTMLElement","title","content","forEach","name","event","_listeners","cb","item","opacity","grow","scale","print","contentElement","querySelector","innerHTML","hasExecuted","onAfterRender","fromTo","repeat","ease","text","index","charAt","to","onComplete","length"],"sources":["../../../src/poi/2D/index.ts"],"sourcesContent":["/* eslint-disable no-case-declarations */\nimport { Vector2 } from '@anov/3d-core'\nimport gsap from 'gsap'\nimport { EAnimationType, EventType } from '../utils/type'\nimport type { IEventType, IOption } from '../utils/type'\nimport { createContentElement, createTitleElement } from '../utils/element'\nimport Poi from '../Poi'\n\nconst _default = {\n animation: {\n type: EAnimationType.fadeIn,\n duration: 0.3,\n },\n}\n\nclass Css2DPoi extends Poi {\n element!: HTMLElement\n isCSS2DObject!: boolean\n center!: Vector2\n\n constructor(data: any, option: IOption = {}) {\n super(data, option)\n\n this.option = { ..._default, ...option }\n\n // 创建容器\n this.element = this.getElement()\n\n if (!this.element)\n throw new Error('Cannot generate HTMLElement element')\n\n // 保留Css2D 初始设置\n this.element.style.position = 'absolute'\n this.element.style.userSelect = 'none'\n this.element.setAttribute('draggable', 'false')\n\n this.isCSS2DObject = true\n this.center = new Vector2(0.5, 0.5) // ( 0, 0 ) is the lower left; ( 1, 1 ) is the top right\n\n this.option.animation && this.setAnimation(this.option.animation)\n // 执行动画\n this.play()\n\n // 保留Css2D 事件监听\n this.addEventListener('removed', () => {\n this.traverse((object) => {\n // @ts-ignore\n if (object.element instanceof Element && object.element.parentNode !== null)\n // @ts-ignore\n object.element.parentNode.removeChild(object.element)\n })\n })\n }\n\n // 创建2D容器\n getElement() {\n let element!: HTMLElement\n // 直接传递DOM元素\n if (this.data instanceof HTMLElement) {\n element = this.data\n }\n else {\n if (typeof this.data === 'string') {\n element = createTitleElement(this.data, this.option)\n }\n else if (typeof this.data === 'object') {\n const { title, content } = this.data\n if (title && content)\n element = createContentElement(this.data, this.option)\n else if (title)\n element = createTitleElement(title, this.option)\n }\n }\n\n EventType.forEach((type: IEventType) => {\n element && element.addEventListener(type.name, (event) => {\n // @ts-ignore\n (this._listeners[type.name] || []).forEach((cb: Function) => {\n cb(event)\n })\n })\n })\n return element\n }\n\n // 播放动画\n play() {\n this.animation.forEach((item) => {\n switch (item.type) {\n case EAnimationType.fadeIn:\n this.element.style.opacity = '0'\n break\n case EAnimationType.grow:\n this.element.style.scale = '.2'\n break\n case EAnimationType.print:\n const contentElement = this.element.querySelector('[tag=\"content\"]')\n if (contentElement)\n contentElement.innerHTML = ''\n else\n this.element.innerHTML = ''\n break\n }\n })\n\n let hasExecuted = false\n this.onAfterRender = () => {\n if (hasExecuted)\n return\n this.animation.forEach((item) => {\n switch (item.type) {\n case EAnimationType.fadeIn:\n gsap.fromTo(this.element, { opacity: 0 }, {\n opacity: 1,\n duration: item.duration,\n repeat: 0,\n ease: 'none',\n })\n break\n case EAnimationType.grow:\n gsap.fromTo(this.element, { scale: 0.2 }, {\n scale: 1,\n duration: item.duration,\n repeat: 0,\n ease: 'power2.out',\n })\n break\n case EAnimationType.print:\n\n let element = this.element.querySelector('[tag=\"content\"]') as HTMLElement\n let text: string\n if (element) {\n text = this.data.content\n }\n else {\n element = this.element\n text = this.data.title || this.data\n }\n\n let index = 0\n const print = () => {\n // 添加当前字符到文本元素\n element.innerHTML += text.charAt(index)\n index++\n // 使用GSAP创建动画\n gsap.to(element, {\n duration: item.duration, // 每个字符的持续时间\n ease: 'power1.inOut', // 缓动函数\n onComplete: () => index < text.length ? print() : null, // 如果还有字符,则继续打印,否则完成动画\n })\n }\n print()\n break\n }\n })\n hasExecuted = true\n }\n }\n}\n\nexport default Css2DPoi"],"mappings":"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"}
1
+ {"version":3,"names":["Vector2","gsap","EAnimationType","EventType","createContentElement","createTitleElement","Poi","_default","animation","type","fadeIn","duration","Css2DPoi","data","option","element","getElement","Error","style","position","userSelect","setAttribute","isCSS2DObject","center","setAnimation","play","addEventListener","traverse","object","Element","parentNode","removeChild","HTMLElement","title","content","forEach","name","event","_listeners","cb","item","opacity","grow","scale","print","contentElement","querySelector","innerHTML","hasExecuted","onAfterRender","fromTo","repeat","ease","text","index","charAt","to","onComplete","length","source","recursive","cloneNode"],"sources":["../../../src/poi/2D/index.ts"],"sourcesContent":["/* eslint-disable no-case-declarations */\nimport { Vector2 } from '@anov/3d-core'\nimport gsap from 'gsap'\nimport { EAnimationType, EventType } from '../utils/type'\nimport type { IEventType, IOption } from '../utils/type'\nimport { createContentElement, createTitleElement } from '../utils/element'\nimport Poi from '../Poi'\n\nconst _default = {\n animation: {\n type: EAnimationType.fadeIn,\n duration: 0.3,\n },\n}\n\nclass Css2DPoi extends Poi {\n element!: HTMLElement\n isCSS2DObject!: boolean\n center!: Vector2\n\n constructor(data: any, option: IOption = {}) {\n super(data, option)\n\n this.option = { ..._default, ...option }\n\n // 创建容器\n this.element = this.getElement()\n\n if (!this.element)\n throw new Error('Cannot generate HTMLElement element')\n\n // 保留Css2D 初始设置\n this.element.style.position = 'absolute'\n this.element.style.userSelect = 'none'\n this.element.setAttribute('draggable', 'false')\n\n this.isCSS2DObject = true\n this.center = new Vector2(0.5, 0.5) // ( 0, 0 ) is the lower left; ( 1, 1 ) is the top right\n\n this.option.animation && this.setAnimation(this.option.animation)\n // 执行动画\n this.play()\n\n // 保留Css2D 事件监听\n this.addEventListener('removed', () => {\n this.traverse((object) => {\n // @ts-ignore\n if (object.element instanceof Element && object.element.parentNode !== null)\n // @ts-ignore\n object.element.parentNode.removeChild(object.element)\n })\n })\n }\n\n // 创建2D容器\n getElement() {\n let element!: HTMLElement\n // 直接传递DOM元素\n if (this.data instanceof HTMLElement) {\n element = this.data\n }\n else {\n if (typeof this.data === 'string') {\n element = createTitleElement(this.data, this.option)\n }\n else if (typeof this.data === 'object') {\n const { title, content } = this.data\n if (title && content)\n element = createContentElement(this.data, this.option)\n else if (title)\n element = createTitleElement(title, this.option)\n }\n }\n\n EventType.forEach((type: IEventType) => {\n element && element.addEventListener(type.name, (event) => {\n // @ts-ignore\n (this._listeners[type.name] || []).forEach((cb: Function) => {\n cb(event)\n })\n })\n })\n return element\n }\n\n // 播放动画\n play() {\n this.animation.forEach((item) => {\n switch (item.type) {\n case EAnimationType.fadeIn:\n this.element.style.opacity = '0'\n break\n case EAnimationType.grow:\n this.element.style.scale = '.2'\n break\n case EAnimationType.print:\n const contentElement = this.element.querySelector('[tag=\"content\"]')\n if (contentElement)\n contentElement.innerHTML = ''\n else\n this.element.innerHTML = ''\n break\n }\n })\n\n let hasExecuted = false\n this.onAfterRender = () => {\n if (hasExecuted)\n return\n this.animation.forEach((item) => {\n switch (item.type) {\n case EAnimationType.fadeIn:\n gsap.fromTo(this.element, { opacity: 0 }, {\n opacity: 1,\n duration: item.duration,\n repeat: 0,\n ease: 'none',\n })\n break\n case EAnimationType.grow:\n gsap.fromTo(this.element, { scale: 0.2 }, {\n scale: 1,\n duration: item.duration,\n repeat: 0,\n ease: 'power2.out',\n })\n break\n case EAnimationType.print:\n\n let element = this.element.querySelector('[tag=\"content\"]') as HTMLElement\n let text: string\n if (element) {\n text = this.data.content\n }\n else {\n element = this.element\n text = this.data.title || this.data\n }\n\n let index = 0\n const print = () => {\n // 添加当前字符到文本元素\n element.innerHTML += text.charAt(index)\n index++\n // 使用GSAP创建动画\n gsap.to(element, {\n duration: item.duration, // 每个字符的持续时间\n ease: 'power1.inOut', // 缓动函数\n onComplete: () => index < text.length ? print() : null, // 如果还有字符,则继续打印,否则完成动画\n })\n }\n print()\n break\n }\n })\n hasExecuted = true\n }\n }\n\n copy(source: any, recursive: boolean) {\n super.copy(source, recursive)\n\n this.element = source.element.cloneNode(true)\n\n this.center = source.center\n\n return this\n }\n}\n\nexport default Css2DPoi"],"mappings":"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"}
@@ -1,19 +1,13 @@
1
- import type { IPOIOption } from './type';
2
- declare class Poi {
3
- private cssObjects;
4
- constructor();
5
- create(option: IPOIOption): {
6
- id: number;
7
- name: string | undefined;
8
- visible: boolean | undefined;
9
- position: number[] | undefined;
10
- };
11
- /**
12
- * 是否锁定镜头,标牌一直面向镜头
13
- */
14
- private updateAxis;
15
- private updateScale;
16
- delete(option: IPOIOption): void;
17
- update(option: IPOIOption): void;
1
+ import type { Vector2 } from '@anov/3d-core';
2
+ import type { IOption } from '../utils/type';
3
+ import Poi from '../Poi';
4
+ declare class Css3DPoi extends Poi {
5
+ element: HTMLElement;
6
+ isCSS3DObject: boolean;
7
+ center: Vector2;
8
+ constructor(data: any, option?: IOption);
9
+ getElement(): HTMLElement;
10
+ play(): void;
11
+ copy(source: any, recursive: boolean): this;
18
12
  }
19
- export default Poi;
13
+ export default Css3DPoi;