@anov/3d-ability 0.0.126 → 0.0.128
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/business/Base/ObjectLayer.d.ts +1 -0
- package/dist/business/Base/ObjectLayer.js +8 -4
- package/dist/business/Base/ObjectLayer.js.map +1 -1
- package/dist/business/Box/index.d.ts +1 -0
- package/dist/business/Box/index.js +4 -1
- package/dist/business/Box/index.js.map +1 -1
- package/dist/business/Box/types.d.ts +1 -0
- package/dist/business/Box/types.js.map +1 -1
- package/dist/business/Cylinder/index.d.ts +1 -0
- package/dist/business/Cylinder/index.js +4 -1
- package/dist/business/Cylinder/index.js.map +1 -1
- package/dist/business/Plane/index.js +3 -1
- package/dist/business/Plane/index.js.map +1 -1
- package/dist/business/Poi/link/index.d.ts +1 -1
- package/dist/business/Poi/title/index.d.ts +1 -1
- package/dist/business/Sphere/index.js +3 -1
- package/dist/business/Sphere/index.js.map +1 -1
- package/dist/business/Utils/defineProps.d.ts +8 -0
- package/dist/business/Utils/defineProps.js +52 -0
- package/dist/business/Utils/defineProps.js.map +1 -0
- package/dist/core/Camera/PerspectiveCamera/CameraExpand.d.ts +2 -2
- package/dist/core/Camera/PerspectiveCamera/CameraExpand.js.map +1 -1
- package/package.json +3 -3
|
@@ -3,6 +3,7 @@ import { Object3D } from '@anov/3d-core';
|
|
|
3
3
|
* 覆盖物的基础类,如:POI、样条线、3D柱状图、热力图等
|
|
4
4
|
*/
|
|
5
5
|
declare class ObjectLayer extends Object3D {
|
|
6
|
+
type: string;
|
|
6
7
|
constructor();
|
|
7
8
|
createProxy<T extends object>(obj: T, mesh: Object3D, fn?: Function): T;
|
|
8
9
|
arrayMergeCustomizer(objValue: any, srcValue: any): any;
|
|
@@ -2,8 +2,6 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
2
2
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
3
3
|
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); } }
|
|
4
4
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
5
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
6
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
5
|
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
6
|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
9
7
|
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); }; }
|
|
@@ -11,6 +9,9 @@ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) ===
|
|
|
11
9
|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
12
10
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
13
11
|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
12
|
+
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; }
|
|
13
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
14
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
14
15
|
import { Object3D } from '@anov/3d-core';
|
|
15
16
|
import _ from 'lodash';
|
|
16
17
|
|
|
@@ -20,10 +21,13 @@ import _ from 'lodash';
|
|
|
20
21
|
var ObjectLayer = /*#__PURE__*/function (_Object3D) {
|
|
21
22
|
_inherits(ObjectLayer, _Object3D);
|
|
22
23
|
var _super = _createSuper(ObjectLayer);
|
|
23
|
-
// private _layer = 0 // 图层对象可以用于控制对象的显示
|
|
24
24
|
function ObjectLayer() {
|
|
25
|
+
var _this;
|
|
25
26
|
_classCallCheck(this, ObjectLayer);
|
|
26
|
-
|
|
27
|
+
_this = _super.call(this);
|
|
28
|
+
// private _layer = 0 // 图层对象可以用于控制对象的显示
|
|
29
|
+
_defineProperty(_assertThisInitialized(_this), "type", 'Group');
|
|
30
|
+
return _this;
|
|
27
31
|
}
|
|
28
32
|
|
|
29
33
|
// get layer(): number {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Object3D","_","ObjectLayer","_Object3D","_inherits","_super","_createSuper","_classCallCheck","call","_createClass","key","value","createProxy","obj","mesh","fn","arguments","length","undefined","Proxy","set","target","prop","arrayMergeCustomizer","objValue","srcValue","isArray","destroy"],"sources":["../../../src/business/Base/ObjectLayer.ts"],"sourcesContent":["import { Mesh, Object3D } from '@anov/3d-core'\nimport _ from 'lodash'\n\n/**\n * 覆盖物的基础类,如:POI、样条线、3D柱状图、热力图等\n */\nclass ObjectLayer extends Object3D {\n // private _layer = 0 // 图层对象可以用于控制对象的显示\n constructor() {\n super()\n }\n\n // get layer(): number {\n // return this._layer\n // }\n\n // set layer(newValue: number) {\n // this._layer = newValue\n // }\n\n // 创建代理对象的工具方法\n public createProxy<T extends object>(obj: T, mesh: Object3D, fn: Function = null): T {\n return new Proxy(obj, {\n set: (target, prop, value) => {\n if (mesh)\n mesh[prop] = value\n target[prop] = value\n fn && fn(prop, value)\n return true\n },\n })\n }\n\n arrayMergeCustomizer(objValue, srcValue) {\n if (_.isArray(objValue) && srcValue)\n return srcValue\n }\n\n destroy() {\n\n }\n}\n\nexport default ObjectLayer"],"mappings":"
|
|
1
|
+
{"version":3,"names":["Object3D","_","ObjectLayer","_Object3D","_inherits","_super","_createSuper","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_createClass","key","value","createProxy","obj","mesh","fn","arguments","length","undefined","Proxy","set","target","prop","arrayMergeCustomizer","objValue","srcValue","isArray","destroy"],"sources":["../../../src/business/Base/ObjectLayer.ts"],"sourcesContent":["import { Mesh, Object3D } from '@anov/3d-core'\nimport _ from 'lodash'\n\n/**\n * 覆盖物的基础类,如:POI、样条线、3D柱状图、热力图等\n */\nclass ObjectLayer extends Object3D {\n // private _layer = 0 // 图层对象可以用于控制对象的显示\n type = 'Group'\n constructor() {\n super()\n }\n\n // get layer(): number {\n // return this._layer\n // }\n\n // set layer(newValue: number) {\n // this._layer = newValue\n // }\n\n // 创建代理对象的工具方法\n public createProxy<T extends object>(obj: T, mesh: Object3D, fn: Function = null): T {\n return new Proxy(obj, {\n set: (target, prop, value) => {\n if (mesh)\n mesh[prop] = value\n target[prop] = value\n fn && fn(prop, value)\n return true\n },\n })\n }\n\n arrayMergeCustomizer(objValue, srcValue) {\n if (_.isArray(objValue) && srcValue)\n return srcValue\n }\n\n destroy() {\n\n }\n}\n\nexport default ObjectLayer"],"mappings":";;;;;;;;;;;;;;AAAA,SAAeA,QAAQ,QAAQ,eAAe;AAC9C,OAAOC,CAAC,MAAM,QAAQ;;AAEtB;AACA;AACA;AAFA,IAGMC,WAAW,0BAAAC,SAAA;EAAAC,SAAA,CAAAF,WAAA,EAAAC,SAAA;EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAAJ,WAAA;EAGf,SAAAA,YAAA,EAAc;IAAA,IAAAK,KAAA;IAAAC,eAAA,OAAAN,WAAA;IACZK,KAAA,GAAAF,MAAA,CAAAI,IAAA;IAHF;IAAAC,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,WACO,OAAO;IAAA,OAAAA,KAAA;EAGd;;EAEA;EACA;EACA;;EAEA;EACA;EACA;;EAEA;EAAAK,YAAA,CAAAV,WAAA;IAAAW,GAAA;IAAAC,KAAA,EACA,SAAAC,YAAqCC,GAAM,EAAEC,IAAc,EAA0B;MAAA,IAAxBC,EAAY,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;MAC9E,OAAO,IAAIG,KAAK,CAACN,GAAG,EAAE;QACpBO,GAAG,EAAE,SAAAA,IAACC,MAAM,EAAEC,IAAI,EAAEX,KAAK,EAAK;UAC5B,IAAIG,IAAI,EACNA,IAAI,CAACQ,IAAI,CAAC,GAAGX,KAAK;UACpBU,MAAM,CAACC,IAAI,CAAC,GAAGX,KAAK;UACpBI,EAAE,IAAIA,EAAE,CAACO,IAAI,EAAEX,KAAK,CAAC;UACrB,OAAO,IAAI;QACb;MACF,CAAC,CAAC;IACJ;EAAC;IAAAD,GAAA;IAAAC,KAAA,EAED,SAAAY,qBAAqBC,QAAQ,EAAEC,QAAQ,EAAE;MACvC,IAAI3B,CAAC,CAAC4B,OAAO,CAACF,QAAQ,CAAC,IAAIC,QAAQ,EACjC,OAAOA,QAAQ;IACnB;EAAC;IAAAf,GAAA;IAAAC,KAAA,EAED,SAAAgB,QAAA,EAAU,CAEV;EAAC;EAAA,OAAA5B,WAAA;AAAA,EAnCuBF,QAAQ;AAsClC,eAAeE,WAAW"}
|
|
@@ -20,13 +20,14 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
|
|
|
20
20
|
* @Author: 周志国
|
|
21
21
|
* @Date: 2025-09-08
|
|
22
22
|
* @LastEditors: 周志国
|
|
23
|
-
* @LastEditTime: 2025-09-
|
|
23
|
+
* @LastEditTime: 2025-09-15 10:42:24
|
|
24
24
|
* @changeLog: 实现立方体对象,支持默认参数、更新与销毁
|
|
25
25
|
* @FilePath: /anov-3d-webgl/packages/anov-3d-ability/src/business/Box/index.ts
|
|
26
26
|
*/
|
|
27
27
|
import ObjectLayer from "../Base/ObjectLayer";
|
|
28
28
|
import { BoxGeometry, MeshBasicMaterial, Mesh } from '@anov/3d-core';
|
|
29
29
|
import _ from 'lodash';
|
|
30
|
+
import { defineProps } from "../Utils/defineProps";
|
|
30
31
|
export var Box = /*#__PURE__*/function (_ObjectLayer) {
|
|
31
32
|
_inherits(Box, _ObjectLayer);
|
|
32
33
|
var _super = _createSuper(Box);
|
|
@@ -39,6 +40,7 @@ export var Box = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
39
40
|
_this.currentOptions = options;
|
|
40
41
|
_this.mesh = _this.createBox(options);
|
|
41
42
|
_this.add(_this.mesh);
|
|
43
|
+
defineProps(_assertThisInitialized(_this), ['width', 'height', 'length', 'widthSegment', 'heightSegment', 'lengthSegment'], ['wireframe', 'color'], 'updateBox');
|
|
42
44
|
return _this;
|
|
43
45
|
}
|
|
44
46
|
_createClass(Box, [{
|
|
@@ -69,6 +71,7 @@ export var Box = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
69
71
|
var mat = new MeshBasicMaterial(_objectSpread(_objectSpread({}, defaultMat), material));
|
|
70
72
|
return new Mesh(geometry, mat);
|
|
71
73
|
}
|
|
74
|
+
/** 更新Box参数 */
|
|
72
75
|
}, {
|
|
73
76
|
key: "updateBox",
|
|
74
77
|
value: function updateBox(options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ObjectLayer","BoxGeometry","MeshBasicMaterial","Mesh","_","Box","_ObjectLayer","_inherits","_super","_createSuper","options","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","currentOptions","mesh","createBox","add","_createClass","key","value","_options$width","width","_options$height","height","_options$length","length","_options$widthSegment","widthSegment","_options$heightSegmen","heightSegment","_options$lengthSegmen","lengthSegment","_options$material","material","defaultMat","color","opacity","transparent","wireframe","visible","geometry","mat","_objectSpread","updateBox","mergeWith","remove","dispose","destroy"],"sources":["../../../src/business/Box/index.ts"],"sourcesContent":["/*\n * @Descripttion: Box 封装\n * @version: \n * @Author: 周志国\n * @Date: 2025-09-08\n * @LastEditors: 周志国\n * @LastEditTime: 2025-09-
|
|
1
|
+
{"version":3,"names":["ObjectLayer","BoxGeometry","MeshBasicMaterial","Mesh","_","defineProps","Box","_ObjectLayer","_inherits","_super","_createSuper","options","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","currentOptions","mesh","createBox","add","_createClass","key","value","_options$width","width","_options$height","height","_options$length","length","_options$widthSegment","widthSegment","_options$heightSegmen","heightSegment","_options$lengthSegmen","lengthSegment","_options$material","material","defaultMat","color","opacity","transparent","wireframe","visible","geometry","mat","_objectSpread","updateBox","mergeWith","remove","dispose","destroy"],"sources":["../../../src/business/Box/index.ts"],"sourcesContent":["/*\n * @Descripttion: Box 封装\n * @version: \n * @Author: 周志国\n * @Date: 2025-09-08\n * @LastEditors: 周志国\n * @LastEditTime: 2025-09-15 10:42:24\n * @changeLog: 实现立方体对象,支持默认参数、更新与销毁\n * @FilePath: /anov-3d-webgl/packages/anov-3d-ability/src/business/Box/index.ts\n */\nimport ObjectLayer from '../Base/ObjectLayer'\nimport type { options } from './types'\nimport { IBox } from './interface'\nimport {\n BoxGeometry,\n MeshBasicMaterial,\n MeshBasicMaterialParameters,\n Mesh,\n} from '@anov/3d-core'\nimport _ from 'lodash'\nimport { defineProps } from '../Utils/defineProps'\nexport class Box extends ObjectLayer implements IBox {\n private mesh!: Mesh\n private currentOptions!: options\n constructor(options: options) {\n super()\n this.currentOptions = options\n this.mesh = this.createBox(options)\n this.add(this.mesh)\n defineProps(\n this,\n ['width', 'height', 'length', 'widthSegment', 'heightSegment', 'lengthSegment'],\n ['wireframe', 'color'],\n 'updateBox'\n )\n }\n createBox(options: options): Mesh {\n const {\n width = 1,\n height = 1,\n length = 1,\n widthSegment = 1,\n heightSegment = 1,\n lengthSegment = 1,\n material = {},\n } = options\n\n const defaultMat: MeshBasicMaterialParameters = {\n color: 0xffffff,\n opacity: 1,\n transparent: false,\n wireframe: false,\n visible: true,\n }\n const geometry = new BoxGeometry(width, height, length, widthSegment, heightSegment, lengthSegment)\n const mat = new MeshBasicMaterial({ ...defaultMat, ...material })\n return new Mesh(geometry, mat)\n }\n /** 更新Box参数 */\n updateBox(options: options): void {\n if (!this.mesh) return\n _.mergeWith(this.currentOptions, options)\n this.remove(this.mesh)\n this.mesh.geometry.dispose()\n ;(this.mesh.material as any).dispose()\n this.mesh = this.createBox(this.currentOptions)\n this.add(this.mesh)\n } \n /** 销毁释放资源 */\n public destroy() {\n if (!this.mesh) return\n this.remove(this.mesh)\n this.mesh.geometry.dispose()\n ;(this.mesh.material as any).dispose()\n // @ts-ignore\n this.mesh = null\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["../../../src/business/Box/types.ts"],"sourcesContent":["\nimport type { MeshBasicMaterialParameters } from '@anov/3d-core'\n\nexport type options = {\n width?: number\n height?: number\n length?: number\n widthSegment?: number\n heightSegment?: number\n lengthSegment?: number\n material?: MeshBasicMaterialParameters\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/business/Box/types.ts"],"sourcesContent":["\nimport type { MeshBasicMaterialParameters } from '@anov/3d-core'\n\nexport type options = {\n width?: number\n height?: number\n length?: number\n widthSegment?: number\n heightSegment?: number\n lengthSegment?: number\n material?: MeshBasicMaterialParameters\n materials?:string\n}\n"],"mappings":""}
|
|
@@ -7,6 +7,7 @@ export declare class Cylinder extends ObjectLayer implements ICylinder {
|
|
|
7
7
|
private currentOptions;
|
|
8
8
|
constructor(options: options);
|
|
9
9
|
createCylinder(options: options): Mesh;
|
|
10
|
+
/** 更新Cylinder参数 */
|
|
10
11
|
updateCylinder(options: options): void;
|
|
11
12
|
/** 销毁释放资源 */
|
|
12
13
|
destroy(): void;
|
|
@@ -20,13 +20,14 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
|
|
|
20
20
|
* @Author: 周志国
|
|
21
21
|
* @Date: 2025-09-08
|
|
22
22
|
* @LastEditors: 周志国
|
|
23
|
-
* @LastEditTime: 2025-09-
|
|
23
|
+
* @LastEditTime: 2025-09-15 10:43:49
|
|
24
24
|
* @changeLog:
|
|
25
25
|
* @FilePath: /anov-3d-webgl/packages/anov-3d-ability/src/business/Cylinder/index.ts
|
|
26
26
|
*/
|
|
27
27
|
import ObjectLayer from "../Base/ObjectLayer";
|
|
28
28
|
import { CylinderGeometry, MeshBasicMaterial, Mesh } from '@anov/3d-core';
|
|
29
29
|
import _ from 'lodash';
|
|
30
|
+
import { defineProps } from "../Utils/defineProps";
|
|
30
31
|
export var Cylinder = /*#__PURE__*/function (_ObjectLayer) {
|
|
31
32
|
_inherits(Cylinder, _ObjectLayer);
|
|
32
33
|
var _super = _createSuper(Cylinder);
|
|
@@ -39,6 +40,7 @@ export var Cylinder = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
39
40
|
_this.currentOptions = options;
|
|
40
41
|
_this.mesh = _this.createCylinder(_this.currentOptions);
|
|
41
42
|
_this.add(_this.mesh); // 添加到 ObjectLayer
|
|
43
|
+
defineProps(_assertThisInitialized(_this), ['radius', 'height', 'circleSegment', 'heightSegment', 'openEnded'], ['wireframe', 'color'], 'updateCylinder');
|
|
42
44
|
return _this;
|
|
43
45
|
}
|
|
44
46
|
_createClass(Cylinder, [{
|
|
@@ -67,6 +69,7 @@ export var Cylinder = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
67
69
|
var mat = new MeshBasicMaterial(_objectSpread(_objectSpread({}, defaultMat), material));
|
|
68
70
|
return new Mesh(geometry, mat);
|
|
69
71
|
}
|
|
72
|
+
/** 更新Cylinder参数 */
|
|
70
73
|
}, {
|
|
71
74
|
key: "updateCylinder",
|
|
72
75
|
value: function updateCylinder(options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ObjectLayer","CylinderGeometry","MeshBasicMaterial","Mesh","_","Cylinder","_ObjectLayer","_inherits","_super","_createSuper","options","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","currentOptions","mesh","createCylinder","add","_createClass","key","value","_options$radius","radius","_options$height","height","_options$circleSegmen","circleSegment","_options$heightSegmen","heightSegment","_options$openEnded","openEnded","_options$material","material","geometry","defaultMat","color","opacity","transparent","wireframe","visible","mat","_objectSpread","updateCylinder","mergeWith","remove","dispose","destroy"],"sources":["../../../src/business/Cylinder/index.ts"],"sourcesContent":["/*\n * @Descripttion: Cylinder 封装\n * @version: \n * @Author: 周志国\n * @Date: 2025-09-08\n * @LastEditors: 周志国\n * @LastEditTime: 2025-09-
|
|
1
|
+
{"version":3,"names":["ObjectLayer","CylinderGeometry","MeshBasicMaterial","Mesh","_","defineProps","Cylinder","_ObjectLayer","_inherits","_super","_createSuper","options","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","currentOptions","mesh","createCylinder","add","_createClass","key","value","_options$radius","radius","_options$height","height","_options$circleSegmen","circleSegment","_options$heightSegmen","heightSegment","_options$openEnded","openEnded","_options$material","material","geometry","defaultMat","color","opacity","transparent","wireframe","visible","mat","_objectSpread","updateCylinder","mergeWith","remove","dispose","destroy"],"sources":["../../../src/business/Cylinder/index.ts"],"sourcesContent":["/*\n * @Descripttion: Cylinder 封装\n * @version: \n * @Author: 周志国\n * @Date: 2025-09-08\n * @LastEditors: 周志国\n * @LastEditTime: 2025-09-15 10:43:49\n * @changeLog: \n * @FilePath: /anov-3d-webgl/packages/anov-3d-ability/src/business/Cylinder/index.ts\n */\nimport ObjectLayer from '../Base/ObjectLayer'\nimport type { options } from './types'\nimport { ICylinder } from './interface'\nimport {\n CylinderGeometry,\n MeshBasicMaterial,\n Mesh,\n} from '@anov/3d-core'\nimport _ from 'lodash'\nimport { defineProps } from '../Utils/defineProps'\nexport class Cylinder extends ObjectLayer implements ICylinder {\n private mesh!: Mesh\n private currentOptions!: options\n constructor(options: options) {\n super()\n this.currentOptions = options\n this.mesh = this.createCylinder(this.currentOptions)\n this.add(this.mesh) // 添加到 ObjectLayer\n defineProps(\n this,\n ['radius', 'height', 'circleSegment', 'heightSegment', 'openEnded'],\n ['wireframe', 'color'],\n 'updateCylinder'\n )\n }\n\n createCylinder(options: options): Mesh {\n const {\n radius = 1,\n height = 1,\n circleSegment = 16,\n heightSegment = 1,\n openEnded = false,\n material = {},\n } = options\n const geometry = new CylinderGeometry(\n radius,\n radius,\n height,\n circleSegment,\n heightSegment,\n openEnded,\n )\n const defaultMat = {\n color: 0xffffff,\n opacity: 1,\n transparent: false,\n wireframe: false,\n visible: true,\n }\n const mat = new MeshBasicMaterial({ ...defaultMat, ...material })\n return new Mesh(geometry, mat)\n }\n /** 更新Cylinder参数 */\n updateCylinder(options: options): void {\n if (!this.mesh) return\n _.mergeWith(this.currentOptions, options)\n this.remove(this.mesh)\n this.mesh.geometry.dispose();\n (this.mesh.material as any).dispose()\n this.mesh = this.createCylinder(this.currentOptions)\n this.add(this.mesh)\n }\n /** 销毁释放资源 */\n public destroy() {\n if (!this.mesh) return\n this.remove(this.mesh)\n this.mesh.geometry.dispose();\n (this.mesh.material as any).dispose()\n // @ts-ignore\n this.mesh = null\n }\n}\n"],"mappings":"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"}
|
|
@@ -20,13 +20,14 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
|
|
|
20
20
|
* @Author: 周志国
|
|
21
21
|
* @Date: 2025-09-09 14:27:25
|
|
22
22
|
* @LastEditors: 周志国
|
|
23
|
-
* @LastEditTime: 2025-09-
|
|
23
|
+
* @LastEditTime: 2025-09-15 10:47:49
|
|
24
24
|
* @changeLog:
|
|
25
25
|
* @FilePath: /anov-3d-webgl/packages/anov-3d-ability/src/business/Plane/index.ts
|
|
26
26
|
*/
|
|
27
27
|
import ObjectLayer from "../Base/ObjectLayer";
|
|
28
28
|
import { PlaneGeometry, MeshBasicMaterial, Mesh } from '@anov/3d-core';
|
|
29
29
|
import _ from 'lodash';
|
|
30
|
+
import { defineProps } from "../Utils/defineProps";
|
|
30
31
|
export var Plane = /*#__PURE__*/function (_ObjectLayer) {
|
|
31
32
|
_inherits(Plane, _ObjectLayer);
|
|
32
33
|
var _super = _createSuper(Plane);
|
|
@@ -39,6 +40,7 @@ export var Plane = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
39
40
|
_this.currentOptions = options;
|
|
40
41
|
_this.mesh = _this.createPlane(options);
|
|
41
42
|
_this.add(_this.mesh);
|
|
43
|
+
defineProps(_assertThisInitialized(_this), ['width', 'length', 'widthSegment', 'lengthSegment'], ['wireframe', 'color'], 'updatePlane');
|
|
42
44
|
return _this;
|
|
43
45
|
}
|
|
44
46
|
_createClass(Plane, [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ObjectLayer","PlaneGeometry","MeshBasicMaterial","Mesh","_","Plane","_ObjectLayer","_inherits","_super","_createSuper","options","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","currentOptions","mesh","createPlane","add","_createClass","key","value","_options$length","length","_options$width","width","_options$lengthSegmen","lengthSegment","_options$widthSegment","widthSegment","_options$material","material","defaultMat","color","opacity","transparent","wireframe","visible","side","geometry","mat","_objectSpread","updatePlane","mergeWith","remove","dispose","destroy"],"sources":["../../../src/business/Plane/index.ts"],"sourcesContent":["/*\n * @Descripttion: \n * @version: \n * @Author: 周志国\n * @Date: 2025-09-09 14:27:25\n * @LastEditors: 周志国\n * @LastEditTime: 2025-09-
|
|
1
|
+
{"version":3,"names":["ObjectLayer","PlaneGeometry","MeshBasicMaterial","Mesh","_","defineProps","Plane","_ObjectLayer","_inherits","_super","_createSuper","options","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","currentOptions","mesh","createPlane","add","_createClass","key","value","_options$length","length","_options$width","width","_options$lengthSegmen","lengthSegment","_options$widthSegment","widthSegment","_options$material","material","defaultMat","color","opacity","transparent","wireframe","visible","side","geometry","mat","_objectSpread","updatePlane","mergeWith","remove","dispose","destroy"],"sources":["../../../src/business/Plane/index.ts"],"sourcesContent":["/*\n * @Descripttion: \n * @version: \n * @Author: 周志国\n * @Date: 2025-09-09 14:27:25\n * @LastEditors: 周志国\n * @LastEditTime: 2025-09-15 10:47:49\n * @changeLog: \n * @FilePath: /anov-3d-webgl/packages/anov-3d-ability/src/business/Plane/index.ts\n */\nimport ObjectLayer from '../Base/ObjectLayer'\nimport type { options } from './types'\nimport { IPlane } from './interface'\nimport {\n PlaneGeometry,\n MeshBasicMaterial,\n MeshBasicMaterialParameters,\n Mesh,\n} from '@anov/3d-core'\nimport _ from 'lodash'\nimport { defineProps } from '../Utils/defineProps'\nexport class Plane extends ObjectLayer implements IPlane {\n private mesh!: Mesh\n private currentOptions!: options\n constructor(options: options) {\n super()\n this.currentOptions = options\n this.mesh = this.createPlane(options)\n this.add(this.mesh)\n defineProps(\n this,\n ['width', 'length', 'widthSegment', 'lengthSegment'],\n ['wireframe', 'color'],\n 'updatePlane'\n )\n }\n public createPlane(options: options): Mesh {\n const {\n length = 1,\n width = 1,\n lengthSegment = 1,\n widthSegment = 1,\n material = {},\n } = options\n\n // 默认材质参数\n const defaultMat: MeshBasicMaterialParameters = {\n color: 0xffffff,\n opacity: 1,\n transparent: false,\n wireframe: false,\n visible: true,\n side: 2,\n }\n const geometry = new PlaneGeometry(width, length, widthSegment, lengthSegment)\n const mat = new MeshBasicMaterial({ ...defaultMat, ...material })\n return new Mesh(geometry, mat)\n }\n updatePlane(options: options): void {\n if (!this.mesh) return\n _.mergeWith(this.currentOptions, options)\n this.remove(this.mesh)\n this.mesh.geometry.dispose();\n (this.mesh.material as any).dispose()\n this.mesh = this.createPlane(this.currentOptions)\n this.add(this.mesh)\n }\n /** 销毁释放资源 */\n public destroy() {\n if (!this.mesh) return\n this.remove(this.mesh)\n this.mesh.geometry.dispose()\n ; (this.mesh.material as any).dispose()\n // @ts-ignore\n this.mesh = null\n }\n}\n"],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ export default class LinkMesh extends ObjectLayer {
|
|
|
15
15
|
get vspace(): [number, number];
|
|
16
16
|
set vspace(newValue: [number, number]);
|
|
17
17
|
get hspace(): [number, number];
|
|
18
|
-
get mesh():
|
|
18
|
+
get mesh(): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, import("@anov/3d-core").Material | import("@anov/3d-core").Material[], import("@anov/3d-core").Object3DEventMap> | Group<import("@anov/3d-core").Object3DEventMap>;
|
|
19
19
|
setupAnimation(): void;
|
|
20
20
|
addReloadListener(callback: any): void;
|
|
21
21
|
removeReloadListener(callback: any): void;
|
|
@@ -20,7 +20,7 @@ export default class TitleMesh extends ObjectLayer {
|
|
|
20
20
|
private _debouncedUpdate;
|
|
21
21
|
constructor(option: TextOption);
|
|
22
22
|
get ready(): Promise<boolean>;
|
|
23
|
-
get mesh():
|
|
23
|
+
get mesh(): Mesh<import("@anov/3d-core").BufferGeometry<import("@anov/3d-core").NormalBufferAttributes>, import("@anov/3d-core").Material | import("@anov/3d-core").Material[], import("@anov/3d-core").Object3DEventMap> | Group<import("@anov/3d-core").Object3DEventMap>;
|
|
24
24
|
get value(): string;
|
|
25
25
|
set value(newValue: string);
|
|
26
26
|
get fontSize(): number;
|
|
@@ -20,13 +20,14 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
|
|
|
20
20
|
* @Author: 周志国
|
|
21
21
|
* @Date: 2025-09-08
|
|
22
22
|
* @LastEditors: 周志国
|
|
23
|
-
* @LastEditTime: 2025-09-
|
|
23
|
+
* @LastEditTime: 2025-09-15 10:48:13
|
|
24
24
|
* @changeLog: 实现立方体对象,支持默认参数、更新与销毁
|
|
25
25
|
* @FilePath: /anov-3d-webgl/packages/anov-3d-ability/src/business/Sphere/index.ts
|
|
26
26
|
*/
|
|
27
27
|
import ObjectLayer from "../Base/ObjectLayer";
|
|
28
28
|
import { SphereGeometry, MeshBasicMaterial, Mesh } from '@anov/3d-core';
|
|
29
29
|
import _ from 'lodash';
|
|
30
|
+
import { defineProps } from "../Utils/defineProps";
|
|
30
31
|
export var Sphere = /*#__PURE__*/function (_ObjectLayer) {
|
|
31
32
|
_inherits(Sphere, _ObjectLayer);
|
|
32
33
|
var _super = _createSuper(Sphere);
|
|
@@ -39,6 +40,7 @@ export var Sphere = /*#__PURE__*/function (_ObjectLayer) {
|
|
|
39
40
|
_this.currentOptions = options;
|
|
40
41
|
_this.mesh = _this.createSphere(options);
|
|
41
42
|
_this.add(_this.mesh);
|
|
43
|
+
defineProps(_assertThisInitialized(_this), ['radius', 'sphereSegments'], ['wireframe', 'color'], 'updateSphere');
|
|
42
44
|
return _this;
|
|
43
45
|
}
|
|
44
46
|
_createClass(Sphere, [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ObjectLayer","SphereGeometry","MeshBasicMaterial","Mesh","_","Sphere","_ObjectLayer","_inherits","_super","_createSuper","options","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","currentOptions","mesh","createSphere","add","_createClass","key","value","_options$radius","radius","_options$sphereSegmen","sphereSegments","_options$material","material","defaultMat","color","opacity","transparent","wireframe","visible","geometry","mat","_objectSpread","updateSphere","mergeWith","remove","dispose","destroy"],"sources":["../../../src/business/Sphere/index.ts"],"sourcesContent":["\n/*\n * @Descripttion: Box 封装\n * @version: \n * @Author: 周志国\n * @Date: 2025-09-08\n * @LastEditors: 周志国\n * @LastEditTime: 2025-09-
|
|
1
|
+
{"version":3,"names":["ObjectLayer","SphereGeometry","MeshBasicMaterial","Mesh","_","defineProps","Sphere","_ObjectLayer","_inherits","_super","_createSuper","options","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","currentOptions","mesh","createSphere","add","_createClass","key","value","_options$radius","radius","_options$sphereSegmen","sphereSegments","_options$material","material","defaultMat","color","opacity","transparent","wireframe","visible","geometry","mat","_objectSpread","updateSphere","mergeWith","remove","dispose","destroy"],"sources":["../../../src/business/Sphere/index.ts"],"sourcesContent":["\n/*\n * @Descripttion: Box 封装\n * @version: \n * @Author: 周志国\n * @Date: 2025-09-08\n * @LastEditors: 周志国\n * @LastEditTime: 2025-09-15 10:48:13\n * @changeLog: 实现立方体对象,支持默认参数、更新与销毁\n * @FilePath: /anov-3d-webgl/packages/anov-3d-ability/src/business/Sphere/index.ts\n */\nimport ObjectLayer from '../Base/ObjectLayer'\nimport type { options } from './types'\nimport {\n SphereGeometry,\n MeshBasicMaterial,\n MeshBasicMaterialParameters,\n Mesh,\n} from '@anov/3d-core'\nimport { ISphere } from './interface'\nimport _ from 'lodash'\nimport { defineProps } from '../Utils/defineProps'\nexport class Sphere extends ObjectLayer implements ISphere {\n private mesh!: Mesh\n private currentOptions!: options\n constructor(options: options) {\n super()\n this.currentOptions = options\n this.mesh = this.createSphere(options)\n this.add(this.mesh)\n defineProps(\n this,\n ['radius', 'sphereSegments'],\n ['wireframe', 'color'],\n 'updateSphere'\n )\n }\n createSphere(options: options): Mesh {\n const {\n radius = 1,\n sphereSegments = 16,\n material = {},\n } = options\n\n const defaultMat: MeshBasicMaterialParameters = {\n color: 0xffffff,\n opacity: 1,\n transparent: false,\n wireframe: false,\n visible: true,\n }\n const geometry = new SphereGeometry(radius, sphereSegments, sphereSegments)\n const mat = new MeshBasicMaterial({ ...defaultMat, ...material })\n return new Mesh(geometry, mat)\n }\n updateSphere(options: options): void {\n if (!this.mesh) return\n _.mergeWith(this.currentOptions, options)\n this.remove(this.mesh)\n this.mesh.geometry.dispose();\n (this.mesh.material as any).dispose()\n this.mesh = this.createSphere(this.currentOptions)\n this.add(this.mesh)\n }\n /** 销毁释放资源 */\n public destroy() {\n if (!this.mesh) return\n this.remove(this.mesh)\n this.mesh.geometry.dispose()\n ; (this.mesh.material as any).dispose()\n // @ts-ignore\n this.mesh = null\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 定义对象属性
|
|
3
|
+
* @param target 目标对象
|
|
4
|
+
* @param optionKeyList 选项属性列表
|
|
5
|
+
* @param materialKeyList 材质属性列表
|
|
6
|
+
* @param updateFnName 更新函数名称
|
|
7
|
+
*/
|
|
8
|
+
export declare function defineProps(target: any, optionKeyList: string[], materialKeyList: string[], updateFnName?: string): void;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
+
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; }
|
|
3
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
4
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
5
|
+
/*
|
|
6
|
+
* @Descripttion:
|
|
7
|
+
* @version:
|
|
8
|
+
* @Author: 周志国
|
|
9
|
+
* @Date: 2025-09-15 10:36:40
|
|
10
|
+
* @LastEditors: 周志国
|
|
11
|
+
* @LastEditTime: 2025-09-15 10:40:39
|
|
12
|
+
* @changeLog:
|
|
13
|
+
* @FilePath: /anov-3d-webgl/packages/anov-3d-ability/src/business/utils/defineProps.ts
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* 定义对象属性
|
|
17
|
+
* @param target 目标对象
|
|
18
|
+
* @param optionKeyList 选项属性列表
|
|
19
|
+
* @param materialKeyList 材质属性列表
|
|
20
|
+
* @param updateFnName 更新函数名称
|
|
21
|
+
*/
|
|
22
|
+
export function defineProps(target, optionKeyList, materialKeyList) {
|
|
23
|
+
var updateFnName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'updateBox';
|
|
24
|
+
optionKeyList.forEach(function (key) {
|
|
25
|
+
Object.defineProperty(target, key, {
|
|
26
|
+
get: function get() {
|
|
27
|
+
return this.currentOptions[key];
|
|
28
|
+
},
|
|
29
|
+
set: function set(value) {
|
|
30
|
+
this[updateFnName](_defineProperty({}, key, value));
|
|
31
|
+
},
|
|
32
|
+
configurable: true,
|
|
33
|
+
enumerable: true
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
materialKeyList.forEach(function (key) {
|
|
37
|
+
Object.defineProperty(target, key, {
|
|
38
|
+
get: function get() {
|
|
39
|
+
var _this$currentOptions$;
|
|
40
|
+
return (_this$currentOptions$ = this.currentOptions.material) === null || _this$currentOptions$ === void 0 ? void 0 : _this$currentOptions$[key];
|
|
41
|
+
},
|
|
42
|
+
set: function set(value) {
|
|
43
|
+
this[updateFnName]({
|
|
44
|
+
material: _defineProperty({}, key, value)
|
|
45
|
+
});
|
|
46
|
+
},
|
|
47
|
+
configurable: true,
|
|
48
|
+
enumerable: true
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=defineProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["defineProps","target","optionKeyList","materialKeyList","updateFnName","arguments","length","undefined","forEach","key","Object","defineProperty","get","currentOptions","set","value","_defineProperty","configurable","enumerable","_this$currentOptions$","material"],"sources":["../../../src/business/Utils/defineProps.ts"],"sourcesContent":["/*\n * @Descripttion: \n * @version: \n * @Author: 周志国\n * @Date: 2025-09-15 10:36:40\n * @LastEditors: 周志国\n * @LastEditTime: 2025-09-15 10:40:39\n * @changeLog: \n * @FilePath: /anov-3d-webgl/packages/anov-3d-ability/src/business/utils/defineProps.ts\n */\n/**\n * 定义对象属性\n * @param target 目标对象\n * @param optionKeyList 选项属性列表\n * @param materialKeyList 材质属性列表\n * @param updateFnName 更新函数名称\n */\nexport function defineProps(\n target: any,\n optionKeyList: string[],\n materialKeyList: string[],\n updateFnName = 'updateBox'\n) {\n optionKeyList.forEach(key => {\n Object.defineProperty(target, key, {\n get() {\n return this.currentOptions[key]\n },\n set(value: any) {\n this[updateFnName]({ [key]: value })\n },\n configurable: true,\n enumerable: true,\n })\n })\n materialKeyList.forEach(key => {\n Object.defineProperty(target, key, {\n get() {\n return this.currentOptions.material?.[key]\n },\n set(value: any) {\n this[updateFnName]({ material: { [key]: value } })\n },\n configurable: true,\n enumerable: true,\n })\n })\n}\n"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,WAAWA,CACzBC,MAAW,EACXC,aAAuB,EACvBC,eAAyB,EAEzB;EAAA,IADAC,YAAY,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,WAAW;EAE1BH,aAAa,CAACM,OAAO,CAAC,UAAAC,GAAG,EAAI;IAC3BC,MAAM,CAACC,cAAc,CAACV,MAAM,EAAEQ,GAAG,EAAE;MACjCG,GAAG,WAAAA,IAAA,EAAG;QACJ,OAAO,IAAI,CAACC,cAAc,CAACJ,GAAG,CAAC;MACjC,CAAC;MACDK,GAAG,WAAAA,IAACC,KAAU,EAAE;QACd,IAAI,CAACX,YAAY,CAAC,CAAAY,eAAA,KAAIP,GAAG,EAAGM,KAAK,CAAE,CAAC;MACtC,CAAC;MACDE,YAAY,EAAE,IAAI;MAClBC,UAAU,EAAE;IACd,CAAC,CAAC;EACJ,CAAC,CAAC;EACFf,eAAe,CAACK,OAAO,CAAC,UAAAC,GAAG,EAAI;IAC7BC,MAAM,CAACC,cAAc,CAACV,MAAM,EAAEQ,GAAG,EAAE;MACjCG,GAAG,WAAAA,IAAA,EAAG;QAAA,IAAAO,qBAAA;QACJ,QAAAA,qBAAA,GAAO,IAAI,CAACN,cAAc,CAACO,QAAQ,cAAAD,qBAAA,uBAA5BA,qBAAA,CAA+BV,GAAG,CAAC;MAC5C,CAAC;MACDK,GAAG,WAAAA,IAACC,KAAU,EAAE;QACd,IAAI,CAACX,YAAY,CAAC,CAAC;UAAEgB,QAAQ,EAAAJ,eAAA,KAAKP,GAAG,EAAGM,KAAK;QAAG,CAAC,CAAC;MACpD,CAAC;MACDE,YAAY,EAAE,IAAI;MAClBC,UAAU,EAAE;IACd,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Object3D,
|
|
1
|
+
import type { Object3D, PerspectiveCamera, SceneControl, ControlsType } from '@anov/3d-core';
|
|
2
2
|
import { EventDispatcher, Vector3 } from '@anov/3d-core';
|
|
3
3
|
import type { CameraExpandInterface, FollowParamsOption, vector3Array } from '.';
|
|
4
4
|
/**
|
|
@@ -13,7 +13,7 @@ export declare class PerspectiveCameraExpand extends EventDispatcher implements
|
|
|
13
13
|
private _isCameraChange;
|
|
14
14
|
private followId;
|
|
15
15
|
private followCancelMap;
|
|
16
|
-
constructor(camera: PerspectiveCamera, controls:
|
|
16
|
+
constructor(camera: PerspectiveCamera, controls: ControlsType, sceneControl: SceneControl);
|
|
17
17
|
get isTransitionPeriod(): boolean;
|
|
18
18
|
get isCameraChange(): boolean;
|
|
19
19
|
private bindEvent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Box3","EventDispatcher","Group","MathUtils","Plane","Quaternion","TWEEN","Vector3","use","utils","FollowControls","PerspectiveCameraExpand","_EventDispatcher","_inherits","_super","_createSuper","camera","controls","sceneControl","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","Map","bindEvent","_createClass","key","get","_isTransitionPeriod","_isCameraChange","value","_this2","addEventListener","storeManagement","set","dispatchEvent","type","position","target","caclCurrentPos","currentPos","distanceCoefficient","arguments","length","undefined","distance","box","setFromPoints","map","item","center","getCenter","size","getSize","halfDiagonal","maxDistance","Math","tan","fov","PI","cameraToCenterDistance","directionVector","clone","sub","normalize","lastPosition","multiplyScalar","add","lastLookat","caclSingleCoordinate","prevTarget","prevPosition","lastTarget","focus","params","_this3","Promise","res","_params$pitch","pitch","_params$yaw","yaw","_params$distance","duration","onUpdate","_params$distanceCoeff","moveOptions","_ref","_params$isTrigger","isTrigger","_ref2","lookat","onComplate","_params$duration","toArray","userInput","Array","isArray","_this3$caclCurrentPos","motion","fromArray","_this4","_","_ref3","_ref4","_params$duration2","x","y","z","targetPosition","cameraPosition","currentDirection","plane","radToDeg","normal","angleTo","rotationParent","setPitch","deg","direction","quaternion","pitchQuat","setFromAxisAngle","degToRad","multiply","applyQuaternion","distanceTo","copy","setYaw","caclPositionByFollow","axisX","axisY","axisZ","anglePitch","angleYaw","quaternionX","quaternionY","addScaledVector","follow","option","_this5","followId","_ref5","_ref5$relativeRotatio","relativeRotation","_ref5$pitch","_ref5$yaw","_ref5$distance","container","rotation","scale","oldCameraParent","parent","needUpdateRotation","enabled","followControls","renderer","domElement","curPosition","radius","cancelMotion","useframe","update","cancel","remove","dispose","followCancelMap","cancelFollow","cancelAllFollow","forEach","_this6","options","currentPoition","currentPositionInterpolation","requestAnimationFrame","render","scene","tween","stop","Tween","t","p","to","onStart","easing","Easing","Quadratic","InOut","_ref6","currentPosition","lerpVectors","onComplete","setTimeout","start"],"sources":["../../../../src/core/Camera/PerspectiveCamera/CameraExpand.ts"],"sourcesContent":["import type { Object3D, OrbitControls, PerspectiveCamera, SceneControl } from '@anov/3d-core'\nimport { Box3, EventDispatcher, Group, MathUtils, Plane, Quaternion, TWEEN, Vector3, use, utils } from '@anov/3d-core'\nimport FollowControls from './FollowOrbitControls'\nimport type { CameraExpandInterface, FollowParamsOption, vector3Array } from '.'\n\ninterface ChangeCameraPresetOptions {\n duration?: number\n onUpdate?: (params: { position: Vector3; lookat: Vector3 }) => void\n onStart?: () => void\n onComplate?: () => void\n isTrigger?: boolean\n}\n\n/**\n * CameraExpand, 主要提供了一些PerspectiveCamera的拓展能力\n */\nexport class PerspectiveCameraExpand extends EventDispatcher implements CameraExpandInterface {\n private _isTransitionPeriod = false\n private camera: PerspectiveCamera\n private controls: OrbitControls\n private sceneControl: SceneControl\n private tween: any\n private _isCameraChange = false\n private followId = 0\n private followCancelMap: Map<number, () => void> = new Map()\n\n constructor(camera: PerspectiveCamera, controls: OrbitControls, sceneControl: SceneControl) {\n super()\n\n this.camera = camera\n this.controls = controls\n this.sceneControl = sceneControl\n\n this.bindEvent()\n }\n\n get isTransitionPeriod() {\n return this._isTransitionPeriod\n }\n\n get isCameraChange() {\n return this._isCameraChange\n }\n\n private bindEvent() {\n this.controls.addEventListener('start', () => {\n utils.storeManagement.set('enableEvents', false)\n this._isCameraChange = true\n })\n\n this.controls.addEventListener('end', () => {\n utils.storeManagement.set('enableEvents', true)\n this._isCameraChange = false\n })\n\n this.controls.addEventListener('change', () => {\n this.dispatchEvent({\n type: 'change',\n position: this.camera.position,\n target: this.controls.target,\n })\n })\n }\n\n /**\n * calculate last position from position box\n * if distance is not defined, calculate distance from box size\n * @param currentPos\n * @param distanceCoefficient\n * @param distance\n * @returns\n */\n private caclCurrentPos(currentPos: vector3Array[], distanceCoefficient = 1, distance?: 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(distance ?? cameraToCenterDistance * distanceCoefficient).add(center)\n const lastLookat = center\n\n return {\n lastPosition,\n lastLookat,\n }\n }\n\n /**\n * caclSingleCoordinate, when use focus and target is single point\n * @param prevTarget\n * @param prevPosition\n * @param lastTarget\n * @returns\n */\n private caclSingleCoordinate(prevTarget: Vector3, prevPosition: Vector3, lastTarget: Vector3, distance: number) {\n const directionVector = prevPosition.clone().sub(prevTarget).normalize()\n const lastPosition = directionVector.multiplyScalar(distance).add(lastTarget)\n\n return lastPosition\n }\n\n /**\n * camera focus\n * @param params\n * @returns\n */\n public focus(params: {\n target: vector3Array | vector3Array[] | string\n pitch?: number\n yaw?: number\n distance?: number // distance from target\n duration?: number\n isTrigger?: boolean\n distanceCoefficient?: number\n onUpdate?: (args: { position: Vector3; target: Vector3 }) => void\n }) {\n return new Promise<\n {\n position: number[]\n target: number[]\n duration: number\n userInput: boolean\n pitch: number\n }\n >((res) => {\n const { target: position, pitch = 0, yaw = 0, distance = undefined, duration, onUpdate, distanceCoefficient = 1 } = params\n\n const moveOptions = () => ({\n duration: (duration && duration * 1000) ?? 1000,\n isTrigger: params.isTrigger ?? true,\n onUpdate: ({ position, lookat }) => {\n onUpdate && onUpdate({ position, target: lookat })\n },\n onComplate: () => {\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 target is multiple points\n if (Array.isArray(position[0])) {\n const currentPos = position as vector3Array[]\n const { lastPosition, lastLookat } = this.caclCurrentPos(currentPos, distanceCoefficient, distance)\n\n this.motion(\n lastPosition,\n lastLookat,\n pitch,\n yaw,\n moveOptions(),\n )\n }\n // if target is single point\n else {\n const currentPos = position as vector3Array\n const lastPosition = this.caclSingleCoordinate(this.controls.target, this.camera.position, new Vector3().fromArray(currentPos), distance)\n const lastLookat = new Vector3().fromArray(currentPos)\n\n this.motion(\n lastPosition,\n lastLookat,\n pitch,\n yaw,\n moveOptions(),\n )\n }\n })\n }\n\n /**\n * set camera, main set position and target\n * @param params\n * @returns\n */\n public set(params: {\n position: vector3Array\n target: vector3Array\n isTrigger?: boolean\n duration?: number\n onUpdate?: (args: { position: Vector3; target: Vector3 }) => void\n }) {\n const { position, target, isTrigger, duration } = params\n\n return new Promise<{\n position: number[]\n target: number[]\n isTrigger: boolean\n duration: number\n userInput: boolean\n }>((res, _) => {\n this.motion(\n new Vector3(position[0], position[1], position[2]),\n new Vector3(target[0], target[1], target[2]),\n 0,\n 0,\n {\n isTrigger: isTrigger ?? true,\n duration: (duration && duration * 1000) ?? 1000,\n onUpdate: ({ position, lookat }) => {\n params.onUpdate && params.onUpdate({ position, target: lookat })\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 position and target\n * @returns\n */\n public 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 * get current pitch\n */\n public get pitch() {\n const targetPosition = this.controls.target\n const cameraPosition = this.camera.position\n\n const currentDirection = cameraPosition.clone().sub(targetPosition)\n const plane = new Plane(new Vector3(0, 1, 0), 0)\n\n return -(MathUtils.radToDeg(plane.normal.angleTo(currentDirection)) - 90)\n }\n\n /**\n * get current yaw\n * @returns\n */\n public get yaw() {\n return (this.camera as (PerspectiveCamera & { rotationParent: { y: number } })).rotationParent.y\n }\n\n /**\n * set pitch, similar to ue\n * @param deg\n */\n public setPitch(deg: number) {\n if (deg > 90)\n deg = 90\n if (deg < -90)\n deg = -90\n\n const direction = new Vector3(0, 0, 1)\n const quaternion = new Quaternion()\n\n const pitchQuat = new Quaternion()\n pitchQuat.setFromAxisAngle(new Vector3(1, 0, 0), MathUtils.degToRad(-deg))\n quaternion.multiply(pitchQuat)\n\n direction.applyQuaternion(quaternion)\n direction.normalize()\n\n const distance = this.camera.position.distanceTo(this.controls.target)\n const cameraPosition = this.controls.target.clone().add(direction.multiplyScalar(distance))\n this.camera.position.copy(cameraPosition)\n }\n\n /**\n * set yaw, similar to ue\n * @param deg\n */\n public setYaw(deg: number) {\n if (deg > 180)\n deg = 180\n if (deg < -180)\n deg = -180\n\n // @ts-ignore\n this.camera.rotationParent.y = MathUtils.degToRad(deg)\n }\n\n /**\n * cacl Position By Follow\n * @param pitch\n * @param yaw\n * @param distance\n * @returns\n */\n private caclPositionByFollow(pitch = 30, yaw = 0, distance = 60) {\n const axisX = new Vector3(1, 0, 0)\n const axisY = new Vector3(0, 1, 0)\n const axisZ = new Vector3(0, 0, -1)\n const position = new Vector3(0, 0, 0)\n\n const anglePitch = MathUtils.degToRad(pitch)\n const angleYaw = MathUtils.degToRad(yaw)\n\n const quaternionX = new Quaternion().setFromAxisAngle(axisX, anglePitch)\n const quaternionY = new Quaternion().setFromAxisAngle(axisY, angleYaw)\n\n position.addScaledVector(axisZ, distance)\n position.applyQuaternion(quaternionX)\n position.applyQuaternion(quaternionY)\n\n return position\n }\n\n /**\n * follow 3d object, not only use in camera\n * @param target\n * @param camera\n * @param option\n * @returns\n */\n public follow(target: Object3D, camera: PerspectiveCamera, option?: FollowParamsOption) {\n const followId = this.followId++\n const { relativeRotation = false, pitch = 30, yaw = 0, distance = 10 } = option || {}\n const container = new Group()\n\n container.rotation.copy(target.rotation)\n container.scale.copy(target.scale)\n\n const oldCameraParent = camera.parent\n\n let needUpdateRotation = true\n\n container.add(camera)\n target.parent.add(container)\n\n this.controls.enabled = false\n\n const followControls = new FollowControls(this.camera, this.sceneControl.renderer.domElement)\n const curPosition = this.caclPositionByFollow(pitch, yaw, distance)\n\n camera.position.copy(curPosition)\n followControls.radius = camera.position.distanceTo(target.position)\n\n followControls.addEventListener('start', () => {\n relativeRotation && (needUpdateRotation = false)\n })\n\n this.controls.target.copy(target.position)\n followControls.target = target.position\n\n const cancelMotion = use.useframe(() => {\n container.position.copy(target.position)\n container.scale.copy(target.scale)\n needUpdateRotation && container.rotation.copy(target.rotation)\n\n this.controls.target.copy(target.position)\n\n followControls.target = target.position\n followControls.update()\n })\n\n const cancel = () => {\n this.controls.enabled = true\n\n oldCameraParent.add(camera)\n target.parent.remove(container)\n\n cancelMotion()\n followControls.dispose()\n }\n\n this.followCancelMap.set(followId, cancel)\n\n return followId\n }\n\n /**\n * cancel follow\n * @param followId\n */\n public cancelFollow(followId: number) {\n const cancel = this.followCancelMap.get(followId)\n cancel && cancel()\n }\n\n /**\n * cancel all follow\n */\n public cancelAllFollow() {\n this.followCancelMap.forEach((cancel) => {\n cancel()\n })\n }\n\n /**\n * interpolation move camera\n * @param position\n * @param target\n * @param pitch\n * @param yaw\n * @param options\n * @returns\n */\n private motion(position: Vector3, target: Vector3, pitch = 0, yaw = 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 if (pitch) {\n // @ts-ignore\n this.camera.rotationParent.x = MathUtils.degToRad(pitch)\n }\n\n if (yaw) {\n // @ts-ignore\n this.camera.rotationParent.y = MathUtils.degToRad(yaw)\n }\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(\n // @ts-ignore\n { t: 0, lookat: this.controls.target.clone(), p: this.camera.rotationParent.x, yaw: this.camera.rotationParent.y })\n // @ts-ignore\n .to({ t: 1, lookat: target, p: MathUtils.degToRad(pitch), y: MathUtils.degToRad(yaw) }, 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 if (yaw)\n // @ts-ignore\n this.camera.rotationParent.y = 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}"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Box3","EventDispatcher","Group","MathUtils","Plane","Quaternion","TWEEN","Vector3","use","utils","FollowControls","PerspectiveCameraExpand","_EventDispatcher","_inherits","_super","_createSuper","camera","controls","sceneControl","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","Map","bindEvent","_createClass","key","get","_isTransitionPeriod","_isCameraChange","value","_this2","addEventListener","storeManagement","set","dispatchEvent","type","position","target","caclCurrentPos","currentPos","distanceCoefficient","arguments","length","undefined","distance","box","setFromPoints","map","item","center","getCenter","size","getSize","halfDiagonal","maxDistance","Math","tan","fov","PI","cameraToCenterDistance","directionVector","clone","sub","normalize","lastPosition","multiplyScalar","add","lastLookat","caclSingleCoordinate","prevTarget","prevPosition","lastTarget","focus","params","_this3","Promise","res","_params$pitch","pitch","_params$yaw","yaw","_params$distance","duration","onUpdate","_params$distanceCoeff","moveOptions","_ref","_params$isTrigger","isTrigger","_ref2","lookat","onComplate","_params$duration","toArray","userInput","Array","isArray","_this3$caclCurrentPos","motion","fromArray","_this4","_","_ref3","_ref4","_params$duration2","x","y","z","targetPosition","cameraPosition","currentDirection","plane","radToDeg","normal","angleTo","rotationParent","setPitch","deg","direction","quaternion","pitchQuat","setFromAxisAngle","degToRad","multiply","applyQuaternion","distanceTo","copy","setYaw","caclPositionByFollow","axisX","axisY","axisZ","anglePitch","angleYaw","quaternionX","quaternionY","addScaledVector","follow","option","_this5","followId","_ref5","_ref5$relativeRotatio","relativeRotation","_ref5$pitch","_ref5$yaw","_ref5$distance","container","rotation","scale","oldCameraParent","parent","needUpdateRotation","enabled","followControls","renderer","domElement","curPosition","radius","cancelMotion","useframe","update","cancel","remove","dispose","followCancelMap","cancelFollow","cancelAllFollow","forEach","_this6","options","currentPoition","currentPositionInterpolation","requestAnimationFrame","render","scene","tween","stop","Tween","t","p","to","onStart","easing","Easing","Quadratic","InOut","_ref6","currentPosition","lerpVectors","onComplete","setTimeout","start"],"sources":["../../../../src/core/Camera/PerspectiveCamera/CameraExpand.ts"],"sourcesContent":["import type { Object3D, OrbitControls, PerspectiveCamera, SceneControl, ControlsType } from '@anov/3d-core'\nimport { Box3, EventDispatcher, Group, MathUtils, Plane, Quaternion, TWEEN, Vector3, use, utils } from '@anov/3d-core'\nimport FollowControls from './FollowOrbitControls'\nimport type { CameraExpandInterface, FollowParamsOption, vector3Array } from '.'\n\ninterface ChangeCameraPresetOptions {\n duration?: number\n onUpdate?: (params: { position: Vector3; lookat: Vector3 }) => void\n onStart?: () => void\n onComplate?: () => void\n isTrigger?: boolean\n}\n\n/**\n * CameraExpand, 主要提供了一些PerspectiveCamera的拓展能力\n */\nexport class PerspectiveCameraExpand extends EventDispatcher implements CameraExpandInterface {\n private _isTransitionPeriod = false\n private camera: PerspectiveCamera\n private controls: ControlsType\n private sceneControl: SceneControl\n private tween: any\n private _isCameraChange = false\n private followId = 0\n private followCancelMap: Map<number, () => void> = new Map()\n\n constructor(camera: PerspectiveCamera, controls: ControlsType, sceneControl: SceneControl) {\n super()\n\n this.camera = camera\n this.controls = controls\n this.sceneControl = sceneControl\n\n this.bindEvent()\n }\n\n get isTransitionPeriod() {\n return this._isTransitionPeriod\n }\n\n get isCameraChange() {\n return this._isCameraChange\n }\n\n private bindEvent() {\n this.controls.addEventListener('start', () => {\n utils.storeManagement.set('enableEvents', false)\n this._isCameraChange = true\n })\n\n this.controls.addEventListener('end', () => {\n utils.storeManagement.set('enableEvents', true)\n this._isCameraChange = false\n })\n\n this.controls.addEventListener('change', () => {\n this.dispatchEvent({\n type: 'change',\n position: this.camera.position,\n target: this.controls.target,\n })\n })\n }\n\n /**\n * calculate last position from position box\n * if distance is not defined, calculate distance from box size\n * @param currentPos\n * @param distanceCoefficient\n * @param distance\n * @returns\n */\n private caclCurrentPos(currentPos: vector3Array[], distanceCoefficient = 1, distance?: 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(distance ?? cameraToCenterDistance * distanceCoefficient).add(center)\n const lastLookat = center\n\n return {\n lastPosition,\n lastLookat,\n }\n }\n\n /**\n * caclSingleCoordinate, when use focus and target is single point\n * @param prevTarget\n * @param prevPosition\n * @param lastTarget\n * @returns\n */\n private caclSingleCoordinate(prevTarget: Vector3, prevPosition: Vector3, lastTarget: Vector3, distance: number) {\n const directionVector = prevPosition.clone().sub(prevTarget).normalize()\n const lastPosition = directionVector.multiplyScalar(distance).add(lastTarget)\n\n return lastPosition\n }\n\n /**\n * camera focus\n * @param params\n * @returns\n */\n public focus(params: {\n target: vector3Array | vector3Array[] | string\n pitch?: number\n yaw?: number\n distance?: number // distance from target\n duration?: number\n isTrigger?: boolean\n distanceCoefficient?: number\n onUpdate?: (args: { position: Vector3; target: Vector3 }) => void\n }) {\n return new Promise<\n {\n position: number[]\n target: number[]\n duration: number\n userInput: boolean\n pitch: number\n }\n >((res) => {\n const { target: position, pitch = 0, yaw = 0, distance = undefined, duration, onUpdate, distanceCoefficient = 1 } = params\n\n const moveOptions = () => ({\n duration: (duration && duration * 1000) ?? 1000,\n isTrigger: params.isTrigger ?? true,\n onUpdate: ({ position, lookat }) => {\n onUpdate && onUpdate({ position, target: lookat })\n },\n onComplate: () => {\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 target is multiple points\n if (Array.isArray(position[0])) {\n const currentPos = position as vector3Array[]\n const { lastPosition, lastLookat } = this.caclCurrentPos(currentPos, distanceCoefficient, distance)\n\n this.motion(\n lastPosition,\n lastLookat,\n pitch,\n yaw,\n moveOptions(),\n )\n }\n // if target is single point\n else {\n const currentPos = position as vector3Array\n const lastPosition = this.caclSingleCoordinate(this.controls.target, this.camera.position, new Vector3().fromArray(currentPos), distance)\n const lastLookat = new Vector3().fromArray(currentPos)\n\n this.motion(\n lastPosition,\n lastLookat,\n pitch,\n yaw,\n moveOptions(),\n )\n }\n })\n }\n\n /**\n * set camera, main set position and target\n * @param params\n * @returns\n */\n public set(params: {\n position: vector3Array\n target: vector3Array\n isTrigger?: boolean\n duration?: number\n onUpdate?: (args: { position: Vector3; target: Vector3 }) => void\n }) {\n const { position, target, isTrigger, duration } = params\n\n return new Promise<{\n position: number[]\n target: number[]\n isTrigger: boolean\n duration: number\n userInput: boolean\n }>((res, _) => {\n this.motion(\n new Vector3(position[0], position[1], position[2]),\n new Vector3(target[0], target[1], target[2]),\n 0,\n 0,\n {\n isTrigger: isTrigger ?? true,\n duration: (duration && duration * 1000) ?? 1000,\n onUpdate: ({ position, lookat }) => {\n params.onUpdate && params.onUpdate({ position, target: lookat })\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 position and target\n * @returns\n */\n public 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 * get current pitch\n */\n public get pitch() {\n const targetPosition = this.controls.target\n const cameraPosition = this.camera.position\n\n const currentDirection = cameraPosition.clone().sub(targetPosition)\n const plane = new Plane(new Vector3(0, 1, 0), 0)\n\n return -(MathUtils.radToDeg(plane.normal.angleTo(currentDirection)) - 90)\n }\n\n /**\n * get current yaw\n * @returns\n */\n public get yaw() {\n return (this.camera as (PerspectiveCamera & { rotationParent: { y: number } })).rotationParent.y\n }\n\n /**\n * set pitch, similar to ue\n * @param deg\n */\n public setPitch(deg: number) {\n if (deg > 90)\n deg = 90\n if (deg < -90)\n deg = -90\n\n const direction = new Vector3(0, 0, 1)\n const quaternion = new Quaternion()\n\n const pitchQuat = new Quaternion()\n pitchQuat.setFromAxisAngle(new Vector3(1, 0, 0), MathUtils.degToRad(-deg))\n quaternion.multiply(pitchQuat)\n\n direction.applyQuaternion(quaternion)\n direction.normalize()\n\n const distance = this.camera.position.distanceTo(this.controls.target)\n const cameraPosition = this.controls.target.clone().add(direction.multiplyScalar(distance))\n this.camera.position.copy(cameraPosition)\n }\n\n /**\n * set yaw, similar to ue\n * @param deg\n */\n public setYaw(deg: number) {\n if (deg > 180)\n deg = 180\n if (deg < -180)\n deg = -180\n\n // @ts-ignore\n this.camera.rotationParent.y = MathUtils.degToRad(deg)\n }\n\n /**\n * cacl Position By Follow\n * @param pitch\n * @param yaw\n * @param distance\n * @returns\n */\n private caclPositionByFollow(pitch = 30, yaw = 0, distance = 60) {\n const axisX = new Vector3(1, 0, 0)\n const axisY = new Vector3(0, 1, 0)\n const axisZ = new Vector3(0, 0, -1)\n const position = new Vector3(0, 0, 0)\n\n const anglePitch = MathUtils.degToRad(pitch)\n const angleYaw = MathUtils.degToRad(yaw)\n\n const quaternionX = new Quaternion().setFromAxisAngle(axisX, anglePitch)\n const quaternionY = new Quaternion().setFromAxisAngle(axisY, angleYaw)\n\n position.addScaledVector(axisZ, distance)\n position.applyQuaternion(quaternionX)\n position.applyQuaternion(quaternionY)\n\n return position\n }\n\n /**\n * follow 3d object, not only use in camera\n * @param target\n * @param camera\n * @param option\n * @returns\n */\n public follow(target: Object3D, camera: PerspectiveCamera, option?: FollowParamsOption) {\n const followId = this.followId++\n const { relativeRotation = false, pitch = 30, yaw = 0, distance = 10 } = option || {}\n const container = new Group()\n\n container.rotation.copy(target.rotation)\n container.scale.copy(target.scale)\n\n const oldCameraParent = camera.parent\n\n let needUpdateRotation = true\n\n container.add(camera)\n target.parent.add(container)\n\n this.controls.enabled = false\n\n const followControls = new FollowControls(this.camera, this.sceneControl.renderer.domElement)\n const curPosition = this.caclPositionByFollow(pitch, yaw, distance)\n\n camera.position.copy(curPosition)\n followControls.radius = camera.position.distanceTo(target.position)\n\n followControls.addEventListener('start', () => {\n relativeRotation && (needUpdateRotation = false)\n })\n\n this.controls.target.copy(target.position)\n followControls.target = target.position\n\n const cancelMotion = use.useframe(() => {\n container.position.copy(target.position)\n container.scale.copy(target.scale)\n needUpdateRotation && container.rotation.copy(target.rotation)\n\n this.controls.target.copy(target.position)\n\n followControls.target = target.position\n followControls.update()\n })\n\n const cancel = () => {\n this.controls.enabled = true\n\n oldCameraParent.add(camera)\n target.parent.remove(container)\n\n cancelMotion()\n followControls.dispose()\n }\n\n this.followCancelMap.set(followId, cancel)\n\n return followId\n }\n\n /**\n * cancel follow\n * @param followId\n */\n public cancelFollow(followId: number) {\n const cancel = this.followCancelMap.get(followId)\n cancel && cancel()\n }\n\n /**\n * cancel all follow\n */\n public cancelAllFollow() {\n this.followCancelMap.forEach((cancel) => {\n cancel()\n })\n }\n\n /**\n * interpolation move camera\n * @param position\n * @param target\n * @param pitch\n * @param yaw\n * @param options\n * @returns\n */\n private motion(position: Vector3, target: Vector3, pitch = 0, yaw = 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 if (pitch) {\n // @ts-ignore\n this.camera.rotationParent.x = MathUtils.degToRad(pitch)\n }\n\n if (yaw) {\n // @ts-ignore\n this.camera.rotationParent.y = MathUtils.degToRad(yaw)\n }\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(\n // @ts-ignore\n { t: 0, lookat: this.controls.target.clone(), p: this.camera.rotationParent.x, yaw: this.camera.rotationParent.y })\n // @ts-ignore\n .to({ t: 1, lookat: target, p: MathUtils.degToRad(pitch), y: MathUtils.degToRad(yaw) }, 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 if (yaw)\n // @ts-ignore\n this.camera.rotationParent.y = 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}"],"mappings":";;;;;;;;;;;;;;AACA,SAASA,IAAI,EAAEC,eAAe,EAAEC,KAAK,EAAEC,SAAS,EAAEC,KAAK,EAAEC,UAAU,EAAEC,KAAK,EAAEC,OAAO,EAAEC,GAAG,EAAEC,KAAK,QAAQ,eAAe;AACtH,OAAOC,cAAc;AAWrB;AACA;AACA;AACA,WAAaC,uBAAuB,0BAAAC,gBAAA;EAAAC,SAAA,CAAAF,uBAAA,EAAAC,gBAAA;EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAAJ,uBAAA;EAUlC,SAAAA,wBAAYK,MAAyB,EAAEC,QAAsB,EAAEC,YAA0B,EAAE;IAAA,IAAAC,KAAA;IAAAC,eAAA,OAAAT,uBAAA;IACzFQ,KAAA,GAAAL,MAAA,CAAAO,IAAA;IAAOC,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,0BAVqB,KAAK;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,sBAKT,KAAK;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,eACZ,CAAC;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,sBAC+B,IAAIK,GAAG,CAAC,CAAC;IAK1DL,KAAA,CAAKH,MAAM,GAAGA,MAAM;IACpBG,KAAA,CAAKF,QAAQ,GAAGA,QAAQ;IACxBE,KAAA,CAAKD,YAAY,GAAGA,YAAY;IAEhCC,KAAA,CAAKM,SAAS,CAAC,CAAC;IAAA,OAAAN,KAAA;EAClB;EAACO,YAAA,CAAAf,uBAAA;IAAAgB,GAAA;IAAAC,GAAA,EAED,SAAAA,IAAA,EAAyB;MACvB,OAAO,IAAI,CAACC,mBAAmB;IACjC;EAAC;IAAAF,GAAA;IAAAC,GAAA,EAED,SAAAA,IAAA,EAAqB;MACnB,OAAO,IAAI,CAACE,eAAe;IAC7B;EAAC;IAAAH,GAAA;IAAAI,KAAA,EAED,SAAAN,UAAA,EAAoB;MAAA,IAAAO,MAAA;MAClB,IAAI,CAACf,QAAQ,CAACgB,gBAAgB,CAAC,OAAO,EAAE,YAAM;QAC5CxB,KAAK,CAACyB,eAAe,CAACC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC;QAChDH,MAAI,CAACF,eAAe,GAAG,IAAI;MAC7B,CAAC,CAAC;MAEF,IAAI,CAACb,QAAQ,CAACgB,gBAAgB,CAAC,KAAK,EAAE,YAAM;QAC1CxB,KAAK,CAACyB,eAAe,CAACC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC;QAC/CH,MAAI,CAACF,eAAe,GAAG,KAAK;MAC9B,CAAC,CAAC;MAEF,IAAI,CAACb,QAAQ,CAACgB,gBAAgB,CAAC,QAAQ,EAAE,YAAM;QAC7CD,MAAI,CAACI,aAAa,CAAC;UACjBC,IAAI,EAAE,QAAQ;UACdC,QAAQ,EAAEN,MAAI,CAAChB,MAAM,CAACsB,QAAQ;UAC9BC,MAAM,EAAEP,MAAI,CAACf,QAAQ,CAACsB;QACxB,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAZ,GAAA;IAAAI,KAAA,EAQA,SAAAS,eAAuBC,UAA0B,EAA8C;MAAA,IAA5CC,mBAAmB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;MAAA,IAAEG,QAAiB,GAAAH,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;MAC3F,IAAME,GAAG,GAAG,IAAI/C,IAAI,CAAC,CAAC;MAEtB+C,GAAG,CAACC,aAAa,CAACP,UAAU,CAACQ,GAAG,CAAC,UAAAC,IAAI;QAAA,OAAI,IAAI3C,OAAO,CAAC2C,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC;MAAA,EAAC,CAAC;MAEjF,IAAMC,MAAM,GAAGJ,GAAG,CAACK,SAAS,CAAC,IAAI7C,OAAO,CAAC,CAAC,CAAC;MAC3C,IAAM8C,IAAI,GAAGN,GAAG,CAACO,OAAO,CAAC,IAAI/C,OAAO,CAAC,CAAC,CAAC;MACvC,IAAMgD,YAAY,GAAGF,IAAI,CAACT,MAAM,CAAC,CAAC,GAAG,GAAG;MAExC,IAAMY,WAAW,GAAGD,YAAY,GAAGE,IAAI,CAACC,GAAG,CAAC,IAAI,CAAC1C,MAAM,CAAC2C,GAAG,GAAG,CAAC,GAAGF,IAAI,CAACG,EAAE,GAAG,GAAG,CAAC;MAChF,IAAMC,sBAAsB,GAAGL,WAAW;MAC1C,IAAMM,eAAe,GAAI,IAAI,CAAC9C,MAAM,CAACsB,QAAQ,CAACyB,KAAK,CAAC,CAAC,CAAEC,GAAG,CAAC,IAAI,CAAC/C,QAAQ,CAACsB,MAAM,CAAC,CAAC0B,SAAS,CAAC,CAAC;MAE5F,IAAMC,YAAY,GAAGJ,eAAe,CAACK,cAAc,CAACrB,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAIe,sBAAsB,GAAGnB,mBAAmB,CAAC,CAAC0B,GAAG,CAACjB,MAAM,CAAC;MACzH,IAAMkB,UAAU,GAAGlB,MAAM;MAEzB,OAAO;QACLe,YAAY,EAAZA,YAAY;QACZG,UAAU,EAAVA;MACF,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA1C,GAAA;IAAAI,KAAA,EAOA,SAAAuC,qBAA6BC,UAAmB,EAAEC,YAAqB,EAAEC,UAAmB,EAAE3B,QAAgB,EAAE;MAC9G,IAAMgB,eAAe,GAAGU,YAAY,CAACT,KAAK,CAAC,CAAC,CAACC,GAAG,CAACO,UAAU,CAAC,CAACN,SAAS,CAAC,CAAC;MACxE,IAAMC,YAAY,GAAGJ,eAAe,CAACK,cAAc,CAACrB,QAAQ,CAAC,CAACsB,GAAG,CAACK,UAAU,CAAC;MAE7E,OAAOP,YAAY;IACrB;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAvC,GAAA;IAAAI,KAAA,EAKA,SAAA2C,MAAaC,MASZ,EAAE;MAAA,IAAAC,MAAA;MACD,OAAO,IAAIC,OAAO,CAQZ,UAACC,GAAG,EAAK;QACT,IAAgBxC,QAAQ,GAA4FqC,MAAM,CAAlHpC,MAAM;UAAAwC,aAAA,GAAsGJ,MAAM,CAAhGK,KAAK;UAALA,KAAK,GAAAD,aAAA,cAAG,CAAC,GAAAA,aAAA;UAAAE,WAAA,GAAiFN,MAAM,CAArFO,GAAG;UAAHA,GAAG,GAAAD,WAAA,cAAG,CAAC,GAAAA,WAAA;UAAAE,gBAAA,GAAwER,MAAM,CAA5E7B,QAAQ;UAARA,QAAQ,GAAAqC,gBAAA,cAAGtC,SAAS,GAAAsC,gBAAA;UAAEC,QAAQ,GAAwCT,MAAM,CAAtDS,QAAQ;UAAEC,SAAQ,GAA8BV,MAAM,CAA5CU,QAAQ;UAAAC,qBAAA,GAA8BX,MAAM,CAAlCjC,mBAAmB;UAAnBA,mBAAmB,GAAA4C,qBAAA,cAAG,CAAC,GAAAA,qBAAA;QAE/G,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAA;UAAA,IAAAC,IAAA,EAAAC,iBAAA;UAAA,OAAU;YACzBL,QAAQ,GAAAI,IAAA,GAAGJ,QAAQ,IAAIA,QAAQ,GAAG,IAAI,cAAAI,IAAA,cAAAA,IAAA,GAAK,IAAI;YAC/CE,SAAS,GAAAD,iBAAA,GAAEd,MAAM,CAACe,SAAS,cAAAD,iBAAA,cAAAA,iBAAA,GAAI,IAAI;YACnCJ,QAAQ,EAAE,SAAAA,SAAAM,KAAA,EAA0B;cAAA,IAAvBrD,QAAQ,GAAAqD,KAAA,CAARrD,QAAQ;gBAAEsD,MAAM,GAAAD,KAAA,CAANC,MAAM;cAC3BP,SAAQ,IAAIA,SAAQ,CAAC;gBAAE/C,QAAQ,EAARA,QAAQ;gBAAEC,MAAM,EAAEqD;cAAO,CAAC,CAAC;YACpD,CAAC;YACDC,UAAU,EAAE,SAAAA,WAAA,EAAM;cAAA,IAAAC,gBAAA;cAChBhB,GAAG,CAAC;gBACFxC,QAAQ,EAAEsC,MAAI,CAAC5D,MAAM,CAACsB,QAAQ,CAACyD,OAAO,CAAC,CAAC;gBACxCxD,MAAM,EAAEqC,MAAI,CAAC3D,QAAQ,CAACsB,MAAM,CAACwD,OAAO,CAAC,CAAC;gBACtCX,QAAQ,GAAAU,gBAAA,GAAEnB,MAAM,CAACS,QAAQ,cAAAU,gBAAA,cAAAA,gBAAA,GAAI,CAAC;gBAC9BE,SAAS,EAAE,IAAI;gBACfhB,KAAK,EAAEA,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI;cAClB,CAAC,CAAC;YACJ;UACF,CAAC;QAAA,CAA8B;;QAE/B;QACA,IAAIiB,KAAK,CAACC,OAAO,CAAC5D,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;UAC9B,IAAMG,UAAU,GAAGH,QAA0B;UAC7C,IAAA6D,qBAAA,GAAqCvB,MAAI,CAACpC,cAAc,CAACC,UAAU,EAAEC,mBAAmB,EAAEI,QAAQ,CAAC;YAA3FoB,YAAY,GAAAiC,qBAAA,CAAZjC,YAAY;YAAEG,UAAU,GAAA8B,qBAAA,CAAV9B,UAAU;UAEhCO,MAAI,CAACwB,MAAM,CACTlC,YAAY,EACZG,UAAU,EACVW,KAAK,EACLE,GAAG,EACHK,WAAW,CAAC,CACd,CAAC;QACH;QACA;QAAA,KACK;UACH,IAAM9C,WAAU,GAAGH,QAAwB;UAC3C,IAAM4B,aAAY,GAAGU,MAAI,CAACN,oBAAoB,CAACM,MAAI,CAAC3D,QAAQ,CAACsB,MAAM,EAAEqC,MAAI,CAAC5D,MAAM,CAACsB,QAAQ,EAAE,IAAI/B,OAAO,CAAC,CAAC,CAAC8F,SAAS,CAAC5D,WAAU,CAAC,EAAEK,QAAQ,CAAC;UACzI,IAAMuB,WAAU,GAAG,IAAI9D,OAAO,CAAC,CAAC,CAAC8F,SAAS,CAAC5D,WAAU,CAAC;UAEtDmC,MAAI,CAACwB,MAAM,CACTlC,aAAY,EACZG,WAAU,EACVW,KAAK,EACLE,GAAG,EACHK,WAAW,CAAC,CACd,CAAC;QACH;MACF,CAAC,CAAC;IACR;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA5D,GAAA;IAAAI,KAAA,EAKA,SAAAI,IAAWwC,MAMV,EAAE;MAAA,IAAA2B,MAAA;MACD,IAAQhE,QAAQ,GAAkCqC,MAAM,CAAhDrC,QAAQ;QAAEC,MAAM,GAA0BoC,MAAM,CAAtCpC,MAAM;QAAEmD,SAAS,GAAef,MAAM,CAA9Be,SAAS;QAAEN,QAAQ,GAAKT,MAAM,CAAnBS,QAAQ;MAE7C,OAAO,IAAIP,OAAO,CAMf,UAACC,GAAG,EAAEyB,CAAC,EAAK;QAAA,IAAAC,KAAA;QACbF,MAAI,CAACF,MAAM,CACT,IAAI7F,OAAO,CAAC+B,QAAQ,CAAC,CAAC,CAAC,EAAEA,QAAQ,CAAC,CAAC,CAAC,EAAEA,QAAQ,CAAC,CAAC,CAAC,CAAC,EAClD,IAAI/B,OAAO,CAACgC,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC,EAC5C,CAAC,EACD,CAAC,EACD;UACEmD,SAAS,EAAEA,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,IAAI;UAC5BN,QAAQ,GAAAoB,KAAA,GAAGpB,QAAQ,IAAIA,QAAQ,GAAG,IAAI,cAAAoB,KAAA,cAAAA,KAAA,GAAK,IAAI;UAC/CnB,QAAQ,EAAE,SAAAA,SAAAoB,KAAA,EAA0B;YAAA,IAAvBnE,QAAQ,GAAAmE,KAAA,CAARnE,QAAQ;cAAEsD,MAAM,GAAAa,KAAA,CAANb,MAAM;YAC3BjB,MAAM,CAACU,QAAQ,IAAIV,MAAM,CAACU,QAAQ,CAAC;cAAE/C,QAAQ,EAARA,QAAQ;cAAEC,MAAM,EAAEqD;YAAO,CAAC,CAAC;UAClE,CAAC;UACDC,UAAU,EAAE,SAAAA,WAAA,EAAM;YAAA,IAAAa,iBAAA;YAChB5B,GAAG,CAAC;cACFxC,QAAQ,EAAEgE,MAAI,CAACtF,MAAM,CAACsB,QAAQ,CAACyD,OAAO,CAAC,CAAC;cACxCxD,MAAM,EAAE+D,MAAI,CAACrF,QAAQ,CAACsB,MAAM,CAACwD,OAAO,CAAC,CAAC;cACtCL,SAAS,EAAE,IAAI;cACfN,QAAQ,GAAAsB,iBAAA,GAAE/B,MAAM,CAACS,QAAQ,cAAAsB,iBAAA,cAAAA,iBAAA,GAAI,CAAC;cAC9BV,SAAS,EAAE;YACb,CAAC,CAAC;UACJ;QACF,CAAC,CAAC;MACN,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;EAHE;IAAArE,GAAA;IAAAI,KAAA,EAIA,SAAAH,IAAA,EAAa;MACX,OAAO;QACLU,QAAQ,EAAE,CAAC,IAAI,CAACtB,MAAM,CAACsB,QAAQ,CAACqE,CAAC,EAAE,IAAI,CAAC3F,MAAM,CAACsB,QAAQ,CAACsE,CAAC,EAAE,IAAI,CAAC5F,MAAM,CAACsB,QAAQ,CAACuE,CAAC,CAAC;QAClFtE,MAAM,EAAE,CAAC,IAAI,CAACtB,QAAQ,CAACsB,MAAM,CAACoE,CAAC,EAAE,IAAI,CAAC1F,QAAQ,CAACsB,MAAM,CAACqE,CAAC,EAAE,IAAI,CAAC3F,QAAQ,CAACsB,MAAM,CAACsE,CAAC;MACjF,CAAC;IACH;;IAEA;AACF;AACA;EAFE;IAAAlF,GAAA;IAAAC,GAAA,EAGA,SAAAA,IAAA,EAAmB;MACjB,IAAMkF,cAAc,GAAG,IAAI,CAAC7F,QAAQ,CAACsB,MAAM;MAC3C,IAAMwE,cAAc,GAAG,IAAI,CAAC/F,MAAM,CAACsB,QAAQ;MAE3C,IAAM0E,gBAAgB,GAAGD,cAAc,CAAChD,KAAK,CAAC,CAAC,CAACC,GAAG,CAAC8C,cAAc,CAAC;MACnE,IAAMG,KAAK,GAAG,IAAI7G,KAAK,CAAC,IAAIG,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;MAEhD,OAAO,EAAEJ,SAAS,CAAC+G,QAAQ,CAACD,KAAK,CAACE,MAAM,CAACC,OAAO,CAACJ,gBAAgB,CAAC,CAAC,GAAG,EAAE,CAAC;IAC3E;;IAEA;AACF;AACA;AACA;EAHE;IAAArF,GAAA;IAAAC,GAAA,EAIA,SAAAA,IAAA,EAAiB;MACf,OAAQ,IAAI,CAACZ,MAAM,CAA6DqG,cAAc,CAACT,CAAC;IAClG;;IAEA;AACF;AACA;AACA;EAHE;IAAAjF,GAAA;IAAAI,KAAA,EAIA,SAAAuF,SAAgBC,GAAW,EAAE;MAC3B,IAAIA,GAAG,GAAG,EAAE,EACVA,GAAG,GAAG,EAAE;MACV,IAAIA,GAAG,GAAG,CAAC,EAAE,EACXA,GAAG,GAAG,CAAC,EAAE;MAEX,IAAMC,SAAS,GAAG,IAAIjH,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MACtC,IAAMkH,UAAU,GAAG,IAAIpH,UAAU,CAAC,CAAC;MAEnC,IAAMqH,SAAS,GAAG,IAAIrH,UAAU,CAAC,CAAC;MAClCqH,SAAS,CAACC,gBAAgB,CAAC,IAAIpH,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAEJ,SAAS,CAACyH,QAAQ,CAAC,CAACL,GAAG,CAAC,CAAC;MAC1EE,UAAU,CAACI,QAAQ,CAACH,SAAS,CAAC;MAE9BF,SAAS,CAACM,eAAe,CAACL,UAAU,CAAC;MACrCD,SAAS,CAACvD,SAAS,CAAC,CAAC;MAErB,IAAMnB,QAAQ,GAAG,IAAI,CAAC9B,MAAM,CAACsB,QAAQ,CAACyF,UAAU,CAAC,IAAI,CAAC9G,QAAQ,CAACsB,MAAM,CAAC;MACtE,IAAMwE,cAAc,GAAG,IAAI,CAAC9F,QAAQ,CAACsB,MAAM,CAACwB,KAAK,CAAC,CAAC,CAACK,GAAG,CAACoD,SAAS,CAACrD,cAAc,CAACrB,QAAQ,CAAC,CAAC;MAC3F,IAAI,CAAC9B,MAAM,CAACsB,QAAQ,CAAC0F,IAAI,CAACjB,cAAc,CAAC;IAC3C;;IAEA;AACF;AACA;AACA;EAHE;IAAApF,GAAA;IAAAI,KAAA,EAIA,SAAAkG,OAAcV,GAAW,EAAE;MACzB,IAAIA,GAAG,GAAG,GAAG,EACXA,GAAG,GAAG,GAAG;MACX,IAAIA,GAAG,GAAG,CAAC,GAAG,EACZA,GAAG,GAAG,CAAC,GAAG;;MAEZ;MACA,IAAI,CAACvG,MAAM,CAACqG,cAAc,CAACT,CAAC,GAAGzG,SAAS,CAACyH,QAAQ,CAACL,GAAG,CAAC;IACxD;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA5F,GAAA;IAAAI,KAAA,EAOA,SAAAmG,qBAAA,EAAiE;MAAA,IAApClD,KAAK,GAAArC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;MAAA,IAAEuC,GAAG,GAAAvC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;MAAA,IAAEG,QAAQ,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;MAC7D,IAAMwF,KAAK,GAAG,IAAI5H,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MAClC,IAAM6H,KAAK,GAAG,IAAI7H,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MAClC,IAAM8H,KAAK,GAAG,IAAI9H,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MACnC,IAAM+B,QAAQ,GAAG,IAAI/B,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MAErC,IAAM+H,UAAU,GAAGnI,SAAS,CAACyH,QAAQ,CAAC5C,KAAK,CAAC;MAC5C,IAAMuD,QAAQ,GAAGpI,SAAS,CAACyH,QAAQ,CAAC1C,GAAG,CAAC;MAExC,IAAMsD,WAAW,GAAG,IAAInI,UAAU,CAAC,CAAC,CAACsH,gBAAgB,CAACQ,KAAK,EAAEG,UAAU,CAAC;MACxE,IAAMG,WAAW,GAAG,IAAIpI,UAAU,CAAC,CAAC,CAACsH,gBAAgB,CAACS,KAAK,EAAEG,QAAQ,CAAC;MAEtEjG,QAAQ,CAACoG,eAAe,CAACL,KAAK,EAAEvF,QAAQ,CAAC;MACzCR,QAAQ,CAACwF,eAAe,CAACU,WAAW,CAAC;MACrClG,QAAQ,CAACwF,eAAe,CAACW,WAAW,CAAC;MAErC,OAAOnG,QAAQ;IACjB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAX,GAAA;IAAAI,KAAA,EAOA,SAAA4G,OAAcpG,MAAgB,EAAEvB,MAAyB,EAAE4H,MAA2B,EAAE;MAAA,IAAAC,MAAA;MACtF,IAAMC,QAAQ,GAAG,IAAI,CAACA,QAAQ,EAAE;MAChC,IAAAC,KAAA,GAAyEH,MAAM,IAAI,CAAC,CAAC;QAAAI,qBAAA,GAAAD,KAAA,CAA7EE,gBAAgB;QAAhBA,gBAAgB,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;QAAAE,WAAA,GAAAH,KAAA,CAAE/D,KAAK;QAALA,KAAK,GAAAkE,WAAA,cAAG,EAAE,GAAAA,WAAA;QAAAC,SAAA,GAAAJ,KAAA,CAAE7D,GAAG;QAAHA,GAAG,GAAAiE,SAAA,cAAG,CAAC,GAAAA,SAAA;QAAAC,cAAA,GAAAL,KAAA,CAAEjG,QAAQ;QAARA,QAAQ,GAAAsG,cAAA,cAAG,EAAE,GAAAA,cAAA;MACpE,IAAMC,SAAS,GAAG,IAAInJ,KAAK,CAAC,CAAC;MAE7BmJ,SAAS,CAACC,QAAQ,CAACtB,IAAI,CAACzF,MAAM,CAAC+G,QAAQ,CAAC;MACxCD,SAAS,CAACE,KAAK,CAACvB,IAAI,CAACzF,MAAM,CAACgH,KAAK,CAAC;MAElC,IAAMC,eAAe,GAAGxI,MAAM,CAACyI,MAAM;MAErC,IAAIC,kBAAkB,GAAG,IAAI;MAE7BL,SAAS,CAACjF,GAAG,CAACpD,MAAM,CAAC;MACrBuB,MAAM,CAACkH,MAAM,CAACrF,GAAG,CAACiF,SAAS,CAAC;MAE5B,IAAI,CAACpI,QAAQ,CAAC0I,OAAO,GAAG,KAAK;MAE7B,IAAMC,cAAc,GAAG,IAAIlJ,cAAc,CAAC,IAAI,CAACM,MAAM,EAAE,IAAI,CAACE,YAAY,CAAC2I,QAAQ,CAACC,UAAU,CAAC;MAC7F,IAAMC,WAAW,GAAG,IAAI,CAAC7B,oBAAoB,CAAClD,KAAK,EAAEE,GAAG,EAAEpC,QAAQ,CAAC;MAEnE9B,MAAM,CAACsB,QAAQ,CAAC0F,IAAI,CAAC+B,WAAW,CAAC;MACjCH,cAAc,CAACI,MAAM,GAAGhJ,MAAM,CAACsB,QAAQ,CAACyF,UAAU,CAACxF,MAAM,CAACD,QAAQ,CAAC;MAEnEsH,cAAc,CAAC3H,gBAAgB,CAAC,OAAO,EAAE,YAAM;QAC7CgH,gBAAgB,KAAKS,kBAAkB,GAAG,KAAK,CAAC;MAClD,CAAC,CAAC;MAEF,IAAI,CAACzI,QAAQ,CAACsB,MAAM,CAACyF,IAAI,CAACzF,MAAM,CAACD,QAAQ,CAAC;MAC1CsH,cAAc,CAACrH,MAAM,GAAGA,MAAM,CAACD,QAAQ;MAEvC,IAAM2H,YAAY,GAAGzJ,GAAG,CAAC0J,QAAQ,CAAC,YAAM;QACtCb,SAAS,CAAC/G,QAAQ,CAAC0F,IAAI,CAACzF,MAAM,CAACD,QAAQ,CAAC;QACxC+G,SAAS,CAACE,KAAK,CAACvB,IAAI,CAACzF,MAAM,CAACgH,KAAK,CAAC;QAClCG,kBAAkB,IAAIL,SAAS,CAACC,QAAQ,CAACtB,IAAI,CAACzF,MAAM,CAAC+G,QAAQ,CAAC;QAE9DT,MAAI,CAAC5H,QAAQ,CAACsB,MAAM,CAACyF,IAAI,CAACzF,MAAM,CAACD,QAAQ,CAAC;QAE1CsH,cAAc,CAACrH,MAAM,GAAGA,MAAM,CAACD,QAAQ;QACvCsH,cAAc,CAACO,MAAM,CAAC,CAAC;MACzB,CAAC,CAAC;MAEF,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAA,EAAS;QACnBvB,MAAI,CAAC5H,QAAQ,CAAC0I,OAAO,GAAG,IAAI;QAE5BH,eAAe,CAACpF,GAAG,CAACpD,MAAM,CAAC;QAC3BuB,MAAM,CAACkH,MAAM,CAACY,MAAM,CAAChB,SAAS,CAAC;QAE/BY,YAAY,CAAC,CAAC;QACdL,cAAc,CAACU,OAAO,CAAC,CAAC;MAC1B,CAAC;MAED,IAAI,CAACC,eAAe,CAACpI,GAAG,CAAC2G,QAAQ,EAAEsB,MAAM,CAAC;MAE1C,OAAOtB,QAAQ;IACjB;;IAEA;AACF;AACA;AACA;EAHE;IAAAnH,GAAA;IAAAI,KAAA,EAIA,SAAAyI,aAAoB1B,QAAgB,EAAE;MACpC,IAAMsB,MAAM,GAAG,IAAI,CAACG,eAAe,CAAC3I,GAAG,CAACkH,QAAQ,CAAC;MACjDsB,MAAM,IAAIA,MAAM,CAAC,CAAC;IACpB;;IAEA;AACF;AACA;EAFE;IAAAzI,GAAA;IAAAI,KAAA,EAGA,SAAA0I,gBAAA,EAAyB;MACvB,IAAI,CAACF,eAAe,CAACG,OAAO,CAAC,UAACN,MAAM,EAAK;QACvCA,MAAM,CAAC,CAAC;MACV,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAAzI,GAAA;IAAAI,KAAA,EASA,SAAAqE,OAAe9D,QAAiB,EAAEC,MAAe,EAA2D;MAAA,IAAAoI,MAAA;MAAA,IAAzD3F,KAAK,GAAArC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;MAAA,IAAEuC,GAAG,GAAAvC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;MAAA,IAAEiI,OAAmC,GAAAjI,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;MACxG,IAAMgI,cAAc,GAAG,IAAI,CAAC7J,MAAM,CAACsB,QAAQ,CAACyB,KAAK,CAAC,CAAC;MACnD,IAAM+G,4BAA4B,GAAG,IAAIvK,OAAO,CAAC,CAAC;MAElD,IAAI,CAAAqK,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAExF,QAAQ,MAAK,CAAC,EAAE;QAC3B,IAAI,CAACpE,MAAM,CAACsB,QAAQ,CAAC0F,IAAI,CAAC1F,QAAQ,CAAC;QACnC,IAAI,CAACrB,QAAQ,CAACsB,MAAM,CAACyF,IAAI,CAACzF,MAAM,CAAC;QAEjC,IAAIyC,KAAK,EAAE;UACT;UACA,IAAI,CAAChE,MAAM,CAACqG,cAAc,CAACV,CAAC,GAAGxG,SAAS,CAACyH,QAAQ,CAAC5C,KAAK,CAAC;QAC1D;QAEA,IAAIE,GAAG,EAAE;UACP;UACA,IAAI,CAAClE,MAAM,CAACqG,cAAc,CAACT,CAAC,GAAGzG,SAAS,CAACyH,QAAQ,CAAC1C,GAAG,CAAC;QACxD;QAEA6F,qBAAqB,CAAC,YAAM;UAC1B,CAAAH,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE/E,UAAU,KAAI+E,OAAO,CAAC/E,UAAU,CAAC,CAAC;UAC3C8E,MAAI,CAACzJ,YAAY,CAAC2I,QAAQ,CAAEmB,MAAM,CAACL,MAAI,CAACzJ,YAAY,CAAC+J,KAAK,EAAGN,MAAI,CAACzJ,YAAY,CAACF,MAAO,CAAC;QACzF,CAAC,CAAC;QAEF;MACF;MAEA,IAAI,IAAI,CAACkK,KAAK,EACZ,IAAI,CAACA,KAAK,CAACC,IAAI,CAAC,CAAC;MAEnB,IAAI,CAACD,KAAK,GAAG,IAAI5K,KAAK,CAAC8K,KAAK;MAC1B;MACA;QAAEC,CAAC,EAAE,CAAC;QAAEzF,MAAM,EAAE,IAAI,CAAC3E,QAAQ,CAACsB,MAAM,CAACwB,KAAK,CAAC,CAAC;QAAEuH,CAAC,EAAE,IAAI,CAACtK,MAAM,CAACqG,cAAc,CAACV,CAAC;QAAEzB,GAAG,EAAE,IAAI,CAAClE,MAAM,CAACqG,cAAc,CAACT;MAAE,CAAC;MACpH;MAAA,CACG2E,EAAE,CAAC;QAAEF,CAAC,EAAE,CAAC;QAAEzF,MAAM,EAAErD,MAAM;QAAE+I,CAAC,EAAEnL,SAAS,CAACyH,QAAQ,CAAC5C,KAAK,CAAC;QAAE4B,CAAC,EAAEzG,SAAS,CAACyH,QAAQ,CAAC1C,GAAG;MAAE,CAAC,EAAE,CAAA0F,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAExF,QAAQ,KAAI,IAAI,CAAC,CACjHoG,OAAO,CAAC,YAAM;QACb,CAAAZ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEY,OAAO,KAAIZ,OAAO,CAACY,OAAO,CAAC,CAAC;QACrCb,MAAI,CAAC1J,QAAQ,CAAC0I,OAAO,GAAG,KAAK;QAC7BgB,MAAI,CAAC9I,mBAAmB,GAAG,IAAI;MACjC,CAAC,CAAC,CACD4J,MAAM,CAACnL,KAAK,CAACoL,MAAM,CAACC,SAAS,CAACC,KAAK,CAAC,CACpCvG,QAAQ,CAAC,UAAAwG,KAAA,EAAsB;QAAA,IAAnBR,CAAC,GAAAQ,KAAA,CAADR,CAAC;UAAEzF,MAAM,GAAAiG,KAAA,CAANjG,MAAM;UAAE0F,CAAC,GAAAO,KAAA,CAADP,CAAC;QACvBX,MAAI,CAAC1J,QAAQ,CAACsB,MAAM,CAACyF,IAAI,CAACpC,MAAM,CAAC;QAEjC,IAAIZ,KAAK;UACT;UACE2F,MAAI,CAAC3J,MAAM,CAACqG,cAAc,CAACV,CAAC,GAAG2E,CAAC;QAElC,IAAIpG,GAAG;UACP;UACEyF,MAAI,CAAC3J,MAAM,CAACqG,cAAc,CAACT,CAAC,GAAG0E,CAAC;QAElC,IAAMQ,eAAe,GAAGhB,4BAA4B,CAACiB,WAAW,CAAClB,cAAc,EAAEvI,QAAQ,EAAE+I,CAAC,CAAC;QAC7FV,MAAI,CAAC3J,MAAM,CAACsB,QAAQ,CAAC0F,IAAI,CAAC8D,eAAe,CAAC;QAC1C,CAAAlB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEvF,QAAQ,KAAIuF,OAAO,CAACvF,QAAQ,CAAC;UAAE/C,QAAQ,EAAEwJ,eAAe;UAAElG,MAAM,EAANA;QAAO,CAAC,CAAC;MAC9E,CAAC,CAAC,CACDoG,UAAU,CAAC,YAAM;QAChBjB,qBAAqB,CAAC,YAAM;UAC1B,CAAAH,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE/E,UAAU,KAAI+E,OAAO,CAAC/E,UAAU,CAAC,CAAC;QAC7C,CAAC,CAAC;QAEF8E,MAAI,CAAC1J,QAAQ,CAAC0I,OAAO,GAAG,IAAI;QAE5BsC,UAAU,CAAC,YAAM;UACftB,MAAI,CAAC9I,mBAAmB,GAAG,KAAK;QAClC,CAAC,CAAC;MACJ,CAAC,CAAC,CACDqK,KAAK,CAAC,CAAC;IACZ;EAAC;EAAA,OAAAvL,uBAAA;AAAA,EAhd0CV,eAAe"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anov/3d-ability",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.128",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "",
|
|
6
6
|
"license": "MIT",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"package.json"
|
|
17
17
|
],
|
|
18
18
|
"peerDependencies": {
|
|
19
|
-
"@anov/3d-core": "^0.0.
|
|
19
|
+
"@anov/3d-core": "^0.0.72"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@rengr/heatmap.js": "^2.0.10",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@types/lodash": "^4.14.196",
|
|
37
37
|
"@types/suncalc": "^1.9.2",
|
|
38
38
|
"@types/supercluster": "^7.1.3",
|
|
39
|
-
"@anov/3d-core": "^0.0.
|
|
39
|
+
"@anov/3d-core": "^0.0.72"
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|
|
42
42
|
"build": "father build",
|