@anov/3d 0.0.4-alpha26 → 0.0.4-alpha28
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/anov3d.d.ts +25 -0
- package/dist/anov3d.js +86 -0
- package/dist/anov3d.js.map +1 -0
- package/dist/applicationApi.d.ts +2 -0
- package/dist/applicationApi.js +20 -1
- package/dist/applicationApi.js.map +1 -1
- package/dist/factory/3d.js +2 -0
- package/dist/factory/3d.js.map +1 -1
- package/dist/factory/globalControl.d.ts +7 -0
- package/dist/factory/globalControl.js +22 -0
- package/dist/factory/globalControl.js.map +1 -0
- package/dist/factory/regionData.js +1 -1
- package/dist/factory/regionData.js.map +1 -1
- package/dist/factory/unit/circle.js +7 -0
- package/dist/factory/unit/circle.js.map +1 -1
- package/dist/factory/unit/cylinder.js +14 -0
- package/dist/factory/unit/cylinder.js.map +1 -1
- package/dist/factory/unit/handle.d.ts +7 -0
- package/dist/factory/unit/handle.js +41 -0
- package/dist/factory/unit/handle.js.map +1 -0
- package/dist/module/camera/index.d.ts +7 -3
- package/dist/module/camera/index.js +26 -14
- package/dist/module/camera/index.js.map +1 -1
- package/dist/module/environment/index.d.ts +5 -6
- package/dist/module/environment/index.js +8 -4
- package/dist/module/environment/index.js.map +1 -1
- package/dist/module/scene/index.d.ts +1 -3
- package/dist/module/scene/index.js +3 -4
- package/dist/module/scene/index.js.map +1 -1
- package/dist/sdkEntry.d.ts +3 -34
- package/dist/sdkEntry.js +37 -97
- package/dist/sdkEntry.js.map +1 -1
- package/dist/utils/abstract.d.ts +6 -0
- package/dist/utils/abstract.js +24 -0
- package/dist/utils/abstract.js.map +1 -0
- package/package.json +3 -3
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
2
4
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
3
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); } }
|
|
4
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; }
|
|
@@ -10,17 +12,21 @@ import createFontMesh from "../utils/fontMesh";
|
|
|
10
12
|
import { SceneStyle } from "../3d";
|
|
11
13
|
import regionMap from "../regionData";
|
|
12
14
|
import { collisionDetection } from "../utils/areaBoundingBox";
|
|
15
|
+
import { MessageType, sendToMessage } from "../../utils/messageFn";
|
|
16
|
+
import { EMessageStatus } from "../../messageStatus";
|
|
13
17
|
import { lookAtOnYAxis } from "../utils";
|
|
14
18
|
var emitter = utils.emitter;
|
|
15
19
|
var cylinderData = [{
|
|
16
20
|
label: '8人',
|
|
17
21
|
id: '1',
|
|
22
|
+
title: regionMap.reform.title,
|
|
18
23
|
belongTo: regionMap.reform.id,
|
|
19
24
|
color: new Color('#FED602').getHex(),
|
|
20
25
|
points: regionMap.reform.poi.position,
|
|
21
26
|
height: 80
|
|
22
27
|
}, {
|
|
23
28
|
label: '7人',
|
|
29
|
+
title: regionMap.reduction.title,
|
|
24
30
|
id: '2',
|
|
25
31
|
belongTo: regionMap.reduction.id,
|
|
26
32
|
color: new Color('#FED602').getHex(),
|
|
@@ -29,6 +35,7 @@ var cylinderData = [{
|
|
|
29
35
|
}, {
|
|
30
36
|
label: '4人',
|
|
31
37
|
id: '3',
|
|
38
|
+
title: regionMap.crudeOil.title,
|
|
32
39
|
belongTo: regionMap.crudeOil.id,
|
|
33
40
|
color: new Color('#FED602').getHex(),
|
|
34
41
|
points: regionMap.crudeOil.poi.position,
|
|
@@ -36,6 +43,7 @@ var cylinderData = [{
|
|
|
36
43
|
}, {
|
|
37
44
|
label: '10人',
|
|
38
45
|
id: '4',
|
|
46
|
+
title: regionMap.catalyticCracking.title,
|
|
39
47
|
belongTo: regionMap.catalyticCracking.id,
|
|
40
48
|
color: new Color('#FED602').getHex(),
|
|
41
49
|
points: regionMap.catalyticCracking.poi.position,
|
|
@@ -43,6 +51,7 @@ var cylinderData = [{
|
|
|
43
51
|
}, {
|
|
44
52
|
label: '3人',
|
|
45
53
|
id: '5',
|
|
54
|
+
title: regionMap.hydrocrackingUnit.title,
|
|
46
55
|
belongTo: regionMap.hydrocrackingUnit.id,
|
|
47
56
|
color: new Color('#FED602').getHex(),
|
|
48
57
|
points: regionMap.hydrocrackingUnit.poi.position,
|
|
@@ -50,6 +59,7 @@ var cylinderData = [{
|
|
|
50
59
|
}, {
|
|
51
60
|
label: '8人',
|
|
52
61
|
id: '6',
|
|
62
|
+
title: regionMap.cokingUnit.title,
|
|
53
63
|
belongTo: regionMap.cokingUnit.id,
|
|
54
64
|
color: new Color('#FED602').getHex(),
|
|
55
65
|
points: regionMap.cokingUnit.poi.position,
|
|
@@ -57,6 +67,7 @@ var cylinderData = [{
|
|
|
57
67
|
}, {
|
|
58
68
|
label: '20人',
|
|
59
69
|
id: '7',
|
|
70
|
+
title: regionMap.administrative.title,
|
|
60
71
|
belongTo: regionMap.administrative.id,
|
|
61
72
|
color: new Color('#FED602').getHex(),
|
|
62
73
|
points: regionMap.administrative.poi.position,
|
|
@@ -126,6 +137,9 @@ var CylinderManage = /*#__PURE__*/function () {
|
|
|
126
137
|
currentGroup.visible = false;
|
|
127
138
|
_this2.currentoperate = item.belongTo;
|
|
128
139
|
_this2.cameraAddListener();
|
|
140
|
+
sendToMessage(MessageType.Event, 'onClick', EMessageStatus.Success, undefined, _objectSpread({
|
|
141
|
+
type: 'Bar'
|
|
142
|
+
}, item));
|
|
129
143
|
});
|
|
130
144
|
});
|
|
131
145
|
_this2.cylinderMesh.set(item.belongTo, group);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BoxGeometry","Color","Group","Mesh","ShaderMaterial","Vector3","globalObjectManage","use","utils","createFontMesh","SceneStyle","regionMap","collisionDetection","lookAtOnYAxis","emitter","cylinderData","label","id","belongTo","reform","color","getHex","points","poi","position","height","reduction","crudeOil","catalyticCracking","hydrocrackingUnit","cokingUnit","administrative","CylinderManage","gobal","options","Map","currentCameraPosition","control","object","box","areaBoundingBox","boundingBoxMap","get","currentoperate","iscollision","emit","cameraRemoveListener","scene","option","forEach","item","geometry","material","transparent","depthWrite","depthTest","uniforms","uHeight","value","uColor","vertexShader","fragmentShader","cylinder","group","visible","copy","fromArray","interactionManager","storeManagement","add","addEventListener","style","real","cameraUtil","set","target","then","currentGroup","cylinderMesh","cameraAddListener","font","mesh","center","useframe","camera","cameraListenerHandle","removeEventListener"],"sources":["../../../src/factory/unit/cylinder.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { BoxGeometry, Color, Group, Mesh, ShaderMaterial, Vector3, globalObjectManage, use, utils } from '@anov/3d-core'\nimport createFontMesh from '../utils/fontMesh'\nimport type Factory3D from '../3d'\nimport { SceneStyle } from '../3d'\nimport regionMap from '../regionData'\nimport { collisionDetection } from '../utils/areaBoundingBox'\n\nimport { lookAtOnYAxis } from '../utils'\n\nconst { emitter } = utils\n\nconst cylinderData = [\n {\n label: '8人',\n id: '1',\n belongTo: regionMap.reform.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.reform.poi.position,\n height: 80,\n },\n {\n label: '7人',\n id: '2',\n belongTo: regionMap.reduction.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.reduction.poi.position,\n height: 70,\n },\n {\n label: '4人',\n id: '3',\n belongTo: regionMap.crudeOil.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.crudeOil.poi.position,\n height: 40,\n },\n {\n label: '10人',\n id: '4',\n belongTo: regionMap.catalyticCracking.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.catalyticCracking.poi.position,\n height: 100,\n },\n {\n label: '3人',\n id: '5',\n belongTo: regionMap.hydrocrackingUnit.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.hydrocrackingUnit.poi.position,\n height: 30,\n },\n {\n label: '8人',\n id: '6',\n belongTo: regionMap.cokingUnit.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.cokingUnit.poi.position,\n height: 80,\n },\n {\n label: '20人',\n id: '7',\n belongTo: regionMap.administrative.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.administrative.poi.position,\n height: 150,\n },\n]\n\ntype CylinderManageOption = {\n visible?: boolean\n}\n\nclass CylinderManage {\n private scene: Scene\n readonly cylinderMesh: Map<string, Object3D> = new Map()\n private option: CylinderManageOption\n private gobal: Factory3D\n private currentoperate: string\n\n constructor(gobal: Factory3D, options?: CylinderManageOption) {\n this.scene = gobal.scene.scene\n this.gobal = gobal\n this.option = options || {}\n }\n\n generateCylinder() {\n cylinderData.forEach((item) => {\n const geometry = new BoxGeometry(10, item.height, 10)\n const material = new ShaderMaterial({\n transparent: true,\n depthWrite: false,\n depthTest: false,\n uniforms: {\n uHeight: {\n value: item.height,\n },\n uColor: {\n value: new Color(item.color),\n },\n },\n vertexShader: `\n uniform float uHeight;\n varying float vOpacity;\n void main() {\n vOpacity = (position.y + uHeight/2.0) / uHeight;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\n }\n `,\n fragmentShader: `\n uniform vec3 uColor;\n varying float vOpacity;\n void main() {\n gl_FragColor = vec4(uColor,0.3+vOpacity/10.0*7.0);\n }\n `,\n })\n const cylinder = new Mesh(geometry, material)\n const group = new Group()\n\n group.visible = this.option?.visible ?? true\n cylinder.position.copy(new Vector3().fromArray([item.points[0], item.points[1] + item.height / 2, item.points[2]]))\n\n const interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n interactionManager.add(cylinder)\n\n cylinder.addEventListener('click', () => {\n if (this.gobal.style === SceneStyle.real)\n return\n\n if (group.visible === false)\n return\n\n this.gobal.cameraUtil.set({\n position: [item.points[0], item.points[1] + item.height / 2, item.points[2] + 100],\n target: [item.points[0], item.points[1] + item.height / 2, item.points[2]],\n }).then(() => {\n emitter.emit('peoplemanagement-camera-enter', item)\n const currentGroup = this.cylinderMesh.get(item.belongTo) as Group\n currentGroup.visible = false\n\n this.currentoperate = item.belongTo\n this.cameraAddListener()\n })\n })\n\n this.cylinderMesh.set(item.belongTo, group)\n group.add(cylinder)\n\n const font = createFontMesh(item.label, {\n position: new Vector3().fromArray([item.points[0], item.points[1] + item.height + 10, item.points[2]]),\n })\n\n font.then((mesh) => {\n mesh.geometry.center()\n\n group.add(mesh)\n\n use.useframe(() => {\n lookAtOnYAxis(mesh, globalObjectManage.camera.position)\n })\n this.scene.add(group)\n })\n })\n }\n\n private cameraListenerHandle = () => {\n const currentCameraPosition = this.gobal.control.object.position\n const box = this.gobal.areaBoundingBox.boundingBoxMap.get(this.currentoperate)\n const iscollision = collisionDetection(box, currentCameraPosition)\n\n if (!iscollision) {\n emitter.emit('peoplemanagement-camera-out', {\n belongTo: this.currentoperate,\n })\n\n this.cameraRemoveListener()\n }\n }\n\n private cameraAddListener() {\n this.gobal.control.addEventListener('change', this.cameraListenerHandle)\n }\n\n private cameraRemoveListener() {\n this.gobal.control.removeEventListener('change', this.cameraListenerHandle)\n }\n}\n\nexport default CylinderManage"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["BoxGeometry","Color","Group","Mesh","ShaderMaterial","Vector3","globalObjectManage","use","utils","createFontMesh","SceneStyle","regionMap","collisionDetection","MessageType","sendToMessage","EMessageStatus","lookAtOnYAxis","emitter","cylinderData","label","id","title","reform","belongTo","color","getHex","points","poi","position","height","reduction","crudeOil","catalyticCracking","hydrocrackingUnit","cokingUnit","administrative","CylinderManage","gobal","options","Map","currentCameraPosition","control","object","box","areaBoundingBox","boundingBoxMap","get","currentoperate","iscollision","emit","cameraRemoveListener","scene","option","forEach","item","geometry","material","transparent","depthWrite","depthTest","uniforms","uHeight","value","uColor","vertexShader","fragmentShader","cylinder","group","visible","copy","fromArray","interactionManager","storeManagement","add","addEventListener","style","real","cameraUtil","set","target","then","currentGroup","cylinderMesh","cameraAddListener","Event","Success","undefined","type","font","mesh","center","useframe","camera","cameraListenerHandle","removeEventListener"],"sources":["../../../src/factory/unit/cylinder.ts"],"sourcesContent":["import type { InteractionManager, Object3D, Scene } from '@anov/3d-core'\nimport { BoxGeometry, Color, Group, Mesh, ShaderMaterial, Vector3, globalObjectManage, use, utils } from '@anov/3d-core'\nimport createFontMesh from '../utils/fontMesh'\nimport type Factory3D from '../3d'\nimport { SceneStyle } from '../3d'\nimport regionMap from '../regionData'\nimport { collisionDetection } from '../utils/areaBoundingBox'\nimport { MessageType, sendToMessage } from '../../utils/messageFn'\nimport { EMessageStatus } from '../../messageStatus'\n\nimport { lookAtOnYAxis } from '../utils'\n\nconst { emitter } = utils\n\nconst cylinderData = [\n {\n label: '8人',\n id: '1',\n title: regionMap.reform.title,\n belongTo: regionMap.reform.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.reform.poi.position,\n height: 80,\n },\n {\n label: '7人',\n title: regionMap.reduction.title,\n id: '2',\n belongTo: regionMap.reduction.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.reduction.poi.position,\n height: 70,\n },\n {\n label: '4人',\n id: '3',\n title: regionMap.crudeOil.title,\n belongTo: regionMap.crudeOil.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.crudeOil.poi.position,\n height: 40,\n },\n {\n label: '10人',\n id: '4',\n title: regionMap.catalyticCracking.title,\n belongTo: regionMap.catalyticCracking.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.catalyticCracking.poi.position,\n height: 100,\n },\n {\n label: '3人',\n id: '5',\n title: regionMap.hydrocrackingUnit.title,\n belongTo: regionMap.hydrocrackingUnit.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.hydrocrackingUnit.poi.position,\n height: 30,\n },\n {\n label: '8人',\n id: '6',\n title: regionMap.cokingUnit.title,\n belongTo: regionMap.cokingUnit.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.cokingUnit.poi.position,\n height: 80,\n },\n {\n label: '20人',\n id: '7',\n title: regionMap.administrative.title,\n belongTo: regionMap.administrative.id,\n color: new Color('#FED602').getHex(),\n points: regionMap.administrative.poi.position,\n height: 150,\n },\n]\n\ntype CylinderManageOption = {\n visible?: boolean\n}\n\nclass CylinderManage {\n private scene: Scene\n readonly cylinderMesh: Map<string, Object3D> = new Map()\n private option: CylinderManageOption\n private gobal: Factory3D\n private currentoperate: string\n\n constructor(gobal: Factory3D, options?: CylinderManageOption) {\n this.scene = gobal.scene.scene\n this.gobal = gobal\n this.option = options || {}\n }\n\n generateCylinder() {\n cylinderData.forEach((item) => {\n const geometry = new BoxGeometry(10, item.height, 10)\n const material = new ShaderMaterial({\n transparent: true,\n depthWrite: false,\n depthTest: false,\n uniforms: {\n uHeight: {\n value: item.height,\n },\n uColor: {\n value: new Color(item.color),\n },\n },\n vertexShader: `\n uniform float uHeight;\n varying float vOpacity;\n void main() {\n vOpacity = (position.y + uHeight/2.0) / uHeight;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\n }\n `,\n fragmentShader: `\n uniform vec3 uColor;\n varying float vOpacity;\n void main() {\n gl_FragColor = vec4(uColor,0.3+vOpacity/10.0*7.0);\n }\n `,\n })\n const cylinder = new Mesh(geometry, material)\n const group = new Group()\n\n group.visible = this.option?.visible ?? true\n cylinder.position.copy(new Vector3().fromArray([item.points[0], item.points[1] + item.height / 2, item.points[2]]))\n\n const interactionManager = utils.storeManagement.get<InteractionManager>('interactionManager')\n interactionManager.add(cylinder)\n\n cylinder.addEventListener('click', () => {\n if (this.gobal.style === SceneStyle.real)\n return\n\n if (group.visible === false)\n return\n\n this.gobal.cameraUtil.set({\n position: [item.points[0], item.points[1] + item.height / 2, item.points[2] + 100],\n target: [item.points[0], item.points[1] + item.height / 2, item.points[2]],\n }).then(() => {\n emitter.emit('peoplemanagement-camera-enter', item)\n const currentGroup = this.cylinderMesh.get(item.belongTo) as Group\n currentGroup.visible = false\n\n this.currentoperate = item.belongTo\n this.cameraAddListener()\n\n sendToMessage(MessageType.Event, 'onClick', EMessageStatus.Success, undefined, {\n type: 'Bar',\n ...item,\n })\n })\n })\n\n this.cylinderMesh.set(item.belongTo, group)\n group.add(cylinder)\n\n const font = createFontMesh(item.label, {\n position: new Vector3().fromArray([item.points[0], item.points[1] + item.height + 10, item.points[2]]),\n })\n\n font.then((mesh) => {\n mesh.geometry.center()\n\n group.add(mesh)\n\n use.useframe(() => {\n lookAtOnYAxis(mesh, globalObjectManage.camera.position)\n })\n this.scene.add(group)\n })\n })\n }\n\n private cameraListenerHandle = () => {\n const currentCameraPosition = this.gobal.control.object.position\n const box = this.gobal.areaBoundingBox.boundingBoxMap.get(this.currentoperate)\n const iscollision = collisionDetection(box, currentCameraPosition)\n\n if (!iscollision) {\n emitter.emit('peoplemanagement-camera-out', {\n belongTo: this.currentoperate,\n })\n\n this.cameraRemoveListener()\n }\n }\n\n private cameraAddListener() {\n this.gobal.control.addEventListener('change', this.cameraListenerHandle)\n }\n\n private cameraRemoveListener() {\n this.gobal.control.removeEventListener('change', this.cameraListenerHandle)\n }\n}\n\nexport default CylinderManage"],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
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
|
+
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 _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
7
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
8
|
+
import { regionMap } from "../regionData";
|
|
9
|
+
var HandlerManage = /*#__PURE__*/function () {
|
|
10
|
+
function HandlerManage(camera) {
|
|
11
|
+
_classCallCheck(this, HandlerManage);
|
|
12
|
+
_defineProperty(this, "camera", void 0);
|
|
13
|
+
this.camera = camera;
|
|
14
|
+
}
|
|
15
|
+
_createClass(HandlerManage, [{
|
|
16
|
+
key: "clickPerson",
|
|
17
|
+
value: function clickPerson(params) {
|
|
18
|
+
var person = null;
|
|
19
|
+
var key;
|
|
20
|
+
Object.keys(regionMap).find(function (k) {
|
|
21
|
+
var _regionMap$key$people;
|
|
22
|
+
key = k;
|
|
23
|
+
person = (_regionMap$key$people = regionMap[key].people) === null || _regionMap$key$people === void 0 ? void 0 : _regionMap$key$people.find(function (p) {
|
|
24
|
+
return p.id === "".concat(params.id);
|
|
25
|
+
});
|
|
26
|
+
return person;
|
|
27
|
+
});
|
|
28
|
+
if (person) {
|
|
29
|
+
var _regionMap$key$poi, _regionMap$key$people2;
|
|
30
|
+
var position = (_regionMap$key$poi = regionMap[key].poi) === null || _regionMap$key$poi === void 0 ? void 0 : _regionMap$key$poi.position;
|
|
31
|
+
this.camera.set({
|
|
32
|
+
position: [position[0], position[1] + ((_regionMap$key$people2 = regionMap[key].people) === null || _regionMap$key$people2 === void 0 ? void 0 : _regionMap$key$people2.length) * 10, position[2] + 100],
|
|
33
|
+
target: position
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}]);
|
|
38
|
+
return HandlerManage;
|
|
39
|
+
}();
|
|
40
|
+
export default HandlerManage;
|
|
41
|
+
//# sourceMappingURL=handle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["regionMap","HandlerManage","camera","params","person","key","Object","keys","find","k","people","p","id","position","poi","set","length","target"],"sources":["../../../src/factory/unit/handle.ts"],"sourcesContent":["import { regionMap } from '../regionData'\nimport type Camera from '../../module/camera'\n\nclass HandlerManage {\n private camera: Camera\n constructor(camera: Camera) {\n this.camera = camera\n }\n\n clickPerson(params: any) {\n let person = null\n let key: string\n Object.keys(regionMap).find((k: string) => {\n key = k\n person = regionMap[key].people?.find(p => p.id === `${params.id}`)\n return person\n })\n\n if (person) {\n const position = regionMap[key].poi?.position\n this.camera.set({ position: [position[0], position[1] + regionMap[key].people?.length * 10, position[2] + 100], target: position })\n }\n }\n}\n\nexport default HandlerManage\n"],"mappings":";;;;;;;AAAA,SAASA,SAAS;AAAuB,IAGnCC,aAAa;EAEjB,uBAAYC,MAAc,EAAE;IAAA;IAAA;IAC1B,IAAI,CAACA,MAAM,GAAGA,MAAM;EACtB;EAAC;IAAA;IAAA,OAED,qBAAYC,MAAW,EAAE;MACvB,IAAIC,MAAM,GAAG,IAAI;MACjB,IAAIC,GAAW;MACfC,MAAM,CAACC,IAAI,CAACP,SAAS,CAAC,CAACQ,IAAI,CAAC,UAACC,CAAS,EAAK;QAAA;QACzCJ,GAAG,GAAGI,CAAC;QACPL,MAAM,4BAAGJ,SAAS,CAACK,GAAG,CAAC,CAACK,MAAM,0DAArB,sBAAuBF,IAAI,CAAC,UAAAG,CAAC;UAAA,OAAIA,CAAC,CAACC,EAAE,eAAQT,MAAM,CAACS,EAAE,CAAE;QAAA,EAAC;QAClE,OAAOR,MAAM;MACf,CAAC,CAAC;MAEF,IAAIA,MAAM,EAAE;QAAA;QACV,IAAMS,QAAQ,yBAAGb,SAAS,CAACK,GAAG,CAAC,CAACS,GAAG,uDAAlB,mBAAoBD,QAAQ;QAC7C,IAAI,CAACX,MAAM,CAACa,GAAG,CAAC;UAAEF,QAAQ,EAAE,CAACA,QAAQ,CAAC,CAAC,CAAC,EAAEA,QAAQ,CAAC,CAAC,CAAC,GAAG,2BAAAb,SAAS,CAACK,GAAG,CAAC,CAACK,MAAM,2DAArB,uBAAuBM,MAAM,IAAG,EAAE,EAAEH,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;UAAEI,MAAM,EAAEJ;QAAS,CAAC,CAAC;MACrI;IACF;EAAC;EAAA;AAAA;AAGH,eAAeZ,aAAa"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { BaseModule } from '../../utils/abstract';
|
|
2
|
+
import type Anov3D from '../../sdkEntry';
|
|
2
3
|
declare type vector3Array = [number, number, number];
|
|
3
|
-
declare class Camera {
|
|
4
|
+
declare class Camera implements BaseModule {
|
|
5
|
+
app: Anov3D;
|
|
4
6
|
private camera;
|
|
5
7
|
private controls;
|
|
6
8
|
private isTransitionPeriod;
|
|
7
|
-
|
|
9
|
+
private isTrigger;
|
|
10
|
+
constructor(app: Anov3D);
|
|
8
11
|
/**
|
|
9
12
|
* caclCurrentPos
|
|
10
13
|
* @param currentPos
|
|
@@ -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
|
|
@@ -10,13 +10,17 @@ import * as TWEEN from '@tweenjs/tween.js';
|
|
|
10
10
|
import { MessageType, sendToMessage } from "../../utils/messageFn";
|
|
11
11
|
import { EMessageStatus } from "../../messageStatus";
|
|
12
12
|
var Camera = /*#__PURE__*/function () {
|
|
13
|
-
function Camera(
|
|
13
|
+
function Camera(app) {
|
|
14
14
|
_classCallCheck(this, Camera);
|
|
15
|
+
_defineProperty(this, "app", void 0);
|
|
15
16
|
_defineProperty(this, "camera", void 0);
|
|
16
17
|
_defineProperty(this, "controls", void 0);
|
|
17
18
|
_defineProperty(this, "isTransitionPeriod", false);
|
|
18
|
-
this
|
|
19
|
-
this.
|
|
19
|
+
_defineProperty(this, "isTrigger", true);
|
|
20
|
+
this.app = app;
|
|
21
|
+
this.camera = app.sceneControl.camera;
|
|
22
|
+
this.controls = app.sceneControl.controls;
|
|
23
|
+
this.isTrigger = false;
|
|
20
24
|
this.handleChanged();
|
|
21
25
|
}
|
|
22
26
|
|
|
@@ -87,16 +91,18 @@ var Camera = /*#__PURE__*/function () {
|
|
|
87
91
|
key: "handleChanged",
|
|
88
92
|
value: function handleChanged() {
|
|
89
93
|
var _this = this;
|
|
90
|
-
this.
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
94
|
+
if (!this.isTrigger) {
|
|
95
|
+
this.controls.addEventListener('change', function () {
|
|
96
|
+
if (!_this.isTransitionPeriod) {
|
|
97
|
+
var lookat = _this.controls.target;
|
|
98
|
+
var position = _this.camera.position;
|
|
99
|
+
sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {
|
|
100
|
+
position: position.toArray(),
|
|
101
|
+
target: lookat.toArray()
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
100
106
|
}
|
|
101
107
|
|
|
102
108
|
/**
|
|
@@ -116,15 +122,18 @@ var Camera = /*#__PURE__*/function () {
|
|
|
116
122
|
return {
|
|
117
123
|
duration: (_ref = duration && duration * 1000) !== null && _ref !== void 0 ? _ref : 1000,
|
|
118
124
|
onUpdate: function onUpdate(_ref2) {
|
|
125
|
+
var _params$isTrigger;
|
|
119
126
|
var position = _ref2.position,
|
|
120
127
|
lookat = _ref2.lookat;
|
|
121
|
-
|
|
128
|
+
_this2.isTrigger = (_params$isTrigger = params.isTrigger) !== null && _params$isTrigger !== void 0 ? _params$isTrigger : true;
|
|
129
|
+
params.isTrigger && sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {
|
|
122
130
|
position: position.toArray(),
|
|
123
131
|
target: lookat.toArray()
|
|
124
132
|
});
|
|
125
133
|
},
|
|
126
134
|
onComplate: function onComplate() {
|
|
127
135
|
var _params$duration;
|
|
136
|
+
_this2.isTrigger = false;
|
|
128
137
|
res({
|
|
129
138
|
position: _this2.camera.position.toArray(),
|
|
130
139
|
target: _this2.controls.target.toArray(),
|
|
@@ -164,8 +173,10 @@ var Camera = /*#__PURE__*/function () {
|
|
|
164
173
|
_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, {
|
|
165
174
|
duration: (_ref3 = params.duration && params.duration * 1000) !== null && _ref3 !== void 0 ? _ref3 : 1000,
|
|
166
175
|
onUpdate: function onUpdate(_ref4) {
|
|
176
|
+
var _params$isTrigger2;
|
|
167
177
|
var position = _ref4.position,
|
|
168
178
|
lookat = _ref4.lookat;
|
|
179
|
+
_this3.isTrigger = (_params$isTrigger2 = params.isTrigger) !== null && _params$isTrigger2 !== void 0 ? _params$isTrigger2 : true;
|
|
169
180
|
params.isTrigger && sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {
|
|
170
181
|
position: position.toArray(),
|
|
171
182
|
target: lookat.toArray()
|
|
@@ -173,6 +184,7 @@ var Camera = /*#__PURE__*/function () {
|
|
|
173
184
|
},
|
|
174
185
|
onComplate: function onComplate() {
|
|
175
186
|
var _params$duration2;
|
|
187
|
+
_this3.isTrigger = false;
|
|
176
188
|
res({
|
|
177
189
|
position: _this3.camera.position.toArray(),
|
|
178
190
|
target: _this3.controls.target.toArray(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Box3","MathUtils","Vector3","TWEEN","MessageType","sendToMessage","EMessageStatus","Camera","camera","controls","handleChanged","currentPos","pitch","box","setFromPoints","map","item","center","getCenter","size","getSize","halfDiagonal","length","maxDistance","Math","tan","fov","PI","cameraToCenterDistance","directionVector","position","clone","sub","target","normalize","lastPosition","multiplyScalar","add","lastLookat","caclTargetByPitch","subVectors","upVector","localPitchAxis","crossVectors","applyAxisAngle","degToRad","distance","distanceTo","newTarget","prevTarget","prevPosition","lastTarget","addEventListener","isTransitionPeriod","lookat","Event","Success","undefined","toArray","params","Promise","res","duration","moveOptions","onUpdate","onComplate","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/module/camera/index.ts"],"sourcesContent":["import type { OrbitControls, PerspectiveCamera } from '@anov/3d-core'\nimport { Box3, MathUtils, Vector3 } from '@anov/3d-core'\nimport * as TWEEN from '@tweenjs/tween.js'\nimport { MessageType, sendToMessage } from '../../utils/messageFn'\nimport { EMessageStatus } from '../../messageStatus'\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.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 const lookat = this.controls.target\n const position = this.camera.position\n\n sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n position: position.toArray(),\n target: lookat.toArray(),\n })\n }\n })\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","Vector3","TWEEN","MessageType","sendToMessage","EMessageStatus","Camera","app","camera","sceneControl","controls","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","lookat","Event","Success","undefined","toArray","params","Promise","res","duration","moveOptions","onUpdate","onComplate","userInput","Array","isArray","caclCurrentPos","moveCameraTo","caclSingleCoordinate","fromArray","_","x","y","z","options","currentPoition","currentPositionInterpolation","copy","Tween","t","p","to","rotation","onStart","enabled","easing","Easing","Quadratic","InOut","rotationParent","currentPosition","lerpVectors","onComplete","setTimeout","start"],"sources":["../../../src/module/camera/index.ts"],"sourcesContent":["import type { OrbitControls, PerspectiveCamera } from '@anov/3d-core'\nimport { Box3, MathUtils, Vector3 } from '@anov/3d-core'\nimport * as TWEEN from '@tweenjs/tween.js'\nimport { MessageType, sendToMessage } from '../../utils/messageFn'\nimport type { BaseModule } from '../../utils/abstract'\nimport { EMessageStatus } from '../../messageStatus'\nimport type Anov3D from '../../sdkEntry'\n\ntype vector3Array = [number, number, number]\ninterface ChangeCameraPresetOptions {\n duration?: number\n onUpdate?: (params: { position: Vector3; lookat: Vector3 }) => void\n onStart?: () => void\n onComplate?: () => void\n}\n\nclass Camera implements BaseModule {\n app: Anov3D\n private camera: PerspectiveCamera\n private controls: OrbitControls\n private isTransitionPeriod = false\n private isTrigger = true\n\n constructor(app: Anov3D) {\n this.app = app\n this.camera = app.sceneControl.camera!\n this.controls = app.sceneControl.controls!\n this.isTrigger = false\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 if (!this.isTrigger) {\n this.controls.addEventListener('change', () => {\n if (!this.isTransitionPeriod) {\n const lookat = this.controls.target\n const position = this.camera.position\n\n sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n position: position.toArray(),\n target: lookat.toArray(),\n })\n }\n })\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 onUpdate: ({ position, lookat }) => {\n this.isTrigger = params.isTrigger ?? true\n params.isTrigger\n && sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n position: position.toArray(),\n target: lookat.toArray(),\n })\n },\n onComplate: () => {\n this.isTrigger = false\n 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 this.isTrigger = params.isTrigger ?? true\n params.isTrigger\n && sendToMessage(MessageType.Event, 'onCameraChanged', EMessageStatus.Success, undefined, {\n position: position.toArray(),\n target: lookat.toArray(),\n })\n },\n onComplate: () => {\n this.isTrigger = false\n 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":";;;;;;;AACA,SAASA,IAAI,EAAEC,SAAS,EAAEC,OAAO,QAAQ,eAAe;AACxD,OAAO,KAAKC,KAAK,MAAM,mBAAmB;AAC1C,SAASC,WAAW,EAAEC,aAAa;AAEnC,SAASC,cAAc;AAA6B,IAW9CC,MAAM;EAOV,gBAAYC,GAAW,EAAE;IAAA;IAAA;IAAA;IAAA;IAAA,4CAHI,KAAK;IAAA,mCACd,IAAI;IAGtB,IAAI,CAACA,GAAG,GAAGA,GAAG;IACd,IAAI,CAACC,MAAM,GAAGD,GAAG,CAACE,YAAY,CAACD,MAAO;IACtC,IAAI,CAACE,QAAQ,GAAGH,GAAG,CAACE,YAAY,CAACC,QAAS;IAC1C,IAAI,CAACC,SAAS,GAAG,KAAK;IACtB,IAAI,CAACC,aAAa,EAAE;EACtB;;EAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,wBAAuBC,UAA0B,EAAEC,KAAa,EAAE;MAChE,IAAMC,GAAG,GAAG,IAAIhB,IAAI,EAAE;MAEtBgB,GAAG,CAACC,aAAa,CAACH,UAAU,CAACI,GAAG,CAAC,UAAAC,IAAI;QAAA,OAAI,IAAIjB,OAAO,CAACiB,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,IAAInB,OAAO,EAAE,CAAC;MAC3C,IAAMoB,IAAI,GAAGN,GAAG,CAACO,OAAO,CAAC,IAAIrB,OAAO,EAAE,CAAC;MACvC,IAAMsB,YAAY,GAAGF,IAAI,CAACG,MAAM,EAAE,GAAG,GAAG;MAExC,IAAMC,WAAW,GAAGF,YAAY,GAAGG,IAAI,CAACC,GAAG,CAAC,IAAI,CAACnB,MAAM,CAACoB,GAAG,GAAG,CAAC,GAAGF,IAAI,CAACG,EAAE,GAAG,GAAG,CAAC;MAChF,IAAMC,sBAAsB,GAAGL,WAAW;MAC1C,IAAMM,eAAe,GAAI,IAAI,CAACvB,MAAM,CAACwB,QAAQ,CAACC,KAAK,EAAE,CAAEC,GAAG,CAAC,IAAI,CAACxB,QAAQ,CAACyB,MAAM,CAAC,CAACC,SAAS,EAAE,EAAC;;MAE7F,IAAMC,YAAY,GAAGN,eAAe,CAACO,cAAc,CAACR,sBAAsB,CAAC,CAACS,GAAG,CAACpB,MAAM,CAAC;MACvF,IAAMqB,UAAU,GAAG,IAAI,CAACC,iBAAiB,CAAC3B,KAAK,EAAEK,MAAM,EAAEkB,YAAY,CAAC;MAEtE,OAAO;QACLA,YAAY,EAAZA,YAAY;QACZG,UAAU,EAAVA;MACF,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,2BAA0B1B,KAAa,EAAEqB,MAAe,EAAEH,QAAiB,EAAE;MAC3E,IAAMD,eAAe,GAAG,IAAI9B,OAAO,EAAE,CAACyC,UAAU,CAACP,MAAM,EAAEH,QAAQ,CAAC;MAClE,IAAMW,QAAQ,GAAG,IAAI1C,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MACrC,IAAM2C,cAAc,GAAG,IAAI3C,OAAO,EAAE,CAAC4C,YAAY,CAACd,eAAe,EAAEY,QAAQ,CAAC,CAACP,SAAS,EAAE;MAExFL,eAAe,CAACe,cAAc,CAACF,cAAc,EAAE5C,SAAS,CAAC+C,QAAQ,CAACjC,KAAK,CAAC,CAAC;MAEzE,IAAMkC,QAAQ,GAAGhB,QAAQ,CAACiB,UAAU,CAACd,MAAM,CAAC;MAC5C,IAAMe,SAAS,GAAGlB,QAAQ,CAACC,KAAK,EAAE,CAACM,GAAG,CAACR,eAAe,CAACK,SAAS,EAAE,CAACE,cAAc,CAACU,QAAQ,CAAC,CAAC;MAE5F,OAAOE,SAAS;IAClB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA;IAAA,OAOA,8BAA6BC,UAAmB,EAAEC,YAAqB,EAAEC,UAAmB,EAAE;MAC5F,IAAMtB,eAAe,GAAGsB,UAAU,CAACpB,KAAK,EAAE,CAACC,GAAG,CAACiB,UAAU,CAAC,CAACf,SAAS,EAAE;MACtE,OAAOL,eAAe,CAACO,cAAc,CAACe,UAAU,CAACJ,UAAU,CAACE,UAAU,CAAC,CAAC,CAACZ,GAAG,CAACa,YAAY,CAAC;IAC5F;;IAEA;AACF;AACA;EAFE;IAAA;IAAA,OAGA,yBAAwB;MAAA;MACtB,IAAI,CAAC,IAAI,CAACzC,SAAS,EAAE;QACnB,IAAI,CAACD,QAAQ,CAAC4C,gBAAgB,CAAC,QAAQ,EAAE,YAAM;UAC7C,IAAI,CAAC,KAAI,CAACC,kBAAkB,EAAE;YAC5B,IAAMC,MAAM,GAAG,KAAI,CAAC9C,QAAQ,CAACyB,MAAM;YACnC,IAAMH,QAAQ,GAAG,KAAI,CAACxB,MAAM,CAACwB,QAAQ;YAErC5B,aAAa,CAACD,WAAW,CAACsD,KAAK,EAAE,iBAAiB,EAAEpD,cAAc,CAACqD,OAAO,EAAEC,SAAS,EAAE;cACrF3B,QAAQ,EAAEA,QAAQ,CAAC4B,OAAO,EAAE;cAC5BzB,MAAM,EAAEqB,MAAM,CAACI,OAAO;YACxB,CAAC,CAAC;UACJ;QACF,CAAC,CAAC;MACJ;IACF;;IAEA;AACF;AACA;AACA;EAHE;IAAA;IAAA,OAIA,eAAMC,MAAyG,EAAE;MAAA;MAC/G,OAAO,IAAIC,OAAO,CAAC,UAACC,GAAG,EAAK;QAC1B,IAAgB/B,QAAQ,GAAsB6B,MAAM,CAA5C1B,MAAM;UAAYrB,KAAK,GAAe+C,MAAM,CAA1B/C,KAAK;UAAEkD,QAAQ,GAAKH,MAAM,CAAnBG,QAAQ;QACzC,IAAMC,WAAW,GAAG,SAAdA,WAAW;UAAA;UAAA,OAAU;YACzBD,QAAQ,UAAGA,QAAQ,IAAIA,QAAQ,GAAG,IAAI,uCAAK,IAAI;YAC/CE,QAAQ,EAAE,yBAA0B;cAAA;cAAA,IAAvBlC,QAAQ,SAARA,QAAQ;gBAAEwB,MAAM,SAANA,MAAM;cAC3B,MAAI,CAAC7C,SAAS,wBAAGkD,MAAM,CAAClD,SAAS,iEAAI,IAAI;cACzCkD,MAAM,CAAClD,SAAS,IACXP,aAAa,CAACD,WAAW,CAACsD,KAAK,EAAE,iBAAiB,EAAEpD,cAAc,CAACqD,OAAO,EAAEC,SAAS,EAAE;gBACxF3B,QAAQ,EAAEA,QAAQ,CAAC4B,OAAO,EAAE;gBAC5BzB,MAAM,EAAEqB,MAAM,CAACI,OAAO;cACxB,CAAC,CAAC;YACN,CAAC;YACDO,UAAU,EAAE,sBAAM;cAAA;cAChB,MAAI,CAACxD,SAAS,GAAG,KAAK;cACtBoD,GAAG,CAAC;gBACF/B,QAAQ,EAAE,MAAI,CAACxB,MAAM,CAACwB,QAAQ,CAAC4B,OAAO,EAAE;gBACxCzB,MAAM,EAAE,MAAI,CAACzB,QAAQ,CAACyB,MAAM,CAACyB,OAAO,EAAE;gBACtCjD,SAAS,EAAE,IAAI;gBACfqD,QAAQ,sBAAEH,MAAM,CAACG,QAAQ,+DAAI,CAAC;gBAC9BI,SAAS,EAAE,IAAI;gBACftD,KAAK,EAAEA,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI;cAClB,CAAC,CAAC;YACJ;UACF,CAAC;QAAA,CAA8B;QAE/B,IAAIuD,KAAK,CAACC,OAAO,CAACtC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;UAC9B,IAAMnB,UAAU,GAAGmB,QAA0B;UAC7C,4BAAqC,MAAI,CAACuC,cAAc,CAAC1D,UAAU,EAAE,CAAC,CAAC;YAA/DwB,YAAY,yBAAZA,YAAY;YAAEG,UAAU,yBAAVA,UAAU;UAEhC,MAAI,CAACgC,YAAY,CACfnC,YAAY,EACZG,UAAU,EACV1B,KAAK,EACLmD,WAAW,EAAE,CACd;QACH,CAAC,MACI;UACH,IAAMpD,WAAU,GAAGmB,QAAwB;UAC3C,IAAMK,aAAY,GAAG,MAAI,CAACoC,oBAAoB,CAAC,MAAI,CAAC/D,QAAQ,CAACyB,MAAM,EAAE,MAAI,CAAC3B,MAAM,CAACwB,QAAQ,EAAE,IAAI/B,OAAO,EAAE,CAACyE,SAAS,CAAC7D,WAAU,CAAC,CAAC;UAC/H,IAAM2B,WAAU,GAAG,MAAI,CAACC,iBAAiB,CAAC,CAAC,EAAE,IAAIxC,OAAO,EAAE,CAACyE,SAAS,CAAC7D,WAAU,CAAC,EAAEwB,aAAY,CAAC;UAE/F,MAAI,CAACmC,YAAY,CACfnC,aAAY,EACZG,WAAU,EACV1B,KAAK,EACLmD,WAAW,EAAE,CACd;QACH;MACF,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;EAHE;IAAA;IAAA,OAIA,aAAIJ,MAAgG,EAAE;MAAA;MACpG,OAAO,IAAIC,OAAO,CAAE,UAACC,GAAG,EAAEY,CAAC,EAAK;QAAA;QAC9B,MAAI,CAACH,YAAY,CACf,IAAIvE,OAAO,CAAC4D,MAAM,CAAC7B,QAAQ,CAAC,CAAC,CAAC,EAAE6B,MAAM,CAAC7B,QAAQ,CAAC,CAAC,CAAC,EAAE6B,MAAM,CAAC7B,QAAQ,CAAC,CAAC,CAAC,CAAC,EACvE,IAAI/B,OAAO,CAAC4D,MAAM,CAAC1B,MAAM,CAAC,CAAC,CAAC,EAAE0B,MAAM,CAAC1B,MAAM,CAAC,CAAC,CAAC,EAAE0B,MAAM,CAAC1B,MAAM,CAAC,CAAC,CAAC,CAAC,EACjE,CAAC,EACD;UACE6B,QAAQ,WAAGH,MAAM,CAACG,QAAQ,IAAIH,MAAM,CAACG,QAAQ,GAAG,IAAI,yCAAK,IAAI;UAC7DE,QAAQ,EAAE,yBAA0B;YAAA;YAAA,IAAvBlC,QAAQ,SAARA,QAAQ;cAAEwB,MAAM,SAANA,MAAM;YAC3B,MAAI,CAAC7C,SAAS,yBAAGkD,MAAM,CAAClD,SAAS,mEAAI,IAAI;YACzCkD,MAAM,CAAClD,SAAS,IACXP,aAAa,CAACD,WAAW,CAACsD,KAAK,EAAE,iBAAiB,EAAEpD,cAAc,CAACqD,OAAO,EAAEC,SAAS,EAAE;cACxF3B,QAAQ,EAAEA,QAAQ,CAAC4B,OAAO,EAAE;cAC5BzB,MAAM,EAAEqB,MAAM,CAACI,OAAO;YACxB,CAAC,CAAC;UACN,CAAC;UACDO,UAAU,EAAE,sBAAM;YAAA;YAChB,MAAI,CAACxD,SAAS,GAAG,KAAK;YACtBoD,GAAG,CAAC;cACF/B,QAAQ,EAAE,MAAI,CAACxB,MAAM,CAACwB,QAAQ,CAAC4B,OAAO,EAAE;cACxCzB,MAAM,EAAE,MAAI,CAACzB,QAAQ,CAACyB,MAAM,CAACyB,OAAO,EAAE;cACtCjD,SAAS,EAAE,IAAI;cACfqD,QAAQ,uBAAEH,MAAM,CAACG,QAAQ,iEAAI,CAAC;cAC9BI,SAAS,EAAE;YACb,CAAC,CAAC;UACJ;QACF,CAAC,CAAC;MACN,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;EAHE;IAAA;IAAA,OAIA,eAAM;MACJ,OAAO;QACLpC,QAAQ,EAAE,CAAC,IAAI,CAACxB,MAAM,CAACwB,QAAQ,CAAC4C,CAAC,EAAE,IAAI,CAACpE,MAAM,CAACwB,QAAQ,CAAC6C,CAAC,EAAE,IAAI,CAACrE,MAAM,CAACwB,QAAQ,CAAC8C,CAAC,CAAC;QAClF3C,MAAM,EAAE,CAAC,IAAI,CAACzB,QAAQ,CAACyB,MAAM,CAACyC,CAAC,EAAE,IAAI,CAAClE,QAAQ,CAACyB,MAAM,CAAC0C,CAAC,EAAE,IAAI,CAACnE,QAAQ,CAACyB,MAAM,CAAC2C,CAAC;MACjF,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA;IAAA,OAMA,sBAAqB9C,QAAiB,EAAEG,MAAe,EAAkD;MAAA;MAAA,IAAhDrB,KAAK,uEAAG,CAAC;MAAA,IAAEiE,OAAmC;MACrG,IAAMC,cAAc,GAAG,IAAI,CAACxE,MAAM,CAACwB,QAAQ,CAACC,KAAK,EAAE;MACnD,IAAMgD,4BAA4B,GAAG,IAAIhF,OAAO,EAAE;MAElD,IAAI,CAAA8E,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEf,QAAQ,MAAK,CAAC,EAAE;QAC3B,IAAI,CAACxD,MAAM,CAACwB,QAAQ,CAACkD,IAAI,CAAClD,QAAQ,CAAC;QACnC,IAAI,CAACtB,QAAQ,CAACyB,MAAM,CAAC+C,IAAI,CAAC/C,MAAM,CAAC;QAEjC,CAAA4C,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEZ,UAAU,KAAIY,OAAO,CAACZ,UAAU,EAAE;QAC3C;MACF;MAEA,IAAIjE,KAAK,CAACiF,KAAK,CAAC;QAAEC,CAAC,EAAE,CAAC;QAAE5B,MAAM,EAAE,IAAI,CAAC9C,QAAQ,CAACyB,MAAM,CAACF,KAAK,EAAE;QAAEoD,CAAC,EAAE;MAAE,CAAC,CAAC,CAACC,EAAE,CAAC;QAAEF,CAAC,EAAE,CAAC;QAAE5B,MAAM,EAAErB,MAAM;QAAEkD,CAAC,EAAG,CAAC,IAAI,CAAC7E,MAAM,CAAC+E,QAAQ,CAACX,CAAC,IAAI9D,KAAK,GAAGd,SAAS,CAAC+C,QAAQ,CAAC,CAACjC,KAAK,CAAC,GAAG,CAAC;MAAG,CAAC,EAAE,CAAAiE,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEf,QAAQ,KAAI,IAAI,CAAC,CACnMwB,OAAO,CAAC,YAAM;QACb,CAAAT,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAES,OAAO,KAAIT,OAAO,CAACS,OAAO,EAAE;QACrC,MAAI,CAAC9E,QAAQ,CAAC+E,OAAO,GAAG,KAAK;QAC7B,MAAI,CAAClC,kBAAkB,GAAG,IAAI;MAChC,CAAC,CAAC,CACDmC,MAAM,CAACxF,KAAK,CAACyF,MAAM,CAACC,SAAS,CAACC,KAAK,CAAC,CACpC3B,QAAQ,CAAC,iBAAsB;QAAA,IAAnBkB,CAAC,SAADA,CAAC;UAAE5B,MAAM,SAANA,MAAM;UAAE6B,CAAC,SAADA,CAAC;QACvB,MAAI,CAAC3E,QAAQ,CAACyB,MAAM,CAAC+C,IAAI,CAAC1B,MAAM,CAAC;QAEjC,IAAI1C,KAAK;UACT;UACE,MAAI,CAACN,MAAM,CAACsF,cAAc,CAAClB,CAAC,GAAGS,CAAC;QAElC,IAAMU,eAAe,GAAGd,4BAA4B,CAACe,WAAW,CAAChB,cAAc,EAAEhD,QAAQ,EAAEoD,CAAC,CAAC;QAC7F,MAAI,CAAC5E,MAAM,CAACwB,QAAQ,CAACkD,IAAI,CAACa,eAAe,CAAC;QAC1C,CAAAhB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEb,QAAQ,KAAIa,OAAO,CAACb,QAAQ,CAAC;UAAElC,QAAQ,EAAE+D,eAAe;UAAEvC,MAAM,EAANA;QAAO,CAAC,CAAC;MAC9E,CAAC,CAAC,CACDyC,UAAU,CAAC,YAAM;QAChB,CAAAlB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEZ,UAAU,KAAIY,OAAO,CAACZ,UAAU,EAAE;QAC3C,MAAI,CAACzD,QAAQ,CAAC+E,OAAO,GAAG,IAAI;QAE5BS,UAAU,CAAC,YAAM;UACf,MAAI,CAAC3C,kBAAkB,GAAG,KAAK;QACjC,CAAC,CAAC;MACJ,CAAC,CAAC,CACD4C,KAAK,EAAE;IACZ;EAAC;EAAA;AAAA;AAGH,eAAe7F,MAAM"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type { Vector3 } from '@anov/3d-core';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
declare class Environment {
|
|
2
|
+
import type { BaseModule } from '../../utils/abstract';
|
|
3
|
+
import type Anov3D from '../../sdkEntry';
|
|
4
|
+
declare class Environment implements BaseModule {
|
|
5
|
+
app: Anov3D;
|
|
7
6
|
private opts?;
|
|
8
7
|
private setDate;
|
|
9
8
|
private snow;
|
|
@@ -13,7 +12,7 @@ declare class Environment {
|
|
|
13
12
|
private renderer;
|
|
14
13
|
private changeSceneEnvironment;
|
|
15
14
|
sunPosition: Vector3;
|
|
16
|
-
constructor(
|
|
15
|
+
constructor(app: Anov3D);
|
|
17
16
|
private initConfigSet;
|
|
18
17
|
private setWeatherStrategy;
|
|
19
18
|
/**
|
|
@@ -15,9 +15,11 @@ import { use } from '@anov/3d-core';
|
|
|
15
15
|
import { createRain, createSkyCloud, createSnow } from '@anov/3d-ability';
|
|
16
16
|
import createTimeSkySystem from "./time";
|
|
17
17
|
var Environment = /*#__PURE__*/function () {
|
|
18
|
-
function Environment(
|
|
19
|
-
var _this = this
|
|
18
|
+
function Environment(app) {
|
|
19
|
+
var _this = this,
|
|
20
|
+
_app$opts$environment;
|
|
20
21
|
_classCallCheck(this, Environment);
|
|
22
|
+
_defineProperty(this, "app", void 0);
|
|
21
23
|
_defineProperty(this, "opts", void 0);
|
|
22
24
|
_defineProperty(this, "setDate", void 0);
|
|
23
25
|
_defineProperty(this, "snow", null);
|
|
@@ -63,7 +65,8 @@ var Environment = /*#__PURE__*/function () {
|
|
|
63
65
|
}
|
|
64
66
|
}
|
|
65
67
|
});
|
|
66
|
-
this.
|
|
68
|
+
this.app = app;
|
|
69
|
+
this.changeSceneEnvironment = app.changeSceneEnvironment;
|
|
67
70
|
var _createTimeSkySystem = createTimeSkySystem(new Date(), 40, 116, 100),
|
|
68
71
|
_createTimeSkySystem2 = _slicedToArray(_createTimeSkySystem, 3),
|
|
69
72
|
setDate = _createTimeSkySystem2[0],
|
|
@@ -73,7 +76,7 @@ var Environment = /*#__PURE__*/function () {
|
|
|
73
76
|
this.sunPosition = sun.position;
|
|
74
77
|
this.setDate = setDate;
|
|
75
78
|
this.sky = sky;
|
|
76
|
-
this.opts = opts;
|
|
79
|
+
this.opts = (_app$opts$environment = app.opts.environment) !== null && _app$opts$environment !== void 0 ? _app$opts$environment : {};
|
|
77
80
|
this.initConfigSet();
|
|
78
81
|
}
|
|
79
82
|
_createClass(Environment, [{
|
|
@@ -82,6 +85,7 @@ var Environment = /*#__PURE__*/function () {
|
|
|
82
85
|
var _ref = this.opts,
|
|
83
86
|
weather = _ref.weather,
|
|
84
87
|
time = _ref.time;
|
|
88
|
+
if (!weather) return;
|
|
85
89
|
this.setWeather({
|
|
86
90
|
weatherType: weather !== null && weather !== void 0 ? weather : 'Snow',
|
|
87
91
|
duration: 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["use","createRain","createSkyCloud","createSnow","createTimeSkySystem","Environment","
|
|
1
|
+
{"version":3,"names":["use","createRain","createSkyCloud","createSnow","createTimeSkySystem","Environment","app","Snow","snow","x","y","z","renderer","toneMappingExposure","Rain","rain","Cloudy","cloudReturn","Clear_Skies","_","clear","changeSceneEnvironment","Date","setDate","sun","sky","useScene","sunPosition","position","opts","environment","initConfigSet","weather","time","setWeather","weatherType","duration","setTime","params","undefined","Error","date","setHours","getTime","Math","floor","newTime","setWeatherStrategy"],"sources":["../../../src/module/environment/index.ts"],"sourcesContent":["import type { Vector3, WebGLRenderer, lib } from '@anov/3d-core'\nimport { use } from '@anov/3d-core'\nimport { createRain, createSkyCloud, createSnow } from '@anov/3d-ability'\nimport type { BaseModule } from '../../utils/abstract'\nimport type Anov3D from '../../sdkEntry'\nimport createTimeSkySystem from './time'\n\ntype EnvironmentOptions = {\n weather?: string\n time?: number\n}\n\nclass Environment implements BaseModule {\n app: Anov3D\n private opts?: EnvironmentOptions\n private setDate: (currentDate?: Date | undefined) => Vector3\n private snow: any = null\n private rain: any = null\n private cloudReturn: ReturnType<typeof createSkyCloud> | null = null\n private sky: lib.Sky\n private renderer: WebGLRenderer\n private changeSceneEnvironment: (openFlag?: boolean) => void\n sunPosition: Vector3\n\n constructor(app: Anov3D) {\n this.app = app\n this.changeSceneEnvironment = app.changeSceneEnvironment\n const [setDate, sun, sky] = createTimeSkySystem(new Date(), 40, 116, 100)\n this.renderer = use.useScene().renderer!\n this.sunPosition = sun.position\n this.setDate = setDate as any\n this.sky = sky\n this.opts = app.opts.environment ?? {}\n this.initConfigSet()\n }\n\n private initConfigSet() {\n const { weather, time } = this.opts as Required<EnvironmentOptions>\n\n if (!weather)\n return\n this.setWeather({ weatherType: weather ?? 'Snow', duration: 0 })\n this.setTime({ time: time ?? 1700, duration: 0 })\n }\n\n private setWeatherStrategy = {\n Snow: () => {\n !this.snow && (this.snow = createSnow(15, 10000, { x: 0, y: 3, z: 0 }, 0.5, 50000))\n this.snow[0]()\n this.renderer.toneMappingExposure = 0.3\n },\n Rain: () => {\n !this.rain && (this.rain = createRain(4, 10000, { x: 0, y: 10, z: 0 }, 0.8, 100000))\n this.rain[0]()\n this.renderer.toneMappingExposure = 0.3\n },\n Cloudy: () => {\n !this.cloudReturn && (this.cloudReturn = createSkyCloud())\n },\n Clear_Skies: () => {\n this.snow?.[1]()\n this.rain?.[1]()\n this.renderer.toneMappingExposure = 0.6\n\n if (this.cloudReturn) {\n const [_, clear] = this.cloudReturn\n clear()\n this.cloudReturn = null\n }\n },\n }\n\n /**\n * setTime\n * @param newTime\n * @param changeTime\n */\n setTime(params: { time: number; duration?: number }) {\n if (params.time === undefined || (params.time > 2400 && params.time < 0))\n throw new Error('time must be between 0 and 2400')\n\n const date = new Date()\n date.setHours(0, 0, 0, 0)\n date.setTime(date.getTime() + Math.floor(86400000 * params.time / 2400))\n this.setDate(date)\n\n if (this.sunPosition.y <= 0)\n this.changeSceneEnvironment(false)\n\n else\n this.changeSceneEnvironment(true)\n\n return {\n newTime: params.time,\n }\n }\n\n /**\n * setWeather\n * @param type\n * @param changeTime\n */\n setWeather(params: { weatherType: string; duration?: number }) {\n // @ts-ignore\n this.setWeatherStrategy[params.weatherType]()\n\n return {\n weatherType: params.weatherType,\n }\n }\n}\n\nexport default Environment"],"mappings":"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"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import type { GrowOption } from '@anov/3d-ability';
|
|
2
|
-
import type Factory3D from '../../factory/3d';
|
|
3
2
|
export declare class Scene {
|
|
4
3
|
private grow;
|
|
5
4
|
private opt;
|
|
6
|
-
|
|
7
|
-
constructor(factory: Factory3D);
|
|
5
|
+
constructor();
|
|
8
6
|
growInit(opt?: GrowOption): Promise<unknown>;
|
|
9
7
|
growIn(): Promise<unknown>;
|
|
10
8
|
growOut(): Promise<unknown>;
|
|
@@ -8,13 +8,12 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
|
|
|
8
8
|
import { Grow } from '@anov/3d-ability';
|
|
9
9
|
import { MessageType, sendToMessage } from "../../utils/messageFn";
|
|
10
10
|
import { EMessageStatus } from "../../messageStatus";
|
|
11
|
+
import factoryGlobalObject from "../../factory/globalControl";
|
|
11
12
|
export var Scene = /*#__PURE__*/function () {
|
|
12
|
-
function Scene(
|
|
13
|
+
function Scene() {
|
|
13
14
|
_classCallCheck(this, Scene);
|
|
14
15
|
_defineProperty(this, "grow", void 0);
|
|
15
16
|
_defineProperty(this, "opt", void 0);
|
|
16
|
-
_defineProperty(this, "factory", void 0);
|
|
17
|
-
this.factory = factory;
|
|
18
17
|
this.grow = null;
|
|
19
18
|
this.opt = {};
|
|
20
19
|
}
|
|
@@ -99,7 +98,7 @@ export var Scene = /*#__PURE__*/function () {
|
|
|
99
98
|
key: "toPage",
|
|
100
99
|
value: function toPage(params) {
|
|
101
100
|
console.log('params:', params);
|
|
102
|
-
|
|
101
|
+
factoryGlobalObject.factory3D.toggleTag(params.name);
|
|
103
102
|
}
|
|
104
103
|
}]);
|
|
105
104
|
return Scene;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Grow","MessageType","sendToMessage","EMessageStatus","
|
|
1
|
+
{"version":3,"names":["Grow","MessageType","sendToMessage","EMessageStatus","factoryGlobalObject","Scene","grow","opt","Promise","res","Object","assign","onGrowInitCompleted","console","log","Event","Success","onGrowInStart","onGrowInCompleted","onGrowOutStart","onGrowOutCompleted","success","in","message","out","params","factory3D","toggleTag","name"],"sources":["../../../src/module/scene/index.ts"],"sourcesContent":["import type { Vector3 } from '@anov/3d-core'\nimport type { GrowOption } from '@anov/3d-ability'\nimport { EEaseType, ESceneGrowType, Grow } from '@anov/3d-ability'\nimport { MessageType, sendToMessage } from '../../utils/messageFn'\nimport { EMessageStatus } from '../../messageStatus'\nimport factoryGlobalObject from '../../factory/globalControl'\n\nexport class Scene {\n private grow: Grow\n private opt: GrowOption\n\n constructor() {\n this.grow = null\n this.opt = {}\n }\n\n // [API:场景进出场初始化]\n growInit(opt?: GrowOption) {\n return new Promise ((res) => {\n Object.assign(this.opt, opt || {},\n {\n onGrowInitCompleted: () => {\n console.log('------:onGrowInitCompleted')\n sendToMessage(MessageType.Event, 'onGrowInitCompleted', EMessageStatus.Success)\n },\n onGrowInStart: () => {\n console.log('------:onGrowInStart')\n\n // opt.onGrowInStart && opt.onGrowInStart()\n sendToMessage(MessageType.Event, 'onGrowInStart', EMessageStatus.Success)\n },\n onGrowInCompleted: () => {\n console.log('------:onGrowInCompleted')\n\n // opt.onGrowInCompleted && opt.onGrowInCompleted()\n sendToMessage(MessageType.Event, 'onGrowInCompleted', EMessageStatus.Success)\n },\n onGrowOutStart: () => {\n // opt.onGrowOutStart && opt.onGrowOutStart()\n console.log('------:onGrowOutStart')\n sendToMessage(MessageType.Event, 'onGrowOutStart', EMessageStatus.Success)\n },\n onGrowOutCompleted: () => {\n // opt.onGrowOutCompleted && opt.onGrowOutCompleted()\n console.log('------:onGrowOutCompleted')\n sendToMessage(MessageType.Event, 'onGrowOutCompleted', EMessageStatus.Success)\n },\n })\n this.grow = new Grow(this.opt)\n res({ success: true })\n })\n }\n\n // [API:场景进出场动画]\n growIn() {\n return new Promise ((res) => {\n // 未初始化,不处理\n if (this.grow)\n this.grow.in(() => { res({ success: true }) })\n else res({ message: ' not scene grow init' })\n })\n }\n\n // [API:场景进出场动画]\n growOut() {\n return new Promise ((res) => {\n // 未初始化,不处理\n if (this.grow)\n this.grow.out(() => { res({ success: true }) })\n else res({ message: ' not scene grow init' })\n })\n }\n\n // temporary solution by lM\n toPage(params: any) {\n console.log('params:', params)\n factoryGlobalObject.factory3D.toggleTag(params.name)\n }\n}\n"],"mappings":"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"}
|
package/dist/sdkEntry.d.ts
CHANGED
|
@@ -1,36 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { Poi } from '@anov/3d-ability';
|
|
3
|
-
import { HeatMap } from '@anov/3d-ability';
|
|
4
|
-
import type Environment from './module/environment';
|
|
5
|
-
import EventBus from './module/eventBus';
|
|
6
|
-
import Camera from './module/camera';
|
|
7
|
-
import { EWeatherType } from './module/environment/weather/type';
|
|
8
|
-
import type { InitOptions } from './applicationApi';
|
|
9
|
-
import { Scene } from './module/scene';
|
|
10
|
-
import Model from './module/model';
|
|
1
|
+
import Anov3DCore from './anov3d';
|
|
11
2
|
export declare type Override<P, S> = Omit<P, keyof S> & S;
|
|
12
|
-
declare
|
|
13
|
-
container: HTMLElement;
|
|
14
|
-
size?: {
|
|
15
|
-
width: number;
|
|
16
|
-
height: number;
|
|
17
|
-
};
|
|
18
|
-
camera?: InitOptions['camera'];
|
|
19
|
-
environment?: InitOptions['environment'];
|
|
20
|
-
model?: InitOptions['model'];
|
|
21
|
-
};
|
|
22
|
-
declare class Anov3D {
|
|
23
|
-
private opts;
|
|
24
|
-
sceneControl: SceneControl;
|
|
25
|
-
environment: Environment;
|
|
26
|
-
eventBus: EventBus;
|
|
27
|
-
EWeatherType: typeof EWeatherType;
|
|
28
|
-
poi: Poi;
|
|
29
|
-
heatMap: HeatMap;
|
|
30
|
-
camera: Camera;
|
|
31
|
-
scene: Scene;
|
|
32
|
-
model: Model;
|
|
33
|
-
constructor(opts: Anov3DOptions);
|
|
34
|
-
changeSceneEnvironment(openFlag?: boolean): void;
|
|
3
|
+
declare class App extends Anov3DCore {
|
|
35
4
|
}
|
|
36
|
-
export default
|
|
5
|
+
export default App;
|