@galacean/effects-threejs 2.5.0-alpha.6 → 2.5.1

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/index.mjs CHANGED
@@ -3,7 +3,7 @@
3
3
  * Description: Galacean Effects runtime threejs plugin for the web
4
4
  * Author: Ant Group CO., Ltd.
5
5
  * Contributors: 燃然,飂兮,十弦,云垣,茂安,意绮
6
- * Version: v2.5.0-alpha.6
6
+ * Version: v2.5.1
7
7
  */
8
8
 
9
9
  import * as THREE from 'three';
@@ -14168,40 +14168,60 @@ var BezierQuat = /*#__PURE__*/ function() {
14168
14168
  return BezierQuat;
14169
14169
  }();
14170
14170
  var BezierEasing = /*#__PURE__*/ function() {
14171
- function BezierEasing(mX1, mY1, mX2, mY2) {
14172
- this.mX1 = mX1;
14173
- this.mY1 = mY1;
14174
- this.mX2 = mX2;
14175
- this.mY2 = mY2;
14171
+ function BezierEasing(control1YOrControl1X, control2YOrControl1Y, control2X, control2Y) {
14176
14172
  this.precomputed = false;
14173
+ this.control1 = new Vector2();
14174
+ this.control2 = new Vector2();
14175
+ this.weighted = false;
14176
+ this.isConstant = false;
14177
14177
  this.mSampleValues = new Array(kSplineTableSize);
14178
+ if (control1YOrControl1X !== undefined && control2YOrControl1Y !== undefined && control2X !== undefined && control2Y !== undefined) {
14179
+ this.control1.x = control1YOrControl1X;
14180
+ this.control1.y = control2YOrControl1Y;
14181
+ this.control2.x = control2X;
14182
+ this.control2.y = control2Y;
14183
+ this.weighted = true;
14184
+ } else if (control1YOrControl1X !== undefined && control2YOrControl1Y !== undefined) {
14185
+ this.control1.x = 1 / 3;
14186
+ this.control1.y = control1YOrControl1X;
14187
+ this.control2.x = 2 / 3;
14188
+ this.control2.y = control2YOrControl1Y;
14189
+ } else {
14190
+ this.isConstant = true;
14191
+ }
14178
14192
  }
14179
14193
  var _proto = BezierEasing.prototype;
14180
- _proto.precompute = function precompute() {
14181
- this.precomputed = true;
14182
- if (this.mX1 !== this.mY1 || this.mX2 !== this.mY2) {
14183
- this.calcSampleValues();
14184
- }
14185
- };
14186
14194
  _proto.getValue = function getValue(x) {
14187
- if (this.mX1 === this.mY1 && this.mX2 === this.mY2) {
14188
- return x;
14189
- }
14190
- if (isNaN(this.mY1) || isNaN(this.mY2)) {
14195
+ if (this.isConstant) {
14191
14196
  return 0;
14192
14197
  }
14198
+ if (this.control1.x === this.control1.y && this.control2.x === this.control2.y) {
14199
+ return x;
14200
+ }
14193
14201
  if (x === 0 || x === 1) {
14194
14202
  return x;
14195
14203
  }
14204
+ if (!this.weighted) {
14205
+ return this.bezierInterpolate(0, this.control1.y, this.control2.y, 1, x);
14206
+ }
14196
14207
  if (!this.precomputed) {
14197
14208
  this.precompute();
14198
14209
  }
14199
- var value = calcBezier(this.getTForX(x), this.mY1, this.mY2);
14210
+ var value = calcBezier(this.getTForX(x), this.control1.y, this.control2.y);
14200
14211
  return value;
14201
14212
  };
14213
+ _proto.bezierInterpolate = function bezierInterpolate(pStart, pControl1, pControl2, pEnd, t) {
14214
+ // Formula from Wikipedia article on Bezier curves
14215
+ var omt = 1.0 - t;
14216
+ var omt2 = omt * omt;
14217
+ var omt3 = omt2 * omt;
14218
+ var t2 = t * t;
14219
+ var t3 = t2 * t;
14220
+ return pStart * omt3 + pControl1 * omt2 * t * 3.0 + pControl2 * omt * t2 * 3.0 + pEnd * t3;
14221
+ };
14202
14222
  _proto.calcSampleValues = function calcSampleValues() {
14203
14223
  for(var i = 0; i < kSplineTableSize; ++i){
14204
- this.mSampleValues[i] = calcBezier(i * kSampleStepSize, this.mX1, this.mX2);
14224
+ this.mSampleValues[i] = calcBezier(i * kSampleStepSize, this.control1.x, this.control2.x);
14205
14225
  }
14206
14226
  };
14207
14227
  _proto.getTForX = function getTForX(aX) {
@@ -14214,14 +14234,20 @@ var BezierEasing = /*#__PURE__*/ function() {
14214
14234
  // Interpolate to provide an initial guess for t
14215
14235
  var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);
14216
14236
  var guessForT = intervalStart + dist * kSampleStepSize;
14217
- var initialSlope = getSlope(guessForT, this.mX1, this.mX2);
14237
+ var initialSlope = getSlope(guessForT, this.control1.x, this.control2.x);
14218
14238
  if (initialSlope >= NEWTON_MIN_SLOPE) {
14219
- return newtonRaphsonIterate(aX, guessForT, this.mX1, this.mX2);
14239
+ return newtonRaphsonIterate(aX, guessForT, this.control1.x, this.control2.x);
14220
14240
  }
14221
14241
  if (initialSlope === 0.0) {
14222
14242
  return guessForT;
14223
14243
  }
14224
- return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, this.mX1, this.mX2);
14244
+ return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, this.control1.x, this.control2.x);
14245
+ };
14246
+ _proto.precompute = function precompute() {
14247
+ this.precomputed = true;
14248
+ if (this.control1.x !== this.control1.y || this.control2.x !== this.control2.y) {
14249
+ this.calcSampleValues();
14250
+ }
14225
14251
  };
14226
14252
  return BezierEasing;
14227
14253
  }();
