@anov/3d-ability 0.0.142 → 0.0.144

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 (257) 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.d.ts +1 -1
  78. package/dist/business/Poi/link/index.js +114 -54
  79. package/dist/business/Poi/link/index.js.map +1 -1
  80. package/dist/business/Poi/panel/index.js +373 -315
  81. package/dist/business/Poi/panel/index.js.map +1 -1
  82. package/dist/business/Poi/panel/utils.js +10 -5
  83. package/dist/business/Poi/panel/utils.js.map +1 -1
  84. package/dist/business/Poi/particle/DoubleCircle.js +107 -71
  85. package/dist/business/Poi/particle/DoubleCircle.js.map +1 -1
  86. package/dist/business/Poi/particle/DynamicCircle.js +111 -75
  87. package/dist/business/Poi/particle/DynamicCircle.js.map +1 -1
  88. package/dist/business/Poi/particle/SingleCircle.js +98 -62
  89. package/dist/business/Poi/particle/SingleCircle.js.map +1 -1
  90. package/dist/business/Poi/particle/index.js +117 -49
  91. package/dist/business/Poi/particle/index.js.map +1 -1
  92. package/dist/business/Poi/shader/circle.js +3 -31
  93. package/dist/business/Poi/shader/circle.js.map +1 -1
  94. package/dist/business/Poi/shader/cylinder.js +3 -37
  95. package/dist/business/Poi/shader/cylinder.js.map +1 -1
  96. package/dist/business/Poi/shader/doubleCircle.js +3 -55
  97. package/dist/business/Poi/shader/doubleCircle.js.map +1 -1
  98. package/dist/business/Poi/shader/dynamicCircle.js +3 -67
  99. package/dist/business/Poi/shader/dynamicCircle.js.map +1 -1
  100. package/dist/business/Poi/title/Border.js +27 -7
  101. package/dist/business/Poi/title/Border.js.map +1 -1
  102. package/dist/business/Poi/title/Ellipse.js +27 -7
  103. package/dist/business/Poi/title/Ellipse.js.map +1 -1
  104. package/dist/business/Poi/title/index.js +292 -208
  105. package/dist/business/Poi/title/index.js.map +1 -1
  106. package/dist/business/Poi/tools.js +17 -18
  107. package/dist/business/Poi/tools.js.map +1 -1
  108. package/dist/business/Sphere/index.js +72 -47
  109. package/dist/business/Sphere/index.js.map +1 -1
  110. package/dist/business/Spline/index.js +245 -190
  111. package/dist/business/Spline/index.js.map +1 -1
  112. package/dist/business/SplitBuilding/index.js +536 -327
  113. package/dist/business/SplitBuilding/index.js.map +1 -1
  114. package/dist/business/SplitBuilding/type.js +2 -2
  115. package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js +275 -218
  116. package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js.map +1 -1
  117. package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js +177 -132
  118. package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js.map +1 -1
  119. package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js +1 -51
  120. package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js.map +1 -1
  121. package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js +1 -6
  122. package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js.map +1 -1
  123. package/dist/business/TrafficComponents/base.js +55 -32
  124. package/dist/business/TrafficComponents/base.js.map +1 -1
  125. package/dist/business/TrafficComponents/utils.js +24 -25
  126. package/dist/business/TrafficComponents/utils.js.map +1 -1
  127. package/dist/business/Utils/Curve.js +56 -40
  128. package/dist/business/Utils/Curve.js.map +1 -1
  129. package/dist/business/Utils/constant.js +1 -1
  130. package/dist/business/Utils/constant.js.map +1 -1
  131. package/dist/business/Utils/defineProps.js +14 -13
  132. package/dist/business/Utils/defineProps.js.map +1 -1
  133. package/dist/business/Utils/round-curve.js +153 -127
  134. package/dist/business/Utils/round-curve.js.map +1 -1
  135. package/dist/business/VideoPanel/index.js +319 -258
  136. package/dist/business/VideoPanel/index.js.map +1 -1
  137. package/dist/business/Water/index.js +108 -78
  138. package/dist/business/Water/index.js.map +1 -1
  139. package/dist/business/Water/types.js +1 -1
  140. package/dist/business/Water/types.js.map +1 -1
  141. package/dist/core/Camera/PerspectiveCamera/CameraExpand.js +449 -383
  142. package/dist/core/Camera/PerspectiveCamera/CameraExpand.js.map +1 -1
  143. package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js +142 -107
  144. package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js.map +1 -1
  145. package/dist/core/Controls/FirstViewControl/index.js +96 -84
  146. package/dist/core/Controls/FirstViewControl/index.js.map +1 -1
  147. package/dist/core/Controls/ThirdViewControl/action/input.js +98 -77
  148. package/dist/core/Controls/ThirdViewControl/action/input.js.map +1 -1
  149. package/dist/core/Controls/ThirdViewControl/config/constants.js +1 -1
  150. package/dist/core/Controls/ThirdViewControl/config/constants.js.map +1 -1
  151. package/dist/core/Controls/ThirdViewControl/index.js +28 -19
  152. package/dist/core/Controls/ThirdViewControl/index.js.map +1 -1
  153. package/dist/core/Controls/ThirdViewControl/player/animation.js +155 -126
  154. package/dist/core/Controls/ThirdViewControl/player/animation.js.map +1 -1
  155. package/dist/core/Controls/ThirdViewControl/player/camera.js +63 -47
  156. package/dist/core/Controls/ThirdViewControl/player/camera.js.map +1 -1
  157. package/dist/core/Controls/ThirdViewControl/player/control.js +49 -39
  158. package/dist/core/Controls/ThirdViewControl/player/control.js.map +1 -1
  159. package/dist/core/Controls/ThirdViewControl/player.js +91 -66
  160. package/dist/core/Controls/ThirdViewControl/player.js.map +1 -1
  161. package/dist/core/Controls/base.js +30 -14
  162. package/dist/core/Controls/base.js.map +1 -1
  163. package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js +131 -92
  164. package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js.map +1 -1
  165. package/dist/core/Debug/PerformanceInfo/Performance.js +47 -22
  166. package/dist/core/Debug/PerformanceInfo/Performance.js.map +1 -1
  167. package/dist/core/Light/PointLight/PointLightExt.js +21 -4
  168. package/dist/core/Light/PointLight/PointLightExt.js.map +1 -1
  169. package/dist/core/Material/FinirMaterial/FinirMaterial.js +57 -37
  170. package/dist/core/Material/FinirMaterial/FinirMaterial.js.map +1 -1
  171. package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js +153 -116
  172. package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js.map +1 -1
  173. package/dist/core/Material/PristineGridMaterial/shader/fragment.js +1 -95
  174. package/dist/core/Material/PristineGridMaterial/shader/fragment.js.map +1 -1
  175. package/dist/core/Material/PristineGridMaterial/shader/vertex.js +1 -26
  176. package/dist/core/Material/PristineGridMaterial/shader/vertex.js.map +1 -1
  177. package/dist/core/Material/SurfaceMaterial/index.js +172 -76
  178. package/dist/core/Material/SurfaceMaterial/index.js.map +1 -1
  179. package/dist/core/Material/decorators.js +11 -6
  180. package/dist/core/Material/decorators.js.map +1 -1
  181. package/dist/core/PostEffects/addACESFilmicToneMappingPass.js +12 -16
  182. package/dist/core/PostEffects/addACESFilmicToneMappingPass.js.map +1 -1
  183. package/dist/core/PostEffects/addBrightnessContrastPass.js +13 -17
  184. package/dist/core/PostEffects/addBrightnessContrastPass.js.map +1 -1
  185. package/dist/core/PostEffects/bloomPass.js +10 -17
  186. package/dist/core/PostEffects/bloomPass.js.map +1 -1
  187. package/dist/core/PostEffects/bloomSelect.js +43 -60
  188. package/dist/core/PostEffects/bloomSelect.js.map +1 -1
  189. package/dist/core/PostEffects/colorifyPass.js +13 -17
  190. package/dist/core/PostEffects/colorifyPass.js.map +1 -1
  191. package/dist/core/PostEffects/index.js +22 -28
  192. package/dist/core/PostEffects/index.js.map +1 -1
  193. package/dist/core/PostEffects/outlinePass.js +50 -37
  194. package/dist/core/PostEffects/outlinePass.js.map +1 -1
  195. package/dist/core/PostEffects/postprocessing.js +12 -14
  196. package/dist/core/PostEffects/postprocessing.js.map +1 -1
  197. package/dist/core/PostEffects/saoPass.js +10 -15
  198. package/dist/core/PostEffects/saoPass.js.map +1 -1
  199. package/dist/core/PostEffects/shader/colorify.js +3 -22
  200. package/dist/core/PostEffects/shader/colorify.js.map +1 -1
  201. package/dist/core/PostEffects/shader/gammaCorrectionShader.js +3 -27
  202. package/dist/core/PostEffects/shader/gammaCorrectionShader.js.map +1 -1
  203. package/dist/core/PostEffects/shader/mapping.js +3 -66
  204. package/dist/core/PostEffects/shader/mapping.js.map +1 -1
  205. package/dist/core/PostEffects/shader/thermalMaging.js +3 -28
  206. package/dist/core/PostEffects/shader/thermalMaging.js.map +1 -1
  207. package/dist/core/SceneEffect/grow/grow.js +101 -85
  208. package/dist/core/SceneEffect/grow/grow.js.map +1 -1
  209. package/dist/core/SceneEffect/grow/style_down.js +77 -60
  210. package/dist/core/SceneEffect/grow/style_down.js.map +1 -1
  211. package/dist/core/SceneEffect/grow/style_up.js +81 -64
  212. package/dist/core/SceneEffect/grow/style_up.js.map +1 -1
  213. package/dist/core/SceneEffect/grow/type.js +2 -2
  214. package/dist/core/SceneEffect/grow/type.js.map +1 -1
  215. package/dist/core/WeatherSystem/DynamicWeatherSystem.js +76 -51
  216. package/dist/core/WeatherSystem/DynamicWeatherSystem.js.map +1 -1
  217. package/dist/core/WeatherSystem/hdr/index.js +105 -69
  218. package/dist/core/WeatherSystem/hdr/index.js.map +1 -1
  219. package/dist/core/WeatherSystem/index.js +124 -77
  220. package/dist/core/WeatherSystem/index.js.map +1 -1
  221. package/dist/core/WeatherSystem/objects/fog/index.js +80 -52
  222. package/dist/core/WeatherSystem/objects/fog/index.js.map +1 -1
  223. package/dist/core/WeatherSystem/objects/rain/index.js +84 -72
  224. package/dist/core/WeatherSystem/objects/rain/index.js.map +1 -1
  225. package/dist/core/WeatherSystem/objects/rain/lineRain.js +118 -88
  226. package/dist/core/WeatherSystem/objects/rain/lineRain.js.map +1 -1
  227. package/dist/core/WeatherSystem/objects/rain/plane.js +146 -116
  228. package/dist/core/WeatherSystem/objects/rain/plane.js.map +1 -1
  229. package/dist/core/WeatherSystem/objects/rain/point.js +148 -100
  230. package/dist/core/WeatherSystem/objects/rain/point.js.map +1 -1
  231. package/dist/core/WeatherSystem/objects/sky/cloud.js +104 -71
  232. package/dist/core/WeatherSystem/objects/sky/cloud.js.map +1 -1
  233. package/dist/core/WeatherSystem/objects/sky/index.js +84 -66
  234. package/dist/core/WeatherSystem/objects/sky/index.js.map +1 -1
  235. package/dist/core/WeatherSystem/objects/sky/outline.js +45 -25
  236. package/dist/core/WeatherSystem/objects/sky/outline.js.map +1 -1
  237. package/dist/core/WeatherSystem/shaders/cloud.js +3 -74
  238. package/dist/core/WeatherSystem/shaders/cloud.js.map +1 -1
  239. package/dist/core/WeatherSystem/shaders/fog.js +3 -103
  240. package/dist/core/WeatherSystem/shaders/fog.js.map +1 -1
  241. package/dist/core/WeatherSystem/shaders/rain.js +7 -206
  242. package/dist/core/WeatherSystem/shaders/rain.js.map +1 -1
  243. package/dist/core/WeatherSystem/shaders/sky.js +3 -87
  244. package/dist/core/WeatherSystem/shaders/sky.js.map +1 -1
  245. package/dist/core/WeatherSystem/sky/index.js +135 -104
  246. package/dist/core/WeatherSystem/sky/index.js.map +1 -1
  247. package/dist/core/WeatherSystem/utils/constant.js +38 -44
  248. package/dist/core/WeatherSystem/utils/constant.js.map +1 -1
  249. package/dist/core/WeatherSystem/utils/math.js +25 -18
  250. package/dist/core/WeatherSystem/utils/math.js.map +1 -1
  251. package/dist/core/WeatherSystem/utils/type.js +1 -1
  252. package/dist/core/WeatherSystem/utils/type.js.map +1 -1
  253. package/dist/core/WeatherSystem/weather/index.js +141 -96
  254. package/dist/core/WeatherSystem/weather/index.js.map +1 -1
  255. package/dist/utils/index.js +1 -1
  256. package/dist/utils/index.js.map +1 -1
  257. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"names":["Vector3","ObjectLayer","EBuildingSplitType","EDirection","BuildingSplit","constructor","building","_defineProperty","Map","timer","_building","init","floorGroups","sortedFloorLevels","aboveGroundFloorCount","undergroundFloorCount","hasRoof","parseFloors","Array","from","values","map","group","level","sort","a","b","traverse","object","type","name","startsWith","addToFloorGroup","mesh","originalPosition","position","clone","originalVisibility","visible","prefix","isUnderground","length","floorNum","parseInt","substring","isNaN","Math","max","component","_this$floorGroups$get","has","set","isRoof","components","get","push","split","options","floor","animation","animOption","Move","duration","currentAnimation","window","clearTimeout","resetBuilding","success","message","abs","Hide","hideAboveFloors","moveAboveFloorsDirection","Solo","showSoloFloor","targetFloor","floorGroup","floorLevel","copy","shouldBeVisible","moveAboveFloorsUp","distance","startPositions","targetPositions","targetPos","y","animatePositions","direction","rule","add","fromArray","getDirectionVector","vector","coefficient","Right","Left","Front","Back","Right_Front","Left_Front","Right_Back","Left_Back","startTime","performance","now","animate","currentTime","elapsed","progress","min","forEach","startPos","lerpVectors","requestAnimationFrame","setTimeout","getFloorCounts","aboveGround","underground"],"sources":["../../../src/business/SplitBuilding/index.ts"],"sourcesContent":["import { Group, Mesh, Vector3 } from '@anov/3d-core'\nimport type { Object3D } from '@anov/3d-core'\nimport ObjectLayer from '../Base/ObjectLayer'\nimport type { AnimationOption, Option } from './type'\nimport { EBuildingSplitType, EDirection } from './type'\n\ntype FloorComponent = {\n mesh: Object3D\n originalPosition: Vector3\n originalVisibility: boolean\n}\n\ntype FloorGroup = {\n level: number\n isUnderground: boolean\n isRoof: boolean\n components: FloorComponent[]\n}\n\nclass BuildingSplit extends ObjectLayer {\n private floorGroups: Map<string, FloorGroup> = new Map()\n private sortedFloorLevels: number[] = []\n private aboveGroundFloorCount = 0\n private undergroundFloorCount = 0\n private hasRoof = false\n private currentAnimation: { timer: number | null } = { timer: null }\n\n private _building: Object3D\n\n constructor(building: Object3D) {\n super()\n this._building = building\n this.init()\n }\n\n public get building() {\n return this._building\n }\n\n /**\n * 初始化建筑拆分器\n * @param building 建筑模型\n */\n public init(): void {\n this.floorGroups = new Map()\n this.sortedFloorLevels = []\n this.aboveGroundFloorCount = 0\n this.undergroundFloorCount = 0\n this.hasRoof = false\n\n // 解析所有楼层\n this.parseFloors()\n\n // 排序楼层编号从低到高\n this.sortedFloorLevels = Array.from(this.floorGroups.values())\n .map(group => group.level)\n .sort((a, b) => a - b)\n }\n\n /**\n * 解析建筑模型中的楼层\n */\n private parseFloors(): void {\n this.building.traverse((object) => {\n if (object.type === 'Mesh' || object.type === 'Group') {\n const name = object.name\n // 检查是否为屋顶\n if (name.startsWith('Roof')) {\n this.addToFloorGroup('Roof', {\n mesh: object,\n originalPosition: object.position.clone(),\n originalVisibility: object.visible,\n })\n this.hasRoof = true\n return\n }\n\n // 提取楼层前缀\n let prefix: string | null = null\n let level = 0\n let isUnderground = false\n\n if (name.startsWith('F') && name.length >= 3) {\n // 地上楼层\n const floorNum = parseInt(name.substring(1, 3))\n if (!isNaN(floorNum)) {\n prefix = `F${name.substring(1, 3)}`\n level = floorNum\n isUnderground = false\n this.aboveGroundFloorCount = Math.max(this.aboveGroundFloorCount, floorNum)\n }\n }\n else if (name.startsWith('B') && name.length >= 3) {\n // 地下楼层\n const floorNum = parseInt(name.substring(1, 3))\n if (!isNaN(floorNum)) {\n prefix = `B${name.substring(1, 3)}`\n level = -floorNum\n isUnderground = true\n this.undergroundFloorCount = Math.max(this.undergroundFloorCount, floorNum)\n }\n }\n\n if (prefix) {\n this.addToFloorGroup(prefix, {\n mesh: object,\n originalPosition: object.position.clone(),\n originalVisibility: object.visible,\n }, level, isUnderground)\n }\n }\n })\n }\n\n /**\n * 将组件添加到对应楼层分组\n */\n private addToFloorGroup(\n prefix: string,\n component: FloorComponent,\n level: number = this.aboveGroundFloorCount + 1,\n isUnderground = false,\n ): void {\n if (!this.floorGroups.has(prefix)) {\n this.floorGroups.set(prefix, {\n level,\n isUnderground,\n isRoof: prefix === 'Roof',\n components: [],\n })\n }\n\n this.floorGroups.get(prefix)?.components.push(component)\n }\n\n /**\n * 拆分楼层\n * @param options 拆分选项\n * @returns 成功或错误信息\n */\n public split(options): { success: boolean; message?: string } {\n const { floor, animation } = options\n const animOption: AnimationOption = animation || {\n type: EBuildingSplitType.Move,\n duration: 1000,\n }\n\n // 取消当前动画\n if (this.currentAnimation.timer !== null) {\n window.clearTimeout(this.currentAnimation.timer)\n this.currentAnimation.timer = null\n }\n\n // 处理 floor = 0 的情况:恢复完整状态\n if (floor === 0) {\n this.resetBuilding()\n return { success: true }\n }\n\n // 验证楼层参数\n if (floor > 0 && floor > this.aboveGroundFloorCount) {\n return {\n success: false,\n message: `地上楼层数超出范围,最大楼层为 ${this.aboveGroundFloorCount}`,\n }\n }\n\n if (floor < 0 && Math.abs(floor) > this.undergroundFloorCount) {\n return {\n success: false,\n message: `地下楼层数超出范围,最大地下楼层为 ${this.undergroundFloorCount}`,\n }\n }\n\n // 执行拆分操作\n switch (animOption.type) {\n case EBuildingSplitType.Hide:\n this.hideAboveFloors(floor)\n break\n case EBuildingSplitType.Move:\n this.moveAboveFloorsDirection(floor, animOption)\n break\n case EBuildingSplitType.Solo:\n this.showSoloFloor(floor)\n break\n }\n\n return { success: true }\n }\n\n /**\n * 隐藏指定楼层以上的楼层\n * @param targetFloor 目标楼层\n */\n private hideAboveFloors(targetFloor: number): void {\n for (const floorGroup of this.floorGroups.values()) {\n const floorLevel = floorGroup.level\n\n // 重置所有楼层组件位置\n for (const component of floorGroup.components)\n component.mesh.position.copy(component.originalPosition)\n\n // 设置可见性\n const shouldBeVisible = floorLevel <= targetFloor\n for (const component of floorGroup.components)\n component.mesh.visible = shouldBeVisible\n }\n }\n\n /**\n * 将指定楼层以上的楼层整体上移\n * @param targetFloor 目标楼层\n * @param animation 动画选项\n */\n private moveAboveFloorsUp(targetFloor: number, animation: AnimationOption): void {\n const distance = 10\n const duration = animation.duration\n\n // 重置所有楼层可见性\n for (const floorGroup of this.floorGroups.values()) {\n for (const component of floorGroup.components)\n component.mesh.visible = true\n }\n\n // 计算起始位置和目标位置\n const startPositions = new Map<Object3D, Vector3>()\n const targetPositions = new Map<Object3D, Vector3>()\n\n for (const floorGroup of this.floorGroups.values()) {\n const floorLevel = floorGroup.level\n\n for (const component of floorGroup.components) {\n startPositions.set(component.mesh, component.mesh.position.clone())\n\n if (floorLevel > targetFloor) {\n // 上方楼层需要上移\n const targetPos = component.originalPosition.clone()\n targetPos.y += distance\n targetPositions.set(component.mesh, targetPos)\n }\n else {\n // 其他楼层保持原位\n targetPositions.set(component.mesh, component.originalPosition.clone())\n }\n }\n }\n\n // 执行动画\n this.animatePositions(startPositions, targetPositions, duration)\n }\n\n /**\n * 将指定楼层以上的楼层向指定方向移动\n * @param targetFloor 目标楼层\n * @param animation 动画选项\n */\n private moveAboveFloorsDirection(targetFloor: number, animation: AnimationOption): void {\n const { direction = [10, 10, 0] } = animation.rule || {}\n const duration = animation.duration\n\n // 重置所有楼层可见性\n for (const floorGroup of this.floorGroups.values()) {\n for (const component of floorGroup.components)\n component.mesh.visible = true\n }\n\n // 计算起始位置和目标位置\n const startPositions = new Map<Object3D, Vector3>()\n const targetPositions = new Map<Object3D, Vector3>()\n\n for (const floorGroup of this.floorGroups.values()) {\n const floorLevel = floorGroup.level\n\n for (const component of floorGroup.components) {\n startPositions.set(component.mesh, component.mesh.position.clone())\n\n if (floorLevel > targetFloor) {\n // 上方楼层需要移动\n const targetPos = component.originalPosition.clone().add(new Vector3().fromArray(direction))\n targetPositions.set(component.mesh, targetPos)\n }\n else {\n // 其他楼层保持原位\n targetPositions.set(component.mesh, component.originalPosition.clone())\n }\n }\n }\n\n // 执行动画\n this.animatePositions(startPositions, targetPositions, duration)\n }\n\n /**\n * 计算方向向量\n * 规则:往右方(X)、前方(Z)是正、往左方(X)、后方(Z)是负数\n * @param direction 方向枚举\n * @param distance 移动距离\n * @returns Vector3 方向向量\n */\n private getDirectionVector(direction: EDirection, distance: number): Vector3 {\n const vector = new Vector3(0, 0, 0)\n const coefficient = 0.7071 // cos(45°) ≈ 0.7071\n switch (direction) {\n case EDirection.Right:\n vector.set(distance, 0, 0)\n break\n case EDirection.Left:\n vector.set(-distance, 0, 0)\n break\n case EDirection.Front:\n vector.set(0, 0, distance)\n break\n case EDirection.Back:\n vector.set(0, 0, -distance)\n break\n case EDirection.Right_Front:\n vector.set(distance * coefficient, distance * coefficient, distance * coefficient)\n break\n case EDirection.Left_Front:\n vector.set(-distance * coefficient, distance * coefficient, distance * coefficient)\n break\n case EDirection.Right_Back:\n vector.set(distance * coefficient, distance * coefficient, -distance * coefficient)\n break\n case EDirection.Left_Back:\n vector.set(-distance * coefficient, distance * coefficient, -distance * coefficient)\n break\n default:\n // 默认向右移动\n vector.set(distance, 0, 0)\n }\n\n return vector\n }\n\n /**\n * 只显示指定楼层\n * @param targetFloor 目标楼层\n */\n private showSoloFloor(targetFloor: number): void {\n for (const floorGroup of this.floorGroups.values()) {\n const floorLevel = floorGroup.level\n\n // 重置所有楼层组件位置\n for (const component of floorGroup.components)\n component.mesh.position.copy(component.originalPosition)\n\n // 设置可见性\n const shouldBeVisible = floorLevel === targetFloor\n for (const component of floorGroup.components)\n component.mesh.visible = shouldBeVisible\n }\n }\n\n /**\n * 执行位置动画\n * @param startPositions 起始位置\n * @param targetPositions 目标位置\n * @param duration 动画时长\n */\n private animatePositions(\n startPositions: Map<Object3D, Vector3>,\n targetPositions: Map<Object3D, Vector3>,\n duration: number,\n ): void {\n const startTime = performance.now()\n\n const animate = () => {\n const currentTime = performance.now()\n const elapsed = currentTime - startTime\n const progress = Math.min(elapsed / duration, 1)\n\n targetPositions.forEach((targetPos, mesh) => {\n const startPos = startPositions.get(mesh)\n if (startPos) {\n // 线性插值计算当前位置\n mesh.position.lerpVectors(startPos, targetPos, progress)\n }\n })\n\n if (progress < 1) {\n requestAnimationFrame(animate)\n }\n else {\n // 动画结束\n this.currentAnimation.timer = null\n }\n }\n\n animate()\n\n // 设置超时以确保动画完成\n this.currentAnimation.timer = window.setTimeout(() => {\n this.currentAnimation.timer = null\n }, duration + 100)\n }\n\n /**\n * 重置建筑到初始状态\n */\n private resetBuilding(): void {\n for (const floorGroup of this.floorGroups.values()) {\n for (const component of floorGroup.components) {\n // 恢复原始位置\n component.mesh.position.copy(component.originalPosition)\n\n // 恢复原始可见性\n component.mesh.visible = component.originalVisibility\n }\n }\n }\n\n /**\n * 获取楼层总数信息\n */\n public getFloorCounts(): { aboveGround: number; underground: number; hasRoof: boolean } {\n return {\n aboveGround: this.aboveGroundFloorCount,\n underground: this.undergroundFloorCount,\n hasRoof: this.hasRoof,\n }\n }\n}\n\nexport { BuildingSplit, EBuildingSplitType }"],"mappings":"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"}
