@anov/3d-ability 0.0.140 → 0.0.142

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 (266) hide show
  1. package/dist/business/Animation/motion/index.js +35 -56
  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 +146 -187
  5. package/dist/business/Area/Fence/FenceBase.js.map +1 -1
  6. package/dist/business/Area/Fence/fence_base_01.js +120 -112
  7. package/dist/business/Area/Fence/fence_base_01.js.map +1 -1
  8. package/dist/business/Area/Fence/fence_feeting_01.js +218 -130
  9. package/dist/business/Area/Fence/fence_feeting_01.js.map +1 -1
  10. package/dist/business/Area/Fence/fence_roll_01.js +140 -130
  11. package/dist/business/Area/Fence/fence_roll_01.js.map +1 -1
  12. package/dist/business/Area/FillArea/FillAreaBase.js +87 -126
  13. package/dist/business/Area/FillArea/FillAreaBase.js.map +1 -1
  14. package/dist/business/Area/FillArea/fillArea_face_01.js +72 -98
  15. package/dist/business/Area/FillArea/fillArea_face_01.js.map +1 -1
  16. package/dist/business/Area/FillArea/fillArea_line_01.js +66 -94
  17. package/dist/business/Area/FillArea/fillArea_line_01.js.map +1 -1
  18. package/dist/business/Area/index.js +267 -483
  19. package/dist/business/Area/index.js.map +1 -1
  20. package/dist/business/Area/tool.js +14 -26
  21. package/dist/business/Area/tool.js.map +1 -1
  22. package/dist/business/Base/ObjectLayer.js +21 -46
  23. package/dist/business/Base/ObjectLayer.js.map +1 -1
  24. package/dist/business/Batch/index.js +189 -234
  25. package/dist/business/Batch/index.js.map +1 -1
  26. package/dist/business/Box/index.js +52 -81
  27. package/dist/business/Box/index.js.map +1 -1
  28. package/dist/business/Cylinder/index.js +51 -79
  29. package/dist/business/Cylinder/index.js.map +1 -1
  30. package/dist/business/Flyline/bubble/CircleBubble.js +1 -9
  31. package/dist/business/Flyline/bubble/CircleBubble.js.map +1 -1
  32. package/dist/business/Flyline/bubble/index.js +7 -21
  33. package/dist/business/Flyline/bubble/index.js.map +1 -1
  34. package/dist/business/Flyline/index.js +96 -162
  35. package/dist/business/Flyline/index.js.map +1 -1
  36. package/dist/business/Flyline/line/ArcLine.js +208 -291
  37. package/dist/business/Flyline/line/ArcLine.js.map +1 -1
  38. package/dist/business/Flyline/line/index.js +8 -22
  39. package/dist/business/Flyline/line/index.js.map +1 -1
  40. package/dist/business/HeatMap/HeatMap.js +380 -467
  41. package/dist/business/HeatMap/HeatMap.js.map +1 -1
  42. package/dist/business/HeatMap/core.js +405 -525
  43. package/dist/business/HeatMap/core.js.map +1 -1
  44. package/dist/business/HeatMap/shader.js +69 -3
  45. package/dist/business/HeatMap/shader.js.map +1 -1
  46. package/dist/business/InfoPanel/index.js +201 -242
  47. package/dist/business/InfoPanel/index.js.map +1 -1
  48. package/dist/business/Line/index.js +55 -88
  49. package/dist/business/Line/index.js.map +1 -1
  50. package/dist/business/Mark/KeyframeAnimation.js +145 -176
  51. package/dist/business/Mark/KeyframeAnimation.js.map +1 -1
  52. package/dist/business/Mark/index.js +196 -294
  53. package/dist/business/Mark/index.js.map +1 -1
  54. package/dist/business/Mark/shader/tanhao.js +36 -3
  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 +377 -551
  58. package/dist/business/MaterialSwitch/MaterialSwitchSystem.js.map +1 -1
  59. package/dist/business/MaterialSwitch/inject.js +92 -58
  60. package/dist/business/MaterialSwitch/inject.js.map +1 -1
  61. package/dist/business/MaterialSwitch/shader/finalFade.js +74 -2
  62. package/dist/business/MaterialSwitch/shader/finalFade.js.map +1 -1
  63. package/dist/business/MaterialSwitch/shader/ground.js +95 -16
  64. package/dist/business/MaterialSwitch/shader/ground.js.map +1 -1
  65. package/dist/business/MaterialSwitch/shader/groundBase64.js +9 -3
  66. package/dist/business/MaterialSwitch/shader/groundBase64.js.map +1 -1
  67. package/dist/business/MaterialSwitch/shader/realFade.js +48 -9
  68. package/dist/business/MaterialSwitch/shader/realFade.js.map +1 -1
  69. package/dist/business/Plane/index.js +51 -78
  70. package/dist/business/Plane/index.js.map +1 -1
  71. package/dist/business/Poi/index.d.ts +5 -0
  72. package/dist/business/Poi/index.js +256 -295
  73. package/dist/business/Poi/index.js.map +1 -1
  74. package/dist/business/Poi/link/Cylinder.js +56 -89
  75. package/dist/business/Poi/link/Cylinder.js.map +1 -1
  76. package/dist/business/Poi/link/Pyramid.js +104 -165
  77. package/dist/business/Poi/link/Pyramid.js.map +1 -1
  78. package/dist/business/Poi/link/index.d.ts +1 -1
  79. package/dist/business/Poi/link/index.js +54 -114
  80. package/dist/business/Poi/link/index.js.map +1 -1
  81. package/dist/business/Poi/panel/index.d.ts +124 -0
  82. package/dist/business/Poi/panel/index.js +474 -0
  83. package/dist/business/Poi/panel/index.js.map +1 -0
  84. package/dist/business/Poi/panel/interfaces.d.ts +67 -0
  85. package/dist/business/Poi/panel/interfaces.js +2 -0
  86. package/dist/business/Poi/panel/interfaces.js.map +1 -0
  87. package/dist/business/Poi/panel/utils.d.ts +72 -0
  88. package/dist/business/Poi/panel/utils.js +126 -0
  89. package/dist/business/Poi/panel/utils.js.map +1 -0
  90. package/dist/business/Poi/particle/DoubleCircle.js +71 -107
  91. package/dist/business/Poi/particle/DoubleCircle.js.map +1 -1
  92. package/dist/business/Poi/particle/DynamicCircle.js +75 -111
  93. package/dist/business/Poi/particle/DynamicCircle.js.map +1 -1
  94. package/dist/business/Poi/particle/SingleCircle.js +62 -98
  95. package/dist/business/Poi/particle/SingleCircle.js.map +1 -1
  96. package/dist/business/Poi/particle/index.js +49 -117
  97. package/dist/business/Poi/particle/index.js.map +1 -1
  98. package/dist/business/Poi/shader/circle.js +31 -3
  99. package/dist/business/Poi/shader/circle.js.map +1 -1
  100. package/dist/business/Poi/shader/cylinder.js +37 -3
  101. package/dist/business/Poi/shader/cylinder.js.map +1 -1
  102. package/dist/business/Poi/shader/doubleCircle.js +55 -3
  103. package/dist/business/Poi/shader/doubleCircle.js.map +1 -1
  104. package/dist/business/Poi/shader/dynamicCircle.js +67 -3
  105. package/dist/business/Poi/shader/dynamicCircle.js.map +1 -1
  106. package/dist/business/Poi/title/Border.js +7 -27
  107. package/dist/business/Poi/title/Border.js.map +1 -1
  108. package/dist/business/Poi/title/Ellipse.js +7 -27
  109. package/dist/business/Poi/title/Ellipse.js.map +1 -1
  110. package/dist/business/Poi/title/index.js +208 -292
  111. package/dist/business/Poi/title/index.js.map +1 -1
  112. package/dist/business/Poi/tools.js +22 -19
  113. package/dist/business/Poi/tools.js.map +1 -1
  114. package/dist/business/Poi/types.d.ts +3 -0
  115. package/dist/business/Poi/types.js.map +1 -1
  116. package/dist/business/Sphere/index.js +47 -72
  117. package/dist/business/Sphere/index.js.map +1 -1
  118. package/dist/business/Spline/index.js +190 -245
  119. package/dist/business/Spline/index.js.map +1 -1
  120. package/dist/business/SplitBuilding/index.js +327 -536
  121. package/dist/business/SplitBuilding/index.js.map +1 -1
  122. package/dist/business/SplitBuilding/type.js +2 -2
  123. package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js +218 -275
  124. package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js.map +1 -1
  125. package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js +132 -177
  126. package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js.map +1 -1
  127. package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js +51 -1
  128. package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js.map +1 -1
  129. package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js +6 -1
  130. package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js.map +1 -1
  131. package/dist/business/TrafficComponents/base.js +32 -55
  132. package/dist/business/TrafficComponents/base.js.map +1 -1
  133. package/dist/business/TrafficComponents/utils.d.ts +1 -1
  134. package/dist/business/TrafficComponents/utils.js +26 -25
  135. package/dist/business/TrafficComponents/utils.js.map +1 -1
  136. package/dist/business/Utils/Curve.js +40 -56
  137. package/dist/business/Utils/Curve.js.map +1 -1
  138. package/dist/business/Utils/constant.js +1 -1
  139. package/dist/business/Utils/constant.js.map +1 -1
  140. package/dist/business/Utils/defineProps.js +13 -14
  141. package/dist/business/Utils/defineProps.js.map +1 -1
  142. package/dist/business/Utils/round-curve.js +127 -153
  143. package/dist/business/Utils/round-curve.js.map +1 -1
  144. package/dist/business/VideoPanel/index.js +258 -319
  145. package/dist/business/VideoPanel/index.js.map +1 -1
  146. package/dist/business/Water/index.js +78 -108
  147. package/dist/business/Water/index.js.map +1 -1
  148. package/dist/business/Water/types.js +1 -1
  149. package/dist/business/Water/types.js.map +1 -1
  150. package/dist/core/Camera/PerspectiveCamera/CameraExpand.js +383 -449
  151. package/dist/core/Camera/PerspectiveCamera/CameraExpand.js.map +1 -1
  152. package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js +107 -142
  153. package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js.map +1 -1
  154. package/dist/core/Controls/FirstViewControl/index.js +84 -96
  155. package/dist/core/Controls/FirstViewControl/index.js.map +1 -1
  156. package/dist/core/Controls/ThirdViewControl/action/input.js +77 -98
  157. package/dist/core/Controls/ThirdViewControl/action/input.js.map +1 -1
  158. package/dist/core/Controls/ThirdViewControl/config/constants.js +1 -1
  159. package/dist/core/Controls/ThirdViewControl/config/constants.js.map +1 -1
  160. package/dist/core/Controls/ThirdViewControl/index.js +19 -28
  161. package/dist/core/Controls/ThirdViewControl/index.js.map +1 -1
  162. package/dist/core/Controls/ThirdViewControl/player/animation.js +126 -155
  163. package/dist/core/Controls/ThirdViewControl/player/animation.js.map +1 -1
  164. package/dist/core/Controls/ThirdViewControl/player/camera.js +47 -63
  165. package/dist/core/Controls/ThirdViewControl/player/camera.js.map +1 -1
  166. package/dist/core/Controls/ThirdViewControl/player/control.js +39 -49
  167. package/dist/core/Controls/ThirdViewControl/player/control.js.map +1 -1
  168. package/dist/core/Controls/ThirdViewControl/player.js +66 -91
  169. package/dist/core/Controls/ThirdViewControl/player.js.map +1 -1
  170. package/dist/core/Controls/base.js +14 -30
  171. package/dist/core/Controls/base.js.map +1 -1
  172. package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js +92 -131
  173. package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js.map +1 -1
  174. package/dist/core/Debug/PerformanceInfo/Performance.js +22 -47
  175. package/dist/core/Debug/PerformanceInfo/Performance.js.map +1 -1
  176. package/dist/core/Light/PointLight/PointLightExt.js +4 -21
  177. package/dist/core/Light/PointLight/PointLightExt.js.map +1 -1
  178. package/dist/core/Material/FinirMaterial/FinirMaterial.js +37 -57
  179. package/dist/core/Material/FinirMaterial/FinirMaterial.js.map +1 -1
  180. package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js +116 -153
  181. package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js.map +1 -1
  182. package/dist/core/Material/PristineGridMaterial/shader/fragment.js +95 -1
  183. package/dist/core/Material/PristineGridMaterial/shader/fragment.js.map +1 -1
  184. package/dist/core/Material/PristineGridMaterial/shader/vertex.js +26 -1
  185. package/dist/core/Material/PristineGridMaterial/shader/vertex.js.map +1 -1
  186. package/dist/core/Material/SurfaceMaterial/index.js +76 -172
  187. package/dist/core/Material/SurfaceMaterial/index.js.map +1 -1
  188. package/dist/core/Material/decorators.js +6 -11
  189. package/dist/core/Material/decorators.js.map +1 -1
  190. package/dist/core/PostEffects/addACESFilmicToneMappingPass.js +16 -12
  191. package/dist/core/PostEffects/addACESFilmicToneMappingPass.js.map +1 -1
  192. package/dist/core/PostEffects/addBrightnessContrastPass.js +17 -13
  193. package/dist/core/PostEffects/addBrightnessContrastPass.js.map +1 -1
  194. package/dist/core/PostEffects/bloomPass.js +17 -10
  195. package/dist/core/PostEffects/bloomPass.js.map +1 -1
  196. package/dist/core/PostEffects/bloomSelect.js +60 -43
  197. package/dist/core/PostEffects/bloomSelect.js.map +1 -1
  198. package/dist/core/PostEffects/colorifyPass.js +17 -13
  199. package/dist/core/PostEffects/colorifyPass.js.map +1 -1
  200. package/dist/core/PostEffects/index.js +28 -22
  201. package/dist/core/PostEffects/index.js.map +1 -1
  202. package/dist/core/PostEffects/outlinePass.js +37 -50
  203. package/dist/core/PostEffects/outlinePass.js.map +1 -1
  204. package/dist/core/PostEffects/postprocessing.js +14 -12
  205. package/dist/core/PostEffects/postprocessing.js.map +1 -1
  206. package/dist/core/PostEffects/saoPass.js +15 -10
  207. package/dist/core/PostEffects/saoPass.js.map +1 -1
  208. package/dist/core/PostEffects/shader/colorify.js +22 -3
  209. package/dist/core/PostEffects/shader/colorify.js.map +1 -1
  210. package/dist/core/PostEffects/shader/gammaCorrectionShader.js +27 -3
  211. package/dist/core/PostEffects/shader/gammaCorrectionShader.js.map +1 -1
  212. package/dist/core/PostEffects/shader/mapping.js +66 -3
  213. package/dist/core/PostEffects/shader/mapping.js.map +1 -1
  214. package/dist/core/PostEffects/shader/thermalMaging.js +28 -3
  215. package/dist/core/PostEffects/shader/thermalMaging.js.map +1 -1
  216. package/dist/core/SceneEffect/grow/grow.js +85 -101
  217. package/dist/core/SceneEffect/grow/grow.js.map +1 -1
  218. package/dist/core/SceneEffect/grow/style_down.js +60 -77
  219. package/dist/core/SceneEffect/grow/style_down.js.map +1 -1
  220. package/dist/core/SceneEffect/grow/style_up.js +64 -81
  221. package/dist/core/SceneEffect/grow/style_up.js.map +1 -1
  222. package/dist/core/SceneEffect/grow/type.js +2 -2
  223. package/dist/core/SceneEffect/grow/type.js.map +1 -1
  224. package/dist/core/WeatherSystem/DynamicWeatherSystem.js +51 -76
  225. package/dist/core/WeatherSystem/DynamicWeatherSystem.js.map +1 -1
  226. package/dist/core/WeatherSystem/hdr/index.js +69 -105
  227. package/dist/core/WeatherSystem/hdr/index.js.map +1 -1
  228. package/dist/core/WeatherSystem/index.js +77 -124
  229. package/dist/core/WeatherSystem/index.js.map +1 -1
  230. package/dist/core/WeatherSystem/objects/fog/index.js +52 -80
  231. package/dist/core/WeatherSystem/objects/fog/index.js.map +1 -1
  232. package/dist/core/WeatherSystem/objects/rain/index.js +72 -84
  233. package/dist/core/WeatherSystem/objects/rain/index.js.map +1 -1
  234. package/dist/core/WeatherSystem/objects/rain/lineRain.js +88 -118
  235. package/dist/core/WeatherSystem/objects/rain/lineRain.js.map +1 -1
  236. package/dist/core/WeatherSystem/objects/rain/plane.js +116 -146
  237. package/dist/core/WeatherSystem/objects/rain/plane.js.map +1 -1
  238. package/dist/core/WeatherSystem/objects/rain/point.js +100 -148
  239. package/dist/core/WeatherSystem/objects/rain/point.js.map +1 -1
  240. package/dist/core/WeatherSystem/objects/sky/cloud.js +71 -104
  241. package/dist/core/WeatherSystem/objects/sky/cloud.js.map +1 -1
  242. package/dist/core/WeatherSystem/objects/sky/index.js +66 -84
  243. package/dist/core/WeatherSystem/objects/sky/index.js.map +1 -1
  244. package/dist/core/WeatherSystem/objects/sky/outline.js +25 -45
  245. package/dist/core/WeatherSystem/objects/sky/outline.js.map +1 -1
  246. package/dist/core/WeatherSystem/shaders/cloud.js +74 -3
  247. package/dist/core/WeatherSystem/shaders/cloud.js.map +1 -1
  248. package/dist/core/WeatherSystem/shaders/fog.js +103 -3
  249. package/dist/core/WeatherSystem/shaders/fog.js.map +1 -1
  250. package/dist/core/WeatherSystem/shaders/rain.js +206 -7
  251. package/dist/core/WeatherSystem/shaders/rain.js.map +1 -1
  252. package/dist/core/WeatherSystem/shaders/sky.js +87 -3
  253. package/dist/core/WeatherSystem/shaders/sky.js.map +1 -1
  254. package/dist/core/WeatherSystem/sky/index.js +104 -135
  255. package/dist/core/WeatherSystem/sky/index.js.map +1 -1
  256. package/dist/core/WeatherSystem/utils/constant.js +44 -38
  257. package/dist/core/WeatherSystem/utils/constant.js.map +1 -1
  258. package/dist/core/WeatherSystem/utils/math.js +18 -25
  259. package/dist/core/WeatherSystem/utils/math.js.map +1 -1
  260. package/dist/core/WeatherSystem/utils/type.js +1 -1
  261. package/dist/core/WeatherSystem/utils/type.js.map +1 -1
  262. package/dist/core/WeatherSystem/weather/index.js +96 -141
  263. package/dist/core/WeatherSystem/weather/index.js.map +1 -1
  264. package/dist/utils/index.js +1 -1
  265. package/dist/utils/index.js.map +1 -1
  266. 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","_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":";;;;;;;;;;;;;;;;;;;;AAAA;;AAEA,SAASA,IAAI,EAAEC,YAAY,EAAEC,KAAK,QAAQ,eAAe;AACzD,SAASC,WAAW;AAGpB,IAAQC,YAAY,GAAKF,KAAK,CAAtBE,YAAY;AAsBpB,IAAMC,YAAY,GAAG,IAAIJ,YAAY,CAAC,CAAC;AAEvC,IAAMK,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,MAAW,EAAEC,WAA4B,EAAK;EACrE,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAA,EAAS;IACnB,OAAOF,MAAM,CAACG,QAAQ;EACxB,CAAC;EAED,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAIC,QAAa,EAAK;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,CAAC,UAACC,OAAO,EAAK;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,CAAC,UAACC,OAAO,EAAK;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,0BAAAC,YAAA;EAAAC,SAAA,CAAAH,cAAA,EAAAE,YAAA;EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAAL,cAAA;EA8DzB,SAAAA,eAAYM,MAA4B,EAAE;IAAA,IAAAC,KAAA;IAAAC,eAAA,OAAAR,cAAA;IACxCO,KAAA,GAAAH,MAAA,CAAAK,IAAA,OAAMH,MAAM;IA9Dd;IAAAI,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAGA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAGA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,gBACoB,CAAC;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,sBAEgB,EAAE;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,4BAEI,EAAE;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,8BAED,EAAE;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,8BAEF,EAAE;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,eAE3B,IAAI;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,eAE+B,EAAE;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,uBAEV,EAAE;IAEhD;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,yBACsC,EAAE;IAExC;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,gBAC6B,EAAE;IAE/B;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,gBACyC,EAAE;IAAAK,0BAAA,CAAAD,sBAAA,CAAAJ,KAAA,cAAAM,WAAA,EAAAF,sBAAA,CAAAJ,KAAA;IAkCzC,IAAQO,IAAI,GAA8FR,MAAM,CAAxGQ,IAAI;MAAAC,aAAA,GAA8FT,MAAM,CAAlGU,KAAK;MAALA,KAAK,GAAAD,aAAA,cAAG,CAAC,GAAAA,aAAA;MAAAE,cAAA,GAAmFX,MAAM,CAAvFY,MAAM;MAANA,MAAM,GAAAD,cAAA,cAAG,CAAC,GAAAA,cAAA;MAAEE,QAAQ,GAA6Db,MAAM,CAA3Ea,QAAQ;MAAAC,gBAAA,GAA6Dd,MAAM,CAAjEe,QAAQ;MAARA,QAAQ,GAAAD,gBAAA,cAAG,CAAC,GAAAA,gBAAA;MAAAE,gBAAA,GAA+ChB,MAAM,CAAnDiB,QAAQ;MAARA,QAAQ,GAAAD,gBAAA,cAAG,EAAE,GAAAA,gBAAA;MAAAE,eAAA,GAAgClB,MAAM,CAApChB,OAAO;MAAPA,OAAO,GAAAkC,eAAA,cAAG,EAAE,GAAAA,eAAA;MAAAC,cAAA,GAAkBnB,MAAM,CAAtBoB,MAAM;MAANA,MAAM,GAAAD,cAAA,cAAG,EAAE,GAAAA,cAAA;IAErGlB,KAAA,CAAKoB,KAAK,GAAGb,IAAI;IACjBP,KAAA,CAAKqB,MAAM,GAAGZ,KAAK;IACnBT,KAAA,CAAKsB,OAAO,GAAGX,MAAM;IACrBX,KAAA,CAAKuB,SAAS,GAAGX,QAAQ;IACzBZ,KAAA,CAAKwB,SAAS,GAAGV,QAAQ;IACzBd,KAAA,CAAKyB,SAAS,GAAGT,QAAQ;IACzBhB,KAAA,CAAK0B,gBAAgB,GAAG3C,OAAO;IAC/BiB,KAAA,CAAK2B,OAAO,GAAGR,MAAM;IAErB,IAAIV,KAAK,KAAK,CAAC,IAAIE,MAAM,KAAK,CAAC,EAAE;MAC/BiB,OAAO,CAACC,KAAK,CAAC,YAAY,CAAC;MAC3B,MAAM,IAAIC,KAAK,CAAC,YAAY,CAAC;IAC/B;IAEA9B,KAAA,CAAK+B,iBAAiB,CAAC,CAAC;IACxB/B,KAAA,CAAKgC,kBAAkB,CAAC,CAAC;IACzBhC,KAAA,CAAKiC,sBAAsB,CAAC,CAAC;IAAA,OAAAjC,KAAA;EAC/B;;EAEA;AACF;AACA;EAFEkC,YAAA,CAAAzC,cAAA;IAAA0C,GAAA;IAAA9C,GAAA,EArDA,SAAAA,IAAA,EAA2B;MACzB,OAAO,IAAI,CAACgC,MAAM;IACpB,CAAC;IAAA/B,GAAA,EAED,SAAAA,IAAiB8C,CAAS,EAAE;MAC1B,IAAI,CAACf,MAAM,GAAGe,CAAC;MAEf,IAAI,CAACL,iBAAiB,CAAC,CAAC;MACxB,IAAI,CAACC,kBAAkB,CAAC,CAAC;IAC3B;EAAC;IAAAG,GAAA;IAAA9C,GAAA,EAED,SAAAA,IAAA,EAA4B;MAC1B,OAAO,IAAI,CAACiC,OAAO;IACrB,CAAC;IAAAhC,GAAA,EAED,SAAAA,IAAkB+C,GAAW,EAAE;MAC7B,IAAI,CAACf,OAAO,GAAGe,GAAG;MAElB,IAAI,CAACN,iBAAiB,CAAC,CAAC;MACxB,IAAI,CAACC,kBAAkB,CAAC,CAAC;IAC3B;EAAC;IAAAG,GAAA;IAAA9C,GAAA,EAKD,SAAAA,IAAA,EAA8B;MAC5B,OAAO,IAAI,CAACoC,SAAS;IACvB;EAAC;IAAAU,GAAA;IAAAG,KAAA,EA6BD,SAAAN,mBAAA,EAA6B;MAAA,IAAAO,MAAA;MAC3B,IAAI,CAACC,kBAAkB,GAAG,EAAE;MAE5B,IAAI,CAAC,IAAI,CAACjB,SAAS,CAACkB,MAAM,EACxB;MAEF,IAAMC,QAAQ,GAAG,IAAI,CAACnB,SAAS,CAACoB,GAAG,CAAC,UAAAC,IAAA,EAAa;QAAA,IAAAC,qBAAA;QAAA,IAAVC,GAAG,GAAAF,IAAA,CAAHE,GAAG;QACxC,OAAO1E,YAAY,CAAC2E,QAAQ,CAAC;UAC3BD,GAAG,EAAHA,GAAG;UACHE,KAAK,EAAE,IAAI;UACX;UACAC,SAAS,GAAAJ,qBAAA,GAAE5E,KAAK,CAACiF,eAAe,CAAC7D,GAAG,CAAC,aAAa,CAAC,cAAAwD,qBAAA,cAAAA,qBAAA,GAAI;QACzD,CAAC,CAAC;MACJ,CAAC,CAAC;MAEFM,OAAO,CAACC,UAAU,CAACV,QAAQ,CAAC,CAACW,IAAI,CAAC,UAACC,GAAG,EAAK;QACzCA,GAAG,CAACxE,OAAO,CAAC,UAACyE,QAAQ,EAAK;UACxB,IAAIA,QAAQ,CAACC,MAAM,KAAK,WAAW,EACjCjB,MAAI,CAACC,kBAAkB,CAACiB,IAAI,CAAClB,MAAI,CAACmB,qBAAqB,CAACH,QAAQ,CAACjB,KAAK,CAACqB,KAAc,CAAC,CAAC;QAC3F,CAAC,CAAC;QAEF,IAAMC,UAAU,GAAGrB,MAAI,CAACsB,kBAAkB,CAAC,CAAC;QAC5CtB,MAAI,CAACuB,oBAAoB,CAACF,UAAU,CAAC;MACvC,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;EAFE;IAAAzB,GAAA;IAAAG,KAAA,EAGA,SAAAyB,oBAAA,EAA8B;MAC5B,IAAMC,SAAS,GAAG,IAAI,CAACxB,kBAAkB,CAACyB,MAAM,CAAC,UAACC,GAAG,EAAEC,OAAO,EAAK;QACjE,IAAMC,GAAG,GAAG,IAAIrG,IAAI,CAAC,CAAC,CAACsG,aAAa,CAACF,OAAO,CAAC;QAC7C,IAAMG,aAAa,GAAGF,GAAG,CAACF,GAAG,CAACK,CAAC,GAAGH,GAAG,CAACI,GAAG,CAACD,CAAC;QAE3C,OAAOD,aAAa,GAAGJ,GAAG,GAAGI,aAAa,GAAGJ,GAAG;MAClD,CAAC,EAAE,CAAC,CAAC;MAEL,OAAOF,SAAS;IAClB;;IAEA;AACF;AACA;EAFE;IAAA7B,GAAA;IAAAG,KAAA,EAGA,SAAAuB,mBAAA,EAA6B;MAAA,IAAAY,MAAA;MAC3B,IAAMC,WAAW,GAAG,IAAI,CAACC,SAAS,CAAChC,GAAG,CAAC,UAAAiC,IAAI;QAAA,OAAIA,IAAI,CAACC,SAAS,CAAC,CAAC;MAAA,EAAC;MAChE,IAAMC,IAAI,GAAGJ,WAAW,CAAC/B,GAAG,CAAC,UAAAF,MAAM;QAAA,OAAIsC,IAAI,CAACC,KAAK,CAACvC,MAAM,GAAGgC,MAAI,CAACV,mBAAmB,CAAC,CAAC,CAAC;MAAA,EAAC;MACvF,IAAMkB,QAAQ,GAAGH,IAAI,CAACb,MAAM,CAAC,UAACiB,GAAG,EAAEC,IAAI,EAAK;QAAE,OAAOD,GAAG,GAAGC,IAAI;MAAC,CAAC,EAAE,CAAC,CAAC;MAErE,IAAIF,QAAQ,GAAG,IAAI,CAACzD,SAAS,EAC3B,MAAM,IAAIM,KAAK,CAAC,SAAS,CAAC;MAE5B,OAAO,IAAI,CAACsD,eAAe,CAACN,IAAI,CAAC;IACnC;;IAEA;AACF;AACA;EAFE;IAAA3C,GAAA;IAAAG,KAAA,EAGA,SAAA8C,gBAAwBN,IAAc,EAAE;MACtC,IAAMO,IAAI,GAAG,EAAE;MAEfP,IAAI,CAAChG,OAAO,CAAC,UAACgG,IAAI,EAAEQ,CAAC,EAAK;QACxB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGT,IAAI,EAAES,CAAC,EAAE,EAAE;UAC7BF,IAAI,CAAC5B,IAAI,CAAC;YACR+B,CAAC,EAAE,CAAC,GAAGV,IAAI,GAAGS,CAAC;YACfX,IAAI,EAAEU;UACR,CAAC,CAAC;QACJ;MACF,CAAC,CAAC;MAEF,OAAOD,IAAI;IACb;;IAEA;AACF;AACA;EAFE;IAAAlD,GAAA;IAAAG,KAAA,EAGA,SAAAL,uBAAA,EAAiC;MAAA,IAAAwD,MAAA;MAC/BC,QAAQ,CAACC,gBAAgB,CAAC,kBAAkB,EAAE,YAAM;QAClD,IAAID,QAAQ,CAACE,MAAM,EAAE;UACnBH,MAAI,CAAC5G,QAAQ,CAACC,OAAO,CAAC,UAACC,OAAO,EAAK;YACjCA,OAAO,CAACC,IAAI,CAAC,CAAC;UAChB,CAAC,CAAC;QACJ,CAAC,MACI;UACHyG,MAAI,CAAC5G,QAAQ,CAACC,OAAO,CAAC,UAACC,OAAO,EAAK;YACjCA,OAAO,CAACG,QAAQ,CAAC,CAAC;UACpB,CAAC,CAAC;QACJ;MACF,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;EAFE;IAAAiD,GAAA;IAAAG,KAAA,EAGA,SAAAwB,qBAA6BF,UAAU,EAAE;MACvC,KAAK,IAAI0B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAAC9D,SAAS,EAAE8D,CAAC,EAAE,EAAE;QACvC,IAAMO,KAAK,GAAGd,IAAI,CAACC,KAAK,CAACD,IAAI,CAACe,MAAM,CAAC,CAAC,GAAGlC,UAAU,CAACnB,MAAM,CAAC;QAC3D,IAAMsD,OAAO,GAAGnC,UAAU,CAACiC,KAAK,CAAC;QACjC,IAAMG,eAAe,GAAG,IAAI,CAACrB,SAAS,CAACoB,OAAO,CAACnB,IAAI,CAAC;QACpD,IAAMqB,KAAK,GAAGD,eAAe,CAACE,UAAU,CAACH,OAAO,CAACP,CAAC,CAAC;QAEnD,IAAI,CAACW,eAAe,CAAC1C,IAAI,CAACwC,KAAK,CAAC;QAChC,IAAI,CAACG,qBAAqB,CAAC3C,IAAI,CAACuC,eAAe,CAACE,UAAU,CAAC,CAACH,OAAO,CAACP,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;QACnF,IAAI,CAACa,uBAAuB,CAAC5C,IAAI,CAACsC,OAAO,CAACP,CAAC,CAAC;QAC5C,IAAI,CAACc,uBAAuB,CAAC7C,IAAI,CAACsC,OAAO,CAACnB,IAAI,CAAC;QAE/ChB,UAAU,CAAC2C,MAAM,CAACV,KAAK,EAAE,CAAC,CAAC;MAC7B;MAEA,IAAI,CAACW,YAAY,CAAC,CAAC;IACrB;;IAEA;AACF;AACA;EAFE;IAAArE,GAAA;IAAAG,KAAA,EAGA,SAAAkE,aAAA,EAAuB;MAAA,IAAAC,MAAA;MACrB,IAAI,CAACC,SAAS,CAAC5H,OAAO,CAAC,UAACqF,OAAO,EAAEmB,CAAC,EAAK;QACrCnB,OAAO,CAACwC,gBAAgB,CAAC,CAAC;QAC1BF,MAAI,CAAC5H,QAAQ,CAACyG,CAAC,CAAC,CAACsB,MAAM,CAAC,CAAC;MAC3B,CAAC,CAAC;MAEF,IAAI,CAACF,SAAS,GAAG,EAAE;MACnB,IAAI,CAAC7H,QAAQ,GAAG,EAAE;MAElB,KAAK,IAAIyG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACa,eAAe,CAAC1D,MAAM,EAAE6C,CAAC,EAAE,EAAE;QACpD,IAAMuB,gBAAgB,GAAG9B,IAAI,CAACC,KAAK,CAACD,IAAI,CAACe,MAAM,CAAC,CAAC,GAAG,IAAI,CAACtD,kBAAkB,CAACC,MAAM,CAAC;QACnF,IAAMqE,cAAc,GAAG,IAAI,CAACtE,kBAAkB,CAACqE,gBAAgB,CAAC,CAACE,KAAK,CAAC,CAAC;QAExED,cAAc,CAACE,QAAQ,CAACC,IAAI,CAAC,IAAI,CAACd,eAAe,CAACb,CAAC,CAAC,CAAC;QACrDwB,cAAc,CAACI,MAAM,CAAC,IAAI,CAACd,qBAAqB,CAACd,CAAC,CAAC,CAAC;QAEpD,IAAI,CAACoB,SAAS,CAACjD,IAAI,CAACqD,cAAc,CAAC;QACnC,IAAI,CAACK,GAAG,CAACL,cAAc,CAAC;QACxB,IAAI,CAACM,GAAG,CAAC,IAAI,CAACzC,SAAS,CAAC,IAAI,CAAC2B,uBAAuB,CAAChB,CAAC,CAAC,CAAC,EAAEwB,cAAc,EAAE,IAAI,CAACT,uBAAuB,CAACf,CAAC,CAAC,EAAE,IAAI,CAACgB,uBAAuB,CAAChB,CAAC,CAAC,CAAC;MAC7I;MAEA,IAAI,CAAC+B,aAAa,CAAC;QACjBC,IAAI,EAAE;MACR,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAnF,GAAA;IAAAG,KAAA,EAOA,SAAA8E,IAAYG,QAA4B,EAAEC,KAAe,EAAEC,QAAgB,EAAEC,SAAiB,EAAE;MAC9F,IAAMC,EAAE,GAAG,IAAI,CAACjG,gBAAgB,CAACkG,IAAI,CAAC,UAAAD,EAAE;QAAA,OAAIA,EAAE,CAAC9B,KAAK,KAAK6B,SAAS;MAAA,EAAC;MAEnE,IAAI,IAAI,CAAC1G,QAAQ,KAAK,CAAC,EAAE;QACvBY,OAAO,CAACiG,GAAG,CAAC,eAAe,CAAC;QAC5B;MACF;MAEA,IAAM9I,OAAO,GAAGZ,YAAY,CAACqJ,KAAK,EAAED,QAAQ,EAAE;QAC5CO,QAAQ,EAAE,IAAI,CAAC9G,QAAQ;QACvB+G,SAAS,EAAGJ,EAAE,IAAI,CAAAA,EAAE,aAAFA,EAAE,uBAAFA,EAAE,CAAEI,SAAS,MAAK,CAAC,GAAI,CAAC,CAAC,GAAG;MAChD,CAAC,CAAC;MAEF,IAAI,CAAClJ,QAAQ,CAAC4E,IAAI,CAAC1E,OAAO,CAAC;MAC3BA,OAAO,CAACiJ,WAAW,CAACP,QAAQ,CAAC;IAC/B;;IAEA;AACF;AACA;EAFE;IAAAtF,GAAA;IAAAG,KAAA,EAGA,SAAAoB,sBAA8B8D,KAAY,EAAE;MAC1C,IAAMpD,GAAG,GAAG,IAAIrG,IAAI,CAAC,CAAC,CAACsG,aAAa,CAACmD,KAAK,CAAC;MAC3C,IAAMS,YAAY,GAAG7D,GAAG,CAACF,GAAG,CAACgE,CAAC,GAAG9D,GAAG,CAACI,GAAG,CAAC0D,CAAC;MAC1C,IAAMC,aAAa,GAAI,IAAI,CAAC9G,MAAM,IAAI,IAAI,CAACC,OAAO,GAAG,CAAC,CAAC,GAAI2G,YAAY,GAAG,GAAG;MAE7ET,KAAK,CAACY,KAAK,CAAC9I,GAAG,CAAC6I,aAAa,EAAEA,aAAa,EAAEA,aAAa,CAAC;MAE5D,OAAOX,KAAK;IACd;EAAC;IAAArF,GAAA;IAAAG,KAAA,EAED,SAAAqE,iBAAA,EAAkC;MAChC;MACA,IAAI,CAAC0B,MAAM,IAAI,IAAI,CAACxJ,QAAQ,CAACC,OAAO,CAAC,UAACC,OAAO,EAAK;QAChDA,OAAO,CAAC6H,MAAM,CAAC,CAAC;MAClB,CAAC,CAAC;MAEF,OAAA0B,IAAA,CAAAC,eAAA,CAAA9I,cAAA,CAAA+I,SAAA,6BAAAtI,IAAA;IACF;EAAC;EAAA,OAAAT,cAAA;AAAA,EAjRiCvB,WAAW,IAAAoC,WAAA,GAAAmI,yBAAA,CAAA/I,MAAA,CAAA8I,SAAA,cAuD5CnK,eAAe;EAAAmB,YAAA;EAAAD,UAAA;EAAAmJ,QAAA;EAAAC,WAAA,WAAAA,YAAA;IAAA,OACG,IAAI;EAAA;AAAA,KAAAjJ,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","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":"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"}
