@anov/3d-ability 0.0.142 → 0.0.143

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/dist/business/Animation/motion/index.js +56 -35
  2. package/dist/business/Animation/motion/index.js.map +1 -1
  3. package/dist/business/Animation/type.js +2 -2
  4. package/dist/business/Area/Fence/FenceBase.js +187 -146
  5. package/dist/business/Area/Fence/FenceBase.js.map +1 -1
  6. package/dist/business/Area/Fence/fence_base_01.js +112 -120
  7. package/dist/business/Area/Fence/fence_base_01.js.map +1 -1
  8. package/dist/business/Area/Fence/fence_feeting_01.js +130 -218
  9. package/dist/business/Area/Fence/fence_feeting_01.js.map +1 -1
  10. package/dist/business/Area/Fence/fence_roll_01.js +130 -140
  11. package/dist/business/Area/Fence/fence_roll_01.js.map +1 -1
  12. package/dist/business/Area/FillArea/FillAreaBase.js +126 -87
  13. package/dist/business/Area/FillArea/FillAreaBase.js.map +1 -1
  14. package/dist/business/Area/FillArea/fillArea_face_01.js +98 -72
  15. package/dist/business/Area/FillArea/fillArea_face_01.js.map +1 -1
  16. package/dist/business/Area/FillArea/fillArea_line_01.js +94 -66
  17. package/dist/business/Area/FillArea/fillArea_line_01.js.map +1 -1
  18. package/dist/business/Area/index.js +483 -267
  19. package/dist/business/Area/index.js.map +1 -1
  20. package/dist/business/Area/tool.js +26 -14
  21. package/dist/business/Area/tool.js.map +1 -1
  22. package/dist/business/Base/ObjectLayer.js +46 -21
  23. package/dist/business/Base/ObjectLayer.js.map +1 -1
  24. package/dist/business/Batch/index.js +234 -189
  25. package/dist/business/Batch/index.js.map +1 -1
  26. package/dist/business/Box/index.js +81 -52
  27. package/dist/business/Box/index.js.map +1 -1
  28. package/dist/business/Cylinder/index.js +79 -51
  29. package/dist/business/Cylinder/index.js.map +1 -1
  30. package/dist/business/Flyline/bubble/CircleBubble.js +9 -1
  31. package/dist/business/Flyline/bubble/CircleBubble.js.map +1 -1
  32. package/dist/business/Flyline/bubble/index.js +21 -7
  33. package/dist/business/Flyline/bubble/index.js.map +1 -1
  34. package/dist/business/Flyline/index.js +162 -96
  35. package/dist/business/Flyline/index.js.map +1 -1
  36. package/dist/business/Flyline/line/ArcLine.js +291 -208
  37. package/dist/business/Flyline/line/ArcLine.js.map +1 -1
  38. package/dist/business/Flyline/line/index.js +22 -8
  39. package/dist/business/Flyline/line/index.js.map +1 -1
  40. package/dist/business/HeatMap/HeatMap.js +467 -380
  41. package/dist/business/HeatMap/HeatMap.js.map +1 -1
  42. package/dist/business/HeatMap/core.js +525 -405
  43. package/dist/business/HeatMap/core.js.map +1 -1
  44. package/dist/business/HeatMap/shader.js +3 -69
  45. package/dist/business/HeatMap/shader.js.map +1 -1
  46. package/dist/business/InfoPanel/index.js +242 -201
  47. package/dist/business/InfoPanel/index.js.map +1 -1
  48. package/dist/business/Line/index.js +88 -55
  49. package/dist/business/Line/index.js.map +1 -1
  50. package/dist/business/Mark/KeyframeAnimation.js +176 -145
  51. package/dist/business/Mark/KeyframeAnimation.js.map +1 -1
  52. package/dist/business/Mark/index.js +294 -196
  53. package/dist/business/Mark/index.js.map +1 -1
  54. package/dist/business/Mark/shader/tanhao.js +3 -36
  55. package/dist/business/Mark/shader/tanhao.js.map +1 -1
  56. package/dist/business/Mark/type.js +1 -1
  57. package/dist/business/MaterialSwitch/MaterialSwitchSystem.js +551 -377
  58. package/dist/business/MaterialSwitch/MaterialSwitchSystem.js.map +1 -1
  59. package/dist/business/MaterialSwitch/inject.js +58 -92
  60. package/dist/business/MaterialSwitch/inject.js.map +1 -1
  61. package/dist/business/MaterialSwitch/shader/finalFade.js +2 -74
  62. package/dist/business/MaterialSwitch/shader/finalFade.js.map +1 -1
  63. package/dist/business/MaterialSwitch/shader/ground.js +16 -95
  64. package/dist/business/MaterialSwitch/shader/ground.js.map +1 -1
  65. package/dist/business/MaterialSwitch/shader/groundBase64.js +3 -9
  66. package/dist/business/MaterialSwitch/shader/groundBase64.js.map +1 -1
  67. package/dist/business/MaterialSwitch/shader/realFade.js +9 -48
  68. package/dist/business/MaterialSwitch/shader/realFade.js.map +1 -1
  69. package/dist/business/Plane/index.js +78 -51
  70. package/dist/business/Plane/index.js.map +1 -1
  71. package/dist/business/Poi/index.js +336 -248
  72. package/dist/business/Poi/index.js.map +1 -1
  73. package/dist/business/Poi/link/Cylinder.js +89 -56
  74. package/dist/business/Poi/link/Cylinder.js.map +1 -1
  75. package/dist/business/Poi/link/Pyramid.js +165 -104
  76. package/dist/business/Poi/link/Pyramid.js.map +1 -1
  77. package/dist/business/Poi/link/index.js +114 -54
  78. package/dist/business/Poi/link/index.js.map +1 -1
  79. package/dist/business/Poi/panel/index.js +373 -315
  80. package/dist/business/Poi/panel/index.js.map +1 -1
  81. package/dist/business/Poi/panel/utils.js +10 -5
  82. package/dist/business/Poi/panel/utils.js.map +1 -1
  83. package/dist/business/Poi/particle/DoubleCircle.js +107 -71
  84. package/dist/business/Poi/particle/DoubleCircle.js.map +1 -1
  85. package/dist/business/Poi/particle/DynamicCircle.js +111 -75
  86. package/dist/business/Poi/particle/DynamicCircle.js.map +1 -1
  87. package/dist/business/Poi/particle/SingleCircle.js +98 -62
  88. package/dist/business/Poi/particle/SingleCircle.js.map +1 -1
  89. package/dist/business/Poi/particle/index.js +117 -49
  90. package/dist/business/Poi/particle/index.js.map +1 -1
  91. package/dist/business/Poi/shader/circle.js +3 -31
  92. package/dist/business/Poi/shader/circle.js.map +1 -1
  93. package/dist/business/Poi/shader/cylinder.js +3 -37
  94. package/dist/business/Poi/shader/cylinder.js.map +1 -1
  95. package/dist/business/Poi/shader/doubleCircle.js +3 -55
  96. package/dist/business/Poi/shader/doubleCircle.js.map +1 -1
  97. package/dist/business/Poi/shader/dynamicCircle.js +3 -67
  98. package/dist/business/Poi/shader/dynamicCircle.js.map +1 -1
  99. package/dist/business/Poi/title/Border.js +27 -7
  100. package/dist/business/Poi/title/Border.js.map +1 -1
  101. package/dist/business/Poi/title/Ellipse.js +27 -7
  102. package/dist/business/Poi/title/Ellipse.js.map +1 -1
  103. package/dist/business/Poi/title/index.js +292 -208
  104. package/dist/business/Poi/title/index.js.map +1 -1
  105. package/dist/business/Poi/tools.js +17 -18
  106. package/dist/business/Poi/tools.js.map +1 -1
  107. package/dist/business/Sphere/index.js +72 -47
  108. package/dist/business/Sphere/index.js.map +1 -1
  109. package/dist/business/Spline/index.js +245 -190
  110. package/dist/business/Spline/index.js.map +1 -1
  111. package/dist/business/SplitBuilding/index.js +536 -327
  112. package/dist/business/SplitBuilding/index.js.map +1 -1
  113. package/dist/business/SplitBuilding/type.js +2 -2
  114. package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js +275 -218
  115. package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js.map +1 -1
  116. package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js +177 -132
  117. package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js.map +1 -1
  118. package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js +1 -51
  119. package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js.map +1 -1
  120. package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js +1 -6
  121. package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js.map +1 -1
  122. package/dist/business/TrafficComponents/base.js +55 -32
  123. package/dist/business/TrafficComponents/base.js.map +1 -1
  124. package/dist/business/TrafficComponents/utils.js +24 -25
  125. package/dist/business/TrafficComponents/utils.js.map +1 -1
  126. package/dist/business/Utils/Curve.js +56 -40
  127. package/dist/business/Utils/Curve.js.map +1 -1
  128. package/dist/business/Utils/constant.js +1 -1
  129. package/dist/business/Utils/constant.js.map +1 -1
  130. package/dist/business/Utils/defineProps.js +14 -13
  131. package/dist/business/Utils/defineProps.js.map +1 -1
  132. package/dist/business/Utils/round-curve.js +153 -127
  133. package/dist/business/Utils/round-curve.js.map +1 -1
  134. package/dist/business/VideoPanel/index.js +319 -258
  135. package/dist/business/VideoPanel/index.js.map +1 -1
  136. package/dist/business/Water/index.js +108 -78
  137. package/dist/business/Water/index.js.map +1 -1
  138. package/dist/business/Water/types.js +1 -1
  139. package/dist/business/Water/types.js.map +1 -1
  140. package/dist/core/Camera/PerspectiveCamera/CameraExpand.js +449 -383
  141. package/dist/core/Camera/PerspectiveCamera/CameraExpand.js.map +1 -1
  142. package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js +142 -107
  143. package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js.map +1 -1
  144. package/dist/core/Controls/FirstViewControl/index.js +96 -84
  145. package/dist/core/Controls/FirstViewControl/index.js.map +1 -1
  146. package/dist/core/Controls/ThirdViewControl/action/input.js +98 -77
  147. package/dist/core/Controls/ThirdViewControl/action/input.js.map +1 -1
  148. package/dist/core/Controls/ThirdViewControl/config/constants.js +1 -1
  149. package/dist/core/Controls/ThirdViewControl/config/constants.js.map +1 -1
  150. package/dist/core/Controls/ThirdViewControl/index.js +28 -19
  151. package/dist/core/Controls/ThirdViewControl/index.js.map +1 -1
  152. package/dist/core/Controls/ThirdViewControl/player/animation.js +155 -126
  153. package/dist/core/Controls/ThirdViewControl/player/animation.js.map +1 -1
  154. package/dist/core/Controls/ThirdViewControl/player/camera.js +63 -47
  155. package/dist/core/Controls/ThirdViewControl/player/camera.js.map +1 -1
  156. package/dist/core/Controls/ThirdViewControl/player/control.js +49 -39
  157. package/dist/core/Controls/ThirdViewControl/player/control.js.map +1 -1
  158. package/dist/core/Controls/ThirdViewControl/player.js +91 -66
  159. package/dist/core/Controls/ThirdViewControl/player.js.map +1 -1
  160. package/dist/core/Controls/base.js +30 -14
  161. package/dist/core/Controls/base.js.map +1 -1
  162. package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js +131 -92
  163. package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js.map +1 -1
  164. package/dist/core/Debug/PerformanceInfo/Performance.js +47 -22
  165. package/dist/core/Debug/PerformanceInfo/Performance.js.map +1 -1
  166. package/dist/core/Light/PointLight/PointLightExt.js +21 -4
  167. package/dist/core/Light/PointLight/PointLightExt.js.map +1 -1
  168. package/dist/core/Material/FinirMaterial/FinirMaterial.js +57 -37
  169. package/dist/core/Material/FinirMaterial/FinirMaterial.js.map +1 -1
  170. package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js +153 -116
  171. package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js.map +1 -1
  172. package/dist/core/Material/PristineGridMaterial/shader/fragment.js +1 -95
  173. package/dist/core/Material/PristineGridMaterial/shader/fragment.js.map +1 -1
  174. package/dist/core/Material/PristineGridMaterial/shader/vertex.js +1 -26
  175. package/dist/core/Material/PristineGridMaterial/shader/vertex.js.map +1 -1
  176. package/dist/core/Material/SurfaceMaterial/index.js +172 -76
  177. package/dist/core/Material/SurfaceMaterial/index.js.map +1 -1
  178. package/dist/core/Material/decorators.js +11 -6
  179. package/dist/core/Material/decorators.js.map +1 -1
  180. package/dist/core/PostEffects/addACESFilmicToneMappingPass.js +12 -16
  181. package/dist/core/PostEffects/addACESFilmicToneMappingPass.js.map +1 -1
  182. package/dist/core/PostEffects/addBrightnessContrastPass.js +13 -17
  183. package/dist/core/PostEffects/addBrightnessContrastPass.js.map +1 -1
  184. package/dist/core/PostEffects/bloomPass.js +10 -17
  185. package/dist/core/PostEffects/bloomPass.js.map +1 -1
  186. package/dist/core/PostEffects/bloomSelect.js +43 -60
  187. package/dist/core/PostEffects/bloomSelect.js.map +1 -1
  188. package/dist/core/PostEffects/colorifyPass.js +13 -17
  189. package/dist/core/PostEffects/colorifyPass.js.map +1 -1
  190. package/dist/core/PostEffects/index.js +22 -28
  191. package/dist/core/PostEffects/index.js.map +1 -1
  192. package/dist/core/PostEffects/outlinePass.js +50 -37
  193. package/dist/core/PostEffects/outlinePass.js.map +1 -1
  194. package/dist/core/PostEffects/postprocessing.js +12 -14
  195. package/dist/core/PostEffects/postprocessing.js.map +1 -1
  196. package/dist/core/PostEffects/saoPass.js +10 -15
  197. package/dist/core/PostEffects/saoPass.js.map +1 -1
  198. package/dist/core/PostEffects/shader/colorify.js +3 -22
  199. package/dist/core/PostEffects/shader/colorify.js.map +1 -1
  200. package/dist/core/PostEffects/shader/gammaCorrectionShader.js +3 -27
  201. package/dist/core/PostEffects/shader/gammaCorrectionShader.js.map +1 -1
  202. package/dist/core/PostEffects/shader/mapping.js +3 -66
  203. package/dist/core/PostEffects/shader/mapping.js.map +1 -1
  204. package/dist/core/PostEffects/shader/thermalMaging.js +3 -28
  205. package/dist/core/PostEffects/shader/thermalMaging.js.map +1 -1
  206. package/dist/core/SceneEffect/grow/grow.js +101 -85
  207. package/dist/core/SceneEffect/grow/grow.js.map +1 -1
  208. package/dist/core/SceneEffect/grow/style_down.js +77 -60
  209. package/dist/core/SceneEffect/grow/style_down.js.map +1 -1
  210. package/dist/core/SceneEffect/grow/style_up.js +81 -64
  211. package/dist/core/SceneEffect/grow/style_up.js.map +1 -1
  212. package/dist/core/SceneEffect/grow/type.js +2 -2
  213. package/dist/core/SceneEffect/grow/type.js.map +1 -1
  214. package/dist/core/WeatherSystem/DynamicWeatherSystem.js +76 -51
  215. package/dist/core/WeatherSystem/DynamicWeatherSystem.js.map +1 -1
  216. package/dist/core/WeatherSystem/hdr/index.js +105 -69
  217. package/dist/core/WeatherSystem/hdr/index.js.map +1 -1
  218. package/dist/core/WeatherSystem/index.js +124 -77
  219. package/dist/core/WeatherSystem/index.js.map +1 -1
  220. package/dist/core/WeatherSystem/objects/fog/index.js +80 -52
  221. package/dist/core/WeatherSystem/objects/fog/index.js.map +1 -1
  222. package/dist/core/WeatherSystem/objects/rain/index.js +84 -72
  223. package/dist/core/WeatherSystem/objects/rain/index.js.map +1 -1
  224. package/dist/core/WeatherSystem/objects/rain/lineRain.js +118 -88
  225. package/dist/core/WeatherSystem/objects/rain/lineRain.js.map +1 -1
  226. package/dist/core/WeatherSystem/objects/rain/plane.js +146 -116
  227. package/dist/core/WeatherSystem/objects/rain/plane.js.map +1 -1
  228. package/dist/core/WeatherSystem/objects/rain/point.js +148 -100
  229. package/dist/core/WeatherSystem/objects/rain/point.js.map +1 -1
  230. package/dist/core/WeatherSystem/objects/sky/cloud.js +104 -71
  231. package/dist/core/WeatherSystem/objects/sky/cloud.js.map +1 -1
  232. package/dist/core/WeatherSystem/objects/sky/index.js +84 -66
  233. package/dist/core/WeatherSystem/objects/sky/index.js.map +1 -1
  234. package/dist/core/WeatherSystem/objects/sky/outline.js +45 -25
  235. package/dist/core/WeatherSystem/objects/sky/outline.js.map +1 -1
  236. package/dist/core/WeatherSystem/shaders/cloud.js +3 -74
  237. package/dist/core/WeatherSystem/shaders/cloud.js.map +1 -1
  238. package/dist/core/WeatherSystem/shaders/fog.js +3 -103
  239. package/dist/core/WeatherSystem/shaders/fog.js.map +1 -1
  240. package/dist/core/WeatherSystem/shaders/rain.js +7 -206
  241. package/dist/core/WeatherSystem/shaders/rain.js.map +1 -1
  242. package/dist/core/WeatherSystem/shaders/sky.js +3 -87
  243. package/dist/core/WeatherSystem/shaders/sky.js.map +1 -1
  244. package/dist/core/WeatherSystem/sky/index.js +135 -104
  245. package/dist/core/WeatherSystem/sky/index.js.map +1 -1
  246. package/dist/core/WeatherSystem/utils/constant.js +38 -44
  247. package/dist/core/WeatherSystem/utils/constant.js.map +1 -1
  248. package/dist/core/WeatherSystem/utils/math.js +25 -18
  249. package/dist/core/WeatherSystem/utils/math.js.map +1 -1
  250. package/dist/core/WeatherSystem/utils/type.js +1 -1
  251. package/dist/core/WeatherSystem/utils/type.js.map +1 -1
  252. package/dist/core/WeatherSystem/weather/index.js +141 -96
  253. package/dist/core/WeatherSystem/weather/index.js.map +1 -1
  254. package/dist/utils/index.js +1 -1
  255. package/dist/utils/index.js.map +1 -1
  256. package/package.json +3 -3
