@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.
- package/dist/business/Animation/motion/index.js +35 -56
- package/dist/business/Animation/motion/index.js.map +1 -1
- package/dist/business/Animation/type.js +2 -2
- package/dist/business/Area/Fence/FenceBase.js +146 -187
- package/dist/business/Area/Fence/FenceBase.js.map +1 -1
- package/dist/business/Area/Fence/fence_base_01.js +120 -112
- package/dist/business/Area/Fence/fence_base_01.js.map +1 -1
- package/dist/business/Area/Fence/fence_feeting_01.js +218 -130
- package/dist/business/Area/Fence/fence_feeting_01.js.map +1 -1
- package/dist/business/Area/Fence/fence_roll_01.js +140 -130
- package/dist/business/Area/Fence/fence_roll_01.js.map +1 -1
- package/dist/business/Area/FillArea/FillAreaBase.js +87 -126
- package/dist/business/Area/FillArea/FillAreaBase.js.map +1 -1
- package/dist/business/Area/FillArea/fillArea_face_01.js +72 -98
- package/dist/business/Area/FillArea/fillArea_face_01.js.map +1 -1
- package/dist/business/Area/FillArea/fillArea_line_01.js +66 -94
- package/dist/business/Area/FillArea/fillArea_line_01.js.map +1 -1
- package/dist/business/Area/index.js +267 -483
- package/dist/business/Area/index.js.map +1 -1
- package/dist/business/Area/tool.js +14 -26
- package/dist/business/Area/tool.js.map +1 -1
- package/dist/business/Base/ObjectLayer.js +21 -46
- package/dist/business/Base/ObjectLayer.js.map +1 -1
- package/dist/business/Batch/index.js +189 -234
- package/dist/business/Batch/index.js.map +1 -1
- package/dist/business/Box/index.js +52 -81
- package/dist/business/Box/index.js.map +1 -1
- package/dist/business/Cylinder/index.js +51 -79
- package/dist/business/Cylinder/index.js.map +1 -1
- package/dist/business/Flyline/bubble/CircleBubble.js +1 -9
- package/dist/business/Flyline/bubble/CircleBubble.js.map +1 -1
- package/dist/business/Flyline/bubble/index.js +7 -21
- package/dist/business/Flyline/bubble/index.js.map +1 -1
- package/dist/business/Flyline/index.js +96 -162
- package/dist/business/Flyline/index.js.map +1 -1
- package/dist/business/Flyline/line/ArcLine.js +208 -291
- package/dist/business/Flyline/line/ArcLine.js.map +1 -1
- package/dist/business/Flyline/line/index.js +8 -22
- package/dist/business/Flyline/line/index.js.map +1 -1
- package/dist/business/HeatMap/HeatMap.js +380 -467
- package/dist/business/HeatMap/HeatMap.js.map +1 -1
- package/dist/business/HeatMap/core.js +405 -525
- package/dist/business/HeatMap/core.js.map +1 -1
- package/dist/business/HeatMap/shader.js +69 -3
- package/dist/business/HeatMap/shader.js.map +1 -1
- package/dist/business/InfoPanel/index.js +201 -242
- package/dist/business/InfoPanel/index.js.map +1 -1
- package/dist/business/Line/index.js +55 -88
- package/dist/business/Line/index.js.map +1 -1
- package/dist/business/Mark/KeyframeAnimation.js +145 -176
- package/dist/business/Mark/KeyframeAnimation.js.map +1 -1
- package/dist/business/Mark/index.js +196 -294
- package/dist/business/Mark/index.js.map +1 -1
- package/dist/business/Mark/shader/tanhao.js +36 -3
- package/dist/business/Mark/shader/tanhao.js.map +1 -1
- package/dist/business/Mark/type.js +1 -1
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js +377 -551
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js.map +1 -1
- package/dist/business/MaterialSwitch/inject.js +92 -58
- package/dist/business/MaterialSwitch/inject.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/finalFade.js +74 -2
- package/dist/business/MaterialSwitch/shader/finalFade.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/ground.js +95 -16
- package/dist/business/MaterialSwitch/shader/ground.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/groundBase64.js +9 -3
- package/dist/business/MaterialSwitch/shader/groundBase64.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/realFade.js +48 -9
- package/dist/business/MaterialSwitch/shader/realFade.js.map +1 -1
- package/dist/business/Plane/index.js +51 -78
- package/dist/business/Plane/index.js.map +1 -1
- package/dist/business/Poi/index.d.ts +5 -0
- package/dist/business/Poi/index.js +256 -295
- package/dist/business/Poi/index.js.map +1 -1
- package/dist/business/Poi/link/Cylinder.js +56 -89
- package/dist/business/Poi/link/Cylinder.js.map +1 -1
- package/dist/business/Poi/link/Pyramid.js +104 -165
- package/dist/business/Poi/link/Pyramid.js.map +1 -1
- package/dist/business/Poi/link/index.d.ts +1 -1
- package/dist/business/Poi/link/index.js +54 -114
- package/dist/business/Poi/link/index.js.map +1 -1
- package/dist/business/Poi/panel/index.d.ts +124 -0
- package/dist/business/Poi/panel/index.js +474 -0
- package/dist/business/Poi/panel/index.js.map +1 -0
- package/dist/business/Poi/panel/interfaces.d.ts +67 -0
- package/dist/business/Poi/panel/interfaces.js +2 -0
- package/dist/business/Poi/panel/interfaces.js.map +1 -0
- package/dist/business/Poi/panel/utils.d.ts +72 -0
- package/dist/business/Poi/panel/utils.js +126 -0
- package/dist/business/Poi/panel/utils.js.map +1 -0
- package/dist/business/Poi/particle/DoubleCircle.js +71 -107
- package/dist/business/Poi/particle/DoubleCircle.js.map +1 -1
- package/dist/business/Poi/particle/DynamicCircle.js +75 -111
- package/dist/business/Poi/particle/DynamicCircle.js.map +1 -1
- package/dist/business/Poi/particle/SingleCircle.js +62 -98
- package/dist/business/Poi/particle/SingleCircle.js.map +1 -1
- package/dist/business/Poi/particle/index.js +49 -117
- package/dist/business/Poi/particle/index.js.map +1 -1
- package/dist/business/Poi/shader/circle.js +31 -3
- package/dist/business/Poi/shader/circle.js.map +1 -1
- package/dist/business/Poi/shader/cylinder.js +37 -3
- package/dist/business/Poi/shader/cylinder.js.map +1 -1
- package/dist/business/Poi/shader/doubleCircle.js +55 -3
- package/dist/business/Poi/shader/doubleCircle.js.map +1 -1
- package/dist/business/Poi/shader/dynamicCircle.js +67 -3
- package/dist/business/Poi/shader/dynamicCircle.js.map +1 -1
- package/dist/business/Poi/title/Border.js +7 -27
- package/dist/business/Poi/title/Border.js.map +1 -1
- package/dist/business/Poi/title/Ellipse.js +7 -27
- package/dist/business/Poi/title/Ellipse.js.map +1 -1
- package/dist/business/Poi/title/index.js +208 -292
- package/dist/business/Poi/title/index.js.map +1 -1
- package/dist/business/Poi/tools.js +22 -19
- package/dist/business/Poi/tools.js.map +1 -1
- package/dist/business/Poi/types.d.ts +3 -0
- package/dist/business/Poi/types.js.map +1 -1
- package/dist/business/Sphere/index.js +47 -72
- package/dist/business/Sphere/index.js.map +1 -1
- package/dist/business/Spline/index.js +190 -245
- package/dist/business/Spline/index.js.map +1 -1
- package/dist/business/SplitBuilding/index.js +327 -536
- package/dist/business/SplitBuilding/index.js.map +1 -1
- package/dist/business/SplitBuilding/type.js +2 -2
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js +218 -275
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js.map +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js +132 -177
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js.map +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js +51 -1
- package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js.map +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js +6 -1
- package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js.map +1 -1
- package/dist/business/TrafficComponents/base.js +32 -55
- package/dist/business/TrafficComponents/base.js.map +1 -1
- package/dist/business/TrafficComponents/utils.js +25 -24
- package/dist/business/TrafficComponents/utils.js.map +1 -1
- package/dist/business/Utils/Curve.js +40 -56
- package/dist/business/Utils/Curve.js.map +1 -1
- package/dist/business/Utils/constant.js +1 -1
- package/dist/business/Utils/constant.js.map +1 -1
- package/dist/business/Utils/defineProps.js +13 -14
- package/dist/business/Utils/defineProps.js.map +1 -1
- package/dist/business/Utils/round-curve.js +127 -153
- package/dist/business/Utils/round-curve.js.map +1 -1
- package/dist/business/VideoPanel/index.js +258 -319
- package/dist/business/VideoPanel/index.js.map +1 -1
- package/dist/business/Water/index.js +78 -108
- package/dist/business/Water/index.js.map +1 -1
- package/dist/business/Water/types.js +1 -1
- package/dist/business/Water/types.js.map +1 -1
- package/dist/core/Camera/PerspectiveCamera/CameraExpand.js +383 -449
- package/dist/core/Camera/PerspectiveCamera/CameraExpand.js.map +1 -1
- package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js +107 -142
- package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js.map +1 -1
- package/dist/core/Controls/FirstViewControl/index.js +84 -96
- package/dist/core/Controls/FirstViewControl/index.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/action/input.js +77 -98
- package/dist/core/Controls/ThirdViewControl/action/input.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/config/constants.js +1 -1
- package/dist/core/Controls/ThirdViewControl/config/constants.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/index.js +19 -28
- package/dist/core/Controls/ThirdViewControl/index.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player/animation.js +126 -155
- package/dist/core/Controls/ThirdViewControl/player/animation.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player/camera.js +47 -63
- package/dist/core/Controls/ThirdViewControl/player/camera.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player/control.js +39 -49
- package/dist/core/Controls/ThirdViewControl/player/control.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player.js +66 -91
- package/dist/core/Controls/ThirdViewControl/player.js.map +1 -1
- package/dist/core/Controls/base.js +14 -30
- package/dist/core/Controls/base.js.map +1 -1
- package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js +92 -131
- package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js.map +1 -1
- package/dist/core/Debug/PerformanceInfo/Performance.js +22 -47
- package/dist/core/Debug/PerformanceInfo/Performance.js.map +1 -1
- package/dist/core/Light/PointLight/PointLightExt.js +4 -21
- package/dist/core/Light/PointLight/PointLightExt.js.map +1 -1
- package/dist/core/Material/FinirMaterial/FinirMaterial.js +37 -57
- package/dist/core/Material/FinirMaterial/FinirMaterial.js.map +1 -1
- package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js +116 -153
- package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js.map +1 -1
- package/dist/core/Material/PristineGridMaterial/shader/fragment.js +95 -1
- package/dist/core/Material/PristineGridMaterial/shader/fragment.js.map +1 -1
- package/dist/core/Material/PristineGridMaterial/shader/vertex.js +26 -1
- package/dist/core/Material/PristineGridMaterial/shader/vertex.js.map +1 -1
- package/dist/core/Material/SurfaceMaterial/index.js +76 -172
- package/dist/core/Material/SurfaceMaterial/index.js.map +1 -1
- package/dist/core/Material/decorators.js +6 -11
- package/dist/core/Material/decorators.js.map +1 -1
- package/dist/core/PostEffects/addACESFilmicToneMappingPass.js +16 -12
- package/dist/core/PostEffects/addACESFilmicToneMappingPass.js.map +1 -1
- package/dist/core/PostEffects/addBrightnessContrastPass.js +17 -13
- package/dist/core/PostEffects/addBrightnessContrastPass.js.map +1 -1
- package/dist/core/PostEffects/bloomPass.js +17 -10
- package/dist/core/PostEffects/bloomPass.js.map +1 -1
- package/dist/core/PostEffects/bloomSelect.js +60 -43
- package/dist/core/PostEffects/bloomSelect.js.map +1 -1
- package/dist/core/PostEffects/colorifyPass.js +17 -13
- package/dist/core/PostEffects/colorifyPass.js.map +1 -1
- package/dist/core/PostEffects/index.js +28 -22
- package/dist/core/PostEffects/index.js.map +1 -1
- package/dist/core/PostEffects/outlinePass.js +37 -50
- package/dist/core/PostEffects/outlinePass.js.map +1 -1
- package/dist/core/PostEffects/postprocessing.js +14 -12
- package/dist/core/PostEffects/postprocessing.js.map +1 -1
- package/dist/core/PostEffects/saoPass.js +15 -10
- package/dist/core/PostEffects/saoPass.js.map +1 -1
- package/dist/core/PostEffects/shader/colorify.js +22 -3
- package/dist/core/PostEffects/shader/colorify.js.map +1 -1
- package/dist/core/PostEffects/shader/gammaCorrectionShader.js +27 -3
- package/dist/core/PostEffects/shader/gammaCorrectionShader.js.map +1 -1
- package/dist/core/PostEffects/shader/mapping.js +66 -3
- package/dist/core/PostEffects/shader/mapping.js.map +1 -1
- package/dist/core/PostEffects/shader/thermalMaging.js +28 -3
- package/dist/core/PostEffects/shader/thermalMaging.js.map +1 -1
- package/dist/core/SceneEffect/grow/grow.js +85 -101
- package/dist/core/SceneEffect/grow/grow.js.map +1 -1
- package/dist/core/SceneEffect/grow/style_down.js +60 -77
- package/dist/core/SceneEffect/grow/style_down.js.map +1 -1
- package/dist/core/SceneEffect/grow/style_up.js +64 -81
- package/dist/core/SceneEffect/grow/style_up.js.map +1 -1
- package/dist/core/SceneEffect/grow/type.js +2 -2
- package/dist/core/SceneEffect/grow/type.js.map +1 -1
- package/dist/core/WeatherSystem/DynamicWeatherSystem.js +51 -76
- package/dist/core/WeatherSystem/DynamicWeatherSystem.js.map +1 -1
- package/dist/core/WeatherSystem/hdr/index.js +69 -105
- package/dist/core/WeatherSystem/hdr/index.js.map +1 -1
- package/dist/core/WeatherSystem/index.js +77 -124
- package/dist/core/WeatherSystem/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/fog/index.js +52 -80
- package/dist/core/WeatherSystem/objects/fog/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/index.js +72 -84
- package/dist/core/WeatherSystem/objects/rain/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/lineRain.js +88 -118
- package/dist/core/WeatherSystem/objects/rain/lineRain.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/plane.js +116 -146
- package/dist/core/WeatherSystem/objects/rain/plane.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/point.js +100 -148
- package/dist/core/WeatherSystem/objects/rain/point.js.map +1 -1
- package/dist/core/WeatherSystem/objects/sky/cloud.js +71 -104
- package/dist/core/WeatherSystem/objects/sky/cloud.js.map +1 -1
- package/dist/core/WeatherSystem/objects/sky/index.js +66 -84
- package/dist/core/WeatherSystem/objects/sky/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/sky/outline.js +25 -45
- package/dist/core/WeatherSystem/objects/sky/outline.js.map +1 -1
- package/dist/core/WeatherSystem/shaders/cloud.js +74 -3
- package/dist/core/WeatherSystem/shaders/cloud.js.map +1 -1
- package/dist/core/WeatherSystem/shaders/fog.js +103 -3
- package/dist/core/WeatherSystem/shaders/fog.js.map +1 -1
- package/dist/core/WeatherSystem/shaders/rain.js +206 -7
- package/dist/core/WeatherSystem/shaders/rain.js.map +1 -1
- package/dist/core/WeatherSystem/shaders/sky.js +87 -3
- package/dist/core/WeatherSystem/shaders/sky.js.map +1 -1
- package/dist/core/WeatherSystem/sky/index.js +104 -135
- package/dist/core/WeatherSystem/sky/index.js.map +1 -1
- package/dist/core/WeatherSystem/utils/constant.js +44 -38
- package/dist/core/WeatherSystem/utils/constant.js.map +1 -1
- package/dist/core/WeatherSystem/utils/math.js +18 -25
- package/dist/core/WeatherSystem/utils/math.js.map +1 -1
- package/dist/core/WeatherSystem/utils/type.js +1 -1
- package/dist/core/WeatherSystem/utils/type.js.map +1 -1
- package/dist/core/WeatherSystem/weather/index.js +96 -141
- package/dist/core/WeatherSystem/weather/index.js.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- 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" ==
|
|
14
|
-
function _toPrimitive(t, r) { if ("object" !=
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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
|
-
|
|
144
|
-
|
|
145
|
-
|
|
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
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
124
|
+
// 创建圆形线几何体
|
|
125
|
+
const groundLine = new RoundLineGeometry(groundLinePoints, {
|
|
126
|
+
radius: this._radius,
|
|
127
|
+
close: this._close
|
|
128
|
+
});
|
|
167
129
|
|
|
168
|
-
|
|
169
|
-
|
|
130
|
+
// 获取曲线
|
|
131
|
+
const curve = groundLine.curve;
|
|
170
132
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
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
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
texture
|
|
189
|
-
|
|
190
|
-
|
|
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
|
-
|
|
197
|
-
|
|
198
|
-
|
|
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
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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
|
-
|
|
225
|
-
|
|
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(
|
|
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
|
-
|
|
271
|
-
|
|
272
|
-
|
|
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
|
-
|
|
276
|
-
|
|
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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"}
|