@anov/3d-ability 0.0.140 → 0.0.141

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) 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.js +25 -24
  134. package/dist/business/TrafficComponents/utils.js.map +1 -1
  135. package/dist/business/Utils/Curve.js +40 -56
  136. package/dist/business/Utils/Curve.js.map +1 -1
  137. package/dist/business/Utils/constant.js +1 -1
  138. package/dist/business/Utils/constant.js.map +1 -1
  139. package/dist/business/Utils/defineProps.js +13 -14
  140. package/dist/business/Utils/defineProps.js.map +1 -1
  141. package/dist/business/Utils/round-curve.js +127 -153
  142. package/dist/business/Utils/round-curve.js.map +1 -1
  143. package/dist/business/VideoPanel/index.js +258 -319
  144. package/dist/business/VideoPanel/index.js.map +1 -1
  145. package/dist/business/Water/index.js +78 -108
  146. package/dist/business/Water/index.js.map +1 -1
  147. package/dist/business/Water/types.js +1 -1
  148. package/dist/business/Water/types.js.map +1 -1
  149. package/dist/core/Camera/PerspectiveCamera/CameraExpand.js +383 -449
  150. package/dist/core/Camera/PerspectiveCamera/CameraExpand.js.map +1 -1
  151. package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js +107 -142
  152. package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js.map +1 -1
  153. package/dist/core/Controls/FirstViewControl/index.js +84 -96
  154. package/dist/core/Controls/FirstViewControl/index.js.map +1 -1
  155. package/dist/core/Controls/ThirdViewControl/action/input.js +77 -98
  156. package/dist/core/Controls/ThirdViewControl/action/input.js.map +1 -1
  157. package/dist/core/Controls/ThirdViewControl/config/constants.js +1 -1
  158. package/dist/core/Controls/ThirdViewControl/config/constants.js.map +1 -1
  159. package/dist/core/Controls/ThirdViewControl/index.js +19 -28
  160. package/dist/core/Controls/ThirdViewControl/index.js.map +1 -1
  161. package/dist/core/Controls/ThirdViewControl/player/animation.js +126 -155
  162. package/dist/core/Controls/ThirdViewControl/player/animation.js.map +1 -1
  163. package/dist/core/Controls/ThirdViewControl/player/camera.js +47 -63
  164. package/dist/core/Controls/ThirdViewControl/player/camera.js.map +1 -1
  165. package/dist/core/Controls/ThirdViewControl/player/control.js +39 -49
  166. package/dist/core/Controls/ThirdViewControl/player/control.js.map +1 -1
  167. package/dist/core/Controls/ThirdViewControl/player.js +66 -91
  168. package/dist/core/Controls/ThirdViewControl/player.js.map +1 -1
  169. package/dist/core/Controls/base.js +14 -30
  170. package/dist/core/Controls/base.js.map +1 -1
  171. package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js +92 -131
  172. package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js.map +1 -1
  173. package/dist/core/Debug/PerformanceInfo/Performance.js +22 -47
  174. package/dist/core/Debug/PerformanceInfo/Performance.js.map +1 -1
  175. package/dist/core/Light/PointLight/PointLightExt.js +4 -21
  176. package/dist/core/Light/PointLight/PointLightExt.js.map +1 -1
  177. package/dist/core/Material/FinirMaterial/FinirMaterial.js +37 -57
  178. package/dist/core/Material/FinirMaterial/FinirMaterial.js.map +1 -1
  179. package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js +116 -153
  180. package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js.map +1 -1
  181. package/dist/core/Material/PristineGridMaterial/shader/fragment.js +95 -1
  182. package/dist/core/Material/PristineGridMaterial/shader/fragment.js.map +1 -1
  183. package/dist/core/Material/PristineGridMaterial/shader/vertex.js +26 -1
  184. package/dist/core/Material/PristineGridMaterial/shader/vertex.js.map +1 -1
  185. package/dist/core/Material/SurfaceMaterial/index.js +76 -172
  186. package/dist/core/Material/SurfaceMaterial/index.js.map +1 -1
  187. package/dist/core/Material/decorators.js +6 -11
  188. package/dist/core/Material/decorators.js.map +1 -1
  189. package/dist/core/PostEffects/addACESFilmicToneMappingPass.js +16 -12
  190. package/dist/core/PostEffects/addACESFilmicToneMappingPass.js.map +1 -1
  191. package/dist/core/PostEffects/addBrightnessContrastPass.js +17 -13
  192. package/dist/core/PostEffects/addBrightnessContrastPass.js.map +1 -1
  193. package/dist/core/PostEffects/bloomPass.js +17 -10
  194. package/dist/core/PostEffects/bloomPass.js.map +1 -1
  195. package/dist/core/PostEffects/bloomSelect.js +60 -43
  196. package/dist/core/PostEffects/bloomSelect.js.map +1 -1
  197. package/dist/core/PostEffects/colorifyPass.js +17 -13
  198. package/dist/core/PostEffects/colorifyPass.js.map +1 -1
  199. package/dist/core/PostEffects/index.js +28 -22
  200. package/dist/core/PostEffects/index.js.map +1 -1
  201. package/dist/core/PostEffects/outlinePass.js +37 -50
  202. package/dist/core/PostEffects/outlinePass.js.map +1 -1
  203. package/dist/core/PostEffects/postprocessing.js +14 -12
  204. package/dist/core/PostEffects/postprocessing.js.map +1 -1
  205. package/dist/core/PostEffects/saoPass.js +15 -10
  206. package/dist/core/PostEffects/saoPass.js.map +1 -1
  207. package/dist/core/PostEffects/shader/colorify.js +22 -3
  208. package/dist/core/PostEffects/shader/colorify.js.map +1 -1
  209. package/dist/core/PostEffects/shader/gammaCorrectionShader.js +27 -3
  210. package/dist/core/PostEffects/shader/gammaCorrectionShader.js.map +1 -1
  211. package/dist/core/PostEffects/shader/mapping.js +66 -3
  212. package/dist/core/PostEffects/shader/mapping.js.map +1 -1
  213. package/dist/core/PostEffects/shader/thermalMaging.js +28 -3
  214. package/dist/core/PostEffects/shader/thermalMaging.js.map +1 -1
  215. package/dist/core/SceneEffect/grow/grow.js +85 -101
  216. package/dist/core/SceneEffect/grow/grow.js.map +1 -1
  217. package/dist/core/SceneEffect/grow/style_down.js +60 -77
  218. package/dist/core/SceneEffect/grow/style_down.js.map +1 -1
  219. package/dist/core/SceneEffect/grow/style_up.js +64 -81
  220. package/dist/core/SceneEffect/grow/style_up.js.map +1 -1
  221. package/dist/core/SceneEffect/grow/type.js +2 -2
  222. package/dist/core/SceneEffect/grow/type.js.map +1 -1
  223. package/dist/core/WeatherSystem/DynamicWeatherSystem.js +51 -76
  224. package/dist/core/WeatherSystem/DynamicWeatherSystem.js.map +1 -1
  225. package/dist/core/WeatherSystem/hdr/index.js +69 -105
  226. package/dist/core/WeatherSystem/hdr/index.js.map +1 -1
  227. package/dist/core/WeatherSystem/index.js +77 -124
  228. package/dist/core/WeatherSystem/index.js.map +1 -1
  229. package/dist/core/WeatherSystem/objects/fog/index.js +52 -80
  230. package/dist/core/WeatherSystem/objects/fog/index.js.map +1 -1
  231. package/dist/core/WeatherSystem/objects/rain/index.js +72 -84
  232. package/dist/core/WeatherSystem/objects/rain/index.js.map +1 -1
  233. package/dist/core/WeatherSystem/objects/rain/lineRain.js +88 -118
  234. package/dist/core/WeatherSystem/objects/rain/lineRain.js.map +1 -1
  235. package/dist/core/WeatherSystem/objects/rain/plane.js +116 -146
  236. package/dist/core/WeatherSystem/objects/rain/plane.js.map +1 -1
  237. package/dist/core/WeatherSystem/objects/rain/point.js +100 -148
  238. package/dist/core/WeatherSystem/objects/rain/point.js.map +1 -1
  239. package/dist/core/WeatherSystem/objects/sky/cloud.js +71 -104
  240. package/dist/core/WeatherSystem/objects/sky/cloud.js.map +1 -1
  241. package/dist/core/WeatherSystem/objects/sky/index.js +66 -84
  242. package/dist/core/WeatherSystem/objects/sky/index.js.map +1 -1
  243. package/dist/core/WeatherSystem/objects/sky/outline.js +25 -45
  244. package/dist/core/WeatherSystem/objects/sky/outline.js.map +1 -1
  245. package/dist/core/WeatherSystem/shaders/cloud.js +74 -3
  246. package/dist/core/WeatherSystem/shaders/cloud.js.map +1 -1
  247. package/dist/core/WeatherSystem/shaders/fog.js +103 -3
  248. package/dist/core/WeatherSystem/shaders/fog.js.map +1 -1
  249. package/dist/core/WeatherSystem/shaders/rain.js +206 -7
  250. package/dist/core/WeatherSystem/shaders/rain.js.map +1 -1
  251. package/dist/core/WeatherSystem/shaders/sky.js +87 -3
  252. package/dist/core/WeatherSystem/shaders/sky.js.map +1 -1
  253. package/dist/core/WeatherSystem/sky/index.js +104 -135
  254. package/dist/core/WeatherSystem/sky/index.js.map +1 -1
  255. package/dist/core/WeatherSystem/utils/constant.js +44 -38
  256. package/dist/core/WeatherSystem/utils/constant.js.map +1 -1
  257. package/dist/core/WeatherSystem/utils/math.js +18 -25
  258. package/dist/core/WeatherSystem/utils/math.js.map +1 -1
  259. package/dist/core/WeatherSystem/utils/type.js +1 -1
  260. package/dist/core/WeatherSystem/utils/type.js.map +1 -1
  261. package/dist/core/WeatherSystem/weather/index.js +96 -141
  262. package/dist/core/WeatherSystem/weather/index.js.map +1 -1
  263. package/dist/utils/index.js +1 -1
  264. package/dist/utils/index.js.map +1 -1
  265. package/package.json +3 -3