@@ -1 +1 @@
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
+ {"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,119 +1,154 @@
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); }
1
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; }
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); }
13
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
14
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
4
15
  import { EventDispatcher, Vector3 } from '@anov/3d-core';
5
16
  import { gsap } from 'gsap';
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));
17
+ var FollowOrbitControls = /*#__PURE__*/function (_EventDispatcher) {
18
+ _inherits(FollowOrbitControls, _EventDispatcher);
19
+ var _super = _createSuper(FollowOrbitControls);
20
+ function FollowOrbitControls(object, domElement) {
21
+ var _this;
22
+ _classCallCheck(this, FollowOrbitControls);
23
+ _this = _super.call(this);
24
+ _defineProperty(_assertThisInitialized(_this), "radius", void 0);
25
+ _defineProperty(_assertThisInitialized(_this), "target", void 0);
26
+ _defineProperty(_assertThisInitialized(_this), "object", void 0);
27
+ _defineProperty(_assertThisInitialized(_this), "domElement", void 0);
28
+ _defineProperty(_assertThisInitialized(_this), "rotationH", void 0);
29
+ _defineProperty(_assertThisInitialized(_this), "rotationV", void 0);
30
+ _defineProperty(_assertThisInitialized(_this), "isMouseDown", void 0);
31
+ _defineProperty(_assertThisInitialized(_this), "isCurrentFirstMove", void 0);
32
+ _defineProperty(_assertThisInitialized(_this), "isGlobalFirstMove", void 0);
33
+ _this.object = object;
34
+ _this.domElement = domElement;
35
+ _this.target = new Vector3();
36
+ _this.radius = _this.getDistance();
37
+ _this.rotationH = Math.atan2(_this.object.position.x, _this.object.position.z);
38
+ _this.rotationV = Math.acos(_this.object.position.y / _this.radius);
39
+ _this.isMouseDown = false;
40
+ _this.isCurrentFirstMove = true;
41
+ _this.isGlobalFirstMove = true;
42
+ _this.domElement.addEventListener('mousedown', _this.handleMousedown.bind(_assertThisInitialized(_this)));
43
+ _this.domElement.addEventListener('mouseup', _this.handleMouseup.bind(_assertThisInitialized(_this)));
44
+ _this.domElement.addEventListener('mousemove', _this.handleMousemove.bind(_assertThisInitialized(_this)));
45
+ _this.domElement.addEventListener('wheel', _this.handleWheelEvent.bind(_assertThisInitialized(_this)));
46
+ return _this;
31
47
  }
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;
50
- }
51
-
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'
63
- });
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));
64
55
  }
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;
56
+ }, {
57
+ key: "update",
58
+ value: function update() {
59
+ this.object.lookAt(this.target);
70
60
  }
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;
81
- this.dispatchEvent({
82
- type: 'start'
83
- });
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;
84
70
  }
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;
71
+ }, {
72
+ key: "handleMousedown",
73
+ value: function handleMousedown() {
74
+ this.isMouseDown = true;
75
+ this.isCurrentFirstMove = true;
90
76
  }
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
77
 
97
- // TODO: 优化 统一在updateCameraPosition处理
98
- gsap.to(this, {
99
- duration: 0.2,
100
- radius: clampedRadius,
101
- ease: 'power3.out',
102
- onUpdate: () => {
103
- this.updateCameraPosition();
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
+ });
104
92
  }
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
- }
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
+
128
+ // TODO: 优化 统一在updateCameraPosition处理
129
+ gsap.to(this, {
130
+ duration: 0.2,
131
+ radius: clampedRadius,
132
+ ease: 'power3.out',
133
+ onUpdate: function onUpdate() {
134
+ _this2.updateCameraPosition();
135
+ }
136
+ });
137
+ }
138
+ }, {
139
+ key: "updateCameraPosition",
140
+ value: function updateCameraPosition() {
141
+ // TODO: 有些生硬,加些过度动画
142
+ 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));
143
+ this.update();
144
+ this.dispatchEvent({
145
+ type: 'change',
146
+ position: this.object.position,
147
+ target: this.target
148
+ });
149
+ }
150
+ }]);
151
+ return FollowOrbitControls;
152
+ }(EventDispatcher);
118
153
  export default FollowOrbitControls;
