@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":["Box3","LoaderModule","utils","BaseTraffic","moveWithLine","loaderModule","overrideVisible","target","propertyKey","getter","_visible","setter","newValue","_target$_control","_control","forEach","control","stop","_target$_control2","continue","Object","defineProperty","get","set","enumerable","configurable","RealismTraffic","_class","width","_width","w","generateLaneLines","loadBenchmarkModel","divide","_divide","num","baseTime","_baseTime","constructor","params","_defineProperty","_initializerDefineProperty","_descriptor","path","resource","totalNum","corner","_path","_resource","_totalNum","_lanelineControl","_corner","console","error","Error","handleVisibilityChange","_benchmarkVehicles","length","promises","map","url","_utils$storeManagemen","loadGLTF","draco","dracoPath","storeManagement","Promise","allSettled","then","res","modelRes","status","push","normalizedVehicleSize","value","scene","randomPool","generateRandomPool","generateInitPosition","getMaxVehicleLength","maxLength","reduce","max","vehicle","box","setFromObject","currentLength","z","min","lineLengths","lanelines","line","getLength","part","Math","floor","capacity","pre","next","buildRandomPool","pool","i","j","t","document","addEventListener","hidden","index","random","current","currentLaneline","point","getPointAt","_startingPoints","_startingLookatPoints","_startingProgressPoints","_startinglanelinePoints","splice","placeVehicle","_vehicles","removeFromParent","remove","randomModelIndex","currentVehicle","clone","position","copy","lookAt","add","run","dispatchEvent","type","laneline","model","progress","laneIndex","lc","find","log","duration","direction","setProgress","currentWidth","x","scalingFactor","scale","parent","_applyDecoratedDescriptor","prototype","writable","initializer"],"sources":["../../../../src/business/TrafficComponents/RealismTraffic/RealismTraffic.ts"],"sourcesContent":["/* eslint-disable max-statements-per-line */\nimport type { CurvePath, Group, Object3D, Vector3 } from '@anov/3d-core'\nimport { Box3, LoaderModule, utils } from '@anov/3d-core'\nimport { BaseTraffic } from '../base'\nimport type { RealismTrafficInterface } from '.'\n\nconst { moveWithLine } = utils\n\ntype ResourceParams = {\n url: string\n}\n\ntype LanelineControl = {\n index: number\n direction?: number\n}\n\ntype RealismTrafficParams = {\n path: CurvePath<Vector3>\n width?: number\n divide?: number\n resource: ResourceParams[]\n baseTime?: number\n totalNum?: number\n control?: LanelineControl[]\n corner?: number\n}\n\nconst loaderModule = new LoaderModule()\n\nconst overrideVisible = (target: any, propertyKey: string | symbol) => {\n const getter = () => {\n return target._visible\n }\n\n const setter = (newValue: any) => {\n target._visible = newValue\n\n if (newValue === false) {\n target._control ?? [].forEach((control) => {\n control.stop()\n })\n }\n else {\n target._control ?? [].forEach((control) => {\n control.continue()\n })\n }\n }\n\n Object.defineProperty(target, propertyKey, {\n get: getter,\n set: setter,\n enumerable: true,\n configurable: true,\n })\n}\n\n/**\n * 写实风格车辆交通组件\n */\nexport class RealismTraffic extends BaseTraffic implements RealismTrafficInterface {\n /** 车辆模型池 */\n private _resource: ResourceParams[]\n\n /** 基准时间 */\n private _baseTime: number\n\n /** 车辆数量 */\n private _totalNum = 5\n\n private _startingPoints: Vector3[] = []\n\n private _startingLookatPoints: Vector3[] = []\n\n private _startingProgressPoints: number[] = []\n\n private _startinglanelinePoints: number[] = []\n\n private _visible = true\n\n private _control: ReturnType<typeof moveWithLine>[] = []\n\n private _lanelineControl: LanelineControl[] = []\n\n /** 基准载具池 */\n private _benchmarkVehicles: Group[] = []\n\n /** 实际载具 */\n private _vehicles: Group[] = []\n\n /** 车道线 */\n public lanelines: CurvePath<Vector3>[] = []\n\n public get width(): number {\n return this._width\n }\n\n public set width(w: number) {\n this._width = w\n\n this.generateLaneLines()\n this.loadBenchmarkModel()\n }\n\n public get divide(): number {\n return this._divide\n }\n\n public set divide(num: number) {\n this._divide = num\n\n this.generateLaneLines()\n this.loadBenchmarkModel()\n }\n\n @overrideVisible\n override visible = true\n\n public get baseTime(): number {\n return this._baseTime\n }\n\n constructor(params: RealismTrafficParams) {\n super(params)\n\n const { path, width = 2, divide = 1, resource, totalNum = 5, baseTime = 10, control = [], corner = 10 } = params\n\n this._path = path\n this._width = width\n this._divide = divide\n this._resource = resource\n this._totalNum = totalNum\n this._baseTime = baseTime\n this._lanelineControl = control\n this._corner = corner\n\n if (width === 0 || divide === 0) {\n console.error('宽度或车道数不能为0')\n throw new Error('宽度或车道数不能为0')\n }\n\n this.generateLaneLines()\n this.loadBenchmarkModel()\n this.handleVisibilityChange()\n }\n\n /**\n * load benchmark model\n */\n private loadBenchmarkModel() {\n this._benchmarkVehicles = []\n\n if (!this._resource.length)\n return\n\n const promises = this._resource.map(({ url }) => {\n return loaderModule.loadGLTF({\n url,\n draco: true,\n // todo sdk 接口支持 decoderPath\n dracoPath: utils.storeManagement.get('decoderPath') ?? '/draco/',\n })\n })\n\n Promise.allSettled(promises).then((res) => {\n res.forEach((modelRes) => {\n if (modelRes.status === 'fulfilled')\n this._benchmarkVehicles.push(this.normalizedVehicleSize(modelRes.value.scene as Group))\n })\n\n const randomPool = this.generateRandomPool()\n this.generateInitPosition(randomPool)\n })\n }\n\n /**\n * get max vehicle length\n */\n private getMaxVehicleLength() {\n const maxLength = this._benchmarkVehicles.reduce((max, vehicle) => {\n const box = new Box3().setFromObject(vehicle)\n const currentLength = box.max.z - box.min.z\n\n return currentLength > max ? currentLength : max\n }, 0)\n\n return maxLength\n }\n\n /**\n * check reasonable location\n */\n private generateRandomPool() {\n const lineLengths = this.lanelines.map(line => line.getLength())\n const part = lineLengths.map(length => Math.floor(length / this.getMaxVehicleLength()))\n const capacity = part.reduce((pre, next) => { return pre + next }, 0)\n\n if (capacity < this._totalNum)\n throw new Error('载具数量不合理')\n\n return this.buildRandomPool(part)\n }\n\n /**\n * build random pool\n */\n private buildRandomPool(part: number[]) {\n const pool = []\n\n part.forEach((part, i) => {\n for (let j = 0; j < part; j++) {\n pool.push({\n t: 1 / part * j,\n line: i,\n })\n }\n })\n\n return pool\n }\n\n /**\n * handle requestAnimationFrame pause\n */\n private handleVisibilityChange() {\n document.addEventListener('visibilitychange', () => {\n if (document.hidden) {\n this._control.forEach((control) => {\n control.stop()\n })\n }\n else {\n this._control.forEach((control) => {\n control.continue()\n })\n }\n })\n }\n\n /**\n * generate random movement starting point\n */\n private generateInitPosition(randomPool) {\n for (let i = 0; i < this._totalNum; i++) {\n const index = Math.floor(Math.random() * randomPool.length)\n const current = randomPool[index]\n const currentLaneline = this.lanelines[current.line]\n const point = currentLaneline.getPointAt(current.t)\n\n this._startingPoints.push(point)\n this._startingLookatPoints.push(currentLaneline.getPointAt((current.t + 0.01) % 1))\n this._startingProgressPoints.push(current.t)\n this._startinglanelinePoints.push(current.line)\n\n randomPool.splice(index, 1)\n }\n\n this.placeVehicle()\n }\n\n /**\n * place vehicle\n */\n private placeVehicle() {\n this._vehicles.forEach((vehicle, i) => {\n vehicle.removeFromParent()\n this._control[i].remove()\n })\n\n this._vehicles = []\n this._control = []\n\n for (let i = 0; i < this._startingPoints.length; i++) {\n const randomModelIndex = Math.floor(Math.random() * this._benchmarkVehicles.length)\n const currentVehicle = this._benchmarkVehicles[randomModelIndex].clone()\n\n currentVehicle.position.copy(this._startingPoints[i])\n currentVehicle.lookAt(this._startingLookatPoints[i])\n\n this._vehicles.push(currentVehicle)\n this.add(currentVehicle)\n this.run(this.lanelines[this._startinglanelinePoints[i]], currentVehicle, this._startingProgressPoints[i], this._startinglanelinePoints[i])\n }\n\n this.dispatchEvent({\n type: 'realismTraffic-loaded',\n })\n }\n\n /**\n * run\n * @param laneline\n * @param model\n * @param progress\n * @param laneIndex\n */\n private run(laneline: CurvePath<Vector3>, model: Object3D, progress: number, laneIndex: number) {\n const lc = this._lanelineControl.find(lc => lc.index === laneIndex)\n\n if (this.baseTime === 0) {\n console.log('baseTime is 0')\n return\n }\n\n const control = moveWithLine(model, laneline, {\n duration: this.baseTime,\n direction: (lc && lc?.direction === 0) ? -1 : 1,\n })\n\n this._control.push(control)\n control.setProgress(progress)\n }\n\n /**\n * normalized vehicle size\n */\n private normalizedVehicleSize(model: Group) {\n const box = new Box3().setFromObject(model)\n const currentWidth = box.max.x - box.min.x\n const scalingFactor = (this._width / (this._divide + 1)) / currentWidth * 0.7\n\n model.scale.set(scalingFactor, scalingFactor, scalingFactor)\n\n return model\n }\n\n override removeFromParent(): this {\n // todo: 升级three.js后,父对象变化,会触发此函数,重组内部引起关系\n this.parent && this._control.forEach((control) => {\n control.remove()\n })\n\n return super.removeFromParent()\n }\n}"],"mappings":";;;;;;;AAAA;;AAEA,SAASA,IAAI,EAAEC,YAAY,EAAEC,KAAK,QAAQ,eAAe;AACzD,SAASC,WAAW;AAGpB,MAAM;EAAEC;AAAa,CAAC,GAAGF,KAAK;AAsB9B,MAAMG,YAAY,GAAG,IAAIJ,YAAY,CAAC,CAAC;AAEvC,MAAMK,eAAe,GAAGA,CAACC,MAAW,EAAEC,WAA4B,KAAK;EACrE,MAAMC,MAAM,GAAGA,CAAA,KAAM;IACnB,OAAOF,MAAM,CAACG,QAAQ;EACxB,CAAC;EAED,MAAMC,MAAM,GAAIC,QAAa,IAAK;IAChCL,MAAM,CAACG,QAAQ,GAAGE,QAAQ;IAE1B,IAAIA,QAAQ,KAAK,KAAK,EAAE;MAAA,IAAAC,gBAAA;MACtB,CAAAA,gBAAA,GAAAN,MAAM,CAACO,QAAQ,cAAAD,gBAAA,cAAAA,gBAAA,GAAI,EAAE,CAACE,OAAO,CAAEC,OAAO,IAAK;QACzCA,OAAO,CAACC,IAAI,CAAC,CAAC;MAChB,CAAC,CAAC;IACJ,CAAC,MACI;MAAA,IAAAC,iBAAA;MACH,CAAAA,iBAAA,GAAAX,MAAM,CAACO,QAAQ,cAAAI,iBAAA,cAAAA,iBAAA,GAAI,EAAE,CAACH,OAAO,CAAEC,OAAO,IAAK;QACzCA,OAAO,CAACG,QAAQ,CAAC,CAAC;MACpB,CAAC,CAAC;IACJ;EACF,CAAC;EAEDC,MAAM,CAACC,cAAc,CAACd,MAAM,EAAEC,WAAW,EAAE;IACzCc,GAAG,EAAEb,MAAM;IACXc,GAAG,EAAEZ,MAAM;IACXa,UAAU,EAAE,IAAI;IAChBC,YAAY,EAAE;EAChB,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA,WAAaC,cAAc,IAAAC,MAAA,GAApB,MAAMD,cAAc,SAASvB,WAAW,CAAoC;EAiCjF,IAAWyB,KAAKA,CAAA,EAAW;IACzB,OAAO,IAAI,CAACC,MAAM;EACpB;EAEA,IAAWD,KAAKA,CAACE,CAAS,EAAE;IAC1B,IAAI,CAACD,MAAM,GAAGC,CAAC;IAEf,IAAI,CAACC,iBAAiB,CAAC,CAAC;IACxB,IAAI,CAACC,kBAAkB,CAAC,CAAC;EAC3B;EAEA,IAAWC,MAAMA,CAAA,EAAW;IAC1B,OAAO,IAAI,CAACC,OAAO;EACrB;EAEA,IAAWD,MAAMA,CAACE,GAAW,EAAE;IAC7B,IAAI,CAACD,OAAO,GAAGC,GAAG;IAElB,IAAI,CAACJ,iBAAiB,CAAC,CAAC;IACxB,IAAI,CAACC,kBAAkB,CAAC,CAAC;EAC3B;EAKA,IAAWI,QAAQA,CAAA,EAAW;IAC5B,OAAO,IAAI,CAACC,SAAS;EACvB;EAEAC,WAAWA,CAACC,MAA4B,EAAE;IACxC,KAAK,CAACA,MAAM,CAAC;IA9Df;IAAAC,eAAA;IAGA;IAAAA,eAAA;IAGA;IAAAA,eAAA,oBACoB,CAAC;IAAAA,eAAA,0BAEgB,EAAE;IAAAA,eAAA,gCAEI,EAAE;IAAAA,eAAA,kCAED,EAAE;IAAAA,eAAA,kCAEF,EAAE;IAAAA,eAAA,mBAE3B,IAAI;IAAAA,eAAA,mBAE+B,EAAE;IAAAA,eAAA,2BAEV,EAAE;IAEhD;IAAAA,eAAA,6BACsC,EAAE;IAExC;IAAAA,eAAA,oBAC6B,EAAE;IAE/B;IAAAA,eAAA,oBACyC,EAAE;IAAAC,0BAAA,kBAAAC,WAAA;IAkCzC,MAAM;MAAEC,IAAI;MAAEf,KAAK,GAAG,CAAC;MAAEK,MAAM,GAAG,CAAC;MAAEW,QAAQ;MAAEC,QAAQ,GAAG,CAAC;MAAET,QAAQ,GAAG,EAAE;MAAEpB,OAAO,GAAG,EAAE;MAAE8B,MAAM,GAAG;IAAG,CAAC,GAAGP,MAAM;IAEhH,IAAI,CAACQ,KAAK,GAAGJ,IAAI;IACjB,IAAI,CAACd,MAAM,GAAGD,KAAK;IACnB,IAAI,CAACM,OAAO,GAAGD,MAAM;IACrB,IAAI,CAACe,SAAS,GAAGJ,QAAQ;IACzB,IAAI,CAACK,SAAS,GAAGJ,QAAQ;IACzB,IAAI,CAACR,SAAS,GAAGD,QAAQ;IACzB,IAAI,CAACc,gBAAgB,GAAGlC,OAAO;IAC/B,IAAI,CAACmC,OAAO,GAAGL,MAAM;IAErB,IAAIlB,KAAK,KAAK,CAAC,IAAIK,MAAM,KAAK,CAAC,EAAE;MAC/BmB,OAAO,CAACC,KAAK,CAAC,YAAY,CAAC;MAC3B,MAAM,IAAIC,KAAK,CAAC,YAAY,CAAC;IAC/B;IAEA,IAAI,CAACvB,iBAAiB,CAAC,CAAC;IACxB,IAAI,CAACC,kBAAkB,CAAC,CAAC;IACzB,IAAI,CAACuB,sBAAsB,CAAC,CAAC;EAC/B;;EAEA;AACF;AACA;EACUvB,kBAAkBA,CAAA,EAAG;IAC3B,IAAI,CAACwB,kBAAkB,GAAG,EAAE;IAE5B,IAAI,CAAC,IAAI,CAACR,SAAS,CAACS,MAAM,EACxB;IAEF,MAAMC,QAAQ,GAAG,IAAI,CAACV,SAAS,CAACW,GAAG,CAAC,CAAC;MAAEC;IAAI,CAAC,KAAK;MAAA,IAAAC,qBAAA;MAC/C,OAAOxD,YAAY,CAACyD,QAAQ,CAAC;QAC3BF,GAAG;QACHG,KAAK,EAAE,IAAI;QACX;QACAC,SAAS,GAAAH,qBAAA,GAAE3D,KAAK,CAAC+D,eAAe,CAAC3C,GAAG,CAAC,aAAa,CAAC,cAAAuC,qBAAA,cAAAA,qBAAA,GAAI;MACzD,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFK,OAAO,CAACC,UAAU,CAACT,QAAQ,CAAC,CAACU,IAAI,CAAEC,GAAG,IAAK;MACzCA,GAAG,CAACtD,OAAO,CAAEuD,QAAQ,IAAK;QACxB,IAAIA,QAAQ,CAACC,MAAM,KAAK,WAAW,EACjC,IAAI,CAACf,kBAAkB,CAACgB,IAAI,CAAC,IAAI,CAACC,qBAAqB,CAACH,QAAQ,CAACI,KAAK,CAACC,KAAc,CAAC,CAAC;MAC3F,CAAC,CAAC;MAEF,MAAMC,UAAU,GAAG,IAAI,CAACC,kBAAkB,CAAC,CAAC;MAC5C,IAAI,CAACC,oBAAoB,CAACF,UAAU,CAAC;IACvC,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACUG,mBAAmBA,CAAA,EAAG;IAC5B,MAAMC,SAAS,GAAG,IAAI,CAACxB,kBAAkB,CAACyB,MAAM,CAAC,CAACC,GAAG,EAAEC,OAAO,KAAK;MACjE,MAAMC,GAAG,GAAG,IAAIpF,IAAI,CAAC,CAAC,CAACqF,aAAa,CAACF,OAAO,CAAC;MAC7C,MAAMG,aAAa,GAAGF,GAAG,CAACF,GAAG,CAACK,CAAC,GAAGH,GAAG,CAACI,GAAG,CAACD,CAAC;MAE3C,OAAOD,aAAa,GAAGJ,GAAG,GAAGI,aAAa,GAAGJ,GAAG;IAClD,CAAC,EAAE,CAAC,CAAC;IAEL,OAAOF,SAAS;EAClB;;EAEA;AACF;AACA;EACUH,kBAAkBA,CAAA,EAAG;IAC3B,MAAMY,WAAW,GAAG,IAAI,CAACC,SAAS,CAAC/B,GAAG,CAACgC,IAAI,IAAIA,IAAI,CAACC,SAAS,CAAC,CAAC,CAAC;IAChE,MAAMC,IAAI,GAAGJ,WAAW,CAAC9B,GAAG,CAACF,MAAM,IAAIqC,IAAI,CAACC,KAAK,CAACtC,MAAM,GAAG,IAAI,CAACsB,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACvF,MAAMiB,QAAQ,GAAGH,IAAI,CAACZ,MAAM,CAAC,CAACgB,GAAG,EAAEC,IAAI,KAAK;MAAE,OAAOD,GAAG,GAAGC,IAAI;IAAC,CAAC,EAAE,CAAC,CAAC;IAErE,IAAIF,QAAQ,GAAG,IAAI,CAAC/C,SAAS,EAC3B,MAAM,IAAIK,KAAK,CAAC,SAAS,CAAC;IAE5B,OAAO,IAAI,CAAC6C,eAAe,CAACN,IAAI,CAAC;EACnC;;EAEA;AACF;AACA;EACUM,eAAeA,CAACN,IAAc,EAAE;IACtC,MAAMO,IAAI,GAAG,EAAE;IAEfP,IAAI,CAAC9E,OAAO,CAAC,CAAC8E,IAAI,EAAEQ,CAAC,KAAK;MACxB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGT,IAAI,EAAES,CAAC,EAAE,EAAE;QAC7BF,IAAI,CAAC5B,IAAI,CAAC;UACR+B,CAAC,EAAE,CAAC,GAAGV,IAAI,GAAGS,CAAC;UACfX,IAAI,EAAEU;QACR,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;IAEF,OAAOD,IAAI;EACb;;EAEA;AACF;AACA;EACU7C,sBAAsBA,CAAA,EAAG;IAC/BiD,QAAQ,CAACC,gBAAgB,CAAC,kBAAkB,EAAE,MAAM;MAClD,IAAID,QAAQ,CAACE,MAAM,EAAE;QACnB,IAAI,CAAC5F,QAAQ,CAACC,OAAO,CAAEC,OAAO,IAAK;UACjCA,OAAO,CAACC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;MACJ,CAAC,MACI;QACH,IAAI,CAACH,QAAQ,CAACC,OAAO,CAAEC,OAAO,IAAK;UACjCA,OAAO,CAACG,QAAQ,CAAC,CAAC;QACpB,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACU2D,oBAAoBA,CAACF,UAAU,EAAE;IACvC,KAAK,IAAIyB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACpD,SAAS,EAAEoD,CAAC,EAAE,EAAE;MACvC,MAAMM,KAAK,GAAGb,IAAI,CAACC,KAAK,CAACD,IAAI,CAACc,MAAM,CAAC,CAAC,GAAGhC,UAAU,CAACnB,MAAM,CAAC;MAC3D,MAAMoD,OAAO,GAAGjC,UAAU,CAAC+B,KAAK,CAAC;MACjC,MAAMG,eAAe,GAAG,IAAI,CAACpB,SAAS,CAACmB,OAAO,CAAClB,IAAI,CAAC;MACpD,MAAMoB,KAAK,GAAGD,eAAe,CAACE,UAAU,CAACH,OAAO,CAACN,CAAC,CAAC;MAEnD,IAAI,CAACU,eAAe,CAACzC,IAAI,CAACuC,KAAK,CAAC;MAChC,IAAI,CAACG,qBAAqB,CAAC1C,IAAI,CAACsC,eAAe,CAACE,UAAU,CAAC,CAACH,OAAO,CAACN,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;MACnF,IAAI,CAACY,uBAAuB,CAAC3C,IAAI,CAACqC,OAAO,CAACN,CAAC,CAAC;MAC5C,IAAI,CAACa,uBAAuB,CAAC5C,IAAI,CAACqC,OAAO,CAAClB,IAAI,CAAC;MAE/Cf,UAAU,CAACyC,MAAM,CAACV,KAAK,EAAE,CAAC,CAAC;IAC7B;IAEA,IAAI,CAACW,YAAY,CAAC,CAAC;EACrB;;EAEA;AACF;AACA;EACUA,YAAYA,CAAA,EAAG;IACrB,IAAI,CAACC,SAAS,CAACxG,OAAO,CAAC,CAACoE,OAAO,EAAEkB,CAAC,KAAK;MACrClB,OAAO,CAACqC,gBAAgB,CAAC,CAAC;MAC1B,IAAI,CAAC1G,QAAQ,CAACuF,CAAC,CAAC,CAACoB,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,IAAI,CAACF,SAAS,GAAG,EAAE;IACnB,IAAI,CAACzG,QAAQ,GAAG,EAAE;IAElB,KAAK,IAAIuF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACY,eAAe,CAACxD,MAAM,EAAE4C,CAAC,EAAE,EAAE;MACpD,MAAMqB,gBAAgB,GAAG5B,IAAI,CAACC,KAAK,CAACD,IAAI,CAACc,MAAM,CAAC,CAAC,GAAG,IAAI,CAACpD,kBAAkB,CAACC,MAAM,CAAC;MACnF,MAAMkE,cAAc,GAAG,IAAI,CAACnE,kBAAkB,CAACkE,gBAAgB,CAAC,CAACE,KAAK,CAAC,CAAC;MAExED,cAAc,CAACE,QAAQ,CAACC,IAAI,CAAC,IAAI,CAACb,eAAe,CAACZ,CAAC,CAAC,CAAC;MACrDsB,cAAc,CAACI,MAAM,CAAC,IAAI,CAACb,qBAAqB,CAACb,CAAC,CAAC,CAAC;MAEpD,IAAI,CAACkB,SAAS,CAAC/C,IAAI,CAACmD,cAAc,CAAC;MACnC,IAAI,CAACK,GAAG,CAACL,cAAc,CAAC;MACxB,IAAI,CAACM,GAAG,CAAC,IAAI,CAACvC,SAAS,CAAC,IAAI,CAAC0B,uBAAuB,CAACf,CAAC,CAAC,CAAC,EAAEsB,cAAc,EAAE,IAAI,CAACR,uBAAuB,CAACd,CAAC,CAAC,EAAE,IAAI,CAACe,uBAAuB,CAACf,CAAC,CAAC,CAAC;IAC7I;IAEA,IAAI,CAAC6B,aAAa,CAAC;MACjBC,IAAI,EAAE;IACR,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACUF,GAAGA,CAACG,QAA4B,EAAEC,KAAe,EAAEC,QAAgB,EAAEC,SAAiB,EAAE;IAC9F,MAAMC,EAAE,GAAG,IAAI,CAACtF,gBAAgB,CAACuF,IAAI,CAACD,EAAE,IAAIA,EAAE,CAAC7B,KAAK,KAAK4B,SAAS,CAAC;IAEnE,IAAI,IAAI,CAACnG,QAAQ,KAAK,CAAC,EAAE;MACvBgB,OAAO,CAACsF,GAAG,CAAC,eAAe,CAAC;MAC5B;IACF;IAEA,MAAM1H,OAAO,GAAGZ,YAAY,CAACiI,KAAK,EAAED,QAAQ,EAAE;MAC5CO,QAAQ,EAAE,IAAI,CAACvG,QAAQ;MACvBwG,SAAS,EAAGJ,EAAE,IAAI,CAAAA,EAAE,aAAFA,EAAE,uBAAFA,EAAE,CAAEI,SAAS,MAAK,CAAC,GAAI,CAAC,CAAC,GAAG;IAChD,CAAC,CAAC;IAEF,IAAI,CAAC9H,QAAQ,CAAC0D,IAAI,CAACxD,OAAO,CAAC;IAC3BA,OAAO,CAAC6H,WAAW,CAACP,QAAQ,CAAC;EAC/B;;EAEA;AACF;AACA;EACU7D,qBAAqBA,CAAC4D,KAAY,EAAE;IAC1C,MAAMjD,GAAG,GAAG,IAAIpF,IAAI,CAAC,CAAC,CAACqF,aAAa,CAACgD,KAAK,CAAC;IAC3C,MAAMS,YAAY,GAAG1D,GAAG,CAACF,GAAG,CAAC6D,CAAC,GAAG3D,GAAG,CAACI,GAAG,CAACuD,CAAC;IAC1C,MAAMC,aAAa,GAAI,IAAI,CAACnH,MAAM,IAAI,IAAI,CAACK,OAAO,GAAG,CAAC,CAAC,GAAI4G,YAAY,GAAG,GAAG;IAE7ET,KAAK,CAACY,KAAK,CAAC1H,GAAG,CAACyH,aAAa,EAAEA,aAAa,EAAEA,aAAa,CAAC;IAE5D,OAAOX,KAAK;EACd;EAESb,gBAAgBA,CAAA,EAAS;IAChC;IACA,IAAI,CAAC0B,MAAM,IAAI,IAAI,CAACpI,QAAQ,CAACC,OAAO,CAAEC,OAAO,IAAK;MAChDA,OAAO,CAACyG,MAAM,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,KAAK,CAACD,gBAAgB,CAAC,CAAC;EACjC;AACF,CAAC,GAAA9E,WAAA,GAAAyG,yBAAA,CAAAxH,MAAA,CAAAyH,SAAA,cA3NE9I,eAAe;EAAAmB,YAAA;EAAAD,UAAA;EAAA6H,QAAA;EAAAC,WAAA,WAAAA,CAAA;IAAA,OACG,IAAI;EAAA;AAAA,KAAA3H,MAAA"}
1
+ {"version":3,"names":["Box3","LoaderModule","utils","BaseTraffic","moveWithLine","loaderModule","overrideVisible","target","propertyKey","getter","_visible","setter","newValue","_target$_control","_control","forEach","control","stop","_target$_control2","continue","Object","defineProperty","get","set","enumerable","configurable","RealismTraffic","_class","_BaseTraffic","_inherits","_super","_createSuper","params","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_initializerDefineProperty","_descriptor","path","_params$width","width","_params$divide","divide","resource","_params$totalNum","totalNum","_params$baseTime","baseTime","_params$control","_params$corner","corner","_path","_width","_divide","_resource","_totalNum","_baseTime","_lanelineControl","_corner","console","error","Error","generateLaneLines","loadBenchmarkModel","handleVisibilityChange","_createClass","key","w","num","value","_this2","_benchmarkVehicles","length","promises","map","_ref","_utils$storeManagemen","url","loadGLTF","draco","dracoPath","storeManagement","Promise","allSettled","then","res","modelRes","status","push","normalizedVehicleSize","scene","randomPool","generateRandomPool","generateInitPosition","getMaxVehicleLength","maxLength","reduce","max","vehicle","box","setFromObject","currentLength","z","min","_this3","lineLengths","lanelines","line","getLength","part","Math","floor","capacity","pre","next","buildRandomPool","pool","i","j","t","_this4","document","addEventListener","hidden","index","random","current","currentLaneline","point","getPointAt","_startingPoints","_startingLookatPoints","_startingProgressPoints","_startinglanelinePoints","splice","placeVehicle","_this5","_vehicles","removeFromParent","remove","randomModelIndex","currentVehicle","clone","position","copy","lookAt","add","run","dispatchEvent","type","laneline","model","progress","laneIndex","lc","find","log","duration","direction","setProgress","currentWidth","x","scalingFactor","scale","parent","_get","_getPrototypeOf","prototype","_applyDecoratedDescriptor","writable","initializer"],"sources":["../../../../src/business/TrafficComponents/RealismTraffic/RealismTraffic.ts"],"sourcesContent":["/* eslint-disable max-statements-per-line */\nimport type { CurvePath, Group, Object3D, Vector3 } from '@anov/3d-core'\nimport { Box3, LoaderModule, utils } from '@anov/3d-core'\nimport { BaseTraffic } from '../base'\nimport type { RealismTrafficInterface } from '.'\n\nconst { moveWithLine } = utils\n\ntype ResourceParams = {\n url: string\n}\n\ntype LanelineControl = {\n index: number\n direction?: number\n}\n\ntype RealismTrafficParams = {\n path: CurvePath<Vector3>\n width?: number\n divide?: number\n resource: ResourceParams[]\n baseTime?: number\n totalNum?: number\n control?: LanelineControl[]\n corner?: number\n}\n\nconst loaderModule = new LoaderModule()\n\nconst overrideVisible = (target: any, propertyKey: string | symbol) => {\n const getter = () => {\n return target._visible\n }\n\n const setter = (newValue: any) => {\n target._visible = newValue\n\n if (newValue === false) {\n target._control ?? [].forEach((control) => {\n control.stop()\n })\n }\n else {\n target._control ?? [].forEach((control) => {\n control.continue()\n })\n }\n }\n\n Object.defineProperty(target, propertyKey, {\n get: getter,\n set: setter,\n enumerable: true,\n configurable: true,\n })\n}\n\n/**\n * 写实风格车辆交通组件\n */\nexport class RealismTraffic extends BaseTraffic implements RealismTrafficInterface {\n /** 车辆模型池 */\n private _resource: ResourceParams[]\n\n /** 基准时间 */\n private _baseTime: number\n\n /** 车辆数量 */\n private _totalNum = 5\n\n private _startingPoints: Vector3[] = []\n\n private _startingLookatPoints: Vector3[] = []\n\n private _startingProgressPoints: number[] = []\n\n private _startinglanelinePoints: number[] = []\n\n private _visible = true\n\n private _control: ReturnType<typeof moveWithLine>[] = []\n\n private _lanelineControl: LanelineControl[] = []\n\n /** 基准载具池 */\n private _benchmarkVehicles: Group[] = []\n\n /** 实际载具 */\n private _vehicles: Group[] = []\n\n /** 车道线 */\n public lanelines: CurvePath<Vector3>[] = []\n\n public get width(): number {\n return this._width\n }\n\n public set width(w: number) {\n this._width = w\n\n this.generateLaneLines()\n this.loadBenchmarkModel()\n }\n\n public get divide(): number {\n return this._divide\n }\n\n public set divide(num: number) {\n this._divide = num\n\n this.generateLaneLines()\n this.loadBenchmarkModel()\n }\n\n @overrideVisible\n override visible = true\n\n public get baseTime(): number {\n return this._baseTime\n }\n\n constructor(params: RealismTrafficParams) {\n super(params)\n\n const { path, width = 2, divide = 1, resource, totalNum = 5, baseTime = 10, control = [], corner = 10 } = params\n\n this._path = path\n this._width = width\n this._divide = divide\n this._resource = resource\n this._totalNum = totalNum\n this._baseTime = baseTime\n this._lanelineControl = control\n this._corner = corner\n\n if (width === 0 || divide === 0) {\n console.error('宽度或车道数不能为0')\n throw new Error('宽度或车道数不能为0')\n }\n\n this.generateLaneLines()\n this.loadBenchmarkModel()\n this.handleVisibilityChange()\n }\n\n /**\n * load benchmark model\n */\n private loadBenchmarkModel() {\n this._benchmarkVehicles = []\n\n if (!this._resource.length)\n return\n\n const promises = this._resource.map(({ url }) => {\n return loaderModule.loadGLTF({\n url,\n draco: true,\n // todo sdk 接口支持 decoderPath\n dracoPath: utils.storeManagement.get('decoderPath') ?? '/draco/',\n })\n })\n\n Promise.allSettled(promises).then((res) => {\n res.forEach((modelRes) => {\n if (modelRes.status === 'fulfilled')\n this._benchmarkVehicles.push(this.normalizedVehicleSize(modelRes.value.scene as Group))\n })\n\n const randomPool = this.generateRandomPool()\n this.generateInitPosition(randomPool)\n })\n }\n\n /**\n * get max vehicle length\n */\n private getMaxVehicleLength() {\n const maxLength = this._benchmarkVehicles.reduce((max, vehicle) => {\n const box = new Box3().setFromObject(vehicle)\n const currentLength = box.max.z - box.min.z\n\n return currentLength > max ? currentLength : max\n }, 0)\n\n return maxLength\n }\n\n /**\n * check reasonable location\n */\n private generateRandomPool() {\n const lineLengths = this.lanelines.map(line => line.getLength())\n const part = lineLengths.map(length => Math.floor(length / this.getMaxVehicleLength()))\n const capacity = part.reduce((pre, next) => { return pre + next }, 0)\n\n if (capacity < this._totalNum)\n throw new Error('载具数量不合理')\n\n return this.buildRandomPool(part)\n }\n\n /**\n * build random pool\n */\n private buildRandomPool(part: number[]) {\n const pool = []\n\n part.forEach((part, i) => {\n for (let j = 0; j < part; j++) {\n pool.push({\n t: 1 / part * j,\n line: i,\n })\n }\n })\n\n return pool\n }\n\n /**\n * handle requestAnimationFrame pause\n */\n private handleVisibilityChange() {\n document.addEventListener('visibilitychange', () => {\n if (document.hidden) {\n this._control.forEach((control) => {\n control.stop()\n })\n }\n else {\n this._control.forEach((control) => {\n control.continue()\n })\n }\n })\n }\n\n /**\n * generate random movement starting point\n */\n private generateInitPosition(randomPool) {\n for (let i = 0; i < this._totalNum; i++) {\n const index = Math.floor(Math.random() * randomPool.length)\n const current = randomPool[index]\n const currentLaneline = this.lanelines[current.line]\n const point = currentLaneline.getPointAt(current.t)\n\n this._startingPoints.push(point)\n this._startingLookatPoints.push(currentLaneline.getPointAt((current.t + 0.01) % 1))\n this._startingProgressPoints.push(current.t)\n this._startinglanelinePoints.push(current.line)\n\n randomPool.splice(index, 1)\n }\n\n this.placeVehicle()\n }\n\n /**\n * place vehicle\n */\n private placeVehicle() {\n this._vehicles.forEach((vehicle, i) => {\n vehicle.removeFromParent()\n this._control[i].remove()\n })\n\n this._vehicles = []\n this._control = []\n\n for (let i = 0; i < this._startingPoints.length; i++) {\n const randomModelIndex = Math.floor(Math.random() * this._benchmarkVehicles.length)\n const currentVehicle = this._benchmarkVehicles[randomModelIndex].clone()\n\n currentVehicle.position.copy(this._startingPoints[i])\n currentVehicle.lookAt(this._startingLookatPoints[i])\n\n this._vehicles.push(currentVehicle)\n this.add(currentVehicle)\n this.run(this.lanelines[this._startinglanelinePoints[i]], currentVehicle, this._startingProgressPoints[i], this._startinglanelinePoints[i])\n }\n\n this.dispatchEvent({\n type: 'realismTraffic-loaded',\n })\n }\n\n /**\n * run\n * @param laneline\n * @param model\n * @param progress\n * @param laneIndex\n */\n private run(laneline: CurvePath<Vector3>, model: Object3D, progress: number, laneIndex: number) {\n const lc = this._lanelineControl.find(lc => lc.index === laneIndex)\n\n if (this.baseTime === 0) {\n console.log('baseTime is 0')\n return\n }\n\n const control = moveWithLine(model, laneline, {\n duration: this.baseTime,\n direction: (lc && lc?.direction === 0) ? -1 : 1,\n })\n\n this._control.push(control)\n control.setProgress(progress)\n }\n\n /**\n * normalized vehicle size\n */\n private normalizedVehicleSize(model: Group) {\n const box = new Box3().setFromObject(model)\n const currentWidth = box.max.x - box.min.x\n const scalingFactor = (this._width / (this._divide + 1)) / currentWidth * 0.7\n\n model.scale.set(scalingFactor, scalingFactor, scalingFactor)\n\n return model\n }\n\n override removeFromParent(): this {\n // todo: 升级three.js后,父对象变化,会触发此函数,重组内部引起关系\n this.parent && this._control.forEach((control) => {\n control.remove()\n })\n\n return super.removeFromParent()\n }\n}"],"mappings":"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"}
@@ -1,6 +1,19 @@
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 _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
6
+ function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
7
+ 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); }
8
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
9
+ 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); }; }
10
+ 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); }
11
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
12
+ 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; } }
13
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
1
14
  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); }