@@ -1,278 +1,223 @@
1
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
4
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
5
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
6
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
7
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
8
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
9
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
10
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
11
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
12
1
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
14
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
2
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
3
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
15
4
  import { DoubleSide, Mesh, MeshBasicMaterial, TubeGeometry, Vector3, MirroredRepeatWrapping, RepeatWrapping, TextureLoader, use } from '@anov/3d-core';
16
5
  import ObjectLayer from "../Base/ObjectLayer";
17
6
  import { RoundLineGeometry } from "../Utils/round-curve";
18
- var Spline = /*#__PURE__*/function (_ObjectLayer) {
19
- _inherits(Spline, _ObjectLayer);
20
- var _super = _createSuper(Spline);
21
- function Spline(option) {
22
- var _this;
23
- _classCallCheck(this, Spline);
24
- _this = _super.call(this);
25
- _defineProperty(_assertThisInitialized(_this), "_width", void 0);
26
- _defineProperty(_assertThisInitialized(_this), "_color", void 0);
27
- _defineProperty(_assertThisInitialized(_this), "_points", void 0);
28
- _defineProperty(_assertThisInitialized(_this), "_radius", void 0);
29
- _defineProperty(_assertThisInitialized(_this), "_textureUrl", void 0);
30
- _defineProperty(_assertThisInitialized(_this), "_textureSpeed", void 0);
31
- _defineProperty(_assertThisInitialized(_this), "_close", false);
32
- _defineProperty(_assertThisInitialized(_this), "mesh", void 0);
33
- _defineProperty(_assertThisInitialized(_this), "_disposeCallbacks", void 0);
34
- var _option$width = option.width,
35
- width = _option$width === void 0 ? 2 : _option$width,
36
- _option$color = option.color,
37
- color = _option$color === void 0 ? '#fff' : _option$color,
38
- _option$points = option.points,
39
- points = _option$points === void 0 ? [] : _option$points,
40
- textureUrl = option.textureUrl,
41
- textureSpeed = option.textureSpeed,
42
- _option$radius = option.radius,
43
- radius = _option$radius === void 0 ? 1 : _option$radius,
44
- _option$close = option.close,
45
- close = _option$close === void 0 ? false : _option$close;
46
- _this._width = width;
47
- _this._color = color;
48
- _this._radius = radius;
49
- _this._points = points;
50
- _this._close = close;
51
- _this._textureUrl = textureUrl;
52
- _this._textureSpeed = textureSpeed;
53
- _this.init();
54
- return _this;
7
+ class Spline extends ObjectLayer {
8
+ get width() {
9
+ return this._width;
55
10
  }
56
- _createClass(Spline, [{
57
- key: "width",
58
- get: function get() {
59
- return this._width;
60
- },
61
- set: function set(newValue) {
62
- this._width = newValue;
63
- // 更新宽度时重新生成管道几何体
64
- this.updateGeometry();
65
- }
66
- }, {
67
- key: "color",
68
- get: function get() {
69
- return this._color;
70
- },
71
- set: function set(newValue) {
72
- this._color = newValue;
73
- // 更新颜色时更新材质
74
- if (this.mesh && this.mesh.material && !this._textureUrl) {
75
- this.mesh.material.color.set(newValue);
76
- }
77
- }
78
- }, {
79
- key: "points",
80
- get: function get() {
81
- return this._points;
82
- },
83
- set: function set(value) {
84
- this._points = value;
85
- // 点发生变化时重新初始化几何体
86
- this.updateGeometry();
87
- }
88
- }, {
89
- key: "radius",
90
- get: function get() {
91
- return this._radius;
92
- },
93
- set: function set(value) {
94
- this._radius = value;
95
- // 半径变化时更新几何体
96
- this.updateGeometry();
97
- }
98
- }, {
99
- key: "textureUrl",
100
- get: function get() {
101
- return this._textureUrl;
102
- },
103
- set: function set(value) {
104
- this._textureUrl = value;
105
- // 纹理URL变化时更新材质
106
- this.updateMaterial();
107
- }
108
- }, {
109
- key: "textureSpeed",
110
- get: function get() {
111
- return this._textureSpeed;
112
- },
113
- set: function set(value) {
114
- this._textureSpeed = value;
11
+ set width(newValue) {
12
+ this._width = newValue;
13
+ // 更新宽度时重新生成管道几何体
14
+ this.updateGeometry();
15
+ }
16
+ get color() {
17
+ return this._color;
18
+ }
19
+ set color(newValue) {
20
+ this._color = newValue;
21
+ // 更新颜色时更新材质
22
+ if (this.mesh && this.mesh.material && !this._textureUrl) {
23
+ this.mesh.material.color.set(newValue);
115
24
  }
116
- }, {
117
- key: "close",
118
- get: function get() {
119
- return this._close;
120
- },
121
- set: function set(value) {
122
- this._close = value;
123
- // 闭合状态变化时更新几何体
124
- this.updateGeometry();
25
+ }
26
+ get points() {
27
+ return this._points;
28
+ }
29
+ set points(value) {
30
+ this._points = value;
31
+ // 点发生变化时重新初始化几何体
32
+ this.updateGeometry();
33
+ }
34
+ get radius() {
35
+ return this._radius;
36
+ }
37
+ set radius(value) {
38
+ this._radius = value;
39
+ // 半径变化时更新几何体
40
+ this.updateGeometry();
41
+ }
42
+ get textureUrl() {
43
+ return this._textureUrl;
44
+ }
45
+ set textureUrl(value) {
46
+ this._textureUrl = value;
47
+ // 纹理URL变化时更新材质
48
+ this.updateMaterial();
49
+ }
50
+ get textureSpeed() {
51
+ return this._textureSpeed;
52
+ }
53
+ set textureSpeed(value) {
54
+ this._textureSpeed = value;
55
+ }
56
+ get close() {
57
+ return this._close;
58
+ }
59
+ set close(value) {
60
+ this._close = value;
61
+ // 闭合状态变化时更新几何体
62
+ this.updateGeometry();
63
+ }
64
+ constructor(option) {
65
+ super();
66
+ _defineProperty(this, "_width", void 0);
67
+ _defineProperty(this, "_color", void 0);
68
+ _defineProperty(this, "_points", void 0);
69
+ _defineProperty(this, "_radius", void 0);
70
+ _defineProperty(this, "_textureUrl", void 0);
71
+ _defineProperty(this, "_textureSpeed", void 0);
72
+ _defineProperty(this, "_close", false);
73
+ _defineProperty(this, "mesh", void 0);
74
+ _defineProperty(this, "_disposeCallbacks", void 0);
75
+ const {
76
+ width = 2,
77
+ color = '#fff',
78
+ points = [],
79
+ textureUrl,
80
+ textureSpeed,
81
+ radius = 1,
82
+ close = false
83
+ } = option;
84
+ this._width = width;
85
+ this._color = color;
86
+ this._radius = radius;
87
+ this._points = points;
88
+ this._close = close;
89
+ this._textureUrl = textureUrl;
90
+ this._textureSpeed = textureSpeed;
91
+ this.init();
92
+ }
93
+ init() {
94
+ // 初始化时直接调用统一的创建几何体和材质方法
95
+ try {
96
+ // 创建新的曲线和几何体
97
+ const {
98
+ curve,
99
+ geometry
100
+ } = this.createCurveAndGeometry();
101
+
102
+ // 创建材质
103
+ const material = this.createMaterial();
104
+
105
+ // 创建网格
106
+ this.mesh = new Mesh(geometry, material);
107
+
108
+ // 添加到场景
109
+ this.add(this.mesh);
110
+ } catch (error) {
111
+ console.error("Failed to create spline:", error);
125
112
  }
126
- }, {
127
- key: "init",
128
- value: function init() {
129
- // 初始化时直接调用统一的创建几何体和材质方法
130
- try {
131
- // 创建新的曲线和几何体
132
- var _this$createCurveAndG = this.createCurveAndGeometry(),
133
- curve = _this$createCurveAndG.curve,
134
- geometry = _this$createCurveAndG.geometry;
135
-
136
- // 创建材质
137
- var material = this.createMaterial();
138
-
139
- // 创建网格
140
- this.mesh = new Mesh(geometry, material);
113
+ }
141
114
 
142
- // 添加到场景
143
- this.add(this.mesh);
144
- } catch (error) {
145
- console.error("Failed to create spline:", error);
146
- }
115
+ // 统一创建曲线和几何体的方法
116
+ createCurveAndGeometry() {
117
+ if (!this._points || !this._points.length) {
118
+ throw new Error("Points array cannot be empty");
147
119
  }
148
120
 
149
- // 统一创建曲线和几何体的方法
150
- }, {
151
- key: "createCurveAndGeometry",
152
- value: function createCurveAndGeometry() {
153
- if (!this._points || !this._points.length) {
154
- throw new Error("Points array cannot be empty");
155
- }
156
-
157
- // 创建曲线点
158
- var groundLinePoints = this._points.map(function (v) {
159
- return new Vector3(v.position[0], v.position[1], v.position[2]);
160
- });
121
+ // 创建曲线点
122
+ const groundLinePoints = this._points.map(v => new Vector3(v.position[0], v.position[1], v.position[2]));
161
123
 
162
- // 创建圆形线几何体
163
- var groundLine = new RoundLineGeometry(groundLinePoints, {
164
- radius: this._radius,
165
- close: this._close
166
- });
124
+ // 创建圆形线几何体
125
+ const groundLine = new RoundLineGeometry(groundLinePoints, {
126
+ radius: this._radius,
127
+ close: this._close
128
+ });
167
129
 
168
- // 获取曲线
169
- var curve = groundLine.curve;
130
+ // 获取曲线
131
+ const curve = groundLine.curve;
170
132
 
171
- // 创建管道几何体
172
- var tube = new TubeGeometry(curve, 10000, this._width, 2, this._close);
173
- return {
174
- curve: curve,
175
- geometry: tube
176
- };
177
- }
133
+ // 创建管道几何体
134
+ const tube = new TubeGeometry(curve, 10000, this._width, 2, this._close);
135
+ return {
136
+ curve,
137
+ geometry: tube
138
+ };
139
+ }
178
140
 
179
- // 创建材质方法
180
- }, {
181
- key: "createMaterial",
182
- value: function createMaterial() {
183
- var _this2 = this;
184
- if (this._textureUrl) {
185
- var textLoader = new TextureLoader();
186
- var texture = textLoader.load(this._textureUrl);
187
- texture.repeat.set(1, 2);
188
- texture.wrapS = RepeatWrapping;
189
- texture.wrapT = MirroredRepeatWrapping;
190
- var material = new MeshBasicMaterial({
191
- map: texture,
192
- transparent: true
193
- });
141
+ // 创建材质方法
142
+ createMaterial() {
143
+ if (this._textureUrl) {
144
+ const textLoader = new TextureLoader();
145
+ const texture = textLoader.load(this._textureUrl);
146
+ texture.repeat.set(1, 2);
147
+ texture.wrapS = RepeatWrapping;
148
+ texture.wrapT = MirroredRepeatWrapping;
149
+ const material = new MeshBasicMaterial({
150
+ map: texture,
151
+ transparent: true
152
+ });
194
153
 
195
- // 设置纹理动画
196
- if (this._textureSpeed) {
197
- this._disposeCallbacks = use.useframe(function () {
198
- texture.offset.x += _this2._textureSpeed;
199
- });
200
- }
201
- return material;
202
- } else {
203
- return new MeshBasicMaterial({
204
- color: this._color,
205
- side: DoubleSide
154
+ // 设置纹理动画
155
+ if (this._textureSpeed) {
156
+ this._disposeCallbacks = use.useframe(() => {
157
+ texture.offset.x += this._textureSpeed;
206
158
  });
207
159
  }
160
+ return material;
161
+ } else {
162
+ return new MeshBasicMaterial({
163
+ color: this._color,
164
+ side: DoubleSide
165
+ });
208
166
  }
167
+ }
209
168
 
210
- // 清理资源
211
- }, {
212
- key: "cleanupResources",
213
- value: function cleanupResources() {
214
- if (this.mesh) {
215
- // 从场景中移除
216
- this.remove(this.mesh);
217
-
218
- // 释放几何体资源
219
- if (this.mesh.geometry) {
220
- this.mesh.geometry.dispose();
221
- }
169
+ // 清理资源
170
+ cleanupResources() {
171
+ if (this.mesh) {
172
+ // 从场景中移除
173
+ this.remove(this.mesh);
222
174
 
223
- // 释放材质资源
224
- if (this.mesh.material) {
225
- if (Array.isArray(this.mesh.material)) {
226
- this.mesh.material.forEach(function (mat) {
227
- return mat.dispose();
228
- });
229
- } else {
230
- this.mesh.material.dispose();
231
- }
232
- }
233
- this._disposeCallbacks && this._disposeCallbacks();
175
+ // 释放几何体资源
176
+ if (this.mesh.geometry) {
177
+ this.mesh.geometry.dispose();
234
178
  }
235
- }
236
179
 
237
- // 更新几何体方法
238
- }, {
239
- key: "updateGeometry",
240
- value: function updateGeometry() {
241
- if (!this._points || !this._points.length) return;
242
- // 清理旧资源
243
- this.cleanupResources();
244
- this.init();
245
- }
246
-
247
- // 更新材质方法
248
- }, {
249
- key: "updateMaterial",
250
- value: function updateMaterial() {
251
- if (!this.mesh) return;
252
-
253
- // 处理旧材质
180
+ // 释放材质资源
254
181
  if (this.mesh.material) {
255
182
  if (Array.isArray(this.mesh.material)) {
256
- this.mesh.material.forEach(function (mat) {
257
- return mat.dispose();
258
- });
183
+ this.mesh.material.forEach(mat => mat.dispose());
259
184
  } else {
260
185
  this.mesh.material.dispose();
261
186
  }
262
187
  }
263
-
264
- // 创建新材质
265
- this.mesh.material = this.createMaterial();
188
+ this._disposeCallbacks && this._disposeCallbacks();
266
189
  }
190
+ }
191
+
192
+ // 更新几何体方法
193
+ updateGeometry() {
194
+ if (!this._points || !this._points.length) return;
195
+ // 清理旧资源
196
+ this.cleanupResources();
197
+ this.init();
198
+ }
199
+
200
+ // 更新材质方法
201
+ updateMaterial() {
202
+ if (!this.mesh) return;
267
203
 
268
- // 销毁
269
- }, {
270
- key: "destroy",
271
- value: function destroy() {
272
- this.cleanupResources();
204
+ // 处理旧材质
205
+ if (this.mesh.material) {
206
+ if (Array.isArray(this.mesh.material)) {
207
+ this.mesh.material.forEach(mat => mat.dispose());
208
+ } else {
209
+ this.mesh.material.dispose();
210
+ }
273
211
  }
274
- }]);
275
- return Spline;
276
- }(ObjectLayer);
212
+
213
+ // 创建新材质
214
+ this.mesh.material = this.createMaterial();
215
+ }
216
+
217
+ // 销毁
218
+ destroy() {
219
+ this.cleanupResources();
220
+ }
221
+ }
277
222
  export { Spline };
278
223
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DoubleSide","Mesh","MeshBasicMaterial","TubeGeometry","Vector3","MirroredRepeatWrapping","RepeatWrapping","TextureLoader","use","ObjectLayer","RoundLineGeometry","Spline","_ObjectLayer","_inherits","_super","_createSuper","option","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_option$width","width","_option$color","color","_option$points","points","textureUrl","textureSpeed","_option$radius","radius","_option$close","close","_width","_color","_radius","_points","_close","_textureUrl","_textureSpeed","init","_createClass","key","get","set","newValue","updateGeometry","mesh","material","value","updateMaterial","_this$createCurveAndG","createCurveAndGeometry","curve","geometry","createMaterial","add","error","console","length","Error","groundLinePoints","map","v","position","groundLine","tube","_this2","textLoader","texture","load","repeat","wrapS","wrapT","transparent","_disposeCallbacks","useframe","offset","x","side","cleanupResources","remove","dispose","Array","isArray","forEach","mat","destroy"],"sources":["../../../src/business/Spline/index.ts"],"sourcesContent":["import type { Curve } from '@anov/3d-core'\nimport { DoubleSide, Mesh, MeshBasicMaterial, TubeGeometry, Vector3, MirroredRepeatWrapping, RepeatWrapping, TextureLoader, use } from '@anov/3d-core'\nimport ObjectLayer from '../Base/ObjectLayer'\nimport { RoundLineGeometry } from '../Utils/round-curve'\nimport type { ISpline, Option } from './types'\nclass Spline extends ObjectLayer implements ISpline {\n _width: number\n _color: string\n _points: any\n _radius: number\n _textureUrl: string\n _textureSpeed: number\n _close: boolean = false\n mesh!: Mesh\n private _disposeCallbacks: Function\n\n get width(): number {\n return this._width\n }\n\n set width(newValue: number) {\n this._width = newValue\n // 更新宽度时重新生成管道几何体\n this.updateGeometry()\n }\n\n get color(): string {\n return this._color\n }\n\n set color(newValue: string) {\n this._color = newValue\n // 更新颜色时更新材质\n if (this.mesh && this.mesh.material && !this._textureUrl) {\n (this.mesh.material as MeshBasicMaterial).color.set(newValue)\n }\n }\n\n get points(): any {\n return this._points\n }\n\n set points(value: any) {\n this._points = value\n // 点发生变化时重新初始化几何体\n this.updateGeometry()\n }\n\n get radius(): number {\n return this._radius\n }\n\n set radius(value: number) {\n this._radius = value\n // 半径变化时更新几何体\n this.updateGeometry()\n }\n\n get textureUrl(): string {\n return this._textureUrl\n }\n\n set textureUrl(value: string) {\n this._textureUrl = value\n // 纹理URL变化时更新材质\n this.updateMaterial()\n }\n\n get textureSpeed(): number {\n return this._textureSpeed\n }\n\n set textureSpeed(value: number) {\n this._textureSpeed = value\n }\n\n get close(): boolean {\n return this._close\n }\n\n set close(value: boolean) {\n this._close = value\n // 闭合状态变化时更新几何体\n this.updateGeometry()\n }\n\n constructor(option: Option) {\n super()\n const { width = 2, color = '#fff', points = [], textureUrl, textureSpeed, radius = 1, close = false } = option\n this._width = width\n this._color = color\n this._radius = radius\n this._points = points\n this._close = close\n this._textureUrl = textureUrl\n this._textureSpeed = textureSpeed\n this.init()\n }\n\n private init() {\n // 初始化时直接调用统一的创建几何体和材质方法\n try {\n\n // 创建新的曲线和几何体\n const { curve, geometry } = this.createCurveAndGeometry();\n \n // 创建材质\n const material = this.createMaterial();\n\n // 创建网格\n this.mesh = new Mesh(geometry, material);\n\n // 添加到场景\n this.add(this.mesh);\n } catch (error) {\n console.error(\"Failed to create spline:\", error);\n }\n }\n\n // 统一创建曲线和几何体的方法\n private createCurveAndGeometry(): { curve: Curve<Vector3>, geometry: TubeGeometry } {\n if (!this._points || !this._points.length) {\n throw new Error(\"Points array cannot be empty\");\n }\n\n // 创建曲线点\n const groundLinePoints = this._points.map(v => new Vector3(v.position[0], v.position[1], v.position[2]));\n\n // 创建圆形线几何体\n const groundLine = new RoundLineGeometry(groundLinePoints, {\n radius: this._radius,\n close: this._close,\n });\n\n // 获取曲线\n const curve = groundLine.curve;\n\n // 创建管道几何体\n const tube = new TubeGeometry(curve, 10000, this._width, 2, this._close);\n\n return { curve, geometry: tube };\n }\n\n // 创建材质方法\n private createMaterial(): MeshBasicMaterial {\n if (this._textureUrl) {\n const textLoader = new TextureLoader();\n const texture = textLoader.load(this._textureUrl);\n texture.repeat.set(1, 2);\n texture.wrapS = RepeatWrapping;\n texture.wrapT = MirroredRepeatWrapping;\n\n const material = new MeshBasicMaterial({\n map: texture,\n transparent: true,\n });\n\n // 设置纹理动画\n if (this._textureSpeed) {\n this._disposeCallbacks = use.useframe(() => {\n texture.offset.x += this._textureSpeed;\n });\n }\n\n return material;\n } else {\n return new MeshBasicMaterial({\n color: this._color,\n side: DoubleSide,\n });\n }\n }\n\n // 清理资源\n private cleanupResources() {\n if (this.mesh) {\n // 从场景中移除\n this.remove(this.mesh);\n\n // 释放几何体资源\n if (this.mesh.geometry) {\n this.mesh.geometry.dispose();\n }\n\n // 释放材质资源\n if (this.mesh.material) {\n if (Array.isArray(this.mesh.material)) {\n this.mesh.material.forEach(mat => mat.dispose());\n } else {\n this.mesh.material.dispose();\n }\n }\n\n this._disposeCallbacks && this._disposeCallbacks()\n }\n }\n\n // 更新几何体方法\n private updateGeometry() {\n if (!this._points || !this._points.length) return;\n // 清理旧资源\n this.cleanupResources();\n this.init();\n }\n\n // 更新材质方法\n private updateMaterial() {\n if (!this.mesh) return;\n\n // 处理旧材质\n if (this.mesh.material) {\n if (Array.isArray(this.mesh.material)) {\n this.mesh.material.forEach(mat => mat.dispose());\n } else {\n this.mesh.material.dispose();\n }\n }\n\n // 创建新材质\n this.mesh.material = this.createMaterial();\n }\n\n // 销毁\n destroy() {\n this.cleanupResources()\n }\n}\n\nexport { Spline }"],"mappings":"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"}
1
+ {"version":3,"names":["DoubleSide","Mesh","MeshBasicMaterial","TubeGeometry","Vector3","MirroredRepeatWrapping","RepeatWrapping","TextureLoader","use","ObjectLayer","RoundLineGeometry","Spline","width","_width","newValue","updateGeometry","color","_color","mesh","material","_textureUrl","set","points","_points","value","radius","_radius","textureUrl","updateMaterial","textureSpeed","_textureSpeed","close","_close","constructor","option","_defineProperty","init","curve","geometry","createCurveAndGeometry","createMaterial","add","error","console","length","Error","groundLinePoints","map","v","position","groundLine","tube","textLoader","texture","load","repeat","wrapS","wrapT","transparent","_disposeCallbacks","useframe","offset","x","side","cleanupResources","remove","dispose","Array","isArray","forEach","mat","destroy"],"sources":["../../../src/business/Spline/index.ts"],"sourcesContent":["import type { Curve } from '@anov/3d-core'\nimport { DoubleSide, Mesh, MeshBasicMaterial, TubeGeometry, Vector3, MirroredRepeatWrapping, RepeatWrapping, TextureLoader, use } from '@anov/3d-core'\nimport ObjectLayer from '../Base/ObjectLayer'\nimport { RoundLineGeometry } from '../Utils/round-curve'\nimport type { ISpline, Option } from './types'\nclass Spline extends ObjectLayer implements ISpline {\n _width: number\n _color: string\n _points: any\n _radius: number\n _textureUrl: string\n _textureSpeed: number\n _close: boolean = false\n mesh!: Mesh\n private _disposeCallbacks: Function\n\n get width(): number {\n return this._width\n }\n\n set width(newValue: number) {\n this._width = newValue\n // 更新宽度时重新生成管道几何体\n this.updateGeometry()\n }\n\n get color(): string {\n return this._color\n }\n\n set color(newValue: string) {\n this._color = newValue\n // 更新颜色时更新材质\n if (this.mesh && this.mesh.material && !this._textureUrl) {\n (this.mesh.material as MeshBasicMaterial).color.set(newValue)\n }\n }\n\n get points(): any {\n return this._points\n }\n\n set points(value: any) {\n this._points = value\n // 点发生变化时重新初始化几何体\n this.updateGeometry()\n }\n\n get radius(): number {\n return this._radius\n }\n\n set radius(value: number) {\n this._radius = value\n // 半径变化时更新几何体\n this.updateGeometry()\n }\n\n get textureUrl(): string {\n return this._textureUrl\n }\n\n set textureUrl(value: string) {\n this._textureUrl = value\n // 纹理URL变化时更新材质\n this.updateMaterial()\n }\n\n get textureSpeed(): number {\n return this._textureSpeed\n }\n\n set textureSpeed(value: number) {\n this._textureSpeed = value\n }\n\n get close(): boolean {\n return this._close\n }\n\n set close(value: boolean) {\n this._close = value\n // 闭合状态变化时更新几何体\n this.updateGeometry()\n }\n\n constructor(option: Option) {\n super()\n const { width = 2, color = '#fff', points = [], textureUrl, textureSpeed, radius = 1, close = false } = option\n this._width = width\n this._color = color\n this._radius = radius\n this._points = points\n this._close = close\n this._textureUrl = textureUrl\n this._textureSpeed = textureSpeed\n this.init()\n }\n\n private init() {\n // 初始化时直接调用统一的创建几何体和材质方法\n try {\n\n // 创建新的曲线和几何体\n const { curve, geometry } = this.createCurveAndGeometry();\n \n // 创建材质\n const material = this.createMaterial();\n\n // 创建网格\n this.mesh = new Mesh(geometry, material);\n\n // 添加到场景\n this.add(this.mesh);\n } catch (error) {\n console.error(\"Failed to create spline:\", error);\n }\n }\n\n // 统一创建曲线和几何体的方法\n private createCurveAndGeometry(): { curve: Curve<Vector3>, geometry: TubeGeometry } {\n if (!this._points || !this._points.length) {\n throw new Error(\"Points array cannot be empty\");\n }\n\n // 创建曲线点\n const groundLinePoints = this._points.map(v => new Vector3(v.position[0], v.position[1], v.position[2]));\n\n // 创建圆形线几何体\n const groundLine = new RoundLineGeometry(groundLinePoints, {\n radius: this._radius,\n close: this._close,\n });\n\n // 获取曲线\n const curve = groundLine.curve;\n\n // 创建管道几何体\n const tube = new TubeGeometry(curve, 10000, this._width, 2, this._close);\n\n return { curve, geometry: tube };\n }\n\n // 创建材质方法\n private createMaterial(): MeshBasicMaterial {\n if (this._textureUrl) {\n const textLoader = new TextureLoader();\n const texture = textLoader.load(this._textureUrl);\n texture.repeat.set(1, 2);\n texture.wrapS = RepeatWrapping;\n texture.wrapT = MirroredRepeatWrapping;\n\n const material = new MeshBasicMaterial({\n map: texture,\n transparent: true,\n });\n\n // 设置纹理动画\n if (this._textureSpeed) {\n this._disposeCallbacks = use.useframe(() => {\n texture.offset.x += this._textureSpeed;\n });\n }\n\n return material;\n } else {\n return new MeshBasicMaterial({\n color: this._color,\n side: DoubleSide,\n });\n }\n }\n\n // 清理资源\n private cleanupResources() {\n if (this.mesh) {\n // 从场景中移除\n this.remove(this.mesh);\n\n // 释放几何体资源\n if (this.mesh.geometry) {\n this.mesh.geometry.dispose();\n }\n\n // 释放材质资源\n if (this.mesh.material) {\n if (Array.isArray(this.mesh.material)) {\n this.mesh.material.forEach(mat => mat.dispose());\n } else {\n this.mesh.material.dispose();\n }\n }\n\n this._disposeCallbacks && this._disposeCallbacks()\n }\n }\n\n // 更新几何体方法\n private updateGeometry() {\n if (!this._points || !this._points.length) return;\n // 清理旧资源\n this.cleanupResources();\n this.init();\n }\n\n // 更新材质方法\n private updateMaterial() {\n if (!this.mesh) return;\n\n // 处理旧材质\n if (this.mesh.material) {\n if (Array.isArray(this.mesh.material)) {\n this.mesh.material.forEach(mat => mat.dispose());\n } else {\n this.mesh.material.dispose();\n }\n }\n\n // 创建新材质\n this.mesh.material = this.createMaterial();\n }\n\n // 销毁\n destroy() {\n this.cleanupResources()\n }\n}\n\nexport { Spline }"],"mappings":"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"}