@anov/3d-ability 0.0.140 → 0.0.141
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.js +35 -56
- package/dist/business/Animation/motion/index.js.map +1 -1
- package/dist/business/Animation/type.js +2 -2
- package/dist/business/Area/Fence/FenceBase.js +146 -187
- package/dist/business/Area/Fence/FenceBase.js.map +1 -1
- package/dist/business/Area/Fence/fence_base_01.js +120 -112
- package/dist/business/Area/Fence/fence_base_01.js.map +1 -1
- package/dist/business/Area/Fence/fence_feeting_01.js +218 -130
- package/dist/business/Area/Fence/fence_feeting_01.js.map +1 -1
- package/dist/business/Area/Fence/fence_roll_01.js +140 -130
- package/dist/business/Area/Fence/fence_roll_01.js.map +1 -1
- package/dist/business/Area/FillArea/FillAreaBase.js +87 -126
- package/dist/business/Area/FillArea/FillAreaBase.js.map +1 -1
- package/dist/business/Area/FillArea/fillArea_face_01.js +72 -98
- package/dist/business/Area/FillArea/fillArea_face_01.js.map +1 -1
- package/dist/business/Area/FillArea/fillArea_line_01.js +66 -94
- package/dist/business/Area/FillArea/fillArea_line_01.js.map +1 -1
- package/dist/business/Area/index.js +267 -483
- package/dist/business/Area/index.js.map +1 -1
- package/dist/business/Area/tool.js +14 -26
- package/dist/business/Area/tool.js.map +1 -1
- package/dist/business/Base/ObjectLayer.js +21 -46
- package/dist/business/Base/ObjectLayer.js.map +1 -1
- package/dist/business/Batch/index.js +189 -234
- package/dist/business/Batch/index.js.map +1 -1
- package/dist/business/Box/index.js +52 -81
- package/dist/business/Box/index.js.map +1 -1
- package/dist/business/Cylinder/index.js +51 -79
- package/dist/business/Cylinder/index.js.map +1 -1
- package/dist/business/Flyline/bubble/CircleBubble.js +1 -9
- package/dist/business/Flyline/bubble/CircleBubble.js.map +1 -1
- package/dist/business/Flyline/bubble/index.js +7 -21
- package/dist/business/Flyline/bubble/index.js.map +1 -1
- package/dist/business/Flyline/index.js +96 -162
- package/dist/business/Flyline/index.js.map +1 -1
- package/dist/business/Flyline/line/ArcLine.js +208 -291
- package/dist/business/Flyline/line/ArcLine.js.map +1 -1
- package/dist/business/Flyline/line/index.js +8 -22
- package/dist/business/Flyline/line/index.js.map +1 -1
- package/dist/business/HeatMap/HeatMap.js +380 -467
- package/dist/business/HeatMap/HeatMap.js.map +1 -1
- package/dist/business/HeatMap/core.js +405 -525
- package/dist/business/HeatMap/core.js.map +1 -1
- package/dist/business/HeatMap/shader.js +69 -3
- package/dist/business/HeatMap/shader.js.map +1 -1
- package/dist/business/InfoPanel/index.js +201 -242
- package/dist/business/InfoPanel/index.js.map +1 -1
- package/dist/business/Line/index.js +55 -88
- package/dist/business/Line/index.js.map +1 -1
- package/dist/business/Mark/KeyframeAnimation.js +145 -176
- package/dist/business/Mark/KeyframeAnimation.js.map +1 -1
- package/dist/business/Mark/index.js +196 -294
- package/dist/business/Mark/index.js.map +1 -1
- package/dist/business/Mark/shader/tanhao.js +36 -3
- package/dist/business/Mark/shader/tanhao.js.map +1 -1
- package/dist/business/Mark/type.js +1 -1
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js +377 -551
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js.map +1 -1
- package/dist/business/MaterialSwitch/inject.js +92 -58
- package/dist/business/MaterialSwitch/inject.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/finalFade.js +74 -2
- package/dist/business/MaterialSwitch/shader/finalFade.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/ground.js +95 -16
- package/dist/business/MaterialSwitch/shader/ground.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/groundBase64.js +9 -3
- package/dist/business/MaterialSwitch/shader/groundBase64.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/realFade.js +48 -9
- package/dist/business/MaterialSwitch/shader/realFade.js.map +1 -1
- package/dist/business/Plane/index.js +51 -78
- package/dist/business/Plane/index.js.map +1 -1
- package/dist/business/Poi/index.d.ts +5 -0
- package/dist/business/Poi/index.js +256 -295
- package/dist/business/Poi/index.js.map +1 -1
- package/dist/business/Poi/link/Cylinder.js +56 -89
- package/dist/business/Poi/link/Cylinder.js.map +1 -1
- package/dist/business/Poi/link/Pyramid.js +104 -165
- package/dist/business/Poi/link/Pyramid.js.map +1 -1
- package/dist/business/Poi/link/index.d.ts +1 -1
- package/dist/business/Poi/link/index.js +54 -114
- package/dist/business/Poi/link/index.js.map +1 -1
- package/dist/business/Poi/panel/index.d.ts +124 -0
- package/dist/business/Poi/panel/index.js +474 -0
- package/dist/business/Poi/panel/index.js.map +1 -0
- package/dist/business/Poi/panel/interfaces.d.ts +67 -0
- package/dist/business/Poi/panel/interfaces.js +2 -0
- package/dist/business/Poi/panel/interfaces.js.map +1 -0
- package/dist/business/Poi/panel/utils.d.ts +72 -0
- package/dist/business/Poi/panel/utils.js +126 -0
- package/dist/business/Poi/panel/utils.js.map +1 -0
- package/dist/business/Poi/particle/DoubleCircle.js +71 -107
- package/dist/business/Poi/particle/DoubleCircle.js.map +1 -1
- package/dist/business/Poi/particle/DynamicCircle.js +75 -111
- package/dist/business/Poi/particle/DynamicCircle.js.map +1 -1
- package/dist/business/Poi/particle/SingleCircle.js +62 -98
- package/dist/business/Poi/particle/SingleCircle.js.map +1 -1
- package/dist/business/Poi/particle/index.js +49 -117
- package/dist/business/Poi/particle/index.js.map +1 -1
- package/dist/business/Poi/shader/circle.js +31 -3
- package/dist/business/Poi/shader/circle.js.map +1 -1
- package/dist/business/Poi/shader/cylinder.js +37 -3
- package/dist/business/Poi/shader/cylinder.js.map +1 -1
- package/dist/business/Poi/shader/doubleCircle.js +55 -3
- package/dist/business/Poi/shader/doubleCircle.js.map +1 -1
- package/dist/business/Poi/shader/dynamicCircle.js +67 -3
- package/dist/business/Poi/shader/dynamicCircle.js.map +1 -1
- package/dist/business/Poi/title/Border.js +7 -27
- package/dist/business/Poi/title/Border.js.map +1 -1
- package/dist/business/Poi/title/Ellipse.js +7 -27
- package/dist/business/Poi/title/Ellipse.js.map +1 -1
- package/dist/business/Poi/title/index.js +208 -292
- package/dist/business/Poi/title/index.js.map +1 -1
- package/dist/business/Poi/tools.js +22 -19
- package/dist/business/Poi/tools.js.map +1 -1
- package/dist/business/Poi/types.d.ts +3 -0
- package/dist/business/Poi/types.js.map +1 -1
- package/dist/business/Sphere/index.js +47 -72
- package/dist/business/Sphere/index.js.map +1 -1
- package/dist/business/Spline/index.js +190 -245
- package/dist/business/Spline/index.js.map +1 -1
- package/dist/business/SplitBuilding/index.js +327 -536
- package/dist/business/SplitBuilding/index.js.map +1 -1
- package/dist/business/SplitBuilding/type.js +2 -2
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js +218 -275
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js.map +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js +132 -177
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js.map +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js +51 -1
- package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js.map +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js +6 -1
- package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js.map +1 -1
- package/dist/business/TrafficComponents/base.js +32 -55
- package/dist/business/TrafficComponents/base.js.map +1 -1
- package/dist/business/TrafficComponents/utils.js +25 -24
- package/dist/business/TrafficComponents/utils.js.map +1 -1
- package/dist/business/Utils/Curve.js +40 -56
- package/dist/business/Utils/Curve.js.map +1 -1
- package/dist/business/Utils/constant.js +1 -1
- package/dist/business/Utils/constant.js.map +1 -1
- package/dist/business/Utils/defineProps.js +13 -14
- package/dist/business/Utils/defineProps.js.map +1 -1
- package/dist/business/Utils/round-curve.js +127 -153
- package/dist/business/Utils/round-curve.js.map +1 -1
- package/dist/business/VideoPanel/index.js +258 -319
- package/dist/business/VideoPanel/index.js.map +1 -1
- package/dist/business/Water/index.js +78 -108
- package/dist/business/Water/index.js.map +1 -1
- package/dist/business/Water/types.js +1 -1
- package/dist/business/Water/types.js.map +1 -1
- package/dist/core/Camera/PerspectiveCamera/CameraExpand.js +383 -449
- package/dist/core/Camera/PerspectiveCamera/CameraExpand.js.map +1 -1
- package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js +107 -142
- package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js.map +1 -1
- package/dist/core/Controls/FirstViewControl/index.js +84 -96
- package/dist/core/Controls/FirstViewControl/index.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/action/input.js +77 -98
- package/dist/core/Controls/ThirdViewControl/action/input.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/config/constants.js +1 -1
- package/dist/core/Controls/ThirdViewControl/config/constants.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/index.js +19 -28
- package/dist/core/Controls/ThirdViewControl/index.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player/animation.js +126 -155
- package/dist/core/Controls/ThirdViewControl/player/animation.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player/camera.js +47 -63
- package/dist/core/Controls/ThirdViewControl/player/camera.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player/control.js +39 -49
- package/dist/core/Controls/ThirdViewControl/player/control.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player.js +66 -91
- package/dist/core/Controls/ThirdViewControl/player.js.map +1 -1
- package/dist/core/Controls/base.js +14 -30
- package/dist/core/Controls/base.js.map +1 -1
- package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js +92 -131
- package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js.map +1 -1
- package/dist/core/Debug/PerformanceInfo/Performance.js +22 -47
- package/dist/core/Debug/PerformanceInfo/Performance.js.map +1 -1
- package/dist/core/Light/PointLight/PointLightExt.js +4 -21
- package/dist/core/Light/PointLight/PointLightExt.js.map +1 -1
- package/dist/core/Material/FinirMaterial/FinirMaterial.js +37 -57
- package/dist/core/Material/FinirMaterial/FinirMaterial.js.map +1 -1
- package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js +116 -153
- package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js.map +1 -1
- package/dist/core/Material/PristineGridMaterial/shader/fragment.js +95 -1
- package/dist/core/Material/PristineGridMaterial/shader/fragment.js.map +1 -1
- package/dist/core/Material/PristineGridMaterial/shader/vertex.js +26 -1
- package/dist/core/Material/PristineGridMaterial/shader/vertex.js.map +1 -1
- package/dist/core/Material/SurfaceMaterial/index.js +76 -172
- package/dist/core/Material/SurfaceMaterial/index.js.map +1 -1
- package/dist/core/Material/decorators.js +6 -11
- package/dist/core/Material/decorators.js.map +1 -1
- package/dist/core/PostEffects/addACESFilmicToneMappingPass.js +16 -12
- package/dist/core/PostEffects/addACESFilmicToneMappingPass.js.map +1 -1
- package/dist/core/PostEffects/addBrightnessContrastPass.js +17 -13
- package/dist/core/PostEffects/addBrightnessContrastPass.js.map +1 -1
- package/dist/core/PostEffects/bloomPass.js +17 -10
- package/dist/core/PostEffects/bloomPass.js.map +1 -1
- package/dist/core/PostEffects/bloomSelect.js +60 -43
- package/dist/core/PostEffects/bloomSelect.js.map +1 -1
- package/dist/core/PostEffects/colorifyPass.js +17 -13
- package/dist/core/PostEffects/colorifyPass.js.map +1 -1
- package/dist/core/PostEffects/index.js +28 -22
- package/dist/core/PostEffects/index.js.map +1 -1
- package/dist/core/PostEffects/outlinePass.js +37 -50
- package/dist/core/PostEffects/outlinePass.js.map +1 -1
- package/dist/core/PostEffects/postprocessing.js +14 -12
- package/dist/core/PostEffects/postprocessing.js.map +1 -1
- package/dist/core/PostEffects/saoPass.js +15 -10
- package/dist/core/PostEffects/saoPass.js.map +1 -1
- package/dist/core/PostEffects/shader/colorify.js +22 -3
- package/dist/core/PostEffects/shader/colorify.js.map +1 -1
- package/dist/core/PostEffects/shader/gammaCorrectionShader.js +27 -3
- package/dist/core/PostEffects/shader/gammaCorrectionShader.js.map +1 -1
- package/dist/core/PostEffects/shader/mapping.js +66 -3
- package/dist/core/PostEffects/shader/mapping.js.map +1 -1
- package/dist/core/PostEffects/shader/thermalMaging.js +28 -3
- package/dist/core/PostEffects/shader/thermalMaging.js.map +1 -1
- package/dist/core/SceneEffect/grow/grow.js +85 -101
- package/dist/core/SceneEffect/grow/grow.js.map +1 -1
- package/dist/core/SceneEffect/grow/style_down.js +60 -77
- package/dist/core/SceneEffect/grow/style_down.js.map +1 -1
- package/dist/core/SceneEffect/grow/style_up.js +64 -81
- package/dist/core/SceneEffect/grow/style_up.js.map +1 -1
- package/dist/core/SceneEffect/grow/type.js +2 -2
- package/dist/core/SceneEffect/grow/type.js.map +1 -1
- package/dist/core/WeatherSystem/DynamicWeatherSystem.js +51 -76
- package/dist/core/WeatherSystem/DynamicWeatherSystem.js.map +1 -1
- package/dist/core/WeatherSystem/hdr/index.js +69 -105
- package/dist/core/WeatherSystem/hdr/index.js.map +1 -1
- package/dist/core/WeatherSystem/index.js +77 -124
- package/dist/core/WeatherSystem/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/fog/index.js +52 -80
- package/dist/core/WeatherSystem/objects/fog/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/index.js +72 -84
- package/dist/core/WeatherSystem/objects/rain/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/lineRain.js +88 -118
- package/dist/core/WeatherSystem/objects/rain/lineRain.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/plane.js +116 -146
- package/dist/core/WeatherSystem/objects/rain/plane.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/point.js +100 -148
- package/dist/core/WeatherSystem/objects/rain/point.js.map +1 -1
- package/dist/core/WeatherSystem/objects/sky/cloud.js +71 -104
- package/dist/core/WeatherSystem/objects/sky/cloud.js.map +1 -1
- package/dist/core/WeatherSystem/objects/sky/index.js +66 -84
- package/dist/core/WeatherSystem/objects/sky/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/sky/outline.js +25 -45
- package/dist/core/WeatherSystem/objects/sky/outline.js.map +1 -1
- package/dist/core/WeatherSystem/shaders/cloud.js +74 -3
- package/dist/core/WeatherSystem/shaders/cloud.js.map +1 -1
- package/dist/core/WeatherSystem/shaders/fog.js +103 -3
- package/dist/core/WeatherSystem/shaders/fog.js.map +1 -1
- package/dist/core/WeatherSystem/shaders/rain.js +206 -7
- package/dist/core/WeatherSystem/shaders/rain.js.map +1 -1
- package/dist/core/WeatherSystem/shaders/sky.js +87 -3
- package/dist/core/WeatherSystem/shaders/sky.js.map +1 -1
- package/dist/core/WeatherSystem/sky/index.js +104 -135
- package/dist/core/WeatherSystem/sky/index.js.map +1 -1
- package/dist/core/WeatherSystem/utils/constant.js +44 -38
- package/dist/core/WeatherSystem/utils/constant.js.map +1 -1
- package/dist/core/WeatherSystem/utils/math.js +18 -25
- package/dist/core/WeatherSystem/utils/math.js.map +1 -1
- package/dist/core/WeatherSystem/utils/type.js +1 -1
- package/dist/core/WeatherSystem/utils/type.js.map +1 -1
- package/dist/core/WeatherSystem/weather/index.js +96 -141
- package/dist/core/WeatherSystem/weather/index.js.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Box3","EventDispatcher","Group","MathUtils","Plane","Quaternion","TWEEN","Vector3","use","utils","FollowControls","PerspectiveCameraExpand","_EventDispatcher","_inherits","_super","_createSuper","camera","controls","sceneControl","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","Map","bindEvent","_createClass","key","get","_isTransitionPeriod","_isCameraChange","value","_this2","addEventListener","storeManagement","set","dispatchEvent","type","position","target","caclCurrentPos","currentPos","distanceCoefficient","arguments","length","undefined","distance","box","setFromPoints","map","item","center","getCenter","size","getSize","halfDiagonal","maxDistance","Math","tan","fov","PI","cameraToCenterDistance","directionVector","clone","sub","normalize","lastPosition","multiplyScalar","add","lastLookat","caclSingleCoordinate","prevTarget","prevPosition","lastTarget","focus","params","_this3","Promise","res","_params$pitch","pitch","_params$yaw","yaw","_params$distance","duration","onUpdate","_params$distanceCoeff","moveOptions","_ref","_params$isTrigger","isTrigger","_ref2","lookat","onComplate","_params$duration","toArray","userInput","Array","isArray","_this3$caclCurrentPos","motion","fromArray","_this4","_","_ref3","_ref4","_params$duration2","x","y","z","targetPosition","cameraPosition","currentDirection","plane","radToDeg","normal","angleTo","rotationParent","setPitch","deg","direction","quaternion","pitchQuat","setFromAxisAngle","degToRad","multiply","applyQuaternion","distanceTo","copy","setYaw","caclPositionByFollow","axisX","axisY","axisZ","anglePitch","angleYaw","quaternionX","quaternionY","addScaledVector","follow","option","_this5","followId","_ref5","_ref5$relativeRotatio","relativeRotation","_ref5$pitch","_ref5$yaw","_ref5$distance","container","rotation","scale","oldCameraParent","parent","needUpdateRotation","enabled","followControls","renderer","domElement","curPosition","radius","cancelMotion","useframe","update","cancel","remove","dispose","followCancelMap","cancelFollow","cancelAllFollow","forEach","_this6","options","currentPoition","currentPositionInterpolation","requestAnimationFrame","render","scene","tween","stop","Tween","t","p","to","onStart","easing","Easing","Quadratic","InOut","_ref6","currentPosition","lerpVectors","onComplete","setTimeout","start"],"sources":["../../../../src/core/Camera/PerspectiveCamera/CameraExpand.ts"],"sourcesContent":["import type { Object3D, OrbitControls, PerspectiveCamera, SceneControl, 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
|
+
{"version":3,"names":["Box3","EventDispatcher","Group","MathUtils","Plane","Quaternion","TWEEN","Vector3","use","utils","FollowControls","PerspectiveCameraExpand","constructor","camera","controls","sceneControl","_defineProperty","Map","bindEvent","isTransitionPeriod","_isTransitionPeriod","isCameraChange","_isCameraChange","addEventListener","storeManagement","set","dispatchEvent","type","position","target","caclCurrentPos","currentPos","distanceCoefficient","distance","box","setFromPoints","map","item","center","getCenter","size","getSize","halfDiagonal","length","maxDistance","Math","tan","fov","PI","cameraToCenterDistance","directionVector","clone","sub","normalize","lastPosition","multiplyScalar","add","lastLookat","caclSingleCoordinate","prevTarget","prevPosition","lastTarget","focus","params","Promise","res","pitch","yaw","undefined","duration","onUpdate","moveOptions","_ref","_params$isTrigger","isTrigger","lookat","onComplate","_params$duration","toArray","userInput","Array","isArray","motion","fromArray","_","_ref2","_params$duration2","get","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","followId","relativeRotation","container","rotation","scale","oldCameraParent","parent","needUpdateRotation","enabled","followControls","renderer","domElement","curPosition","radius","cancelMotion","useframe","update","cancel","remove","dispose","followCancelMap","cancelFollow","cancelAllFollow","forEach","options","currentPoition","currentPositionInterpolation","requestAnimationFrame","render","scene","tween","stop","Tween","t","p","to","onStart","easing","Easing","Quadratic","InOut","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,154 +1,119 @@
|
|
|
1
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
-
function _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 _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
6
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
7
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
8
|
-
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
9
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
10
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
11
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
12
1
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
13
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" ==
|
|
14
|
-
function _toPrimitive(t, r) { if ("object" !=
|
|
2
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
|
3
|
+
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
4
|
import { EventDispatcher, Vector3 } from '@anov/3d-core';
|
|
16
5
|
import { gsap } from 'gsap';
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
_defineProperty(
|
|
25
|
-
_defineProperty(
|
|
26
|
-
_defineProperty(
|
|
27
|
-
_defineProperty(
|
|
28
|
-
_defineProperty(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
6
|
+
class FollowOrbitControls extends EventDispatcher {
|
|
7
|
+
constructor(object, domElement) {
|
|
8
|
+
super();
|
|
9
|
+
_defineProperty(this, "radius", void 0);
|
|
10
|
+
_defineProperty(this, "target", void 0);
|
|
11
|
+
_defineProperty(this, "object", void 0);
|
|
12
|
+
_defineProperty(this, "domElement", void 0);
|
|
13
|
+
_defineProperty(this, "rotationH", void 0);
|
|
14
|
+
_defineProperty(this, "rotationV", void 0);
|
|
15
|
+
_defineProperty(this, "isMouseDown", void 0);
|
|
16
|
+
_defineProperty(this, "isCurrentFirstMove", void 0);
|
|
17
|
+
_defineProperty(this, "isGlobalFirstMove", void 0);
|
|
18
|
+
this.object = object;
|
|
19
|
+
this.domElement = domElement;
|
|
20
|
+
this.target = new Vector3();
|
|
21
|
+
this.radius = this.getDistance();
|
|
22
|
+
this.rotationH = Math.atan2(this.object.position.x, this.object.position.z);
|
|
23
|
+
this.rotationV = Math.acos(this.object.position.y / this.radius);
|
|
24
|
+
this.isMouseDown = false;
|
|
25
|
+
this.isCurrentFirstMove = true;
|
|
26
|
+
this.isGlobalFirstMove = true;
|
|
27
|
+
this.domElement.addEventListener('mousedown', this.handleMousedown.bind(this));
|
|
28
|
+
this.domElement.addEventListener('mouseup', this.handleMouseup.bind(this));
|
|
29
|
+
this.domElement.addEventListener('mousemove', this.handleMousemove.bind(this));
|
|
30
|
+
this.domElement.addEventListener('wheel', this.handleWheelEvent.bind(this));
|
|
31
|
+
}
|
|
32
|
+
dispose() {
|
|
33
|
+
this.domElement.removeEventListener('mousedown', this.handleMousedown.bind(this));
|
|
34
|
+
this.domElement.removeEventListener('mouseup', this.handleMouseup.bind(this));
|
|
35
|
+
this.domElement.removeEventListener('mousemove', this.handleMousemove.bind(this));
|
|
36
|
+
this.domElement.removeEventListener('wheel', this.handleWheelEvent.bind(this));
|
|
37
|
+
}
|
|
38
|
+
update() {
|
|
39
|
+
this.object.lookAt(this.target);
|
|
40
|
+
}
|
|
41
|
+
getDistance() {
|
|
42
|
+
return this.object.position.distanceTo(this.target);
|
|
43
|
+
}
|
|
44
|
+
handleMouseup() {
|
|
45
|
+
this.isMouseDown = false;
|
|
46
|
+
}
|
|
47
|
+
handleMousedown() {
|
|
48
|
+
this.isMouseDown = true;
|
|
49
|
+
this.isCurrentFirstMove = true;
|
|
47
50
|
}
|
|
48
|
-
_createClass(FollowOrbitControls, [{
|
|
49
|
-
key: "dispose",
|
|
50
|
-
value: function dispose() {
|
|
51
|
-
this.domElement.removeEventListener('mousedown', this.handleMousedown.bind(this));
|
|
52
|
-
this.domElement.removeEventListener('mouseup', this.handleMouseup.bind(this));
|
|
53
|
-
this.domElement.removeEventListener('mousemove', this.handleMousemove.bind(this));
|
|
54
|
-
this.domElement.removeEventListener('wheel', this.handleWheelEvent.bind(this));
|
|
55
|
-
}
|
|
56
|
-
}, {
|
|
57
|
-
key: "update",
|
|
58
|
-
value: function update() {
|
|
59
|
-
this.object.lookAt(this.target);
|
|
60
|
-
}
|
|
61
|
-
}, {
|
|
62
|
-
key: "getDistance",
|
|
63
|
-
value: function getDistance() {
|
|
64
|
-
return this.object.position.distanceTo(this.target);
|
|
65
|
-
}
|
|
66
|
-
}, {
|
|
67
|
-
key: "handleMouseup",
|
|
68
|
-
value: function handleMouseup() {
|
|
69
|
-
this.isMouseDown = false;
|
|
70
|
-
}
|
|
71
|
-
}, {
|
|
72
|
-
key: "handleMousedown",
|
|
73
|
-
value: function handleMousedown() {
|
|
74
|
-
this.isMouseDown = true;
|
|
75
|
-
this.isCurrentFirstMove = true;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* handle Mousemove
|
|
80
|
-
* @param event
|
|
81
|
-
* @returns
|
|
82
|
-
*/
|
|
83
|
-
}, {
|
|
84
|
-
key: "handleMousemove",
|
|
85
|
-
value: function handleMousemove(event) {
|
|
86
|
-
if (!this.isMouseDown) return;
|
|
87
|
-
if (this.isGlobalFirstMove) {
|
|
88
|
-
this.isGlobalFirstMove = false;
|
|
89
|
-
this.dispatchEvent({
|
|
90
|
-
type: 'start'
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
if (this.isCurrentFirstMove) {
|
|
94
|
-
this.isCurrentFirstMove = false;
|
|
95
|
-
this.rotationH = Math.atan2(this.object.position.x, this.object.position.z);
|
|
96
|
-
this.rotationV = Math.acos(this.object.position.y / this.radius);
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
this.rotationH -= event.movementX / 180 * Math.PI;
|
|
100
|
-
this.rotationV -= event.movementY / 180 * Math.PI;
|
|
101
|
-
if (this.rotationV < Math.PI / 180) this.rotationV = Math.PI / 180;
|
|
102
|
-
if (this.rotationV > Math.PI - Math.PI / 180) this.rotationV = Math.PI - Math.PI / 180;
|
|
103
|
-
this.updateCameraPosition();
|
|
104
|
-
}
|
|
105
|
-
}, {
|
|
106
|
-
key: "handleWheelEvent",
|
|
107
|
-
value: function handleWheelEvent(event) {
|
|
108
|
-
var _this2 = this;
|
|
109
|
-
event.preventDefault();
|
|
110
|
-
if (this.isGlobalFirstMove) {
|
|
111
|
-
this.isGlobalFirstMove = false;
|
|
112
|
-
this.dispatchEvent({
|
|
113
|
-
type: 'start'
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
if (this.isCurrentFirstMove) {
|
|
117
|
-
this.isCurrentFirstMove = false;
|
|
118
|
-
this.rotationH = Math.atan2(this.object.position.x, this.object.position.z);
|
|
119
|
-
this.rotationV = Math.acos(this.object.position.y / this.radius);
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
var zoomSpeed = 0.3;
|
|
123
|
-
var minRadius = 0.1;
|
|
124
|
-
var maxRadius = 100000;
|
|
125
|
-
var targetRadius = this.radius + event.deltaY * zoomSpeed;
|
|
126
|
-
var clampedRadius = Math.max(minRadius, Math.min(maxRadius, targetRadius));
|
|
127
51
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
52
|
+
/**
|
|
53
|
+
* handle Mousemove
|
|
54
|
+
* @param event
|
|
55
|
+
* @returns
|
|
56
|
+
*/
|
|
57
|
+
handleMousemove(event) {
|
|
58
|
+
if (!this.isMouseDown) return;
|
|
59
|
+
if (this.isGlobalFirstMove) {
|
|
60
|
+
this.isGlobalFirstMove = false;
|
|
61
|
+
this.dispatchEvent({
|
|
62
|
+
type: 'start'
|
|
136
63
|
});
|
|
137
64
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
65
|
+
if (this.isCurrentFirstMove) {
|
|
66
|
+
this.isCurrentFirstMove = false;
|
|
67
|
+
this.rotationH = Math.atan2(this.object.position.x, this.object.position.z);
|
|
68
|
+
this.rotationV = Math.acos(this.object.position.y / this.radius);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
this.rotationH -= event.movementX / 180 * Math.PI;
|
|
72
|
+
this.rotationV -= event.movementY / 180 * Math.PI;
|
|
73
|
+
if (this.rotationV < Math.PI / 180) this.rotationV = Math.PI / 180;
|
|
74
|
+
if (this.rotationV > Math.PI - Math.PI / 180) this.rotationV = Math.PI - Math.PI / 180;
|
|
75
|
+
this.updateCameraPosition();
|
|
76
|
+
}
|
|
77
|
+
handleWheelEvent(event) {
|
|
78
|
+
event.preventDefault();
|
|
79
|
+
if (this.isGlobalFirstMove) {
|
|
80
|
+
this.isGlobalFirstMove = false;
|
|
144
81
|
this.dispatchEvent({
|
|
145
|
-
type: '
|
|
146
|
-
position: this.object.position,
|
|
147
|
-
target: this.target
|
|
82
|
+
type: 'start'
|
|
148
83
|
});
|
|
149
84
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
85
|
+
if (this.isCurrentFirstMove) {
|
|
86
|
+
this.isCurrentFirstMove = false;
|
|
87
|
+
this.rotationH = Math.atan2(this.object.position.x, this.object.position.z);
|
|
88
|
+
this.rotationV = Math.acos(this.object.position.y / this.radius);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const zoomSpeed = 0.3;
|
|
92
|
+
const minRadius = 0.1;
|
|
93
|
+
const maxRadius = 100000;
|
|
94
|
+
const targetRadius = this.radius + event.deltaY * zoomSpeed;
|
|
95
|
+
const clampedRadius = Math.max(minRadius, Math.min(maxRadius, targetRadius));
|
|
96
|
+
|
|
97
|
+
// TODO: 优化 统一在updateCameraPosition处理
|
|
98
|
+
gsap.to(this, {
|
|
99
|
+
duration: 0.2,
|
|
100
|
+
radius: clampedRadius,
|
|
101
|
+
ease: 'power3.out',
|
|
102
|
+
onUpdate: () => {
|
|
103
|
+
this.updateCameraPosition();
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
updateCameraPosition() {
|
|
108
|
+
// TODO: 有些生硬,加些过度动画
|
|
109
|
+
this.object.position.set(this.radius * Math.sin(this.rotationV) * Math.sin(this.rotationH), this.radius * Math.cos(this.rotationV), this.radius * Math.sin(this.rotationV) * Math.cos(this.rotationH));
|
|
110
|
+
this.update();
|
|
111
|
+
this.dispatchEvent({
|
|
112
|
+
type: 'change',
|
|
113
|
+
position: this.object.position,
|
|
114
|
+
target: this.target
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
153
118
|
export default FollowOrbitControls;
|
|
154
119
|
//# sourceMappingURL=FollowOrbitControls.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EventDispatcher","Vector3","gsap","FollowOrbitControls","_EventDispatcher","_inherits","_super","_createSuper","object","domElement","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","target","radius","getDistance","rotationH","Math","atan2","position","x","z","rotationV","acos","y","isMouseDown","isCurrentFirstMove","isGlobalFirstMove","addEventListener","handleMousedown","bind","handleMouseup","handleMousemove","handleWheelEvent","_createClass","key","value","dispose","removeEventListener","update","lookAt","distanceTo","event","dispatchEvent","type","movementX","PI","movementY","updateCameraPosition","_this2","preventDefault","zoomSpeed","minRadius","maxRadius","targetRadius","deltaY","clampedRadius","max","min","to","duration","ease","onUpdate","set","sin","cos"],"sources":["../../../../src/core/Camera/PerspectiveCamera/FollowOrbitControls.ts"],"sourcesContent":["import type { Camera } from '@anov/3d-core'\nimport { EventDispatcher, Vector3 } from '@anov/3d-core'\nimport { gsap } from 'gsap'\n\nclass FollowOrbitControls extends EventDispatcher {\n radius: number\n target: Vector3\n\n private object: Camera\n private domElement: HTMLElement\n\n private rotationH: number\n private rotationV: number\n private isMouseDown: boolean\n private isCurrentFirstMove: boolean\n private isGlobalFirstMove: boolean\n\n constructor(object: Camera, domElement: HTMLElement) {\n super()\n\n this.object = object\n this.domElement = domElement\n this.target = new Vector3()\n this.radius = this.getDistance()\n this.rotationH = Math.atan2(this.object.position.x, this.object.position.z)\n this.rotationV = Math.acos(this.object.position.y / this.radius)\n\n this.isMouseDown = false\n this.isCurrentFirstMove = true\n this.isGlobalFirstMove = true\n\n this.domElement.addEventListener('mousedown', this.handleMousedown.bind(this))\n this.domElement.addEventListener('mouseup', this.handleMouseup.bind(this))\n this.domElement.addEventListener('mousemove', this.handleMousemove.bind(this))\n this.domElement.addEventListener('wheel', this.handleWheelEvent.bind(this))\n }\n\n dispose() {\n this.domElement.removeEventListener('mousedown', this.handleMousedown.bind(this))\n this.domElement.removeEventListener('mouseup', this.handleMouseup.bind(this))\n this.domElement.removeEventListener('mousemove', this.handleMousemove.bind(this))\n this.domElement.removeEventListener('wheel', this.handleWheelEvent.bind(this))\n }\n\n update() {\n this.object.lookAt(this.target)\n }\n\n private getDistance() {\n return this.object.position.distanceTo(this.target)\n }\n\n private handleMouseup() {\n this.isMouseDown = false\n }\n\n private handleMousedown() {\n this.isMouseDown = true\n this.isCurrentFirstMove = true\n }\n\n /**\n * handle Mousemove\n * @param event\n * @returns\n */\n private handleMousemove(event: MouseEvent) {\n if (!this.isMouseDown)\n return\n\n if (this.isGlobalFirstMove) {\n this.isGlobalFirstMove = false\n this.dispatchEvent({\n type: 'start',\n })\n }\n\n if (this.isCurrentFirstMove) {\n this.isCurrentFirstMove = false\n this.rotationH = Math.atan2(this.object.position.x, this.object.position.z)\n this.rotationV = Math.acos(this.object.position.y / this.radius)\n\n return\n }\n\n this.rotationH -= (event.movementX / 180) * Math.PI\n this.rotationV -= (event.movementY / 180) * Math.PI\n\n if (this.rotationV < Math.PI / 180)\n this.rotationV = Math.PI / 180\n if (this.rotationV > Math.PI - Math.PI / 180)\n this.rotationV = Math.PI - Math.PI / 180\n\n this.updateCameraPosition()\n }\n\n private handleWheelEvent(event: WheelEvent) {\n event.preventDefault()\n\n if (this.isGlobalFirstMove) {\n this.isGlobalFirstMove = false\n this.dispatchEvent({\n type: 'start',\n })\n }\n\n if (this.isCurrentFirstMove) {\n this.isCurrentFirstMove = false\n this.rotationH = Math.atan2(this.object.position.x, this.object.position.z)\n this.rotationV = Math.acos(this.object.position.y / this.radius)\n\n return\n }\n\n const zoomSpeed = 0.3\n const minRadius = 0.1\n const maxRadius = 100000\n const targetRadius = this.radius + event.deltaY * zoomSpeed\n const clampedRadius = Math.max(minRadius, Math.min(maxRadius, targetRadius))\n\n // TODO: 优化 统一在updateCameraPosition处理\n gsap.to(this, {\n duration: 0.2,\n radius: clampedRadius,\n ease: 'power3.out',\n onUpdate: () => {\n this.updateCameraPosition()\n },\n })\n }\n\n private updateCameraPosition() {\n // TODO: 有些生硬,加些过度动画\n this.object.position.set(\n this.radius * Math.sin(this.rotationV) * Math.sin(this.rotationH),\n this.radius * Math.cos(this.rotationV),\n this.radius * Math.sin(this.rotationV) * Math.cos(this.rotationH),\n )\n\n this.update()\n\n this.dispatchEvent({\n type: 'change',\n position: this.object.position,\n target: this.target,\n })\n }\n}\n\nexport default FollowOrbitControls\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["EventDispatcher","Vector3","gsap","FollowOrbitControls","constructor","object","domElement","_defineProperty","target","radius","getDistance","rotationH","Math","atan2","position","x","z","rotationV","acos","y","isMouseDown","isCurrentFirstMove","isGlobalFirstMove","addEventListener","handleMousedown","bind","handleMouseup","handleMousemove","handleWheelEvent","dispose","removeEventListener","update","lookAt","distanceTo","event","dispatchEvent","type","movementX","PI","movementY","updateCameraPosition","preventDefault","zoomSpeed","minRadius","maxRadius","targetRadius","deltaY","clampedRadius","max","min","to","duration","ease","onUpdate","set","sin","cos"],"sources":["../../../../src/core/Camera/PerspectiveCamera/FollowOrbitControls.ts"],"sourcesContent":["import type { Camera } from '@anov/3d-core'\nimport { EventDispatcher, Vector3 } from '@anov/3d-core'\nimport { gsap } from 'gsap'\n\nclass FollowOrbitControls extends EventDispatcher {\n radius: number\n target: Vector3\n\n private object: Camera\n private domElement: HTMLElement\n\n private rotationH: number\n private rotationV: number\n private isMouseDown: boolean\n private isCurrentFirstMove: boolean\n private isGlobalFirstMove: boolean\n\n constructor(object: Camera, domElement: HTMLElement) {\n super()\n\n this.object = object\n this.domElement = domElement\n this.target = new Vector3()\n this.radius = this.getDistance()\n this.rotationH = Math.atan2(this.object.position.x, this.object.position.z)\n this.rotationV = Math.acos(this.object.position.y / this.radius)\n\n this.isMouseDown = false\n this.isCurrentFirstMove = true\n this.isGlobalFirstMove = true\n\n this.domElement.addEventListener('mousedown', this.handleMousedown.bind(this))\n this.domElement.addEventListener('mouseup', this.handleMouseup.bind(this))\n this.domElement.addEventListener('mousemove', this.handleMousemove.bind(this))\n this.domElement.addEventListener('wheel', this.handleWheelEvent.bind(this))\n }\n\n dispose() {\n this.domElement.removeEventListener('mousedown', this.handleMousedown.bind(this))\n this.domElement.removeEventListener('mouseup', this.handleMouseup.bind(this))\n this.domElement.removeEventListener('mousemove', this.handleMousemove.bind(this))\n this.domElement.removeEventListener('wheel', this.handleWheelEvent.bind(this))\n }\n\n update() {\n this.object.lookAt(this.target)\n }\n\n private getDistance() {\n return this.object.position.distanceTo(this.target)\n }\n\n private handleMouseup() {\n this.isMouseDown = false\n }\n\n private handleMousedown() {\n this.isMouseDown = true\n this.isCurrentFirstMove = true\n }\n\n /**\n * handle Mousemove\n * @param event\n * @returns\n */\n private handleMousemove(event: MouseEvent) {\n if (!this.isMouseDown)\n return\n\n if (this.isGlobalFirstMove) {\n this.isGlobalFirstMove = false\n this.dispatchEvent({\n type: 'start',\n })\n }\n\n if (this.isCurrentFirstMove) {\n this.isCurrentFirstMove = false\n this.rotationH = Math.atan2(this.object.position.x, this.object.position.z)\n this.rotationV = Math.acos(this.object.position.y / this.radius)\n\n return\n }\n\n this.rotationH -= (event.movementX / 180) * Math.PI\n this.rotationV -= (event.movementY / 180) * Math.PI\n\n if (this.rotationV < Math.PI / 180)\n this.rotationV = Math.PI / 180\n if (this.rotationV > Math.PI - Math.PI / 180)\n this.rotationV = Math.PI - Math.PI / 180\n\n this.updateCameraPosition()\n }\n\n private handleWheelEvent(event: WheelEvent) {\n event.preventDefault()\n\n if (this.isGlobalFirstMove) {\n this.isGlobalFirstMove = false\n this.dispatchEvent({\n type: 'start',\n })\n }\n\n if (this.isCurrentFirstMove) {\n this.isCurrentFirstMove = false\n this.rotationH = Math.atan2(this.object.position.x, this.object.position.z)\n this.rotationV = Math.acos(this.object.position.y / this.radius)\n\n return\n }\n\n const zoomSpeed = 0.3\n const minRadius = 0.1\n const maxRadius = 100000\n const targetRadius = this.radius + event.deltaY * zoomSpeed\n const clampedRadius = Math.max(minRadius, Math.min(maxRadius, targetRadius))\n\n // TODO: 优化 统一在updateCameraPosition处理\n gsap.to(this, {\n duration: 0.2,\n radius: clampedRadius,\n ease: 'power3.out',\n onUpdate: () => {\n this.updateCameraPosition()\n },\n })\n }\n\n private updateCameraPosition() {\n // TODO: 有些生硬,加些过度动画\n this.object.position.set(\n this.radius * Math.sin(this.rotationV) * Math.sin(this.rotationH),\n this.radius * Math.cos(this.rotationV),\n this.radius * Math.sin(this.rotationV) * Math.cos(this.rotationH),\n )\n\n this.update()\n\n this.dispatchEvent({\n type: 'change',\n position: this.object.position,\n target: this.target,\n })\n }\n}\n\nexport default FollowOrbitControls\n"],"mappings":"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"}
|