@anov/3d-ability 0.0.167 → 0.0.168
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/Animation/motion/index.d.ts +2 -3
- package/dist/business/Animation/motion/index.js +1 -6
- package/dist/business/Animation/motion/index.js.map +1 -1
- package/dist/business/Area/Fence/FenceBase.d.ts +2 -2
- package/dist/business/Area/Fence/FenceBase.js +1 -1
- package/dist/business/Area/Fence/FenceBase.js.map +1 -1
- package/dist/business/Area/Fence/fence_base_01.js +1 -1
- package/dist/business/Area/Fence/fence_base_01.js.map +1 -1
- package/dist/business/Area/Fence/fence_feeting_01.js +1 -1
- package/dist/business/Area/Fence/fence_feeting_01.js.map +1 -1
- package/dist/business/Area/Fence/fence_roll_01.js +1 -1
- package/dist/business/Area/Fence/fence_roll_01.js.map +1 -1
- package/dist/business/Area/FillArea/FillAreaBase.d.ts +2 -2
- package/dist/business/Area/FillArea/FillAreaBase.js +1 -1
- package/dist/business/Area/FillArea/FillAreaBase.js.map +1 -1
- package/dist/business/Area/index.d.ts +1 -2
- package/dist/business/Area/index.js +2 -2
- package/dist/business/Area/index.js.map +1 -1
- package/dist/business/Base/ObjectLayer.d.ts +2 -4
- package/dist/business/Base/ObjectLayer.js +11 -7
- package/dist/business/Base/ObjectLayer.js.map +1 -1
- package/dist/business/Batch/index.d.ts +1 -1
- package/dist/business/Batch/index.js +2 -2
- package/dist/business/Batch/index.js.map +1 -1
- package/dist/business/Box/index.d.ts +1 -1
- package/dist/business/Box/index.js +2 -2
- package/dist/business/Box/index.js.map +1 -1
- package/dist/business/Box/interface.js.map +1 -1
- package/dist/business/Box/types.js.map +1 -1
- package/dist/business/Cylinder/index.d.ts +1 -1
- package/dist/business/Cylinder/index.js +2 -2
- package/dist/business/Cylinder/index.js.map +1 -1
- package/dist/business/Cylinder/interface.d.ts +1 -1
- package/dist/business/Cylinder/interface.js.map +1 -1
- package/dist/business/Cylinder/types.js.map +1 -1
- package/dist/business/Flyline/index.d.ts +2 -2
- package/dist/business/Flyline/index.js +8 -8
- package/dist/business/Flyline/index.js.map +1 -1
- package/dist/business/Flyline/line/ArcLine.d.ts +1 -1
- package/dist/business/Flyline/line/ArcLine.js +3 -3
- package/dist/business/Flyline/line/ArcLine.js.map +1 -1
- package/dist/business/HeatMap/HeatMap.d.ts +59 -3
- package/dist/business/HeatMap/HeatMap.js +95 -7
- package/dist/business/HeatMap/HeatMap.js.map +1 -1
- package/dist/business/InfoPanel/index.d.ts +4 -3
- package/dist/business/InfoPanel/index.js +19 -13
- package/dist/business/InfoPanel/index.js.map +1 -1
- package/dist/business/InfoPanel/type.js.map +1 -1
- package/dist/business/Line/index.d.ts +3 -3
- package/dist/business/Line/index.js +7 -8
- package/dist/business/Line/index.js.map +1 -1
- package/dist/business/Line/interface.d.ts +4 -4
- package/dist/business/Line/interface.js.map +1 -1
- package/dist/business/Line/types.js.map +1 -1
- package/dist/business/Mark/index.d.ts +1 -2
- package/dist/business/Mark/index.js +3 -3
- package/dist/business/Mark/index.js.map +1 -1
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.d.ts +3 -5
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js +10 -14
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js.map +1 -1
- package/dist/business/MaterialSwitch/index.js.map +1 -1
- package/dist/business/Plane/index.d.ts +2 -3
- package/dist/business/Plane/index.js +2 -2
- package/dist/business/Plane/index.js.map +1 -1
- package/dist/business/Plane/interface.d.ts +5 -5
- package/dist/business/Plane/interface.js.map +1 -1
- package/dist/business/Plane/types.js.map +1 -1
- package/dist/business/Poi/index.d.ts +3 -2
- package/dist/business/Poi/index.js +54 -25
- package/dist/business/Poi/index.js.map +1 -1
- package/dist/business/Poi/link/Cylinder.d.ts +1 -2
- package/dist/business/Poi/link/Cylinder.js +3 -3
- package/dist/business/Poi/link/Cylinder.js.map +1 -1
- package/dist/business/Poi/link/Pyramid.d.ts +1 -2
- package/dist/business/Poi/link/Pyramid.js +2 -2
- package/dist/business/Poi/link/Pyramid.js.map +1 -1
- package/dist/business/Poi/link/index.d.ts +2 -2
- package/dist/business/Poi/link/index.js +2 -2
- package/dist/business/Poi/link/index.js.map +1 -1
- package/dist/business/Poi/panel/index.d.ts +3 -3
- package/dist/business/Poi/panel/index.js +6 -7
- package/dist/business/Poi/panel/index.js.map +1 -1
- package/dist/business/Poi/panel/interfaces.js.map +1 -1
- package/dist/business/Poi/panel/utils.d.ts +1 -1
- package/dist/business/Poi/panel/utils.js +3 -3
- package/dist/business/Poi/panel/utils.js.map +1 -1
- package/dist/business/Poi/particle/DoubleCircle.d.ts +1 -2
- package/dist/business/Poi/particle/DoubleCircle.js +2 -3
- package/dist/business/Poi/particle/DoubleCircle.js.map +1 -1
- package/dist/business/Poi/particle/DynamicCircle.d.ts +1 -2
- package/dist/business/Poi/particle/DynamicCircle.js +2 -3
- package/dist/business/Poi/particle/DynamicCircle.js.map +1 -1
- package/dist/business/Poi/particle/SingleCircle.d.ts +1 -2
- package/dist/business/Poi/particle/SingleCircle.js +2 -3
- package/dist/business/Poi/particle/SingleCircle.js.map +1 -1
- package/dist/business/Poi/particle/index.d.ts +2 -2
- package/dist/business/Poi/particle/index.js +2 -2
- package/dist/business/Poi/particle/index.js.map +1 -1
- package/dist/business/Poi/title/Border.d.ts +1 -2
- package/dist/business/Poi/title/Border.js +2 -2
- package/dist/business/Poi/title/Border.js.map +1 -1
- package/dist/business/Poi/title/Ellipse.d.ts +1 -2
- package/dist/business/Poi/title/Ellipse.js +2 -2
- package/dist/business/Poi/title/Ellipse.js.map +1 -1
- package/dist/business/Poi/title/index.d.ts +1 -2
- package/dist/business/Poi/title/index.js +2 -2
- package/dist/business/Poi/title/index.js.map +1 -1
- package/dist/business/Sphere/index.d.ts +2 -2
- package/dist/business/Sphere/index.js +2 -2
- package/dist/business/Sphere/index.js.map +1 -1
- package/dist/business/Sphere/interface.js.map +1 -1
- package/dist/business/Sphere/types.js.map +1 -1
- package/dist/business/Spline/index.d.ts +1 -2
- package/dist/business/Spline/index.js +28 -14
- package/dist/business/Spline/index.js.map +1 -1
- package/dist/business/SplitBuilding/index.d.ts +2 -2
- package/dist/business/SplitBuilding/index.js +2 -2
- package/dist/business/SplitBuilding/index.js.map +1 -1
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.d.ts +2 -2
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js +5 -6
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js.map +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.d.ts +2 -2
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js +3 -3
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js.map +1 -1
- package/dist/business/TrafficComponents/base.d.ts +4 -4
- package/dist/business/TrafficComponents/base.js +6 -6
- package/dist/business/TrafficComponents/base.js.map +1 -1
- package/dist/business/TrafficComponents/index.d.ts +2 -4
- package/dist/business/TrafficComponents/index.js +2 -2
- package/dist/business/TrafficComponents/index.js.map +1 -1
- package/dist/business/Utils/defineProps.js +3 -3
- package/dist/business/Utils/defineProps.js.map +1 -1
- package/dist/business/VideoPanel/index.d.ts +4 -4
- package/dist/business/VideoPanel/index.js +13 -11
- package/dist/business/VideoPanel/index.js.map +1 -1
- package/dist/business/VideoPanel/type.d.ts +8 -8
- package/dist/business/VideoPanel/type.js.map +1 -1
- package/dist/business/Water/index.d.ts +1 -3
- package/dist/business/Water/index.js +5 -5
- package/dist/business/Water/index.js.map +1 -1
- package/dist/business/index.d.ts +18 -21
- package/dist/business/index.js +18 -18
- package/dist/business/index.js.map +1 -1
- package/dist/core/Camera/PerspectiveCamera/CameraExpand.d.ts +1 -1
- package/dist/core/Camera/PerspectiveCamera/CameraExpand.js +4 -4
- package/dist/core/Camera/PerspectiveCamera/CameraExpand.js.map +1 -1
- package/dist/core/Camera/index.d.ts +1 -2
- package/dist/core/Camera/index.js +1 -1
- package/dist/core/Camera/index.js.map +1 -1
- package/dist/core/Controls/FirstViewControl/index.d.ts +2 -3
- package/dist/core/Controls/FirstViewControl/index.js +2 -4
- package/dist/core/Controls/FirstViewControl/index.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/index.d.ts +2 -3
- package/dist/core/Controls/ThirdViewControl/index.js +3 -6
- package/dist/core/Controls/ThirdViewControl/index.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player/camera.d.ts +2 -4
- package/dist/core/Controls/ThirdViewControl/player/camera.js +2 -5
- package/dist/core/Controls/ThirdViewControl/player/camera.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player.d.ts +2 -4
- package/dist/core/Controls/ThirdViewControl/player.js +2 -6
- package/dist/core/Controls/ThirdViewControl/player.js.map +1 -1
- package/dist/core/Controls/base.d.ts +3 -4
- package/dist/core/Controls/base.js +3 -5
- package/dist/core/Controls/base.js.map +1 -1
- package/dist/core/Curve/index.d.ts +1 -2
- package/dist/core/Curve/index.js +1 -1
- package/dist/core/Curve/index.js.map +1 -1
- package/dist/core/Material/SurfaceMaterial/index.js.map +1 -1
- package/dist/core/Material/index.d.ts +3 -5
- package/dist/core/Material/index.js +3 -3
- package/dist/core/Material/index.js.map +1 -1
- package/dist/core/PostEffects/addACESFilmicToneMappingPass.d.ts +1 -2
- package/dist/core/PostEffects/addACESFilmicToneMappingPass.js +4 -4
- package/dist/core/PostEffects/addACESFilmicToneMappingPass.js.map +1 -1
- package/dist/core/PostEffects/addBrightnessContrastPass.d.ts +1 -2
- package/dist/core/PostEffects/addBrightnessContrastPass.js +4 -4
- package/dist/core/PostEffects/addBrightnessContrastPass.js.map +1 -1
- package/dist/core/PostEffects/bloomPass.d.ts +1 -2
- package/dist/core/PostEffects/bloomPass.js +5 -6
- package/dist/core/PostEffects/bloomPass.js.map +1 -1
- package/dist/core/PostEffects/bloomSelect.d.ts +2 -2
- package/dist/core/PostEffects/bloomSelect.js +6 -7
- package/dist/core/PostEffects/bloomSelect.js.map +1 -1
- package/dist/core/PostEffects/colorifyPass.d.ts +2 -2
- package/dist/core/PostEffects/colorifyPass.js +4 -4
- package/dist/core/PostEffects/colorifyPass.js.map +1 -1
- package/dist/core/PostEffects/index.d.ts +13 -4
- package/dist/core/PostEffects/index.js +20 -14
- package/dist/core/PostEffects/index.js.map +1 -1
- package/dist/core/PostEffects/outlinePass.d.ts +2 -2
- package/dist/core/PostEffects/outlinePass.js +5 -4
- package/dist/core/PostEffects/outlinePass.js.map +1 -1
- package/dist/core/PostEffects/postprocessing.d.ts +2 -2
- package/dist/core/PostEffects/postprocessing.js +2 -2
- package/dist/core/PostEffects/postprocessing.js.map +1 -1
- package/dist/core/PostEffects/saoPass.d.ts +1 -2
- package/dist/core/PostEffects/saoPass.js +5 -4
- package/dist/core/PostEffects/saoPass.js.map +1 -1
- package/dist/core/SceneEffect/grow/grow.d.ts +1 -3
- package/dist/core/SceneEffect/grow/grow.js +3 -5
- package/dist/core/SceneEffect/grow/grow.js.map +1 -1
- package/dist/core/WeatherSystem/DynamicWeatherSystem.d.ts +1 -3
- package/dist/core/WeatherSystem/DynamicWeatherSystem.js +4 -6
- package/dist/core/WeatherSystem/DynamicWeatherSystem.js.map +1 -1
- package/dist/core/WeatherSystem/color/index.d.ts +0 -3
- package/dist/core/WeatherSystem/color/index.js +14 -9
- package/dist/core/WeatherSystem/color/index.js.map +1 -1
- package/dist/core/WeatherSystem/controller/ColorController.d.ts +1 -3
- package/dist/core/WeatherSystem/controller/ColorController.js +3 -5
- package/dist/core/WeatherSystem/controller/ColorController.js.map +1 -1
- package/dist/core/WeatherSystem/controller/HDRController.d.ts +1 -3
- package/dist/core/WeatherSystem/controller/HDRController.js +3 -5
- package/dist/core/WeatherSystem/controller/HDRController.js.map +1 -1
- package/dist/core/WeatherSystem/controller/SkyController.d.ts +1 -3
- package/dist/core/WeatherSystem/controller/SkyController.js +2 -4
- package/dist/core/WeatherSystem/controller/SkyController.js.map +1 -1
- package/dist/core/WeatherSystem/hdr/index.d.ts +2 -4
- package/dist/core/WeatherSystem/hdr/index.js +11 -12
- package/dist/core/WeatherSystem/hdr/index.js.map +1 -1
- package/dist/core/WeatherSystem/index.d.ts +2 -3
- package/dist/core/WeatherSystem/index.js +4 -7
- package/dist/core/WeatherSystem/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/index.d.ts +1 -2
- package/dist/core/WeatherSystem/objects/rain/index.js +3 -3
- package/dist/core/WeatherSystem/objects/rain/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/lineRain.d.ts +1 -3
- package/dist/core/WeatherSystem/objects/rain/lineRain.js +5 -7
- package/dist/core/WeatherSystem/objects/rain/lineRain.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/plane.d.ts +1 -3
- package/dist/core/WeatherSystem/objects/rain/plane.js +4 -6
- package/dist/core/WeatherSystem/objects/rain/plane.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/point.d.ts +1 -3
- package/dist/core/WeatherSystem/objects/rain/point.js +0 -3
- package/dist/core/WeatherSystem/objects/rain/point.js.map +1 -1
- package/dist/core/WeatherSystem/sky/index.js.map +1 -1
- package/dist/core/WeatherSystem/utils/constant.js.map +1 -1
- package/dist/core/WeatherSystem/weather/index.d.ts +2 -3
- package/dist/core/WeatherSystem/weather/index.js +5 -7
- package/dist/core/WeatherSystem/weather/index.js.map +1 -1
- package/dist/index.d.ts +8 -13
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/business/index.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export
|
|
11
|
-
export
|
|
12
|
-
export
|
|
13
|
-
export
|
|
14
|
-
export
|
|
15
|
-
export
|
|
16
|
-
export
|
|
17
|
-
export
|
|
18
|
-
export
|
|
1
|
+
export * from "./Poi";
|
|
2
|
+
export * from "./Spline";
|
|
3
|
+
export * from "./Area";
|
|
4
|
+
export * from "./TrafficComponents";
|
|
5
|
+
export * from "./Batch";
|
|
6
|
+
export * from "./MaterialSwitch";
|
|
7
|
+
export * from "./Flyline";
|
|
8
|
+
export * from "./HeatMap";
|
|
9
|
+
export * from "./Mark";
|
|
10
|
+
export * from "./SplitBuilding";
|
|
11
|
+
export * from "./InfoPanel";
|
|
12
|
+
export * from "./VideoPanel";
|
|
13
|
+
export * from "./Box";
|
|
14
|
+
export * from "./Sphere";
|
|
15
|
+
export * from "./Line";
|
|
16
|
+
export * from "./Cylinder";
|
|
17
|
+
export * from "./Plane";
|
|
18
|
+
export * from "./Water";
|
|
19
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[
|
|
1
|
+
{"version":3,"names":[],"sources":["../../src/business/index.ts"],"sourcesContent":["export * from './Poi'\nexport * from './Spline'\nexport * from './Area'\nexport * from './TrafficComponents'\nexport * from './Batch'\nexport * from './MaterialSwitch'\nexport * from './Flyline'\nexport * from './HeatMap'\nexport * from './Mark'\nexport * from './SplitBuilding'\nexport * from './InfoPanel'\nexport * from './VideoPanel'\nexport * from './Box'\nexport * from './Sphere'\nexport * from './Line'\nexport * from './Cylinder'\nexport * from './Plane'\nexport * from './Water'"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
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
|
/**
|
|
@@ -12,7 +12,7 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
|
|
|
12
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
13
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
14
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); }
|
|
15
|
-
import { Box3, EventDispatcher, Group, MathUtils, Plane, Quaternion, TWEEN, Vector3, use } from '@anov/3d-core';
|
|
15
|
+
import { Box3, EventDispatcher, Group, MathUtils, Plane, Quaternion, TWEEN, Vector3, use, utils } from '@anov/3d-core';
|
|
16
16
|
import FollowControls from "./FollowOrbitControls";
|
|
17
17
|
/**
|
|
18
18
|
* CameraExpand, 主要提供了一些PerspectiveCamera的拓展能力
|
|
@@ -53,11 +53,11 @@ export var PerspectiveCameraExpand = /*#__PURE__*/function (_EventDispatcher) {
|
|
|
53
53
|
value: function bindEvent() {
|
|
54
54
|
var _this2 = this;
|
|
55
55
|
this.controls.addEventListener('start', function () {
|
|
56
|
-
|
|
56
|
+
utils.storeManagement.set('enableEvents', false);
|
|
57
57
|
_this2._isCameraChange = true;
|
|
58
58
|
});
|
|
59
59
|
this.controls.addEventListener('end', function () {
|
|
60
|
-
|
|
60
|
+
utils.storeManagement.set('enableEvents', true);
|
|
61
61
|
_this2._isCameraChange = false;
|
|
62
62
|
});
|
|
63
63
|
this.controls.addEventListener('change', function () {
|
|
@@ -356,7 +356,7 @@ export var PerspectiveCameraExpand = /*#__PURE__*/function (_EventDispatcher) {
|
|
|
356
356
|
});
|
|
357
357
|
this.controls.target.copy(target.position);
|
|
358
358
|
followControls.target = target.position;
|
|
359
|
-
var cancelMotion = use.useframe(
|
|
359
|
+
var cancelMotion = use.useframe(function () {
|
|
360
360
|
container.position.copy(target.position);
|
|
361
361
|
container.scale.copy(target.scale);
|
|
362
362
|
needUpdateRotation && container.rotation.copy(target.rotation);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Box3","EventDispatcher","Group","MathUtils","Plane","Quaternion","TWEEN","Vector3","use","FollowControls","PerspectiveCameraExpand","_EventDispatcher","_inherits","_super","_createSuper","camera","controls","sceneControl","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","Map","bindEvent","_createClass","key","get","_isTransitionPeriod","_isCameraChange","value","_this2","addEventListener","context","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 { ControlsType, Object3D, 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: 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 this.sceneControl.context.storeManagement.set('enableEvents', false)\n this._isCameraChange = true\n })\n\n this.controls.addEventListener('end', () => {\n this.sceneControl.context.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(this.sceneControl, () => {\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,QAAe,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;QAC5CD,MAAI,CAACd,YAAY,CAACgB,OAAO,CAACC,eAAe,CAACC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC;QACpEJ,MAAI,CAACF,eAAe,GAAG,IAAI;MAC7B,CAAC,CAAC;MAEF,IAAI,CAACb,QAAQ,CAACgB,gBAAgB,CAAC,KAAK,EAAE,YAAM;QAC1CD,MAAI,CAACd,YAAY,CAACgB,OAAO,CAACC,eAAe,CAACC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC;QACnEJ,MAAI,CAACF,eAAe,GAAG,KAAK;MAC9B,CAAC,CAAC;MAEF,IAAI,CAACb,QAAQ,CAACgB,gBAAgB,CAAC,QAAQ,EAAE,YAAM;QAC7CD,MAAI,CAACK,aAAa,CAAC;UACjBC,IAAI,EAAE,QAAQ;UACdC,QAAQ,EAAEP,MAAI,CAAChB,MAAM,CAACuB,QAAQ;UAC9BC,MAAM,EAAER,MAAI,CAACf,QAAQ,CAACuB;QACxB,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAb,GAAA;IAAAI,KAAA,EAQA,SAAAU,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,CAAC3C,MAAM,CAAC4C,GAAG,GAAG,CAAC,GAAGF,IAAI,CAACG,EAAE,GAAG,GAAG,CAAC;MAChF,IAAMC,sBAAsB,GAAGL,WAAW;MAC1C,IAAMM,eAAe,GAAI,IAAI,CAAC/C,MAAM,CAACuB,QAAQ,CAACyB,KAAK,CAAC,CAAC,CAAEC,GAAG,CAAC,IAAI,CAAChD,QAAQ,CAACuB,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;IAAA3C,GAAA;IAAAI,KAAA,EAOA,SAAAwC,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;IAAAxC,GAAA;IAAAI,KAAA,EAKA,SAAA4C,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,CAAC7D,MAAM,CAACuB,QAAQ,CAACyD,OAAO,CAAC,CAAC;gBACxCxD,MAAM,EAAEqC,MAAI,CAAC5D,QAAQ,CAACuB,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,CAAC5D,QAAQ,CAACuB,MAAM,EAAEqC,MAAI,CAAC7D,MAAM,CAACuB,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;IAAA7D,GAAA;IAAAI,KAAA,EAKA,SAAAK,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,CAACvF,MAAM,CAACuB,QAAQ,CAACyD,OAAO,CAAC,CAAC;cACxCxD,MAAM,EAAE+D,MAAI,CAACtF,QAAQ,CAACuB,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;IAAAtE,GAAA;IAAAI,KAAA,EAIA,SAAAH,IAAA,EAAa;MACX,OAAO;QACLW,QAAQ,EAAE,CAAC,IAAI,CAACvB,MAAM,CAACuB,QAAQ,CAACqE,CAAC,EAAE,IAAI,CAAC5F,MAAM,CAACuB,QAAQ,CAACsE,CAAC,EAAE,IAAI,CAAC7F,MAAM,CAACuB,QAAQ,CAACuE,CAAC,CAAC;QAClFtE,MAAM,EAAE,CAAC,IAAI,CAACvB,QAAQ,CAACuB,MAAM,CAACoE,CAAC,EAAE,IAAI,CAAC3F,QAAQ,CAACuB,MAAM,CAACqE,CAAC,EAAE,IAAI,CAAC5F,QAAQ,CAACuB,MAAM,CAACsE,CAAC;MACjF,CAAC;IACH;;IAEA;AACF;AACA;EAFE;IAAAnF,GAAA;IAAAC,GAAA,EAGA,SAAAA,IAAA,EAAmB;MACjB,IAAMmF,cAAc,GAAG,IAAI,CAAC9F,QAAQ,CAACuB,MAAM;MAC3C,IAAMwE,cAAc,GAAG,IAAI,CAAChG,MAAM,CAACuB,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;IAAAtF,GAAA;IAAAC,GAAA,EAIA,SAAAA,IAAA,EAAiB;MACf,OAAQ,IAAI,CAACZ,MAAM,CAA6DsG,cAAc,CAACT,CAAC;IAClG;;IAEA;AACF;AACA;AACA;EAHE;IAAAlF,GAAA;IAAAI,KAAA,EAIA,SAAAwF,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,CAAC/B,MAAM,CAACuB,QAAQ,CAACyF,UAAU,CAAC,IAAI,CAAC/G,QAAQ,CAACuB,MAAM,CAAC;MACtE,IAAMwE,cAAc,GAAG,IAAI,CAAC/F,QAAQ,CAACuB,MAAM,CAACwB,KAAK,CAAC,CAAC,CAACK,GAAG,CAACoD,SAAS,CAACrD,cAAc,CAACrB,QAAQ,CAAC,CAAC;MAC3F,IAAI,CAAC/B,MAAM,CAACuB,QAAQ,CAAC0F,IAAI,CAACjB,cAAc,CAAC;IAC3C;;IAEA;AACF;AACA;AACA;EAHE;IAAArF,GAAA;IAAAI,KAAA,EAIA,SAAAmG,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,CAACxG,MAAM,CAACsG,cAAc,CAACT,CAAC,GAAGzG,SAAS,CAACyH,QAAQ,CAACL,GAAG,CAAC;IACxD;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA7F,GAAA;IAAAI,KAAA,EAOA,SAAAoG,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;IAAAZ,GAAA;IAAAI,KAAA,EAOA,SAAA6G,OAAcpG,MAAgB,EAAExB,MAAyB,EAAE6H,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,GAAGzI,MAAM,CAAC0I,MAAM;MAErC,IAAIC,kBAAkB,GAAG,IAAI;MAE7BL,SAAS,CAACjF,GAAG,CAACrD,MAAM,CAAC;MACrBwB,MAAM,CAACkH,MAAM,CAACrF,GAAG,CAACiF,SAAS,CAAC;MAE5B,IAAI,CAACrI,QAAQ,CAAC2I,OAAO,GAAG,KAAK;MAE7B,IAAMC,cAAc,GAAG,IAAInJ,cAAc,CAAC,IAAI,CAACM,MAAM,EAAE,IAAI,CAACE,YAAY,CAAC4I,QAAQ,CAACC,UAAU,CAAC;MAC7F,IAAMC,WAAW,GAAG,IAAI,CAAC7B,oBAAoB,CAAClD,KAAK,EAAEE,GAAG,EAAEpC,QAAQ,CAAC;MAEnE/B,MAAM,CAACuB,QAAQ,CAAC0F,IAAI,CAAC+B,WAAW,CAAC;MACjCH,cAAc,CAACI,MAAM,GAAGjJ,MAAM,CAACuB,QAAQ,CAACyF,UAAU,CAACxF,MAAM,CAACD,QAAQ,CAAC;MAEnEsH,cAAc,CAAC5H,gBAAgB,CAAC,OAAO,EAAE,YAAM;QAC7CiH,gBAAgB,KAAKS,kBAAkB,GAAG,KAAK,CAAC;MAClD,CAAC,CAAC;MAEF,IAAI,CAAC1I,QAAQ,CAACuB,MAAM,CAACyF,IAAI,CAACzF,MAAM,CAACD,QAAQ,CAAC;MAC1CsH,cAAc,CAACrH,MAAM,GAAGA,MAAM,CAACD,QAAQ;MAEvC,IAAM2H,YAAY,GAAGzJ,GAAG,CAAC0J,QAAQ,CAAC,IAAI,CAACjJ,YAAY,EAAE,YAAM;QACzDoI,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,CAAC7H,QAAQ,CAACuB,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,CAAC7H,QAAQ,CAAC2I,OAAO,GAAG,IAAI;QAE5BH,eAAe,CAACpF,GAAG,CAACrD,MAAM,CAAC;QAC3BwB,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;IAAApH,GAAA;IAAAI,KAAA,EAIA,SAAA0I,aAAoB1B,QAAgB,EAAE;MACpC,IAAMsB,MAAM,GAAG,IAAI,CAACG,eAAe,CAAC5I,GAAG,CAACmH,QAAQ,CAAC;MACjDsB,MAAM,IAAIA,MAAM,CAAC,CAAC;IACpB;;IAEA;AACF;AACA;EAFE;IAAA1I,GAAA;IAAAI,KAAA,EAGA,SAAA2I,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;IAAA1I,GAAA;IAAAI,KAAA,EASA,SAAAsE,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,CAAC9J,MAAM,CAACuB,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,CAACrE,MAAM,CAACuB,QAAQ,CAAC0F,IAAI,CAAC1F,QAAQ,CAAC;QACnC,IAAI,CAACtB,QAAQ,CAACuB,MAAM,CAACyF,IAAI,CAACzF,MAAM,CAAC;QAEjC,IAAIyC,KAAK,EAAE;UACT;UACA,IAAI,CAACjE,MAAM,CAACsG,cAAc,CAACV,CAAC,GAAGxG,SAAS,CAACyH,QAAQ,CAAC5C,KAAK,CAAC;QAC1D;QAEA,IAAIE,GAAG,EAAE;UACP;UACA,IAAI,CAACnE,MAAM,CAACsG,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,CAAC1J,YAAY,CAAC4I,QAAQ,CAAEmB,MAAM,CAACL,MAAI,CAAC1J,YAAY,CAACgK,KAAK,EAAGN,MAAI,CAAC1J,YAAY,CAACF,MAAO,CAAC;QACzF,CAAC,CAAC;QAEF;MACF;MAEA,IAAI,IAAI,CAACmK,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,CAAC5E,QAAQ,CAACuB,MAAM,CAACwB,KAAK,CAAC,CAAC;QAAEuH,CAAC,EAAE,IAAI,CAACvK,MAAM,CAACsG,cAAc,CAACV,CAAC;QAAEzB,GAAG,EAAE,IAAI,CAACnE,MAAM,CAACsG,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,CAAC3J,QAAQ,CAAC2I,OAAO,GAAG,KAAK;QAC7BgB,MAAI,CAAC/I,mBAAmB,GAAG,IAAI;MACjC,CAAC,CAAC,CACD6J,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,CAAC3J,QAAQ,CAACuB,MAAM,CAACyF,IAAI,CAACpC,MAAM,CAAC;QAEjC,IAAIZ,KAAK;UACT;UACE2F,MAAI,CAAC5J,MAAM,CAACsG,cAAc,CAACV,CAAC,GAAG2E,CAAC;QAElC,IAAIpG,GAAG;UACP;UACEyF,MAAI,CAAC5J,MAAM,CAACsG,cAAc,CAACT,CAAC,GAAG0E,CAAC;QAElC,IAAMQ,eAAe,GAAGhB,4BAA4B,CAACiB,WAAW,CAAClB,cAAc,EAAEvI,QAAQ,EAAE+I,CAAC,CAAC;QAC7FV,MAAI,CAAC5J,MAAM,CAACuB,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,CAAC3J,QAAQ,CAAC2I,OAAO,GAAG,IAAI;QAE5BsC,UAAU,CAAC,YAAM;UACftB,MAAI,CAAC/I,mBAAmB,GAAG,KAAK;QAClC,CAAC,CAAC;MACJ,CAAC,CAAC,CACDsK,KAAK,CAAC,CAAC;IACZ;EAAC;EAAA,OAAAxL,uBAAA;AAAA,EAhd0CT,eAAe"}
|
|
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":"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"}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
export type { vector3Array, FocusReturn, FollowParamsOption, CameraExpandInterface } from './PerspectiveCamera';
|
|
1
|
+
export * from './PerspectiveCamera';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * from "./PerspectiveCamera";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/core/Camera/index.ts"],"sourcesContent":["export * from './PerspectiveCamera'"],"mappings":"AAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Camera
|
|
1
|
+
import type { Camera } from '@anov/3d-core';
|
|
2
2
|
import { Vector3, lib } from '@anov/3d-core';
|
|
3
3
|
import type ControlBaseModule from '../base';
|
|
4
4
|
/**
|
|
@@ -10,7 +10,6 @@ declare class FirstViewControl implements ControlBaseModule {
|
|
|
10
10
|
camera: Camera;
|
|
11
11
|
dom: HTMLElement;
|
|
12
12
|
control: lib.PointerLockControls;
|
|
13
|
-
sceneControl: SceneControl;
|
|
14
13
|
velocity: Vector3;
|
|
15
14
|
private moveForward;
|
|
16
15
|
private moveBackward;
|
|
@@ -20,7 +19,7 @@ declare class FirstViewControl implements ControlBaseModule {
|
|
|
20
19
|
private direction;
|
|
21
20
|
private prevTime;
|
|
22
21
|
private cancellation;
|
|
23
|
-
constructor(camera: Camera, dom: HTMLElement
|
|
22
|
+
constructor(camera: Camera, dom: HTMLElement);
|
|
24
23
|
/**
|
|
25
24
|
* registerEvent
|
|
26
25
|
*/
|
|
@@ -14,13 +14,12 @@ var PointerLockControls = lib.PointerLockControls;
|
|
|
14
14
|
* 贴地 (First View) 控制模块
|
|
15
15
|
*/
|
|
16
16
|
var FirstViewControl = /*#__PURE__*/function () {
|
|
17
|
-
function FirstViewControl(camera, dom
|
|
17
|
+
function FirstViewControl(camera, dom) {
|
|
18
18
|
var _this = this;
|
|
19
19
|
_classCallCheck(this, FirstViewControl);
|
|
20
20
|
_defineProperty(this, "camera", void 0);
|
|
21
21
|
_defineProperty(this, "dom", void 0);
|
|
22
22
|
_defineProperty(this, "control", void 0);
|
|
23
|
-
_defineProperty(this, "sceneControl", void 0);
|
|
24
23
|
_defineProperty(this, "velocity", new Vector3());
|
|
25
24
|
_defineProperty(this, "moveForward", false);
|
|
26
25
|
_defineProperty(this, "moveBackward", false);
|
|
@@ -32,11 +31,10 @@ var FirstViewControl = /*#__PURE__*/function () {
|
|
|
32
31
|
_defineProperty(this, "cancellation", void 0);
|
|
33
32
|
this.camera = camera;
|
|
34
33
|
this.dom = dom;
|
|
35
|
-
this.sceneControl = sceneControl;
|
|
36
34
|
this.control = new PointerLockControls(camera, document.body);
|
|
37
35
|
this.dom.addEventListener('click', this.control.lock);
|
|
38
36
|
this.registerEvent();
|
|
39
|
-
this.cancellation = use.useframe(
|
|
37
|
+
this.cancellation = use.useframe(function () {
|
|
40
38
|
_this.update();
|
|
41
39
|
});
|
|
42
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Vector3","lib","use","PointerLockControls","FirstViewControl","camera","dom","
|
|
1
|
+
{"version":3,"names":["Vector3","lib","use","PointerLockControls","FirstViewControl","camera","dom","_this","_classCallCheck","_defineProperty","performance","now","control","document","body","addEventListener","lock","registerEvent","cancellation","useframe","update","_createClass","key","value","_this2","onKeyDown","event","code","moveForward","moveLeft","moveBackward","moveRight","canJump","velocity","y","onKeyUp","time","isLocked","delta","prevTime","x","z","direction","Number","normalize","getObject","position","dispose"],"sources":["../../../../src/core/Controls/FirstViewControl/index.ts"],"sourcesContent":["import type { Camera } from '@anov/3d-core'\nimport { Vector3, lib, use } from '@anov/3d-core'\nimport type ControlBaseModule from '../base'\n\nconst { PointerLockControls } = lib\n\n/**\n * @class FirstViewControl - First view control module\n *\n * 贴地 (First View) 控制模块\n */\n\nclass FirstViewControl implements ControlBaseModule {\n camera: Camera\n dom: HTMLElement\n control: lib.PointerLockControls\n\n velocity = new Vector3()\n\n private moveForward = false\n private moveBackward = false\n private moveLeft = false\n private moveRight = false\n private canJump = false\n\n private direction = new Vector3()\n private prevTime = performance.now()\n private cancellation: () => void\n\n constructor(camera: Camera, dom: HTMLElement) {\n this.camera = camera\n this.dom = dom\n\n this.control = new PointerLockControls(camera, document.body)\n this.dom.addEventListener('click', this.control.lock)\n this.registerEvent()\n\n this.cancellation = use.useframe(() => {\n this.update()\n })\n }\n\n /**\n * registerEvent\n */\n private registerEvent() {\n const onKeyDown = (event: KeyboardEvent) => {\n switch (event.code) {\n case 'ArrowUp':\n case 'KeyW':\n this.moveForward = true\n break\n\n case 'ArrowLeft':\n case 'KeyA':\n this.moveLeft = true\n break\n\n case 'ArrowDown':\n case 'KeyS':\n this.moveBackward = true\n break\n\n case 'ArrowRight':\n case 'KeyD':\n this.moveRight = true\n break\n\n case 'Space':\n if (this.canJump === true)\n this.velocity.y += 5\n this.canJump = false\n break\n }\n }\n\n const onKeyUp = (event: KeyboardEvent) => {\n switch (event.code) {\n case 'ArrowUp':\n case 'KeyW':\n this.moveForward = false\n break\n\n case 'ArrowLeft':\n case 'KeyA':\n this.moveLeft = false\n break\n\n case 'ArrowDown':\n case 'KeyS':\n this.moveBackward = false\n break\n\n case 'ArrowRight':\n case 'KeyD':\n this.moveRight = false\n break\n }\n }\n\n document.addEventListener('keydown', onKeyDown)\n document.addEventListener('keyup', onKeyUp)\n }\n\n private update() {\n const time = performance.now()\n\n if (this.control.isLocked) {\n const delta = (time - this.prevTime) / 1000\n\n this.velocity.x -= this.velocity.x * 10.0 * delta\n this.velocity.z -= this.velocity.z * 10.0 * delta\n this.velocity.y -= 9.8 * 100.0 * delta\n\n this.direction.z = Number(this.moveForward) - Number(this.moveBackward)\n this.direction.x = Number(this.moveRight) - Number(this.moveLeft)\n this.direction.normalize()\n\n if (this.moveForward || this.moveBackward)\n this.velocity.z -= this.direction.z * 100.0 * delta\n\n if (this.moveLeft || this.moveRight)\n this.velocity.x -= this.direction.x * 100.0 * delta\n\n this.control.moveRight(-this.velocity.x * delta)\n this.control.moveForward(-this.velocity.z * delta)\n this.control.getObject().position.y += (this.velocity.y * delta)\n\n if (this.control.getObject().position.y < 2) {\n this.velocity.y = 0\n this.control.getObject().position.y = 1.8\n\n this.canJump = true\n }\n }\n\n this.prevTime = time\n }\n\n dispose() {\n this.cancellation()\n }\n\n // 检测专用\n}\n\nexport default FirstViewControl"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PerspectiveCamera, Scene
|
|
1
|
+
import type { PerspectiveCamera, Scene } from '@anov/3d-core';
|
|
2
2
|
import type { ControlThirdModule } from '../base';
|
|
3
3
|
import Player from './player';
|
|
4
4
|
/**
|
|
@@ -9,9 +9,8 @@ import Player from './player';
|
|
|
9
9
|
declare class ThirdViewControl implements ControlThirdModule {
|
|
10
10
|
scene: Scene;
|
|
11
11
|
camera: PerspectiveCamera;
|
|
12
|
-
sceneControl: SceneControl;
|
|
13
12
|
entitiesCharacter: Player[];
|
|
14
|
-
constructor(camera: PerspectiveCamera, scene: Scene
|
|
13
|
+
constructor(camera: PerspectiveCamera, scene: Scene);
|
|
15
14
|
initialize(): void;
|
|
16
15
|
}
|
|
17
16
|
export default ThirdViewControl;
|
|
@@ -14,15 +14,13 @@ import Player from "./player";
|
|
|
14
14
|
* 贴地 (Third View) 控制模块
|
|
15
15
|
*/
|
|
16
16
|
var ThirdViewControl = /*#__PURE__*/function () {
|
|
17
|
-
function ThirdViewControl(camera, scene
|
|
17
|
+
function ThirdViewControl(camera, scene) {
|
|
18
18
|
_classCallCheck(this, ThirdViewControl);
|
|
19
19
|
_defineProperty(this, "scene", void 0);
|
|
20
20
|
_defineProperty(this, "camera", void 0);
|
|
21
|
-
_defineProperty(this, "sceneControl", void 0);
|
|
22
21
|
_defineProperty(this, "entitiesCharacter", []);
|
|
23
22
|
this.scene = scene;
|
|
24
23
|
this.camera = camera;
|
|
25
|
-
this.sceneControl = sceneControl;
|
|
26
24
|
this.initialize();
|
|
27
25
|
}
|
|
28
26
|
_createClass(ThirdViewControl, [{
|
|
@@ -31,11 +29,10 @@ var ThirdViewControl = /*#__PURE__*/function () {
|
|
|
31
29
|
var _this = this;
|
|
32
30
|
this.entitiesCharacter.push(new Player({
|
|
33
31
|
camera: this.camera,
|
|
34
|
-
scene: this.scene
|
|
35
|
-
sceneControl: this.sceneControl
|
|
32
|
+
scene: this.scene
|
|
36
33
|
}));
|
|
37
34
|
var clock = new Clock();
|
|
38
|
-
use.useframe(
|
|
35
|
+
use.useframe(function () {
|
|
39
36
|
var deltaT = clock.getDelta();
|
|
40
37
|
_this.entitiesCharacter.forEach(function (item, _, array) {
|
|
41
38
|
item.update(deltaT, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Clock","use","Player","ThirdViewControl","camera","scene","
|
|
1
|
+
{"version":3,"names":["Clock","use","Player","ThirdViewControl","camera","scene","_classCallCheck","_defineProperty","initialize","_createClass","key","value","_this","entitiesCharacter","push","clock","useframe","deltaT","getDelta","forEach","item","_","array","update","entities"],"sources":["../../../../src/core/Controls/ThirdViewControl/index.ts"],"sourcesContent":["import type { PerspectiveCamera, Scene } from '@anov/3d-core'\nimport { Clock, use } from '@anov/3d-core'\nimport type { ControlThirdModule } from '../base'\nimport Player from './player'\n\n/**\n * @class ThirdViewControl.ts - third view control module\n *\n * 贴地 (Third View) 控制模块\n */\n\nclass ThirdViewControl implements ControlThirdModule {\n scene: Scene\n camera: PerspectiveCamera\n entitiesCharacter: Player[] = []\n\n constructor(camera: PerspectiveCamera, scene: Scene) {\n this.scene = scene\n this.camera = camera\n\n this.initialize()\n }\n\n initialize() {\n this.entitiesCharacter.push(\n new Player({\n camera: this.camera,\n scene: this.scene,\n }),\n )\n\n const clock = new Clock()\n\n use.useframe(() => {\n const deltaT = clock.getDelta()\n\n this.entitiesCharacter.forEach((item, _, array) => {\n item.update(deltaT, {\n entities: array,\n })\n })\n })\n }\n}\n\nexport default ThirdViewControl"],"mappings":";;;;;;;AACA,SAASA,KAAK,EAAEC,GAAG,QAAQ,eAAe;AAE1C,OAAOC,MAAM;;AAEb;AACA;AACA;AACA;AACA;AAJA,IAMMC,gBAAgB;EAKpB,SAAAA,iBAAYC,MAAyB,EAAEC,KAAY,EAAE;IAAAC,eAAA,OAAAH,gBAAA;IAAAI,eAAA;IAAAA,eAAA;IAAAA,eAAA,4BAFvB,EAAE;IAG9B,IAAI,CAACF,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACD,MAAM,GAAGA,MAAM;IAEpB,IAAI,CAACI,UAAU,CAAC,CAAC;EACnB;EAACC,YAAA,CAAAN,gBAAA;IAAAO,GAAA;IAAAC,KAAA,EAED,SAAAH,WAAA,EAAa;MAAA,IAAAI,KAAA;MACX,IAAI,CAACC,iBAAiB,CAACC,IAAI,CACzB,IAAIZ,MAAM,CAAC;QACTE,MAAM,EAAE,IAAI,CAACA,MAAM;QACnBC,KAAK,EAAE,IAAI,CAACA;MACd,CAAC,CACH,CAAC;MAED,IAAMU,KAAK,GAAG,IAAIf,KAAK,CAAC,CAAC;MAEzBC,GAAG,CAACe,QAAQ,CAAC,YAAM;QACjB,IAAMC,MAAM,GAAGF,KAAK,CAACG,QAAQ,CAAC,CAAC;QAE/BN,KAAI,CAACC,iBAAiB,CAACM,OAAO,CAAC,UAACC,IAAI,EAAEC,CAAC,EAAEC,KAAK,EAAK;UACjDF,IAAI,CAACG,MAAM,CAACN,MAAM,EAAE;YAClBO,QAAQ,EAAEF;UACZ,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;EAAC;EAAA,OAAAnB,gBAAA;AAAA;AAGH,eAAeA,gBAAgB"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { Mesh, Vector3 } from '@anov/3d-core';
|
|
2
|
-
import type { Object3D, PerspectiveCamera
|
|
2
|
+
import type { Object3D, PerspectiveCamera } from '@anov/3d-core';
|
|
3
3
|
import type Player from '../player';
|
|
4
4
|
interface PropsType {
|
|
5
5
|
character: Object3D;
|
|
6
6
|
characterRotateBox: Object3D;
|
|
7
7
|
camera: PerspectiveCamera;
|
|
8
8
|
player: Player;
|
|
9
|
-
sceneControl: SceneControl;
|
|
10
9
|
}
|
|
11
10
|
export default class Camera_movement {
|
|
12
11
|
camera: PerspectiveCamera;
|
|
@@ -17,8 +16,7 @@ export default class Camera_movement {
|
|
|
17
16
|
control: any;
|
|
18
17
|
player: Player;
|
|
19
18
|
view: Mesh;
|
|
20
|
-
|
|
21
|
-
constructor({ character, camera, characterRotateBox, player, sceneControl }: PropsType);
|
|
19
|
+
constructor({ character, camera, characterRotateBox, player }: PropsType);
|
|
22
20
|
private calculateIdealLookat;
|
|
23
21
|
private updateCharacter;
|
|
24
22
|
private updateCamera;
|
|
@@ -11,8 +11,7 @@ var Camera_movement = /*#__PURE__*/function () {
|
|
|
11
11
|
var character = _ref.character,
|
|
12
12
|
camera = _ref.camera,
|
|
13
13
|
characterRotateBox = _ref.characterRotateBox,
|
|
14
|
-
player = _ref.player
|
|
15
|
-
sceneControl = _ref.sceneControl;
|
|
14
|
+
player = _ref.player;
|
|
16
15
|
_classCallCheck(this, Camera_movement);
|
|
17
16
|
_defineProperty(this, "camera", void 0);
|
|
18
17
|
_defineProperty(this, "character", void 0);
|
|
@@ -22,15 +21,13 @@ var Camera_movement = /*#__PURE__*/function () {
|
|
|
22
21
|
_defineProperty(this, "control", void 0);
|
|
23
22
|
_defineProperty(this, "player", void 0);
|
|
24
23
|
_defineProperty(this, "view", void 0);
|
|
25
|
-
_defineProperty(this, "sceneControl", void 0);
|
|
26
24
|
this.character = character;
|
|
27
25
|
this.characterRotateBox = characterRotateBox;
|
|
28
26
|
this.camera = camera;
|
|
29
27
|
this.player = player;
|
|
30
|
-
this.sceneControl = sceneControl;
|
|
31
28
|
this.currentPosition = new Vector3();
|
|
32
29
|
this.currentLookat = new Vector3();
|
|
33
|
-
this.control = use.useScene(
|
|
30
|
+
this.control = use.useScene().orbitControls;
|
|
34
31
|
var view = new Mesh(new BoxGeometry(1, 1, 1));
|
|
35
32
|
this.character.add(view);
|
|
36
33
|
view.position.add(new Vector3(0, 5, -15));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BoxGeometry","Mesh","Vector3","use","Camera_movement","_ref","character","camera","characterRotateBox","player","
|
|
1
|
+
{"version":3,"names":["BoxGeometry","Mesh","Vector3","use","Camera_movement","_ref","character","camera","characterRotateBox","player","_classCallCheck","_defineProperty","currentPosition","currentLookat","control","useScene","orbitControls","view","add","position","_createClass","key","value","calculateIdealLookat","_this$character$posit","x","y","z","idealLookat","updateCharacter","cameraPosition","getWorldPosition","characterPosition","direction","subVectors","angle","Math","atan2","rotation","PI","updateCamera","target","object","copy","updateNewPosition","update","deltaT","default"],"sources":["../../../../../src/core/Controls/ThirdViewControl/player/camera.ts"],"sourcesContent":["import { BoxGeometry, Mesh, Vector3, use } from '@anov/3d-core'\nimport type { Object3D, Object3DEventMap, OrbitControls, PerspectiveCamera } from '@anov/3d-core'\nimport type Player from '../player'\n\ninterface PropsType {\n character: Object3D\n characterRotateBox: Object3D\n camera: PerspectiveCamera\n player: Player\n}\n\nexport default class Camera_movement {\n camera: PerspectiveCamera\n character: Object3D\n currentPosition: Vector3\n currentLookat: Vector3\n characterRotateBox: Object3D\n control: any\n player: Player\n view: Mesh\n\n constructor({ character, camera, characterRotateBox, player }: PropsType) {\n this.character = character\n this.characterRotateBox = characterRotateBox\n this.camera = camera\n this.player = player\n\n this.currentPosition = new Vector3()\n this.currentLookat = new Vector3()\n this.control = use.useScene().orbitControls\n\n const view = new Mesh(new BoxGeometry(1, 1, 1))\n this.character.add(view)\n\n view.position.add(new Vector3(0, 5, -15))\n\n this.view = view\n }\n\n private calculateIdealLookat() {\n const { x, y, z } = this.character.position\n const idealLookat = new Vector3(x, this.character.position.y + 3.4, z)\n\n return idealLookat\n }\n\n private updateCharacter() {\n const cameraPosition = new Vector3()\n this.camera.getWorldPosition(cameraPosition)\n\n const characterPosition = new Vector3()\n this.character.getWorldPosition(characterPosition)\n\n const direction = new Vector3()\n direction.subVectors(cameraPosition, characterPosition)\n direction.y = 0\n\n const angle = Math.atan2(direction.x, direction.z)\n\n this.character.rotation.y = angle + Math.PI\n this.characterRotateBox.rotation.y = angle + Math.PI\n }\n\n private updateCamera() {\n const position = new Vector3()\n this.view.getWorldPosition(position)\n\n const idealLookat = this.calculateIdealLookat()\n this.control.target = idealLookat;\n (this.control as OrbitControls).object.position.copy(position)\n }\n\n private updateNewPosition() {\n if (this.view && this.view.position) {\n this.updateCharacter()\n this.updateCamera()\n }\n }\n\n update(deltaT: number) {\n this.updateNewPosition()\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PerspectiveCamera, Scene
|
|
1
|
+
import type { PerspectiveCamera, Scene } from '@anov/3d-core';
|
|
2
2
|
import { AnimationMixer } from '@anov/3d-core';
|
|
3
3
|
import Camera_movement from './player/camera.js';
|
|
4
4
|
import Character_control from './player/control';
|
|
@@ -6,7 +6,6 @@ import Character_animation from './player/animation';
|
|
|
6
6
|
interface PropsType {
|
|
7
7
|
scene: Scene;
|
|
8
8
|
camera: PerspectiveCamera;
|
|
9
|
-
sceneControl: SceneControl;
|
|
10
9
|
}
|
|
11
10
|
export default class Player {
|
|
12
11
|
character_control: Character_control;
|
|
@@ -17,8 +16,7 @@ export default class Player {
|
|
|
17
16
|
characterRotateBox: any;
|
|
18
17
|
scene: Scene;
|
|
19
18
|
camera: PerspectiveCamera;
|
|
20
|
-
|
|
21
|
-
constructor({ camera, scene, sceneControl }: PropsType);
|
|
19
|
+
constructor({ camera, scene }: PropsType);
|
|
22
20
|
initialize(): Promise<void>;
|
|
23
21
|
update(deltaT: number, customProps?: any): void;
|
|
24
22
|
}
|
|
@@ -17,8 +17,7 @@ var GLTFLoader = lib.GLTFLoader;
|
|
|
17
17
|
var Player = /*#__PURE__*/function () {
|
|
18
18
|
function Player(_ref) {
|
|
19
19
|
var camera = _ref.camera,
|
|
20
|
-
scene = _ref.scene
|
|
21
|
-
sceneControl = _ref.sceneControl;
|
|
20
|
+
scene = _ref.scene;
|
|
22
21
|
_classCallCheck(this, Player);
|
|
23
22
|
_defineProperty(this, "character_control", void 0);
|
|
24
23
|
_defineProperty(this, "character_animation", void 0);
|
|
@@ -28,10 +27,8 @@ var Player = /*#__PURE__*/function () {
|
|
|
28
27
|
_defineProperty(this, "characterRotateBox", void 0);
|
|
29
28
|
_defineProperty(this, "scene", void 0);
|
|
30
29
|
_defineProperty(this, "camera", void 0);
|
|
31
|
-
_defineProperty(this, "sceneControl", void 0);
|
|
32
30
|
this.scene = scene;
|
|
33
31
|
this.camera = camera;
|
|
34
|
-
this.sceneControl = sceneControl;
|
|
35
32
|
this.initialize();
|
|
36
33
|
}
|
|
37
34
|
_createClass(Player, [{
|
|
@@ -73,8 +70,7 @@ var Player = /*#__PURE__*/function () {
|
|
|
73
70
|
character: this.character,
|
|
74
71
|
camera: this.camera,
|
|
75
72
|
characterRotateBox: this.characterRotateBox,
|
|
76
|
-
player: this
|
|
77
|
-
sceneControl: this.sceneControl
|
|
73
|
+
player: this
|
|
78
74
|
});
|
|
79
75
|
this.character_animation = new Character_animation({
|
|
80
76
|
animations: characterAnimations,
|