15
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
16
+ 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
17
  import { Clock, Color, DoubleSide, MathUtils, Mesh, ShaderMaterial, TubeGeometry, Vector2, use } from '@anov/3d-core';
5
18
  import { BaseTraffic } from "../base";
6
19
  import { fragmentShader } from "./fragmentShader";
@@ -8,148 +21,180 @@ import { vertexShader } from "./vertexShader";
8
21
  /**
9
22
  * 流光风格交通组件
10
23
  */
11
- export class StreamerTraffic extends BaseTraffic {
12
- get speed() {
13
- return this._speed;
14
- }
15
- get num() {
16
- return this._num;
17
- }
18
- get baseColor() {
19
- return this._baseColor;
20
- }
21
- get divideWidth() {
22
- return this._divideWidth;
23
- }
24
- get width() {
25
- return this._width;
26
- }
27
- set width(w) {
28
- this._width = w;
29
- this.generateLaneLines();
30
- this.generateStreamer();
31
- }
32
- get divide() {
33
- return this._divide;
34
- }
35
- set divide(num) {
36
- this._divide = num;
37
- this.generateLaneLines();
38
- this.generateStreamer();
39
- }
40
- constructor(params) {
41
- super(params);
24
+ export var StreamerTraffic = /*#__PURE__*/function (_BaseTraffic) {
25
+ _inherits(StreamerTraffic, _BaseTraffic);
26
+ var _super = _createSuper(StreamerTraffic);
27
+ function StreamerTraffic(params) {
28
+ var _this;
29
+ _classCallCheck(this, StreamerTraffic);
30
+ _this = _super.call(this, params);
42
31
  /** 流光速度 */
43
- _defineProperty(this, "_speed", void 0);
32
+ _defineProperty(_assertThisInitialized(_this), "_speed", void 0);
44
33
  /** 流光数量 */
45
- _defineProperty(this, "_num", void 0);
34
+ _defineProperty(_assertThisInitialized(_this), "_num", void 0);
46
35
  /** 流光颜色 */
47
- _defineProperty(this, "_baseColor", void 0);
36
+ _defineProperty(_assertThisInitialized(_this), "_baseColor", void 0);
48
37
  /** 流光宽度 */
49
- _defineProperty(this, "_divideWidth", void 0);
38
+ _defineProperty(_assertThisInitialized(_this), "_divideWidth", void 0);
50
39
  /** 流光长度 */
51
- _defineProperty(this, "_length", void 0);
52
- _defineProperty(this, "_streamerArr", []);
53
- _defineProperty(this, "_lanelineControl", []);
54
- _defineProperty(this, "_control", []);
55
- const {
56
- path,
57
- width = 4,
58
- divide = 4,
59
- divideWidth = 1,
60
- num = 5,
61
- length = 0.25,
62
- baseColor = '#ff7700',
63
- speed = 100,
64
- corner = 10,
65
- control = []
66
- } = params;
67
- this._path = path;
68
- this._width = width;
69
- this._divide = divide;
70
- this._divideWidth = divideWidth / 2;
71
- this._num = num;
72
- this._baseColor = baseColor;
73
- this._speed = speed;
74
- this._corner = corner;
75
- this._length = length;
76
- this._lanelineControl = control;
77
- this.generateLaneLines();
78
- this.generateStreamer();
40
+ _defineProperty(_assertThisInitialized(_this), "_length", void 0);
41
+ _defineProperty(_assertThisInitialized(_this), "_streamerArr", []);
42
+ _defineProperty(_assertThisInitialized(_this), "_lanelineControl", []);
43
+ _defineProperty(_assertThisInitialized(_this), "_control", []);
44
+ var path = params.path,
45
+ _params$width = params.width,
46
+ width = _params$width === void 0 ? 4 : _params$width,
47
+ _params$divide = params.divide,
48
+ divide = _params$divide === void 0 ? 4 : _params$divide,
49
+ _params$divideWidth = params.divideWidth,
50
+ divideWidth = _params$divideWidth === void 0 ? 1 : _params$divideWidth,
51
+ _params$num = params.num,
52
+ num = _params$num === void 0 ? 5 : _params$num,
53
+ _params$length = params.length,
54
+ length = _params$length === void 0 ? 0.25 : _params$length,
55
+ _params$baseColor = params.baseColor,
56
+ baseColor = _params$baseColor === void 0 ? '#ff7700' : _params$baseColor,
57
+ _params$speed = params.speed,
58
+ speed = _params$speed === void 0 ? 100 : _params$speed,
59
+ _params$corner = params.corner,
60
+ corner = _params$corner === void 0 ? 10 : _params$corner,
61
+ _params$control = params.control,
62
+ control = _params$control === void 0 ? [] : _params$control;
63
+ _this._path = path;
64
+ _this._width = width;
65
+ _this._divide = divide;
66
+ _this._divideWidth = divideWidth / 2;
67
+ _this._num = num;
68
+ _this._baseColor = baseColor;
69
+ _this._speed = speed;
70
+ _this._corner = corner;
71
+ _this._length = length;
72
+ _this._lanelineControl = control;
73
+ _this.generateLaneLines();
74
+ _this.generateStreamer();
75
+ return _this;
79
76
  }
80
77
 
81
78
  /**
82
79
  * generate streamer
83
80
  */
84
- generateStreamer() {
85
- this._streamerArr.forEach(mesh => {
86
- mesh.removeFromParent();
87
- });
88
- this._streamerArr = [];
89
- for (let i = 0; i < this.lanelines.length; i++) {
90
- var _this$_lanelineContro, _this$_lanelineContro2;
91
- const geometry = new TubeGeometry(this.lanelines[i], Math.floor(this.lanelines[i].getLength()) * 10, this._divideWidth, 5, false);
92
- const material = new ShaderMaterial({
93
- side: DoubleSide,
94
- transparent: true,
95
- uniforms: {
96
- uColor: {
97
- value: new Color(this._baseColor)
98
- },
99
- uTime: {
100
- value: MathUtils.lerp(-1, 1, Math.random())
101
- },
102
- uFade: {
103
- value: new Vector2(0, this._length + Math.random() * this._length - this._length / 2)
104
- },
105
- uNumLines: {
106
- value: this._num
107
- },
108
- uOffset: {
109
- value: Math.random()
110
- },
111
- uAlpha: {
112
- value: Math.random()
113
- },
114
- uSpeed: {
115
- value: this._speed + Math.random() * this._speed - this._speed / 2
116
- },
117
- ulength: {
118
- value: Math.floor(this.lanelines[i].getLength())
119
- },
120
- uReverse: {
121
- value: (_this$_lanelineContro = (_this$_lanelineContro2 = this._lanelineControl[i]) === null || _this$_lanelineContro2 === void 0 ? void 0 : _this$_lanelineContro2.direction) !== null && _this$_lanelineContro !== void 0 ? _this$_lanelineContro : 1.0
122
- }
123
- },
124
- vertexShader,
125
- fragmentShader
81
+ _createClass(StreamerTraffic, [{
82
+ key: "speed",
83
+ get: function get() {
84
+ return this._speed;
85
+ }
86
+ }, {
87
+ key: "num",
88
+ get: function get() {
89
+ return this._num;
90
+ }
91
+ }, {
92
+ key: "baseColor",
93
+ get: function get() {
94
+ return this._baseColor;
95
+ }
96
+ }, {
97
+ key: "divideWidth",
98
+ get: function get() {
99
+ return this._divideWidth;
100
+ }
101
+ }, {
102
+ key: "width",
103
+ get: function get() {
104
+ return this._width;
105
+ },
106
+ set: function set(w) {
107
+ this._width = w;
108
+ this.generateLaneLines();
109
+ this.generateStreamer();
110
+ }
111
+ }, {
112
+ key: "divide",
113
+ get: function get() {
114
+ return this._divide;
115
+ },
116
+ set: function set(num) {
117
+ this._divide = num;
118
+ this.generateLaneLines();
119
+ this.generateStreamer();
120
+ }
121
+ }, {
122
+ key: "generateStreamer",
123
+ value: function generateStreamer() {
124
+ this._streamerArr.forEach(function (mesh) {
125
+ mesh.removeFromParent();
126
126
  });
127
- const road = new Mesh(geometry, material);
127
+ this._streamerArr = [];
128
+ for (var i = 0; i < this.lanelines.length; i++) {
129
+ var _this$_lanelineContro, _this$_lanelineContro2;
130
+ var geometry = new TubeGeometry(this.lanelines[i], Math.floor(this.lanelines[i].getLength()) * 10, this._divideWidth, 5, false);
131
+ var material = new ShaderMaterial({
132
+ side: DoubleSide,
133
+ transparent: true,
134
+ uniforms: {
135
+ uColor: {
136
+ value: new Color(this._baseColor)
137
+ },
138
+ uTime: {
139
+ value: MathUtils.lerp(-1, 1, Math.random())
140
+ },
141
+ uFade: {
142
+ value: new Vector2(0, this._length + Math.random() * this._length - this._length / 2)
143
+ },
144
+ uNumLines: {
145
+ value: this._num
146
+ },
147
+ uOffset: {
148
+ value: Math.random()
149
+ },
150
+ uAlpha: {
151
+ value: Math.random()
152
+ },
153
+ uSpeed: {
154
+ value: this._speed + Math.random() * this._speed - this._speed / 2
155
+ },
156
+ ulength: {
157
+ value: Math.floor(this.lanelines[i].getLength())
158
+ },
159
+ uReverse: {
160
+ value: (_this$_lanelineContro = (_this$_lanelineContro2 = this._lanelineControl[i]) === null || _this$_lanelineContro2 === void 0 ? void 0 : _this$_lanelineContro2.direction) !== null && _this$_lanelineContro !== void 0 ? _this$_lanelineContro : 1.0
161
+ }
162
+ },
163
+ vertexShader: vertexShader,
164
+ fragmentShader: fragmentShader
165
+ });
166
+ var road = new Mesh(geometry, material);
128
167
 
129
- // 渲染顺序
130
- road.renderOrder = 1000;
131
- this.add(road);
132
- this.run(material);
133
- this._streamerArr.push(road);
168
+ // 渲染顺序
169
+ road.renderOrder = 1000;
170
+ this.add(road);
171
+ this.run(material);
172
+ this._streamerArr.push(road);
173
+ }
134
174
  }
135
- }
136
175
 
137
- /**
138
- * run
139
- * @param material
140
- */
141
- run(material) {
142
- const clock = new Clock();
143
- this._control.push(use.useframe(() => {
144
- material.uniforms.uTime.value = clock.getElapsedTime();
145
- }));
146
- }
147
- removeFromParent() {
148
- // todo: 升级three.js后,父对象变化,会触发此函数,重组内部引起关系
149
- this.parent && this._control.forEach(control => {
150
- control();
151
- });
152
- return super.removeFromParent();
153
- }
154
- }
176
+ /**
177
+ * run
178
+ * @param material
179
+ */
180
+ }, {
181
+ key: "run",
182
+ value: function run(material) {
183
+ var clock = new Clock();
184
+ this._control.push(use.useframe(function () {
185
+ material.uniforms.uTime.value = clock.getElapsedTime();
186
+ }));
187
+ }
188
+ }, {
189
+ key: "removeFromParent",
190
+ value: function removeFromParent() {
191
+ // todo: 升级three.js后,父对象变化,会触发此函数,重组内部引起关系
192
+ this.parent && this._control.forEach(function (control) {
193
+ control();
194
+ });
195
+ return _get(_getPrototypeOf(StreamerTraffic.prototype), "removeFromParent", this).call(this);
196
+ }
197
+ }]);
198
+ return StreamerTraffic;
199
+ }(BaseTraffic);
155
200
  //# sourceMappingURL=StreamerTraffic.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Clock","Color","DoubleSide","MathUtils","Mesh","ShaderMaterial","TubeGeometry","Vector2","use","BaseTraffic","fragmentShader","vertexShader","StreamerTraffic","speed","_speed","num","_num","baseColor","_baseColor","divideWidth","_divideWidth","width","_width","w","generateLaneLines","generateStreamer","divide","_divide","constructor","params","_defineProperty","path","length","corner","control","_path","_corner","_length","_lanelineControl","_streamerArr","forEach","mesh","removeFromParent","i","lanelines","_this$_lanelineContro","_this$_lanelineContro2","geometry","Math","floor","getLength","material","side","transparent","uniforms","uColor","value","uTime","lerp","random","uFade","uNumLines","uOffset","uAlpha","uSpeed","ulength","uReverse","direction","road","renderOrder","add","run","push","clock","_control","useframe","getElapsedTime","parent"],"sources":["../../../../src/business/TrafficComponents/StreamerTraffic/StreamerTraffic.ts"],"sourcesContent":["import { Clock, Color, type CurvePath, DoubleSide, MathUtils, Mesh, ShaderMaterial, TubeGeometry, Vector2, type Vector3, use } from '@anov/3d-core'\nimport { BaseTraffic } from '../base'\nimport { fragmentShader } from './fragmentShader'\nimport { vertexShader } from './vertexShader'\nimport type { StreamerTrafficInterface } from '.'\n\ntype LanelineControl = {\n index: number\n direction?: number\n}\n\ntype StreamerTrafficParams = {\n path: CurvePath<Vector3>\n width?: number\n divide?: number\n divideWidth?: number\n num?: number\n length?: number\n baseColor?: string\n speed?: number\n control?: LanelineControl[]\n corner?: number\n}\n\n/**\n * 流光风格交通组件\n */\nexport class StreamerTraffic extends BaseTraffic implements StreamerTrafficInterface {\n /** 流光速度 */\n private _speed: number\n\n /** 流光数量 */\n private _num: number\n\n /** 流光颜色 */\n private _baseColor: string\n\n /** 流光宽度 */\n private _divideWidth: number\n\n /** 流光长度 */\n private _length: number\n\n private _streamerArr: Mesh[] = []\n\n private _lanelineControl: LanelineControl[] = []\n\n private _control = []\n\n public get speed() {\n return this._speed\n }\n\n public get num() {\n return this._num\n }\n\n public get baseColor() {\n return this._baseColor\n }\n\n public get divideWidth() {\n return this._divideWidth\n }\n\n public get width(): number {\n return this._width\n }\n\n public set width(w: number) {\n this._width = w\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n public get divide(): number {\n return this._divide\n }\n\n public set divide(num: number) {\n this._divide = num\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n constructor(params: StreamerTrafficParams) {\n super(params)\n\n const { path, width = 4, divide = 4, divideWidth = 1, num = 5, length = 0.25, baseColor = '#ff7700', speed = 100, corner = 10, control = [] } = params\n\n this._path = path\n this._width = width\n this._divide = divide\n this._divideWidth = divideWidth / 2\n this._num = num\n this._baseColor = baseColor\n this._speed = speed\n this._corner = corner\n this._length = length\n this._lanelineControl = control\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n /**\n * generate streamer\n */\n private generateStreamer() {\n this._streamerArr.forEach((mesh) => {\n mesh.removeFromParent()\n })\n this._streamerArr = []\n\n for (let i = 0; i < this.lanelines.length; i++) {\n const geometry = new TubeGeometry(this.lanelines[i], Math.floor(this.lanelines[i].getLength()) * 10, this._divideWidth, 5, false)\n const material = new ShaderMaterial({\n side: DoubleSide,\n transparent: true,\n uniforms: {\n uColor: { value: new Color(this._baseColor) },\n uTime: { value: MathUtils.lerp(-1, 1, Math.random()) },\n uFade: { value: new Vector2(0, this._length + Math.random() * this._length - this._length / 2) },\n uNumLines: { value: this._num },\n uOffset: { value: Math.random() },\n uAlpha: { value: Math.random() },\n uSpeed: { value: this._speed + Math.random() * this._speed - this._speed / 2 },\n ulength: { value: Math.floor(this.lanelines[i].getLength()) },\n uReverse: { value: this._lanelineControl[i]?.direction ?? 1.0 },\n },\n vertexShader,\n fragmentShader,\n })\n\n const road = new Mesh(geometry, material)\n\n // 渲染顺序\n road.renderOrder = 1000\n\n this.add(road)\n this.run(material)\n this._streamerArr.push(road)\n }\n }\n\n /**\n * run\n * @param material\n */\n private run(material) {\n const clock = new Clock()\n\n this._control.push(\n use.useframe(() => {\n material.uniforms.uTime.value = clock.getElapsedTime()\n }),\n )\n }\n\n override removeFromParent(): this {\n // todo: 升级three.js后,父对象变化,会触发此函数,重组内部引起关系\n this.parent && this._control.forEach((control) => {\n control()\n })\n\n return super.removeFromParent()\n }\n}"],"mappings":"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"}
1
+ {"version":3,"names":["Clock","Color","DoubleSide","MathUtils","Mesh","ShaderMaterial","TubeGeometry","Vector2","use","BaseTraffic","fragmentShader","vertexShader","StreamerTraffic","_BaseTraffic","_inherits","_super","_createSuper","params","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","path","_params$width","width","_params$divide","divide","_params$divideWidth","divideWidth","_params$num","num","_params$length","length","_params$baseColor","baseColor","_params$speed","speed","_params$corner","corner","_params$control","control","_path","_width","_divide","_divideWidth","_num","_baseColor","_speed","_corner","_length","_lanelineControl","generateLaneLines","generateStreamer","_createClass","key","get","set","w","value","_streamerArr","forEach","mesh","removeFromParent","i","lanelines","_this$_lanelineContro","_this$_lanelineContro2","geometry","Math","floor","getLength","material","side","transparent","uniforms","uColor","uTime","lerp","random","uFade","uNumLines","uOffset","uAlpha","uSpeed","ulength","uReverse","direction","road","renderOrder","add","run","push","clock","_control","useframe","getElapsedTime","parent","_get","_getPrototypeOf","prototype"],"sources":["../../../../src/business/TrafficComponents/StreamerTraffic/StreamerTraffic.ts"],"sourcesContent":["import { Clock, Color, type CurvePath, DoubleSide, MathUtils, Mesh, ShaderMaterial, TubeGeometry, Vector2, type Vector3, use } from '@anov/3d-core'\nimport { BaseTraffic } from '../base'\nimport { fragmentShader } from './fragmentShader'\nimport { vertexShader } from './vertexShader'\nimport type { StreamerTrafficInterface } from '.'\n\ntype LanelineControl = {\n index: number\n direction?: number\n}\n\ntype StreamerTrafficParams = {\n path: CurvePath<Vector3>\n width?: number\n divide?: number\n divideWidth?: number\n num?: number\n length?: number\n baseColor?: string\n speed?: number\n control?: LanelineControl[]\n corner?: number\n}\n\n/**\n * 流光风格交通组件\n */\nexport class StreamerTraffic extends BaseTraffic implements StreamerTrafficInterface {\n /** 流光速度 */\n private _speed: number\n\n /** 流光数量 */\n private _num: number\n\n /** 流光颜色 */\n private _baseColor: string\n\n /** 流光宽度 */\n private _divideWidth: number\n\n /** 流光长度 */\n private _length: number\n\n private _streamerArr: Mesh[] = []\n\n private _lanelineControl: LanelineControl[] = []\n\n private _control = []\n\n public get speed() {\n return this._speed\n }\n\n public get num() {\n return this._num\n }\n\n public get baseColor() {\n return this._baseColor\n }\n\n public get divideWidth() {\n return this._divideWidth\n }\n\n public get width(): number {\n return this._width\n }\n\n public set width(w: number) {\n this._width = w\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n public get divide(): number {\n return this._divide\n }\n\n public set divide(num: number) {\n this._divide = num\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n constructor(params: StreamerTrafficParams) {\n super(params)\n\n const { path, width = 4, divide = 4, divideWidth = 1, num = 5, length = 0.25, baseColor = '#ff7700', speed = 100, corner = 10, control = [] } = params\n\n this._path = path\n this._width = width\n this._divide = divide\n this._divideWidth = divideWidth / 2\n this._num = num\n this._baseColor = baseColor\n this._speed = speed\n this._corner = corner\n this._length = length\n this._lanelineControl = control\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n /**\n * generate streamer\n */\n private generateStreamer() {\n this._streamerArr.forEach((mesh) => {\n mesh.removeFromParent()\n })\n this._streamerArr = []\n\n for (let i = 0; i < this.lanelines.length; i++) {\n const geometry = new TubeGeometry(this.lanelines[i], Math.floor(this.lanelines[i].getLength()) * 10, this._divideWidth, 5, false)\n const material = new ShaderMaterial({\n side: DoubleSide,\n transparent: true,\n uniforms: {\n uColor: { value: new Color(this._baseColor) },\n uTime: { value: MathUtils.lerp(-1, 1, Math.random()) },\n uFade: { value: new Vector2(0, this._length + Math.random() * this._length - this._length / 2) },\n uNumLines: { value: this._num },\n uOffset: { value: Math.random() },\n uAlpha: { value: Math.random() },\n uSpeed: { value: this._speed + Math.random() * this._speed - this._speed / 2 },\n ulength: { value: Math.floor(this.lanelines[i].getLength()) },\n uReverse: { value: this._lanelineControl[i]?.direction ?? 1.0 },\n },\n vertexShader,\n fragmentShader,\n })\n\n const road = new Mesh(geometry, material)\n\n // 渲染顺序\n road.renderOrder = 1000\n\n this.add(road)\n this.run(material)\n this._streamerArr.push(road)\n }\n }\n\n /**\n * run\n * @param material\n */\n private run(material) {\n const clock = new Clock()\n\n this._control.push(\n use.useframe(() => {\n material.uniforms.uTime.value = clock.getElapsedTime()\n }),\n )\n }\n\n override removeFromParent(): this {\n // todo: 升级three.js后,父对象变化,会触发此函数,重组内部引起关系\n this.parent && this._control.forEach((control) => {\n control()\n })\n\n return super.removeFromParent()\n }\n}"],"mappings":"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"}
@@ -1,52 +1,2 @@
1
- export const fragmentShader = /* glsl */`
2
- varying vec2 vUv;
3
- uniform float uSpeed;
4
- uniform float uTime;
5
- uniform vec2 uFade;
6
- uniform vec3 uColor;
7
- uniform int uNumLines;
8
- uniform float uOffset;
9
- uniform float ulength;
10
- uniform float uReverse;
11
-
12
- void main() {
13
- vec3 color = uColor;
14
- float s = 0.0;
15
- float v = 0.0;
16
- float alpha = 0.0;
17
- float maxAlpha = 0.0;
18
-
19
- s = (-uTime * uSpeed) / ulength;
20
- s = mod(s, 1.0);
21
-
22
- float direction = (uReverse == 1.0) ? 1.0 : -1.0;
23
- float numLinesFloat = float(uNumLines);
24
- float baseGap = 1.0 / numLinesFloat;
25
-
26
- float dynamicLength = min(uFade.y, baseGap * 0.7);
27
-
28
- float widthFactor = smoothstep(0.1, 0.5, abs(vUv.y - 0.5));
29
-
30
- for (int i = 0; i < uNumLines; i++) {
31
- float start = float(i) / numLinesFloat;
32
- start += uOffset;
33
- v = vUv.x * direction + start;
34
-
35
- float d = mod((v + s), 1.0);
36
-
37
- if (d <= dynamicLength) {
38
- float tempAlpha = smoothstep(uFade.x, dynamicLength, d);
39
- maxAlpha = max(maxAlpha, tempAlpha);
40
- }
41
- }
42
-
43
- alpha = maxAlpha * widthFactor;
44
-
45
- if (alpha < 0.0001) {
46
- discard;
47
- }
48
-
49
- gl_FragColor = vec4(color, alpha);
50
- }
51
- `;
1
+ export var fragmentShader = /* glsl */"\nvarying vec2 vUv;\nuniform float uSpeed;\nuniform float uTime;\nuniform vec2 uFade;\nuniform vec3 uColor;\nuniform int uNumLines;\nuniform float uOffset;\nuniform float ulength;\nuniform float uReverse;\n\nvoid main() {\n vec3 color = uColor;\n float s = 0.0;\n float v = 0.0;\n float alpha = 0.0;\n float maxAlpha = 0.0; \n\n s = (-uTime * uSpeed) / ulength;\n s = mod(s, 1.0);\n\n float direction = (uReverse == 1.0) ? 1.0 : -1.0;\n float numLinesFloat = float(uNumLines);\n float baseGap = 1.0 / numLinesFloat; \n \n float dynamicLength = min(uFade.y, baseGap * 0.7); \n \n float widthFactor = smoothstep(0.1, 0.5, abs(vUv.y - 0.5));\n \n for (int i = 0; i < uNumLines; i++) {\n float start = float(i) / numLinesFloat;\n start += uOffset;\n v = vUv.x * direction + start;\n\n float d = mod((v + s), 1.0);\n \n if (d <= dynamicLength) {\n float tempAlpha = smoothstep(uFade.x, dynamicLength, d);\n maxAlpha = max(maxAlpha, tempAlpha);\n }\n }\n \n alpha = maxAlpha * widthFactor;\n\n if (alpha < 0.0001) {\n discard;\n }\n\n gl_FragColor = vec4(color, alpha);\n}\n ";
52
2
  //# sourceMappingURL=fragmentShader.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["fragmentShader"],"sources":["../../../../src/business/TrafficComponents/StreamerTraffic/fragmentShader.ts"],"sourcesContent":["export const fragmentShader =/* glsl */ `\nvarying vec2 vUv;\nuniform float uSpeed;\nuniform float uTime;\nuniform vec2 uFade;\nuniform vec3 uColor;\nuniform int uNumLines;\nuniform float uOffset;\nuniform float ulength;\nuniform float uReverse;\n\nvoid main() {\n vec3 color = uColor;\n float s = 0.0;\n float v = 0.0;\n float alpha = 0.0;\n float maxAlpha = 0.0; \n\n s = (-uTime * uSpeed) / ulength;\n s = mod(s, 1.0);\n\n float direction = (uReverse == 1.0) ? 1.0 : -1.0;\n float numLinesFloat = float(uNumLines);\n float baseGap = 1.0 / numLinesFloat; \n \n float dynamicLength = min(uFade.y, baseGap * 0.7); \n \n float widthFactor = smoothstep(0.1, 0.5, abs(vUv.y - 0.5));\n \n for (int i = 0; i < uNumLines; i++) {\n float start = float(i) / numLinesFloat;\n start += uOffset;\n v = vUv.x * direction + start;\n\n float d = mod((v + s), 1.0);\n \n if (d <= dynamicLength) {\n float tempAlpha = smoothstep(uFade.x, dynamicLength, d);\n maxAlpha = max(maxAlpha, tempAlpha);\n }\n }\n \n alpha = maxAlpha * widthFactor;\n\n if (alpha < 0.0001) {\n discard;\n }\n\n gl_FragColor = vec4(color, alpha);\n}\n `"],"mappings":"AAAA,OAAO,MAAMA,cAAc,GAAE,UAAY;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI"}
1
+ {"version":3,"names":["fragmentShader"],"sources":["../../../../src/business/TrafficComponents/StreamerTraffic/fragmentShader.ts"],"sourcesContent":["export const fragmentShader =/* glsl */ `\nvarying vec2 vUv;\nuniform float uSpeed;\nuniform float uTime;\nuniform vec2 uFade;\nuniform vec3 uColor;\nuniform int uNumLines;\nuniform float uOffset;\nuniform float ulength;\nuniform float uReverse;\n\nvoid main() {\n vec3 color = uColor;\n float s = 0.0;\n float v = 0.0;\n float alpha = 0.0;\n float maxAlpha = 0.0; \n\n s = (-uTime * uSpeed) / ulength;\n s = mod(s, 1.0);\n\n float direction = (uReverse == 1.0) ? 1.0 : -1.0;\n float numLinesFloat = float(uNumLines);\n float baseGap = 1.0 / numLinesFloat; \n \n float dynamicLength = min(uFade.y, baseGap * 0.7); \n \n float widthFactor = smoothstep(0.1, 0.5, abs(vUv.y - 0.5));\n \n for (int i = 0; i < uNumLines; i++) {\n float start = float(i) / numLinesFloat;\n start += uOffset;\n v = vUv.x * direction + start;\n\n float d = mod((v + s), 1.0);\n \n if (d <= dynamicLength) {\n float tempAlpha = smoothstep(uFade.x, dynamicLength, d);\n maxAlpha = max(maxAlpha, tempAlpha);\n }\n }\n \n alpha = maxAlpha * widthFactor;\n\n if (alpha < 0.0001) {\n discard;\n }\n\n gl_FragColor = vec4(color, alpha);\n}\n `"],"mappings":"AAAA,OAAO,IAAMA,cAAc,GAAE,2sCAkDzB"}
@@ -1,7 +1,2 @@
1
- export const vertexShader = /* glsl */`
2
- varying vec2 vUv;
3
- void main(void) {
4
- vUv = uv;
5
- gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
6
- }`;
1
+ export var vertexShader = /* glsl */"\n varying vec2 vUv;\n void main(void) {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}";
7
2
  //# sourceMappingURL=vertexShader.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["vertexShader"],"sources":["../../../../src/business/TrafficComponents/StreamerTraffic/vertexShader.ts"],"sourcesContent":["export const vertexShader = /* glsl */`\n varying vec2 vUv;\n void main(void) {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}`"],"mappings":"AAAA,OAAO,MAAMA,YAAY,GAAG,UAAW;AACvC;AACA;AACA;AACA;AACA,EAAE"}
1
+ {"version":3,"names":["vertexShader"],"sources":["../../../../src/business/TrafficComponents/StreamerTraffic/vertexShader.ts"],"sourcesContent":["export const vertexShader = /* glsl */`\n varying vec2 vUv;\n void main(void) {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}`"],"mappings":"AAAA,OAAO,IAAMA,YAAY,GAAG,6JAK1B"}