119
154
  //# sourceMappingURL=FollowOrbitControls.js.map
@@ -1 +1 @@
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":";;;AACA,SAASA,eAAe,EAAEC,OAAO,QAAQ,eAAe;AACxD,SAASC,IAAI,QAAQ,MAAM;AAE3B,MAAMC,mBAAmB,SAASH,eAAe,CAAC;EAahDI,WAAWA,CAACC,MAAc,EAAEC,UAAuB,EAAE;IACnD,KAAK,CAAC,CAAC;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAEP,IAAI,CAACF,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACE,MAAM,GAAG,IAAIP,OAAO,CAAC,CAAC;IAC3B,IAAI,CAACQ,MAAM,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC;IAChC,IAAI,CAACC,SAAS,GAAGC,IAAI,CAACC,KAAK,CAAC,IAAI,CAACR,MAAM,CAACS,QAAQ,CAACC,CAAC,EAAE,IAAI,CAACV,MAAM,CAACS,QAAQ,CAACE,CAAC,CAAC;IAC3E,IAAI,CAACC,SAAS,GAAGL,IAAI,CAACM,IAAI,CAAC,IAAI,CAACb,MAAM,CAACS,QAAQ,CAACK,CAAC,GAAG,IAAI,CAACV,MAAM,CAAC;IAEhE,IAAI,CAACW,WAAW,GAAG,KAAK;IACxB,IAAI,CAACC,kBAAkB,GAAG,IAAI;IAC9B,IAAI,CAACC,iBAAiB,GAAG,IAAI;IAE7B,IAAI,CAAChB,UAAU,CAACiB,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACC,eAAe,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9E,IAAI,CAACnB,UAAU,CAACiB,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACG,aAAa,CAACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,IAAI,CAACnB,UAAU,CAACiB,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACI,eAAe,CAACF,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9E,IAAI,CAACnB,UAAU,CAACiB,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACK,gBAAgB,CAACH,IAAI,CAAC,IAAI,CAAC,CAAC;EAC7E;EAEAI,OAAOA,CAAA,EAAG;IACR,IAAI,CAACvB,UAAU,CAACwB,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACN,eAAe,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjF,IAAI,CAACnB,UAAU,CAACwB,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACJ,aAAa,CAACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7E,IAAI,CAACnB,UAAU,CAACwB,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACH,eAAe,CAACF,IAAI,CAAC,IAAI,CAAC,CAAC;IACjF,IAAI,CAACnB,UAAU,CAACwB,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAACF,gBAAgB,CAACH,IAAI,CAAC,IAAI,CAAC,CAAC;EAChF;EAEAM,MAAMA,CAAA,EAAG;IACP,IAAI,CAAC1B,MAAM,CAAC2B,MAAM,CAAC,IAAI,CAACxB,MAAM,CAAC;EACjC;EAEQE,WAAWA,CAAA,EAAG;IACpB,OAAO,IAAI,CAACL,MAAM,CAACS,QAAQ,CAACmB,UAAU,CAAC,IAAI,CAACzB,MAAM,CAAC;EACrD;EAEQkB,aAAaA,CAAA,EAAG;IACtB,IAAI,CAACN,WAAW,GAAG,KAAK;EAC1B;EAEQI,eAAeA,CAAA,EAAG;IACxB,IAAI,CAACJ,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,kBAAkB,GAAG,IAAI;EAChC;;EAEA;AACF;AACA;AACA;AACA;EACUM,eAAeA,CAACO,KAAiB,EAAE;IACzC,IAAI,CAAC,IAAI,CAACd,WAAW,EACnB;IAEF,IAAI,IAAI,CAACE,iBAAiB,EAAE;MAC1B,IAAI,CAACA,iBAAiB,GAAG,KAAK;MAC9B,IAAI,CAACa,aAAa,CAAC;QACjBC,IAAI,EAAE;MACR,CAAC,CAAC;IACJ;IAEA,IAAI,IAAI,CAACf,kBAAkB,EAAE;MAC3B,IAAI,CAACA,kBAAkB,GAAG,KAAK;MAC/B,IAAI,CAACV,SAAS,GAAGC,IAAI,CAACC,KAAK,CAAC,IAAI,CAACR,MAAM,CAACS,QAAQ,CAACC,CAAC,EAAE,IAAI,CAACV,MAAM,CAACS,QAAQ,CAACE,CAAC,CAAC;MAC3E,IAAI,CAACC,SAAS,GAAGL,IAAI,CAACM,IAAI,CAAC,IAAI,CAACb,MAAM,CAACS,QAAQ,CAACK,CAAC,GAAG,IAAI,CAACV,MAAM,CAAC;MAEhE;IACF;IAEA,IAAI,CAACE,SAAS,IAAKuB,KAAK,CAACG,SAAS,GAAG,GAAG,GAAIzB,IAAI,CAAC0B,EAAE;IACnD,IAAI,CAACrB,SAAS,IAAKiB,KAAK,CAACK,SAAS,GAAG,GAAG,GAAI3B,IAAI,CAAC0B,EAAE;IAEnD,IAAI,IAAI,CAACrB,SAAS,GAAGL,IAAI,CAAC0B,EAAE,GAAG,GAAG,EAChC,IAAI,CAACrB,SAAS,GAAGL,IAAI,CAAC0B,EAAE,GAAG,GAAG;IAChC,IAAI,IAAI,CAACrB,SAAS,GAAGL,IAAI,CAAC0B,EAAE,GAAG1B,IAAI,CAAC0B,EAAE,GAAG,GAAG,EAC1C,IAAI,CAACrB,SAAS,GAAGL,IAAI,CAAC0B,EAAE,GAAG1B,IAAI,CAAC0B,EAAE,GAAG,GAAG;IAE1C,IAAI,CAACE,oBAAoB,CAAC,CAAC;EAC7B;EAEQZ,gBAAgBA,CAACM,KAAiB,EAAE;IAC1CA,KAAK,CAACO,cAAc,CAAC,CAAC;IAEtB,IAAI,IAAI,CAACnB,iBAAiB,EAAE;MAC1B,IAAI,CAACA,iBAAiB,GAAG,KAAK;MAC9B,IAAI,CAACa,aAAa,CAAC;QACjBC,IAAI,EAAE;MACR,CAAC,CAAC;IACJ;IAEA,IAAI,IAAI,CAACf,kBAAkB,EAAE;MAC3B,IAAI,CAACA,kBAAkB,GAAG,KAAK;MAC/B,IAAI,CAACV,SAAS,GAAGC,IAAI,CAACC,KAAK,CAAC,IAAI,CAACR,MAAM,CAACS,QAAQ,CAACC,CAAC,EAAE,IAAI,CAACV,MAAM,CAACS,QAAQ,CAACE,CAAC,CAAC;MAC3E,IAAI,CAACC,SAAS,GAAGL,IAAI,CAACM,IAAI,CAAC,IAAI,CAACb,MAAM,CAACS,QAAQ,CAACK,CAAC,GAAG,IAAI,CAACV,MAAM,CAAC;MAEhE;IACF;IAEA,MAAMiC,SAAS,GAAG,GAAG;IACrB,MAAMC,SAAS,GAAG,GAAG;IACrB,MAAMC,SAAS,GAAG,MAAM;IACxB,MAAMC,YAAY,GAAG,IAAI,CAACpC,MAAM,GAAGyB,KAAK,CAACY,MAAM,GAAGJ,SAAS;IAC3D,MAAMK,aAAa,GAAGnC,IAAI,CAACoC,GAAG,CAACL,SAAS,EAAE/B,IAAI,CAACqC,GAAG,CAACL,SAAS,EAAEC,YAAY,CAAC,CAAC;;IAE5E;IACA3C,IAAI,CAACgD,EAAE,CAAC,IAAI,EAAE;MACZC,QAAQ,EAAE,GAAG;MACb1C,MAAM,EAAEsC,aAAa;MACrBK,IAAI,EAAE,YAAY;MAClBC,QAAQ,EAAEA,CAAA,KAAM;QACd,IAAI,CAACb,oBAAoB,CAAC,CAAC;MAC7B;IACF,CAAC,CAAC;EACJ;EAEQA,oBAAoBA,CAAA,EAAG;IAC7B;IACA,IAAI,CAACnC,MAAM,CAACS,QAAQ,CAACwC,GAAG,CACtB,IAAI,CAAC7C,MAAM,GAAGG,IAAI,CAAC2C,GAAG,CAAC,IAAI,CAACtC,SAAS,CAAC,GAAGL,IAAI,CAAC2C,GAAG,CAAC,IAAI,CAAC5C,SAAS,CAAC,EACjE,IAAI,CAACF,MAAM,GAAGG,IAAI,CAAC4C,GAAG,CAAC,IAAI,CAACvC,SAAS,CAAC,EACtC,IAAI,CAACR,MAAM,GAAGG,IAAI,CAAC2C,GAAG,CAAC,IAAI,CAACtC,SAAS,CAAC,GAAGL,IAAI,CAAC4C,GAAG,CAAC,IAAI,CAAC7C,SAAS,CAClE,CAAC;IAED,IAAI,CAACoB,MAAM,CAAC,CAAC;IAEb,IAAI,CAACI,aAAa,CAAC;MACjBC,IAAI,EAAE,QAAQ;MACdtB,QAAQ,EAAE,IAAI,CAACT,MAAM,CAACS,QAAQ;MAC9BN,MAAM,EAAE,IAAI,CAACA;IACf,CAAC,CAAC;EACJ;AACF;AAEA,eAAeL,mBAAmB"}
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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"}