1
+ {"version":3,"names":["Vector3","ObjectLayer","EBuildingSplitType","EDirection","BuildingSplit","_ObjectLayer","_inherits","_super","_createSuper","building","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","Map","timer","_building","init","_createClass","key","get","value","floorGroups","sortedFloorLevels","aboveGroundFloorCount","undergroundFloorCount","hasRoof","parseFloors","Array","from","values","map","group","level","sort","a","b","_this2","traverse","object","type","name","startsWith","addToFloorGroup","mesh","originalPosition","position","clone","originalVisibility","visible","prefix","isUnderground","length","floorNum","parseInt","substring","isNaN","concat","Math","max","component","_this$floorGroups$get","arguments","undefined","has","set","isRoof","components","push","split","options","floor","animation","animOption","Move","duration","currentAnimation","window","clearTimeout","resetBuilding","success","message","abs","Hide","hideAboveFloors","moveAboveFloorsDirection","Solo","showSoloFloor","targetFloor","_iterator","_createForOfIteratorHelper","_step","s","n","done","floorGroup","floorLevel","_iterator2","_step2","copy","err","e","f","shouldBeVisible","_iterator3","_step3","moveAboveFloorsUp","distance","_iterator4","_step4","_iterator6","_step6","startPositions","targetPositions","_iterator5","_step5","_iterator7","_step7","targetPos","y","animatePositions","_ref","rule","_ref$direction","direction","_iterator8","_step8","_iterator10","_step10","_iterator9","_step9","_iterator11","_step11","add","fromArray","getDirectionVector","vector","coefficient","Right","Left","Front","Back","Right_Front","Left_Front","Right_Back","Left_Back","_iterator12","_step12","_iterator13","_step13","_iterator14","_step14","_this3","startTime","performance","now","animate","currentTime","elapsed","progress","min","forEach","startPos","lerpVectors","requestAnimationFrame","setTimeout","_iterator15","_step15","_iterator16","_step16","getFloorCounts","aboveGround","underground"],"sources":["../../../src/business/SplitBuilding/index.ts"],"sourcesContent":["import { Group, Mesh, Vector3 } from '@anov/3d-core'\nimport type { Object3D } from '@anov/3d-core'\nimport ObjectLayer from '../Base/ObjectLayer'\nimport type { AnimationOption, Option } from './type'\nimport { EBuildingSplitType, EDirection } from './type'\n\ntype FloorComponent = {\n mesh: Object3D\n originalPosition: Vector3\n originalVisibility: boolean\n}\n\ntype FloorGroup = {\n level: number\n isUnderground: boolean\n isRoof: boolean\n components: FloorComponent[]\n}\n\nclass BuildingSplit extends ObjectLayer {\n private floorGroups: Map<string, FloorGroup> = new Map()\n private sortedFloorLevels: number[] = []\n private aboveGroundFloorCount = 0\n private undergroundFloorCount = 0\n private hasRoof = false\n private currentAnimation: { timer: number | null } = { timer: null }\n\n private _building: Object3D\n\n constructor(building: Object3D) {\n super()\n this._building = building\n this.init()\n }\n\n public get building() {\n return this._building\n }\n\n /**\n * 初始化建筑拆分器\n * @param building 建筑模型\n */\n public init(): void {\n this.floorGroups = new Map()\n this.sortedFloorLevels = []\n this.aboveGroundFloorCount = 0\n this.undergroundFloorCount = 0\n this.hasRoof = false\n\n // 解析所有楼层\n this.parseFloors()\n\n // 排序楼层编号从低到高\n this.sortedFloorLevels = Array.from(this.floorGroups.values())\n .map(group => group.level)\n .sort((a, b) => a - b)\n }\n\n /**\n * 解析建筑模型中的楼层\n */\n private parseFloors(): void {\n this.building.traverse((object) => {\n if (object.type === 'Mesh' || object.type === 'Group') {\n const name = object.name\n // 检查是否为屋顶\n if (name.startsWith('Roof')) {\n this.addToFloorGroup('Roof', {\n mesh: object,\n originalPosition: object.position.clone(),\n originalVisibility: object.visible,\n })\n this.hasRoof = true\n return\n }\n\n // 提取楼层前缀\n let prefix: string | null = null\n let level = 0\n let isUnderground = false\n\n if (name.startsWith('F') && name.length >= 3) {\n // 地上楼层\n const floorNum = parseInt(name.substring(1, 3))\n if (!isNaN(floorNum)) {\n prefix = `F${name.substring(1, 3)}`\n level = floorNum\n isUnderground = false\n this.aboveGroundFloorCount = Math.max(this.aboveGroundFloorCount, floorNum)\n }\n }\n else if (name.startsWith('B') && name.length >= 3) {\n // 地下楼层\n const floorNum = parseInt(name.substring(1, 3))\n if (!isNaN(floorNum)) {\n prefix = `B${name.substring(1, 3)}`\n level = -floorNum\n isUnderground = true\n this.undergroundFloorCount = Math.max(this.undergroundFloorCount, floorNum)\n }\n }\n\n if (prefix) {\n this.addToFloorGroup(prefix, {\n mesh: object,\n originalPosition: object.position.clone(),\n originalVisibility: object.visible,\n }, level, isUnderground)\n }\n }\n })\n }\n\n /**\n * 将组件添加到对应楼层分组\n */\n private addToFloorGroup(\n prefix: string,\n component: FloorComponent,\n level: number = this.aboveGroundFloorCount + 1,\n isUnderground = false,\n ): void {\n if (!this.floorGroups.has(prefix)) {\n this.floorGroups.set(prefix, {\n level,\n isUnderground,\n isRoof: prefix === 'Roof',\n components: [],\n })\n }\n\n this.floorGroups.get(prefix)?.components.push(component)\n }\n\n /**\n * 拆分楼层\n * @param options 拆分选项\n * @returns 成功或错误信息\n */\n public split(options): { success: boolean; message?: string } {\n const { floor, animation } = options\n const animOption: AnimationOption = animation || {\n type: EBuildingSplitType.Move,\n duration: 1000,\n }\n\n // 取消当前动画\n if (this.currentAnimation.timer !== null) {\n window.clearTimeout(this.currentAnimation.timer)\n this.currentAnimation.timer = null\n }\n\n // 处理 floor = 0 的情况:恢复完整状态\n if (floor === 0) {\n this.resetBuilding()\n return { success: true }\n }\n\n // 验证楼层参数\n if (floor > 0 && floor > this.aboveGroundFloorCount) {\n return {\n success: false,\n message: `地上楼层数超出范围,最大楼层为 ${this.aboveGroundFloorCount}`,\n }\n }\n\n if (floor < 0 && Math.abs(floor) > this.undergroundFloorCount) {\n return {\n success: false,\n message: `地下楼层数超出范围,最大地下楼层为 ${this.undergroundFloorCount}`,\n }\n }\n\n // 执行拆分操作\n switch (animOption.type) {\n case EBuildingSplitType.Hide:\n this.hideAboveFloors(floor)\n break\n case EBuildingSplitType.Move:\n this.moveAboveFloorsDirection(floor, animOption)\n break\n case EBuildingSplitType.Solo:\n this.showSoloFloor(floor)\n break\n }\n\n return { success: true }\n }\n\n /**\n * 隐藏指定楼层以上的楼层\n * @param targetFloor 目标楼层\n */\n private hideAboveFloors(targetFloor: number): void {\n for (const floorGroup of this.floorGroups.values()) {\n const floorLevel = floorGroup.level\n\n // 重置所有楼层组件位置\n for (const component of floorGroup.components)\n component.mesh.position.copy(component.originalPosition)\n\n // 设置可见性\n const shouldBeVisible = floorLevel <= targetFloor\n for (const component of floorGroup.components)\n component.mesh.visible = shouldBeVisible\n }\n }\n\n /**\n * 将指定楼层以上的楼层整体上移\n * @param targetFloor 目标楼层\n * @param animation 动画选项\n */\n private moveAboveFloorsUp(targetFloor: number, animation: AnimationOption): void {\n const distance = 10\n const duration = animation.duration\n\n // 重置所有楼层可见性\n for (const floorGroup of this.floorGroups.values()) {\n for (const component of floorGroup.components)\n component.mesh.visible = true\n }\n\n // 计算起始位置和目标位置\n const startPositions = new Map<Object3D, Vector3>()\n const targetPositions = new Map<Object3D, Vector3>()\n\n for (const floorGroup of this.floorGroups.values()) {\n const floorLevel = floorGroup.level\n\n for (const component of floorGroup.components) {\n startPositions.set(component.mesh, component.mesh.position.clone())\n\n if (floorLevel > targetFloor) {\n // 上方楼层需要上移\n const targetPos = component.originalPosition.clone()\n targetPos.y += distance\n targetPositions.set(component.mesh, targetPos)\n }\n else {\n // 其他楼层保持原位\n targetPositions.set(component.mesh, component.originalPosition.clone())\n }\n }\n }\n\n // 执行动画\n this.animatePositions(startPositions, targetPositions, duration)\n }\n\n /**\n * 将指定楼层以上的楼层向指定方向移动\n * @param targetFloor 目标楼层\n * @param animation 动画选项\n */\n private moveAboveFloorsDirection(targetFloor: number, animation: AnimationOption): void {\n const { direction = [10, 10, 0] } = animation.rule || {}\n const duration = animation.duration\n\n // 重置所有楼层可见性\n for (const floorGroup of this.floorGroups.values()) {\n for (const component of floorGroup.components)\n component.mesh.visible = true\n }\n\n // 计算起始位置和目标位置\n const startPositions = new Map<Object3D, Vector3>()\n const targetPositions = new Map<Object3D, Vector3>()\n\n for (const floorGroup of this.floorGroups.values()) {\n const floorLevel = floorGroup.level\n\n for (const component of floorGroup.components) {\n startPositions.set(component.mesh, component.mesh.position.clone())\n\n if (floorLevel > targetFloor) {\n // 上方楼层需要移动\n const targetPos = component.originalPosition.clone().add(new Vector3().fromArray(direction))\n targetPositions.set(component.mesh, targetPos)\n }\n else {\n // 其他楼层保持原位\n targetPositions.set(component.mesh, component.originalPosition.clone())\n }\n }\n }\n\n // 执行动画\n this.animatePositions(startPositions, targetPositions, duration)\n }\n\n /**\n * 计算方向向量\n * 规则:往右方(X)、前方(Z)是正、往左方(X)、后方(Z)是负数\n * @param direction 方向枚举\n * @param distance 移动距离\n * @returns Vector3 方向向量\n */\n private getDirectionVector(direction: EDirection, distance: number): Vector3 {\n const vector = new Vector3(0, 0, 0)\n const coefficient = 0.7071 // cos(45°) ≈ 0.7071\n switch (direction) {\n case EDirection.Right:\n vector.set(distance, 0, 0)\n break\n case EDirection.Left:\n vector.set(-distance, 0, 0)\n break\n case EDirection.Front:\n vector.set(0, 0, distance)\n break\n case EDirection.Back:\n vector.set(0, 0, -distance)\n break\n case EDirection.Right_Front:\n vector.set(distance * coefficient, distance * coefficient, distance * coefficient)\n break\n case EDirection.Left_Front:\n vector.set(-distance * coefficient, distance * coefficient, distance * coefficient)\n break\n case EDirection.Right_Back:\n vector.set(distance * coefficient, distance * coefficient, -distance * coefficient)\n break\n case EDirection.Left_Back:\n vector.set(-distance * coefficient, distance * coefficient, -distance * coefficient)\n break\n default:\n // 默认向右移动\n vector.set(distance, 0, 0)\n }\n\n return vector\n }\n\n /**\n * 只显示指定楼层\n * @param targetFloor 目标楼层\n */\n private showSoloFloor(targetFloor: number): void {\n for (const floorGroup of this.floorGroups.values()) {\n const floorLevel = floorGroup.level\n\n // 重置所有楼层组件位置\n for (const component of floorGroup.components)\n component.mesh.position.copy(component.originalPosition)\n\n // 设置可见性\n const shouldBeVisible = floorLevel === targetFloor\n for (const component of floorGroup.components)\n component.mesh.visible = shouldBeVisible\n }\n }\n\n /**\n * 执行位置动画\n * @param startPositions 起始位置\n * @param targetPositions 目标位置\n * @param duration 动画时长\n */\n private animatePositions(\n startPositions: Map<Object3D, Vector3>,\n targetPositions: Map<Object3D, Vector3>,\n duration: number,\n ): void {\n const startTime = performance.now()\n\n const animate = () => {\n const currentTime = performance.now()\n const elapsed = currentTime - startTime\n const progress = Math.min(elapsed / duration, 1)\n\n targetPositions.forEach((targetPos, mesh) => {\n const startPos = startPositions.get(mesh)\n if (startPos) {\n // 线性插值计算当前位置\n mesh.position.lerpVectors(startPos, targetPos, progress)\n }\n })\n\n if (progress < 1) {\n requestAnimationFrame(animate)\n }\n else {\n // 动画结束\n this.currentAnimation.timer = null\n }\n }\n\n animate()\n\n // 设置超时以确保动画完成\n this.currentAnimation.timer = window.setTimeout(() => {\n this.currentAnimation.timer = null\n }, duration + 100)\n }\n\n /**\n * 重置建筑到初始状态\n */\n private resetBuilding(): void {\n for (const floorGroup of this.floorGroups.values()) {\n for (const component of floorGroup.components) {\n // 恢复原始位置\n component.mesh.position.copy(component.originalPosition)\n\n // 恢复原始可见性\n component.mesh.visible = component.originalVisibility\n }\n }\n }\n\n /**\n * 获取楼层总数信息\n */\n public getFloorCounts(): { aboveGround: number; underground: number; hasRoof: boolean } {\n return {\n aboveGround: this.aboveGroundFloorCount,\n underground: this.undergroundFloorCount,\n hasRoof: this.hasRoof,\n }\n }\n}\n\nexport { BuildingSplit, EBuildingSplitType }"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * 拆楼模式
3
3
  */
4
- export let EBuildingSplitType = /*#__PURE__*/function (EBuildingSplitType) {
4
+ export var EBuildingSplitType = /*#__PURE__*/function (EBuildingSplitType) {
5
5
  EBuildingSplitType["Hide"] = "hide";
6
6
  EBuildingSplitType["Move"] = "move";
7
7
  EBuildingSplitType["Solo"] = "solo";
@@ -11,7 +11,7 @@ export let EBuildingSplitType = /*#__PURE__*/function (EBuildingSplitType) {
11
11
  /**
12
12
  * 移动方向枚举
13
13
  */
14
- export let EDirection = /*#__PURE__*/function (EDirection) {
14
+ export var EDirection = /*#__PURE__*/function (EDirection) {
15
15
  EDirection["Left"] = "left";
16
16
  EDirection["Right"] = "right";
17
17
  EDirection["Front"] = "front";