@@ -14780,148 +14806,6 @@ var LineSegments = /*#__PURE__*/ function(ValueGetter) {
14780
14806
  };
14781
14807
  return LineSegments;
14782
14808
  }(ValueGetter);
14783
- var BezierCurve = /*#__PURE__*/ function(ValueGetter) {
14784
- _inherits(BezierCurve, ValueGetter);
14785
- function BezierCurve() {
14786
- return ValueGetter.apply(this, arguments);
14787
- }
14788
- var _proto = BezierCurve.prototype;
14789
- _proto.onCreate = function onCreate(props) {
14790
- var keyframes = props;
14791
- this.curveMap = {};
14792
- this.keys = [];
14793
- for(var i = 0; i < keyframes.length - 1; i++){
14794
- var leftKeyframe = keyframes[i];
14795
- var rightKeyframe = keyframes[i + 1];
14796
- var _buildEasingCurve = buildEasingCurve(leftKeyframe, rightKeyframe), points = _buildEasingCurve.points, curve = _buildEasingCurve.curve, timeInterval = _buildEasingCurve.timeInterval, valueInterval = _buildEasingCurve.valueInterval;
14797
- var s = points[0];
14798
- var e = points[points.length - 1];
14799
- this.keys.push([].concat(s.toArray(), points[1].toArray()));
14800
- this.keys.push([].concat(e.toArray(), points[2].toArray()));
14801
- this.curveMap[s.x + "&" + e.x] = {
14802
- points: points,
14803
- timeInterval: timeInterval,
14804
- valueInterval: valueInterval,
14805
- curve: curve,
14806
- timeStart: Number(s.x),
14807
- timeEnd: Number(e.x)
14808
- };
14809
- }
14810
- this.startKeyframe = keyframes[0];
14811
- this.endKeyframe = keyframes[keyframes.length - 1];
14812
- this.keyTimeData = Object.keys(this.curveMap);
14813
- };
14814
- _proto.getValue = function getValue(time) {
14815
- var result = 0;
14816
- var keyTimeData = this.keyTimeData;
14817
- var keyTimeStart = this.curveMap[keyTimeData[0]].timeStart;
14818
- var keyTimeEnd = this.curveMap[keyTimeData[keyTimeData.length - 1]].timeEnd;
14819
- if (time <= keyTimeStart) {
14820
- keyframeInfo.getPointIndexInCurve(this.startKeyframe, keyframeInfo.pointIndexCache);
14821
- return this.startKeyframe[1][keyframeInfo.pointIndexCache.yIndex];
14822
- }
14823
- if (time >= keyTimeEnd) {
14824
- keyframeInfo.getPointIndexInCurve(this.endKeyframe, keyframeInfo.pointIndexCache);
14825
- return this.endKeyframe[1][keyframeInfo.pointIndexCache.yIndex];
14826
- }
14827
- for(var i = 0; i < keyTimeData.length; i++){
14828
- var xMin = this.curveMap[keyTimeData[i]].timeStart;
14829
- var xMax = this.curveMap[keyTimeData[i]].timeEnd;
14830
- // const [xMin, xMax] = keyTimeData[i].split('&');
14831
- if (time >= Number(xMin) && time < Number(xMax)) {
14832
- result = this.getCurveValue(keyTimeData[i], time);
14833
- break;
14834
- }
14835
- }
14836
- return result;
14837
- };
14838
- _proto.getIntegrateValue = function getIntegrateValue(t0, t1, ts) {
14839
- if (ts === void 0) ts = 1;
14840
- var time = (t1 - t0) / ts;
14841
- var result = 0;
14842
- var keyTimeData = Object.keys(this.curveMap);
14843
- var keyTimeStart = this.curveMap[keyTimeData[0]].timeStart;
14844
- if (time <= keyTimeStart) {
14845
- return 0;
14846
- }
14847
- for(var i = 0; i < keyTimeData.length; i++){
14848
- var xMin = this.curveMap[keyTimeData[i]].timeStart;
14849
- var xMax = this.curveMap[keyTimeData[i]].timeEnd;
14850
- if (time >= Number(xMax)) {
14851
- result += ts * this.getCurveIntegrateValue(keyTimeData[i], Number(xMax));
14852
- }
14853
- if (time >= Number(xMin) && time < Number(xMax)) {
14854
- result += ts * this.getCurveIntegrateValue(keyTimeData[i], time);
14855
- break;
14856
- }
14857
- }
14858
- return result;
14859
- };
14860
- _proto.getIntegrateByTime = function getIntegrateByTime(t0, t1) {
14861
- return this.getIntegrateValue(0, t1) - this.getIntegrateValue(0, t0);
14862
- };
14863
- // 速度变化曲线面板移除后下线
14864
- _proto.getCurveIntegrateValue = function getCurveIntegrateValue(curveKey, time) {
14865
- var curveInfo = this.curveMap[curveKey];
14866
- var _curveInfo_points = curveInfo.points, p0 = _curveInfo_points[0];
14867
- var timeInterval = curveInfo.timeInterval;
14868
- var valueInterval = curveInfo.valueInterval;
14869
- var segments = 20;
14870
- var total = 0;
14871
- var h = (time - p0.x) / segments;
14872
- for(var i = 0; i <= segments; i++){
14873
- var t = i * h;
14874
- var normalizeTime = t / timeInterval;
14875
- var y = p0.y + valueInterval * curveInfo.curve.getValue(normalizeTime);
14876
- if (i === 0 || i === segments) {
14877
- total += y;
14878
- } else if (i % 2 === 1) {
14879
- total += 4 * y;
14880
- } else {
14881
- total += 2 * y;
14882
- }
14883
- }
14884
- total *= h / 3;
14885
- return total;
14886
- };
14887
- _proto.getCurveValue = function getCurveValue(curveKey, time) {
14888
- var curveInfo = this.curveMap[curveKey];
14889
- var _curveInfo_points = curveInfo.points, p0 = _curveInfo_points[0];
14890
- var timeInterval = curveInfo.timeInterval;
14891
- var valueInterval = curveInfo.valueInterval;
14892
- var normalizeTime = (time - p0.x) / timeInterval;
14893
- var value = curveInfo.curve.getValue(normalizeTime);
14894
- return p0.y + valueInterval * value;
14895
- };
14896
- _proto.toUniform = function toUniform(meta) {
14897
- var index = meta.index;
14898
- var count = this.keys.length;
14899
- meta.curves.push(this);
14900
- meta.index = index + count;
14901
- // 兼容 WebGL1
14902
- meta.max = Math.max(meta.max, count);
14903
- meta.curveCount += count;
14904
- return new Float32Array([
14905
- 5,
14906
- index + 1 / count,
14907
- index,
14908
- count
14909
- ]);
14910
- };
14911
- _proto.toData = function toData() {
14912
- var keys = this.keys;
14913
- var data = new Float32Array(keys.length * 4);
14914
- for(var i = 0, cursor = 0; i < keys.length; i++, cursor += 4){
14915
- data.set(keys[i], cursor);
14916
- }
14917
- return data;
14918
- };
14919
- _proto.getMaxTime = function getMaxTime() {
14920
- var keyTimeData = this.keyTimeData;
14921
- return this.curveMap[keyTimeData[keyTimeData.length - 1]].timeEnd;
14922
- };
14923
- return BezierCurve;
14924
- }(ValueGetter);
14925
14809
  var PathSegments = /*#__PURE__*/ function(ValueGetter) {
14926
14810
  _inherits(PathSegments, ValueGetter);
14927
14811
  function PathSegments() {
@@ -15275,6 +15159,292 @@ var Vector2Curve = /*#__PURE__*/ function(ValueGetter) {
15275
15159
  return Vector2Curve;
15276
15160
  }(ValueGetter);
15277
15161
 
15162
+ var TangentMode;
15163
+ (function(TangentMode) {
15164
+ TangentMode[TangentMode["Cubic"] = 0] = "Cubic";
15165
+ TangentMode[TangentMode["Linear"] = 1] = "Linear";
15166
+ TangentMode[TangentMode["Constant"] = 2] = "Constant";
15167
+ })(TangentMode || (TangentMode = {}));
15168
+ var WeightedMode;
15169
+ (function(WeightedMode) {
15170
+ WeightedMode[WeightedMode["None"] = 0] = "None";
15171
+ WeightedMode[WeightedMode["In"] = 1] = "In";
15172
+ WeightedMode[WeightedMode["Out"] = 2] = "Out";
15173
+ WeightedMode[WeightedMode["Both"] = 3] = "Both";
15174
+ })(WeightedMode || (WeightedMode = {}));
15175
+ var BezierCurve = /*#__PURE__*/ function(ValueGetter) {
15176
+ _inherits(BezierCurve, ValueGetter);
15177
+ function BezierCurve() {
15178
+ return ValueGetter.apply(this, arguments);
15179
+ }
15180
+ var _proto = BezierCurve.prototype;
15181
+ _proto.onCreate = function onCreate(props) {
15182
+ this.keyFrames = props;
15183
+ var keyframes = this.keyFrames;
15184
+ this.curveMap = {};
15185
+ this.keys = [];
15186
+ this.curveInfos = [];
15187
+ for(var i = 0; i < keyframes.length - 1; i++){
15188
+ var leftKeyframe = keyframes[i];
15189
+ var rightKeyframe = keyframes[i + 1];
15190
+ var _buildBezierEasing = buildBezierEasing(leftKeyframe, rightKeyframe), points = _buildBezierEasing.points, curve = _buildBezierEasing.curve, timeInterval = _buildBezierEasing.timeInterval, valueInterval = _buildBezierEasing.valueInterval;
15191
+ var s = points[0];
15192
+ var e = points[points.length - 1];
15193
+ this.keys.push([].concat(s.toArray(), points[1].toArray()));
15194
+ this.keys.push([].concat(e.toArray(), points[2].toArray()));
15195
+ var curveInfo = {
15196
+ points: points,
15197
+ timeInterval: timeInterval,
15198
+ valueInterval: valueInterval,
15199
+ curve: curve,
15200
+ timeStart: Number(s.x),
15201
+ timeEnd: Number(e.x)
15202
+ };
15203
+ this.curveMap[s.x + "&" + e.x] = curveInfo;
15204
+ this.curveInfos.push(curveInfo);
15205
+ }
15206
+ };
15207
+ _proto.getValue = function getValue(time) {
15208
+ var result = 0;
15209
+ var keysNumber = this.keyFrames.length;
15210
+ if (time <= this.keyFrames[0].time) {
15211
+ result = this.keyFrames[0].value;
15212
+ } else if (time < this.keyFrames[keysNumber - 1].time) {
15213
+ for(var i = 0; i < this.keyFrames.length - 1; i++){
15214
+ var xMin = this.keyFrames[i].time;
15215
+ var xMax = this.keyFrames[i + 1].time;
15216
+ if (time >= xMin && time < xMax) {
15217
+ var curveInfo = this.curveInfos[i];
15218
+ var p0 = curveInfo.points[0];
15219
+ var timeInterval = curveInfo.timeInterval;
15220
+ var valueInterval = curveInfo.valueInterval;
15221
+ var normalizeTime = (time - p0.x) / timeInterval;
15222
+ var value = curveInfo.curve.getValue(normalizeTime);
15223
+ result = p0.y + valueInterval * value;
15224
+ break;
15225
+ }
15226
+ }
15227
+ } else if (time >= this.keyFrames[keysNumber - 1].time) {
15228
+ result = this.keyFrames[keysNumber - 1].value;
15229
+ }
15230
+ return result;
15231
+ };
15232
+ _proto.getIntegrateValue = function getIntegrateValue(t0, t1, ts) {
15233
+ if (ts === void 0) ts = 1;
15234
+ var time = (t1 - t0) / ts;
15235
+ var result = 0;
15236
+ var keyTimeData = Object.keys(this.curveMap);
15237
+ var keyTimeStart = this.curveMap[keyTimeData[0]].timeStart;
15238
+ if (time <= keyTimeStart) {
15239
+ return 0;
15240
+ }
15241
+ for(var i = 0; i < keyTimeData.length; i++){
15242
+ var xMin = this.curveMap[keyTimeData[i]].timeStart;
15243
+ var xMax = this.curveMap[keyTimeData[i]].timeEnd;
15244
+ if (time >= Number(xMax)) {
15245
+ result += ts * this.getCurveIntegrateValue(keyTimeData[i], Number(xMax));
15246
+ }
15247
+ if (time >= Number(xMin) && time < Number(xMax)) {
15248
+ result += ts * this.getCurveIntegrateValue(keyTimeData[i], time);
15249
+ break;
15250
+ }
15251
+ }
15252
+ return result;
15253
+ };
15254
+ _proto.getIntegrateByTime = function getIntegrateByTime(t0, t1) {
15255
+ return this.getIntegrateValue(0, t1) - this.getIntegrateValue(0, t0);
15256
+ };
15257
+ // 速度变化曲线面板移除后下线
15258
+ _proto.getCurveIntegrateValue = function getCurveIntegrateValue(curveKey, time) {
15259
+ var curveInfo = this.curveMap[curveKey];
15260
+ var _curveInfo_points = curveInfo.points, p0 = _curveInfo_points[0];
15261
+ var timeInterval = curveInfo.timeInterval;
15262
+ var valueInterval = curveInfo.valueInterval;
15263
+ var segments = 20;
15264
+ var total = 0;
15265
+ var h = (time - p0.x) / segments;
15266
+ for(var i = 0; i <= segments; i++){
15267
+ var t = i * h;
15268
+ var normalizeTime = t / timeInterval;
15269
+ var y = p0.y + valueInterval * curveInfo.curve.getValue(normalizeTime);
15270
+ if (i === 0 || i === segments) {
15271
+ total += y;
15272
+ } else if (i % 2 === 1) {
15273
+ total += 4 * y;
15274
+ } else {
15275
+ total += 2 * y;
15276
+ }
15277
+ }
15278
+ total *= h / 3;
15279
+ return total;
15280
+ };
15281
+ _proto.toUniform = function toUniform(meta) {
15282
+ var index = meta.index;
15283
+ var count = this.keys.length;
15284
+ meta.curves.push(this);
15285
+ meta.index = index + count;
15286
+ // 兼容 WebGL1
15287
+ meta.max = Math.max(meta.max, count);
15288
+ meta.curveCount += count;
15289
+ return new Float32Array([
15290
+ 5,
15291
+ index + 1 / count,
15292
+ index,
15293
+ count
15294
+ ]);
15295
+ };
15296
+ _proto.toData = function toData() {
15297
+ var keys = this.keys;
15298
+ var data = new Float32Array(keys.length * 4);
15299
+ for(var i = 0, cursor = 0; i < keys.length; i++, cursor += 4){
15300
+ data.set(keys[i], cursor);
15301
+ }
15302
+ return data;
15303
+ };
15304
+ _proto.getMaxTime = function getMaxTime() {
15305
+ return this.keyFrames[this.keyFrames.length - 1].time;
15306
+ };
15307
+ return BezierCurve;
15308
+ }(ValueGetter);
15309
+ function buildBezierEasing(leftKeyframe, rightKeyframe) {
15310
+ var p0 = new Vector2(leftKeyframe.time, leftKeyframe.value);
15311
+ var p1 = new Vector2();
15312
+ var p2 = new Vector2();
15313
+ var p3 = new Vector2();
15314
+ var isWeighted = leftKeyframe.weightedMode === 2 || leftKeyframe.weightedMode === 3 || rightKeyframe.weightedMode === 1 || rightKeyframe.weightedMode === 3;
15315
+ var isConstant = leftKeyframe.tangentMode === 2;
15316
+ var rightDeltaX = (isWeighted ? leftKeyframe.outWeight : 1) * (rightKeyframe.time - leftKeyframe.time) / 3;
15317
+ p1.x = leftKeyframe.time + rightDeltaX;
15318
+ p1.y = leftKeyframe.value + rightDeltaX * (isConstant ? 0 : leftKeyframe.outSlope);
15319
+ var leftDeltaX = (isWeighted ? rightKeyframe.inWeight : 1) * (rightKeyframe.time - leftKeyframe.time) / 3;
15320
+ p2.x = rightKeyframe.time - leftDeltaX;
15321
+ p2.y = rightKeyframe.value - leftDeltaX * (isConstant ? 0 : rightKeyframe.inSlope);
15322
+ p3.x = rightKeyframe.time;
15323
+ p3.y = isConstant ? leftKeyframe.value : rightKeyframe.value;
15324
+ assertExist(p2);
15325
+ assertExist(p3);
15326
+ var timeInterval = p3.x - p0.x;
15327
+ var valueInterval = p3.y - p0.y;
15328
+ var y1, y2;
15329
+ var x1 = numberToFix((p1.x - p0.x) / timeInterval, 5);
15330
+ var x2 = numberToFix((p2.x - p0.x) / timeInterval, 5);
15331
+ if (decimalEqual(valueInterval, 0)) {
15332
+ y1 = y2 = NaN;
15333
+ } else {
15334
+ y1 = numberToFix((p1.y - p0.y) / valueInterval, 5);
15335
+ y2 = numberToFix((p2.y - p0.y) / valueInterval, 5);
15336
+ }
15337
+ if (x1 < 0) {
15338
+ console.error("Invalid bezier points, x1 < 0", p0, p1, p2, p3);
15339
+ x1 = 0;
15340
+ }
15341
+ if (x2 < 0) {
15342
+ console.error("Invalid bezier points, x2 < 0", p0, p1, p2, p3);
15343
+ x2 = 0;
15344
+ }
15345
+ if (x1 > 1) {
15346
+ console.error("Invalid bezier points, x1 >= 1", p0, p1, p2, p3);
15347
+ x1 = 1;
15348
+ }
15349
+ if (x2 > 1) {
15350
+ console.error("Invalid bezier points, x2 >= 1", p0, p1, p2, p3);
15351
+ x2 = 1;
15352
+ }
15353
+ var str = ("bez_" + x1 + "_" + y1 + "_" + x2 + "_" + y2).replace(/\./g, "p");
15354
+ var bezEasing;
15355
+ if (BezierMap[str]) {
15356
+ bezEasing = BezierMap[str];
15357
+ } else {
15358
+ if (decimalEqual(valueInterval, 0)) {
15359
+ bezEasing = new BezierEasing();
15360
+ } else if (isWeighted) {
15361
+ bezEasing = new BezierEasing(x1, y1, x2, y2);
15362
+ } else {
15363
+ bezEasing = new BezierEasing(y1, y2);
15364
+ }
15365
+ BezierMap[str] = bezEasing;
15366
+ }
15367
+ return {
15368
+ points: [
15369
+ p0,
15370
+ p1,
15371
+ p2,
15372
+ p3
15373
+ ],
15374
+ timeInterval: timeInterval,
15375
+ valueInterval: valueInterval,
15376
+ curve: bezEasing
15377
+ };
15378
+ }
15379
+ function oldBezierKeyFramesToNew(props) {
15380
+ var oldKeyframes = props;
15381
+ var keyframes = [];
15382
+ var keyDatas = [];
15383
+ var lastControl = {
15384
+ x: 0,
15385
+ y: 0
15386
+ };
15387
+ for(var i = 0; i < oldKeyframes.length - 1; i++){
15388
+ var leftKeyframe = oldKeyframes[i];
15389
+ var rightKeyframe = oldKeyframes[i + 1];
15390
+ var _getControlPoints = getControlPoints(leftKeyframe, rightKeyframe, true), p0 = _getControlPoints.p0, p1 = _getControlPoints.p1, p2 = _getControlPoints.p2, p3 = _getControlPoints.p3;
15391
+ assertExist(p2);
15392
+ assertExist(p3);
15393
+ var keyData = {
15394
+ leftControl: lastControl,
15395
+ value: p0,
15396
+ rightControl: p1,
15397
+ tangentMode: 0
15398
+ };
15399
+ if (leftKeyframe[0] === BezierKeyframeType.HOLD) {
15400
+ keyData.tangentMode = 2;
15401
+ }
15402
+ keyDatas.push(keyData);
15403
+ lastControl = p2;
15404
+ if (i === oldKeyframes.length - 2) {
15405
+ var res = getControlPoints(rightKeyframe, rightKeyframe, true);
15406
+ assertExist(res.p3);
15407
+ keyDatas.push({
15408
+ leftControl: p2,
15409
+ value: res.p3,
15410
+ rightControl: {
15411
+ x: 0,
15412
+ y: 0
15413
+ },
15414
+ tangentMode: rightKeyframe[0] === BezierKeyframeType.HOLD ? 2 : 0
15415
+ });
15416
+ }
15417
+ }
15418
+ var calculateSlop = function(p0, p1) {
15419
+ return (p1.y - p0.y) / (p1.x - p0.x + NumberEpsilon);
15420
+ };
15421
+ for(var i1 = 0; i1 < keyDatas.length; i1++){
15422
+ var leftControl = keyDatas[i1].leftControl;
15423
+ var value = keyDatas[i1].value;
15424
+ var rightControl = keyDatas[i1].rightControl;
15425
+ var outSlop = calculateSlop(value, rightControl);
15426
+ var inSlop = calculateSlop(leftControl, value);
15427
+ var keyframe = {
15428
+ time: value.x,
15429
+ value: value.y,
15430
+ inSlope: inSlop,
15431
+ outSlope: outSlop,
15432
+ inWeight: 0,
15433
+ outWeight: 0,
15434
+ tangentMode: keyDatas[i1].tangentMode,
15435
+ weightedMode: 3
15436
+ };
15437
+ keyframes.push(keyframe);
15438
+ if (i1 > 0) {
15439
+ keyframe.inWeight = (value.x - leftControl.x) / ((value.x - keyDatas[i1 - 1].value.x) / 3);
15440
+ }
15441
+ if (i1 + 1 < keyDatas.length) {
15442
+ keyframe.outWeight = (rightControl.x - value.x) / ((keyDatas[i1 + 1].value.x - value.x) / 3);
15443
+ }
15444
+ }
15445
+ return keyframes;
15446
+ }
15447
+
15278
15448
  var _obj$3;
15279
15449
  var map = (_obj$3 = {}, _obj$3[ValueType.RANDOM] = function(props) {
15280
15450
  if (_instanceof1(props[0], Array)) {
@@ -15311,7 +15481,8 @@ var map = (_obj$3 = {}, _obj$3[ValueType.RANDOM] = function(props) {
15311
15481
  if (props.length === 1) {
15312
15482
  return new StaticValue(props[0][1][1]);
15313
15483
  }
15314
- return new BezierCurve(props);
15484
+ // TODO: Move to migration.
15485
+ return new BezierCurve(oldBezierKeyFramesToNew(props));
15315
15486
  }, _obj$3[ValueType.BEZIER_CURVE_PATH] = function(props) {
15316
15487
  if (props[0].length === 1) {
15317
15488
  return new StaticValue(_construct(Vector3, [].concat(props[1][0])));
@@ -26210,6 +26381,10 @@ var TextComponentBase = /*#__PURE__*/ function() {
26210
26381
  var width = this.textLayout.width + this.textStyle.fontOffset;
26211
26382
  var lineCount = 1;
26212
26383
  var x = 0;
26384
+ //设置context.font的字号
26385
+ // if (context) {
26386
+ // context.font = this.getFontDesc(this.textStyle.fontSize);
26387
+ // }
26213
26388
  for(var i = 0; i < text.length; i++){
26214
26389
  var _context_measureText;
26215
26390
  var str = text[i];
@@ -28398,7 +28573,7 @@ function getStandardSpriteContent(sprite, transform) {
28398
28573
  return ret;
28399
28574
  }
28400
28575
 
28401
- var version$2 = "2.5.0-alpha.6";
28576
+ var version$2 = "2.5.1";
28402
28577
  var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
28403
28578
  var standardVersion = /^(\d+)\.(\d+)$/;
28404
28579
  var reverseParticle = false;
@@ -31648,7 +31823,7 @@ registerPlugin("sprite", SpriteLoader, VFXItem);
31648
31823
  registerPlugin("particle", ParticleLoader, VFXItem);
31649
31824
  registerPlugin("cal", CalculateLoader, VFXItem);
31650
31825
  registerPlugin("interact", InteractLoader, VFXItem);
31651
- var version$1 = "2.5.0-alpha.6";
31826
+ var version$1 = "2.5.1";
31652
31827
  logger.info("Core version: " + version$1 + ".");
31653
31828
 
31654
31829
  var _obj;
@@ -33250,8 +33425,8 @@ setMaxSpriteMeshItemCount(8);
33250
33425
  */ Mesh.create = function(engine, props) {
33251
33426
  return new ThreeMesh(engine, props);
33252
33427
  };
33253
- var version = "2.5.0-alpha.6";
33428
+ var version = "2.5.1";
33254
33429
  logger.info("THREEJS plugin version: " + version + ".");
33255
33430
 
33256
- export { AbstractPlugin, ActivationPlayable, ActivationPlayableAsset, ActivationTrack, AnimationClip, AnimationClipPlayable, Asset, AssetLoader, AssetManager, AssetService, BYTES_TYPE_MAP, BaseRenderComponent, Behaviour, BezierCurve, BezierCurvePath, BezierCurveQuat, BinaryAsset, COMPRESSED_TEXTURE, CONSTANT_MAP_BLEND, CONSTANT_MAP_DEPTH, CONSTANT_MAP_STENCIL_FUNC, CONSTANT_MAP_STENCIL_OP, COPY_FRAGMENT_SHADER, COPY_MESH_SHADER_ID, COPY_VERTEX_SHADER, CalculateLoader, Camera, CameraController, CameraVFXItemLoader, ColorCurve, ColorPropertyPlayableAsset, ColorPropertyTrack, Component, Composition, CompositionComponent, DEFAULT_FONTS, DEFAULT_FPS, Database, Deferred, DestroyOptions, Downloader, EFFECTS_COPY_MESH_NAME, EVENT_TYPE_CLICK, EVENT_TYPE_TOUCH_END, EVENT_TYPE_TOUCH_MOVE, EVENT_TYPE_TOUCH_START, EffectComponent, EffectsObject, EffectsPackage, Ellipse, Engine, EventEmitter, EventSystem, Fake3DAnimationMode, Fake3DComponent, FilterMode, Float16ArrayWrapper, FloatPropertyPlayableAsset, FloatPropertyTrack, Framebuffer, GLSLVersion, GPUCapability, Geometry, GlobalUniforms, GradientValue, GraphicsPath, HELP_LINK, HitTestType, InteractComponent, InteractLoader, InteractMesh, Item, KTXTexture, LineSegments, LinearValue, MaskMode, MaskProcessor, Material, MaterialDataBlock, MaterialRenderType, MaterialTrack, Mesh, MeshCollider, ObjectBindingTrack, OrderType, PLAYER_OPTIONS_ENV_EDITOR, POST_PROCESS_SETTINGS, ParticleBehaviourPlayable, ParticleBehaviourPlayableAsset, ParticleLoader, ParticleMesh, ParticleSystem, ParticleSystemRenderer, ParticleTrack, PassTextureCache, PathSegments, PluginSystem, PolyStar, Polygon, PostProcessVolume, PropertyTrack, RENDER_PASS_NAME_PREFIX, RENDER_PREFER_LOOKUP_TEXTURE, RUNTIME_ENV, RandomSetValue, RandomValue, RandomVectorValue, RenderFrame, RenderPass, RenderPassAttachmentStorageType, RenderPassDestroyAttachmentType, RenderPassPriorityNormal, RenderPassPriorityPostprocess, RenderPassPriorityPrepare, RenderTargetHandle, RenderTextureFormat, Renderbuffer, Renderer, RendererComponent, RuntimeClip, SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_0, SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_SIZE_0, SEMANTIC_PRE_COLOR_ATTACHMENT_0, SEMANTIC_PRE_COLOR_ATTACHMENT_SIZE_0, SPRITE_VERTEX_STRIDE, Scene, SemanticMap, SerializationHelper, Shader, ShaderCompileResultStatus, ShaderFactory, ShaderType, ShaderVariant, ShapeComponent, ShapePath, SpriteColorPlayableAsset, SpriteColorTrack, SpriteComponent, SpriteLoader, StarType, StaticValue, SubCompositionPlayableAsset, SubCompositionTrack, TEMPLATE_USE_OFFSCREEN_CANVAS, TEXTURE_UNIFORM_MAP, TextComponent, TextComponentBase, TextLayout, TextLoader, TextStyle, Texture, TextureFactory, TextureLoadAction, TextureSourceType, TextureStoreAction, ThreeComposition, ThreeDisplayObject, ThreeEngine, ThreeMaterial, ThreeSpriteComponent, ThreeTextComponent, ThreeTexture, Ticker, TimelineAsset, TimelineClip, TimelinePlayable, TrackAsset, TrackSortWrapper, TrackType, Transform, TransformAnimationPlayable, TransformPlayableAsset, TransformTrack, VFXItem, ValueGetter, Vector2Curve, Vector2PropertyPlayableAsset, Vector2PropertyTrack, Vector4Curve, Vector4PropertyPlayableAsset, Vector4PropertyTrack, addByOrder, addItem, addItemWithOrder, applyMixins, assertExist, asserts, base64ToFile, blend, buildLine, calculateTranslation, canvasPool, closePointEps, colorGradingFrag, colorStopsFromGradient, colorToArr$1 as colorToArr, combineImageTemplate, createCopyShader, createGLContext, createKeyFrameMeta, createShape, createValueGetter, curveEps, decimalEqual, defaultPlugins, deserializeMipmapTexture, earcut, effectsClass, effectsClassStore, enlargeBuffer, ensureFixedNumber, ensureVec3, findPreviousRenderPass, gaussianDown_frag as gaussianDownFrag, gaussianDownHFrag, gaussianDownVFrag, gaussianUpFrag, generateEmptyTypedArray, generateGUID, generateHalfFloatTexture, generateTransparentTexture, generateWhiteTexture, getBackgroundImage, getColorFromGradientStops, getConfig, getDefaultTextureFactory, getGeometryByShape, getGeometryTriangles, getKTXTextureOptions, getKeyFrameMetaByRawValue, getMergedStore, getParticleMeshShader, getPixelRatio, getPreMultiAlpha, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, getTextureSize, glContext, glType2VertexFormatType, gpuTimer, imageDataFromColor, imageDataFromGradient, initErrors, initGLContext, integrate, interpolateColor, isAlipayMiniApp, isAndroid, isArray, isCanvas, isFunction, isIOS, isIOSByUA, isMiniProgram, isObject, isOpenHarmony, isSimulatorCellPhone, isString, isUniformStruct, isUniformStructArray, isValidFontFamily, isWebGL2, isWechatMiniApp, itemFrag, itemFrame_frag as itemFrameFrag, itemVert, loadAVIFOptional, loadBinary, loadBlob, loadImage, loadMedia, loadVideo, loadWebPOptional, logger, index as math, maxSpriteMeshItemCount, modifyMaxKeyframeShader, nearestPowerOfTwo, noop, normalizeColor, numberToFix, parsePercent$1 as parsePercent, particleFrag, particleOriginTranslateMap$1 as particleOriginTranslateMap, particleUniformTypeMap, particleVert, passRenderLevel, pluginLoaderMap, randomInRange, registerPlugin, removeItem, rotateVec2, screenMeshVert, serialize, setBlendMode, setConfig, setDefaultTextureFactory, setMaskMode, setMaxSpriteMeshItemCount, setRayFromCamera, setSideMode, setSpriteMeshMaxItemCountByGPU, setUniformValue, sortByOrder, index$1 as spec, thresholdFrag, throwDestroyedError, trailVert, translatePoint, trianglesFromRect, unregisterPlugin, valIfUndefined, value, valueDefine, vecFill, vecMulCombine, version, vertexFormatType2GLType };
33431
+ export { AbstractPlugin, ActivationPlayable, ActivationPlayableAsset, ActivationTrack, AnimationClip, AnimationClipPlayable, Asset, AssetLoader, AssetManager, AssetService, BYTES_TYPE_MAP, BaseRenderComponent, Behaviour, BezierCurve, BezierCurvePath, BezierCurveQuat, BinaryAsset, COMPRESSED_TEXTURE, CONSTANT_MAP_BLEND, CONSTANT_MAP_DEPTH, CONSTANT_MAP_STENCIL_FUNC, CONSTANT_MAP_STENCIL_OP, COPY_FRAGMENT_SHADER, COPY_MESH_SHADER_ID, COPY_VERTEX_SHADER, CalculateLoader, Camera, CameraController, CameraVFXItemLoader, ColorCurve, ColorPropertyPlayableAsset, ColorPropertyTrack, Component, Composition, CompositionComponent, DEFAULT_FONTS, DEFAULT_FPS, Database, Deferred, DestroyOptions, Downloader, EFFECTS_COPY_MESH_NAME, EVENT_TYPE_CLICK, EVENT_TYPE_TOUCH_END, EVENT_TYPE_TOUCH_MOVE, EVENT_TYPE_TOUCH_START, EffectComponent, EffectsObject, EffectsPackage, Ellipse, Engine, EventEmitter, EventSystem, Fake3DAnimationMode, Fake3DComponent, FilterMode, Float16ArrayWrapper, FloatPropertyPlayableAsset, FloatPropertyTrack, Framebuffer, GLSLVersion, GPUCapability, Geometry, GlobalUniforms, GradientValue, GraphicsPath, HELP_LINK, HitTestType, InteractComponent, InteractLoader, InteractMesh, Item, KTXTexture, LineSegments, LinearValue, MaskMode, MaskProcessor, Material, MaterialDataBlock, MaterialRenderType, MaterialTrack, Mesh, MeshCollider, ObjectBindingTrack, OrderType, PLAYER_OPTIONS_ENV_EDITOR, POST_PROCESS_SETTINGS, ParticleBehaviourPlayable, ParticleBehaviourPlayableAsset, ParticleLoader, ParticleMesh, ParticleSystem, ParticleSystemRenderer, ParticleTrack, PassTextureCache, PathSegments, PluginSystem, PolyStar, Polygon, PostProcessVolume, PropertyTrack, RENDER_PASS_NAME_PREFIX, RENDER_PREFER_LOOKUP_TEXTURE, RUNTIME_ENV, RandomSetValue, RandomValue, RandomVectorValue, RenderFrame, RenderPass, RenderPassAttachmentStorageType, RenderPassDestroyAttachmentType, RenderPassPriorityNormal, RenderPassPriorityPostprocess, RenderPassPriorityPrepare, RenderTargetHandle, RenderTextureFormat, Renderbuffer, Renderer, RendererComponent, RuntimeClip, SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_0, SEMANTIC_MAIN_PRE_COLOR_ATTACHMENT_SIZE_0, SEMANTIC_PRE_COLOR_ATTACHMENT_0, SEMANTIC_PRE_COLOR_ATTACHMENT_SIZE_0, SPRITE_VERTEX_STRIDE, Scene, SemanticMap, SerializationHelper, Shader, ShaderCompileResultStatus, ShaderFactory, ShaderType, ShaderVariant, ShapeComponent, ShapePath, SpriteColorPlayableAsset, SpriteColorTrack, SpriteComponent, SpriteLoader, StarType, StaticValue, SubCompositionPlayableAsset, SubCompositionTrack, TEMPLATE_USE_OFFSCREEN_CANVAS, TEXTURE_UNIFORM_MAP, TangentMode, TextComponent, TextComponentBase, TextLayout, TextLoader, TextStyle, Texture, TextureFactory, TextureLoadAction, TextureSourceType, TextureStoreAction, ThreeComposition, ThreeDisplayObject, ThreeEngine, ThreeMaterial, ThreeSpriteComponent, ThreeTextComponent, ThreeTexture, Ticker, TimelineAsset, TimelineClip, TimelinePlayable, TrackAsset, TrackSortWrapper, TrackType, Transform, TransformAnimationPlayable, TransformPlayableAsset, TransformTrack, VFXItem, ValueGetter, Vector2Curve, Vector2PropertyPlayableAsset, Vector2PropertyTrack, Vector4Curve, Vector4PropertyPlayableAsset, Vector4PropertyTrack, WeightedMode, addByOrder, addItem, addItemWithOrder, applyMixins, assertExist, asserts, base64ToFile, blend, buildLine, calculateTranslation, canvasPool, closePointEps, colorGradingFrag, colorStopsFromGradient, colorToArr$1 as colorToArr, combineImageTemplate, createCopyShader, createGLContext, createKeyFrameMeta, createShape, createValueGetter, curveEps, decimalEqual, defaultPlugins, deserializeMipmapTexture, earcut, effectsClass, effectsClassStore, enlargeBuffer, ensureFixedNumber, ensureVec3, findPreviousRenderPass, gaussianDown_frag as gaussianDownFrag, gaussianDownHFrag, gaussianDownVFrag, gaussianUpFrag, generateEmptyTypedArray, generateGUID, generateHalfFloatTexture, generateTransparentTexture, generateWhiteTexture, getBackgroundImage, getColorFromGradientStops, getConfig, getDefaultTextureFactory, getGeometryByShape, getGeometryTriangles, getKTXTextureOptions, getKeyFrameMetaByRawValue, getMergedStore, getParticleMeshShader, getPixelRatio, getPreMultiAlpha, getStandardComposition, getStandardImage, getStandardItem, getStandardJSON, getTextureSize, glContext, glType2VertexFormatType, gpuTimer, imageDataFromColor, imageDataFromGradient, initErrors, initGLContext, integrate, interpolateColor, isAlipayMiniApp, isAndroid, isArray, isCanvas, isFunction, isIOS, isIOSByUA, isMiniProgram, isObject, isOpenHarmony, isSimulatorCellPhone, isString, isUniformStruct, isUniformStructArray, isValidFontFamily, isWebGL2, isWechatMiniApp, itemFrag, itemFrame_frag as itemFrameFrag, itemVert, loadAVIFOptional, loadBinary, loadBlob, loadImage, loadMedia, loadVideo, loadWebPOptional, logger, index as math, maxSpriteMeshItemCount, modifyMaxKeyframeShader, nearestPowerOfTwo, noop, normalizeColor, numberToFix, oldBezierKeyFramesToNew, parsePercent$1 as parsePercent, particleFrag, particleOriginTranslateMap$1 as particleOriginTranslateMap, particleUniformTypeMap, particleVert, passRenderLevel, pluginLoaderMap, randomInRange, registerPlugin, removeItem, rotateVec2, screenMeshVert, serialize, setBlendMode, setConfig, setDefaultTextureFactory, setMaskMode, setMaxSpriteMeshItemCount, setRayFromCamera, setSideMode, setSpriteMeshMaxItemCountByGPU, setUniformValue, sortByOrder, index$1 as spec, thresholdFrag, throwDestroyedError, trailVert, translatePoint, trianglesFromRect, unregisterPlugin, valIfUndefined, value, valueDefine, vecFill, vecMulCombine, version, vertexFormatType2GLType };
33257
33432
  //# sourceMappingURL=index.mjs.map