@@ -1,19 +1,6 @@
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); }
14
1
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
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); }
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); }
17
4
  import { Clock, Color, DoubleSide, MathUtils, Mesh, ShaderMaterial, TubeGeometry, Vector2, use } from '@anov/3d-core';
18
5
  import { BaseTraffic } from "../base";
19
6
  import { fragmentShader } from "./fragmentShader";
@@ -21,180 +8,148 @@ import { vertexShader } from "./vertexShader";
21
8
  /**
22
9
  * 流光风格交通组件
23
10
  */
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);
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);
31
42
  /** 流光速度 */
32
- _defineProperty(_assertThisInitialized(_this), "_speed", void 0);
43
+ _defineProperty(this, "_speed", void 0);
33
44
  /** 流光数量 */
34
- _defineProperty(_assertThisInitialized(_this), "_num", void 0);
45
+ _defineProperty(this, "_num", void 0);
35
46
  /** 流光颜色 */
36
- _defineProperty(_assertThisInitialized(_this), "_baseColor", void 0);
47
+ _defineProperty(this, "_baseColor", void 0);
37
48
  /** 流光宽度 */
38
- _defineProperty(_assertThisInitialized(_this), "_divideWidth", void 0);
49
+ _defineProperty(this, "_divideWidth", void 0);
39
50
  /** 流光长度 */
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;
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();
76
79
  }
77
80
 
78
81
  /**
79
82
  * generate streamer
80
83
  */
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
- });
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
- }
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())
162
101
  },
163
- vertexShader: vertexShader,
164
- fragmentShader: fragmentShader
165
- });
166
- var road = new Mesh(geometry, material);
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
126
+ });
127
+ const road = new Mesh(geometry, material);
167
128
 
168
- // 渲染顺序
169
- road.renderOrder = 1000;
170
- this.add(road);
171
- this.run(material);
172
- this._streamerArr.push(road);
173
- }
129
+ // 渲染顺序
130
+ road.renderOrder = 1000;
131
+ this.add(road);
132
+ this.run(material);
133
+ this._streamerArr.push(road);
174
134
  }
135
+ }
175
136
 
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);
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
+ }
200
155
  //# sourceMappingURL=StreamerTraffic.js.map
@@ -1 +1 @@
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
+ {"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,2 +1,52 @@
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 ";
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
+ `;
2
52
  //# 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,IAAMA,cAAc,GAAE,2sCAkDzB"}
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,2 +1,7 @@
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}";
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
+ }`;
2
7
  //# 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,IAAMA,YAAY,GAAG,6JAK1B"}
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"}