@galacean/effects-core 2.5.0-alpha.6 → 2.5.0
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.js +343 -167
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +343 -168
- package/dist/index.mjs.map +1 -1
- package/dist/math/bezier.d.ts +11 -8
- package/dist/math/value-getters/bezier-curve.d.ts +50 -0
- package/dist/math/value-getters/index.d.ts +1 -0
- package/dist/math/value-getters/value-getter.d.ts +1 -25
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Description: Galacean Effects runtime core for the web
|
|
4
4
|
* Author: Ant Group CO., Ltd.
|
|
5
5
|
* Contributors: 燃然,飂兮,十弦,云垣,茂安,意绮
|
|
6
|
-
* Version: v2.5.0
|
|
6
|
+
* Version: v2.5.0
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
'use strict';
|
|
@@ -14170,40 +14170,60 @@ var BezierQuat = /*#__PURE__*/ function() {
|
|
|
14170
14170
|
return BezierQuat;
|
|
14171
14171
|
}();
|
|
14172
14172
|
var BezierEasing = /*#__PURE__*/ function() {
|
|
14173
|
-
function BezierEasing(
|
|
14174
|
-
this.mX1 = mX1;
|
|
14175
|
-
this.mY1 = mY1;
|
|
14176
|
-
this.mX2 = mX2;
|
|
14177
|
-
this.mY2 = mY2;
|
|
14173
|
+
function BezierEasing(control1YOrControl1X, control2YOrControl1Y, control2X, control2Y) {
|
|
14178
14174
|
this.precomputed = false;
|
|
14175
|
+
this.control1 = new Vector2();
|
|
14176
|
+
this.control2 = new Vector2();
|
|
14177
|
+
this.weighted = false;
|
|
14178
|
+
this.isConstant = false;
|
|
14179
14179
|
this.mSampleValues = new Array(kSplineTableSize);
|
|
14180
|
+
if (control1YOrControl1X !== undefined && control2YOrControl1Y !== undefined && control2X !== undefined && control2Y !== undefined) {
|
|
14181
|
+
this.control1.x = control1YOrControl1X;
|
|
14182
|
+
this.control1.y = control2YOrControl1Y;
|
|
14183
|
+
this.control2.x = control2X;
|
|
14184
|
+
this.control2.y = control2Y;
|
|
14185
|
+
this.weighted = true;
|
|
14186
|
+
} else if (control1YOrControl1X !== undefined && control2YOrControl1Y !== undefined) {
|
|
14187
|
+
this.control1.x = 1 / 3;
|
|
14188
|
+
this.control1.y = control1YOrControl1X;
|
|
14189
|
+
this.control2.x = 2 / 3;
|
|
14190
|
+
this.control2.y = control2YOrControl1Y;
|
|
14191
|
+
} else {
|
|
14192
|
+
this.isConstant = true;
|
|
14193
|
+
}
|
|
14180
14194
|
}
|
|
14181
14195
|
var _proto = BezierEasing.prototype;
|
|
14182
|
-
_proto.precompute = function precompute() {
|
|
14183
|
-
this.precomputed = true;
|
|
14184
|
-
if (this.mX1 !== this.mY1 || this.mX2 !== this.mY2) {
|
|
14185
|
-
this.calcSampleValues();
|
|
14186
|
-
}
|
|
14187
|
-
};
|
|
14188
14196
|
_proto.getValue = function getValue(x) {
|
|
14189
|
-
if (this.
|
|
14190
|
-
return x;
|
|
14191
|
-
}
|
|
14192
|
-
if (isNaN(this.mY1) || isNaN(this.mY2)) {
|
|
14197
|
+
if (this.isConstant) {
|
|
14193
14198
|
return 0;
|
|
14194
14199
|
}
|
|
14200
|
+
if (this.control1.x === this.control1.y && this.control2.x === this.control2.y) {
|
|
14201
|
+
return x;
|
|
14202
|
+
}
|
|
14195
14203
|
if (x === 0 || x === 1) {
|
|
14196
14204
|
return x;
|
|
14197
14205
|
}
|
|
14206
|
+
if (!this.weighted) {
|
|
14207
|
+
return this.bezierInterpolate(0, this.control1.y, this.control2.y, 1, x);
|
|
14208
|
+
}
|
|
14198
14209
|
if (!this.precomputed) {
|
|
14199
14210
|
this.precompute();
|
|
14200
14211
|
}
|
|
14201
|
-
var value = calcBezier(this.getTForX(x), this.
|
|
14212
|
+
var value = calcBezier(this.getTForX(x), this.control1.y, this.control2.y);
|
|
14202
14213
|
return value;
|
|
14203
14214
|
};
|
|
14215
|
+
_proto.bezierInterpolate = function bezierInterpolate(pStart, pControl1, pControl2, pEnd, t) {
|
|
14216
|
+
// Formula from Wikipedia article on Bezier curves
|
|
14217
|
+
var omt = 1.0 - t;
|
|
14218
|
+
var omt2 = omt * omt;
|
|
14219
|
+
var omt3 = omt2 * omt;
|
|
14220
|
+
var t2 = t * t;
|
|
14221
|
+
var t3 = t2 * t;
|
|
14222
|
+
return pStart * omt3 + pControl1 * omt2 * t * 3.0 + pControl2 * omt * t2 * 3.0 + pEnd * t3;
|
|
14223
|
+
};
|
|
14204
14224
|
_proto.calcSampleValues = function calcSampleValues() {
|
|
14205
14225
|
for(var i = 0; i < kSplineTableSize; ++i){
|
|
14206
|
-
this.mSampleValues[i] = calcBezier(i * kSampleStepSize, this.
|
|
14226
|
+
this.mSampleValues[i] = calcBezier(i * kSampleStepSize, this.control1.x, this.control2.x);
|
|
14207
14227
|
}
|
|
14208
14228
|
};
|
|
14209
14229
|
_proto.getTForX = function getTForX(aX) {
|
|
@@ -14216,14 +14236,20 @@ var BezierEasing = /*#__PURE__*/ function() {
|
|
|
14216
14236
|
// Interpolate to provide an initial guess for t
|
|
14217
14237
|
var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);
|
|
14218
14238
|
var guessForT = intervalStart + dist * kSampleStepSize;
|
|
14219
|
-
var initialSlope = getSlope(guessForT, this.
|
|
14239
|
+
var initialSlope = getSlope(guessForT, this.control1.x, this.control2.x);
|
|
14220
14240
|
if (initialSlope >= NEWTON_MIN_SLOPE) {
|
|
14221
|
-
return newtonRaphsonIterate(aX, guessForT, this.
|
|
14241
|
+
return newtonRaphsonIterate(aX, guessForT, this.control1.x, this.control2.x);
|
|
14222
14242
|
}
|
|
14223
14243
|
if (initialSlope === 0.0) {
|
|
14224
14244
|
return guessForT;
|
|
14225
14245
|
}
|
|
14226
|
-
return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, this.
|
|
14246
|
+
return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, this.control1.x, this.control2.x);
|
|
14247
|
+
};
|
|
14248
|
+
_proto.precompute = function precompute() {
|
|
14249
|
+
this.precomputed = true;
|
|
14250
|
+
if (this.control1.x !== this.control1.y || this.control2.x !== this.control2.y) {
|
|
14251
|
+
this.calcSampleValues();
|
|
14252
|
+
}
|
|
14227
14253
|
};
|
|
14228
14254
|
return BezierEasing;
|
|
14229
14255
|
}();
|
|
@@ -14782,148 +14808,6 @@ var LineSegments = /*#__PURE__*/ function(ValueGetter) {
|
|
|
14782
14808
|
};
|
|
14783
14809
|
return LineSegments;
|
|
14784
14810
|
}(ValueGetter);
|
|
14785
|
-
var BezierCurve = /*#__PURE__*/ function(ValueGetter) {
|
|
14786
|
-
_inherits(BezierCurve, ValueGetter);
|
|
14787
|
-
function BezierCurve() {
|
|
14788
|
-
return ValueGetter.apply(this, arguments);
|
|
14789
|
-
}
|
|
14790
|
-
var _proto = BezierCurve.prototype;
|
|
14791
|
-
_proto.onCreate = function onCreate(props) {
|
|
14792
|
-
var keyframes = props;
|
|
14793
|
-
this.curveMap = {};
|
|
14794
|
-
this.keys = [];
|
|
14795
|
-
for(var i = 0; i < keyframes.length - 1; i++){
|
|
14796
|
-
var leftKeyframe = keyframes[i];
|
|
14797
|
-
var rightKeyframe = keyframes[i + 1];
|
|
14798
|
-
var _buildEasingCurve = buildEasingCurve(leftKeyframe, rightKeyframe), points = _buildEasingCurve.points, curve = _buildEasingCurve.curve, timeInterval = _buildEasingCurve.timeInterval, valueInterval = _buildEasingCurve.valueInterval;
|
|
14799
|
-
var s = points[0];
|
|
14800
|
-
var e = points[points.length - 1];
|
|
14801
|
-
this.keys.push([].concat(s.toArray(), points[1].toArray()));
|
|
14802
|
-
this.keys.push([].concat(e.toArray(), points[2].toArray()));
|
|
14803
|
-
this.curveMap[s.x + "&" + e.x] = {
|
|
14804
|
-
points: points,
|
|
14805
|
-
timeInterval: timeInterval,
|
|
14806
|
-
valueInterval: valueInterval,
|
|
14807
|
-
curve: curve,
|
|
14808
|
-
timeStart: Number(s.x),
|
|
14809
|
-
timeEnd: Number(e.x)
|
|
14810
|
-
};
|
|
14811
|
-
}
|
|
14812
|
-
this.startKeyframe = keyframes[0];
|
|
14813
|
-
this.endKeyframe = keyframes[keyframes.length - 1];
|
|
14814
|
-
this.keyTimeData = Object.keys(this.curveMap);
|
|
14815
|
-
};
|
|
14816
|
-
_proto.getValue = function getValue(time) {
|
|
14817
|
-
var result = 0;
|
|
14818
|
-
var keyTimeData = this.keyTimeData;
|
|
14819
|
-
var keyTimeStart = this.curveMap[keyTimeData[0]].timeStart;
|
|
14820
|
-
var keyTimeEnd = this.curveMap[keyTimeData[keyTimeData.length - 1]].timeEnd;
|
|
14821
|
-
if (time <= keyTimeStart) {
|
|
14822
|
-
keyframeInfo.getPointIndexInCurve(this.startKeyframe, keyframeInfo.pointIndexCache);
|
|
14823
|
-
return this.startKeyframe[1][keyframeInfo.pointIndexCache.yIndex];
|
|
14824
|
-
}
|
|
14825
|
-
if (time >= keyTimeEnd) {
|
|
14826
|
-
keyframeInfo.getPointIndexInCurve(this.endKeyframe, keyframeInfo.pointIndexCache);
|
|
14827
|
-
return this.endKeyframe[1][keyframeInfo.pointIndexCache.yIndex];
|
|
14828
|
-
}
|
|
14829
|
-
for(var i = 0; i < keyTimeData.length; i++){
|
|
14830
|
-
var xMin = this.curveMap[keyTimeData[i]].timeStart;
|
|
14831
|
-
var xMax = this.curveMap[keyTimeData[i]].timeEnd;
|
|
14832
|
-
// const [xMin, xMax] = keyTimeData[i].split('&');
|
|
14833
|
-
if (time >= Number(xMin) && time < Number(xMax)) {
|
|
14834
|
-
result = this.getCurveValue(keyTimeData[i], time);
|
|
14835
|
-
break;
|
|
14836
|
-
}
|
|
14837
|
-
}
|
|
14838
|
-
return result;
|
|
14839
|
-
};
|
|
14840
|
-
_proto.getIntegrateValue = function getIntegrateValue(t0, t1, ts) {
|
|
14841
|
-
if (ts === void 0) ts = 1;
|
|
14842
|
-
var time = (t1 - t0) / ts;
|
|
14843
|
-
var result = 0;
|
|
14844
|
-
var keyTimeData = Object.keys(this.curveMap);
|
|
14845
|
-
var keyTimeStart = this.curveMap[keyTimeData[0]].timeStart;
|
|
14846
|
-
if (time <= keyTimeStart) {
|
|
14847
|
-
return 0;
|
|
14848
|
-
}
|
|
14849
|
-
for(var i = 0; i < keyTimeData.length; i++){
|
|
14850
|
-
var xMin = this.curveMap[keyTimeData[i]].timeStart;
|
|
14851
|
-
var xMax = this.curveMap[keyTimeData[i]].timeEnd;
|
|
14852
|
-
if (time >= Number(xMax)) {
|
|
14853
|
-
result += ts * this.getCurveIntegrateValue(keyTimeData[i], Number(xMax));
|
|
14854
|
-
}
|
|
14855
|
-
if (time >= Number(xMin) && time < Number(xMax)) {
|
|
14856
|
-
result += ts * this.getCurveIntegrateValue(keyTimeData[i], time);
|
|
14857
|
-
break;
|
|
14858
|
-
}
|
|
14859
|
-
}
|
|
14860
|
-
return result;
|
|
14861
|
-
};
|
|
14862
|
-
_proto.getIntegrateByTime = function getIntegrateByTime(t0, t1) {
|
|
14863
|
-
return this.getIntegrateValue(0, t1) - this.getIntegrateValue(0, t0);
|
|
14864
|
-
};
|
|
14865
|
-
// 速度变化曲线面板移除后下线
|
|
14866
|
-
_proto.getCurveIntegrateValue = function getCurveIntegrateValue(curveKey, time) {
|
|
14867
|
-
var curveInfo = this.curveMap[curveKey];
|
|
14868
|
-
var _curveInfo_points = curveInfo.points, p0 = _curveInfo_points[0];
|
|
14869
|
-
var timeInterval = curveInfo.timeInterval;
|
|
14870
|
-
var valueInterval = curveInfo.valueInterval;
|
|
14871
|
-
var segments = 20;
|
|
14872
|
-
var total = 0;
|
|
14873
|
-
var h = (time - p0.x) / segments;
|
|
14874
|
-
for(var i = 0; i <= segments; i++){
|
|
14875
|
-
var t = i * h;
|
|
14876
|
-
var normalizeTime = t / timeInterval;
|
|
14877
|
-
var y = p0.y + valueInterval * curveInfo.curve.getValue(normalizeTime);
|
|
14878
|
-
if (i === 0 || i === segments) {
|
|
14879
|
-
total += y;
|
|
14880
|
-
} else if (i % 2 === 1) {
|
|
14881
|
-
total += 4 * y;
|
|
14882
|
-
} else {
|
|
14883
|
-
total += 2 * y;
|
|
14884
|
-
}
|
|
14885
|
-
}
|
|
14886
|
-
total *= h / 3;
|
|
14887
|
-
return total;
|
|
14888
|
-
};
|
|
14889
|
-
_proto.getCurveValue = function getCurveValue(curveKey, time) {
|
|
14890
|
-
var curveInfo = this.curveMap[curveKey];
|
|
14891
|
-
var _curveInfo_points = curveInfo.points, p0 = _curveInfo_points[0];
|
|
14892
|
-
var timeInterval = curveInfo.timeInterval;
|
|
14893
|
-
var valueInterval = curveInfo.valueInterval;
|
|
14894
|
-
var normalizeTime = (time - p0.x) / timeInterval;
|
|
14895
|
-
var value = curveInfo.curve.getValue(normalizeTime);
|
|
14896
|
-
return p0.y + valueInterval * value;
|
|
14897
|
-
};
|
|
14898
|
-
_proto.toUniform = function toUniform(meta) {
|
|
14899
|
-
var index = meta.index;
|
|
14900
|
-
var count = this.keys.length;
|
|
14901
|
-
meta.curves.push(this);
|
|
14902
|
-
meta.index = index + count;
|
|
14903
|
-
// 兼容 WebGL1
|
|
14904
|
-
meta.max = Math.max(meta.max, count);
|
|
14905
|
-
meta.curveCount += count;
|
|
14906
|
-
return new Float32Array([
|
|
14907
|
-
5,
|
|
14908
|
-
index + 1 / count,
|
|
14909
|
-
index,
|
|
14910
|
-
count
|
|
14911
|
-
]);
|
|
14912
|
-
};
|
|
14913
|
-
_proto.toData = function toData() {
|
|
14914
|
-
var keys = this.keys;
|
|
14915
|
-
var data = new Float32Array(keys.length * 4);
|
|
14916
|
-
for(var i = 0, cursor = 0; i < keys.length; i++, cursor += 4){
|
|
14917
|
-
data.set(keys[i], cursor);
|
|
14918
|
-
}
|
|
14919
|
-
return data;
|
|
14920
|
-
};
|
|
14921
|
-
_proto.getMaxTime = function getMaxTime() {
|
|
14922
|
-
var keyTimeData = this.keyTimeData;
|
|
14923
|
-
return this.curveMap[keyTimeData[keyTimeData.length - 1]].timeEnd;
|
|
14924
|
-
};
|
|
14925
|
-
return BezierCurve;
|
|
14926
|
-
}(ValueGetter);
|
|
14927
14811
|
var PathSegments = /*#__PURE__*/ function(ValueGetter) {
|
|
14928
14812
|
_inherits(PathSegments, ValueGetter);
|
|
14929
14813
|
function PathSegments() {
|
|
@@ -15277,6 +15161,292 @@ var Vector2Curve = /*#__PURE__*/ function(ValueGetter) {
|
|
|
15277
15161
|
return Vector2Curve;
|
|
15278
15162
|
}(ValueGetter);
|
|
15279
15163
|
|
|
15164
|
+
exports.TangentMode = void 0;
|
|
15165
|
+
(function(TangentMode) {
|
|
15166
|
+
TangentMode[TangentMode["Cubic"] = 0] = "Cubic";
|
|
15167
|
+
TangentMode[TangentMode["Linear"] = 1] = "Linear";
|
|
15168
|
+
TangentMode[TangentMode["Constant"] = 2] = "Constant";
|
|
15169
|
+
})(exports.TangentMode || (exports.TangentMode = {}));
|
|
15170
|
+
exports.WeightedMode = void 0;
|
|
15171
|
+
(function(WeightedMode) {
|
|
15172
|
+
WeightedMode[WeightedMode["None"] = 0] = "None";
|
|
15173
|
+
WeightedMode[WeightedMode["In"] = 1] = "In";
|
|
15174
|
+
WeightedMode[WeightedMode["Out"] = 2] = "Out";
|
|
15175
|
+
WeightedMode[WeightedMode["Both"] = 3] = "Both";
|
|
15176
|
+
})(exports.WeightedMode || (exports.WeightedMode = {}));
|
|
15177
|
+
var BezierCurve = /*#__PURE__*/ function(ValueGetter) {
|
|
15178
|
+
_inherits(BezierCurve, ValueGetter);
|
|
15179
|
+
function BezierCurve() {
|
|
15180
|
+
return ValueGetter.apply(this, arguments);
|
|
15181
|
+
}
|
|
15182
|
+
var _proto = BezierCurve.prototype;
|
|
15183
|
+
_proto.onCreate = function onCreate(props) {
|
|
15184
|
+
this.keyFrames = props;
|
|
15185
|
+
var keyframes = this.keyFrames;
|
|
15186
|
+
this.curveMap = {};
|
|
15187
|
+
this.keys = [];
|
|
15188
|
+
this.curveInfos = [];
|
|
15189
|
+
for(var i = 0; i < keyframes.length - 1; i++){
|
|
15190
|
+
var leftKeyframe = keyframes[i];
|
|
15191
|
+
var rightKeyframe = keyframes[i + 1];
|
|
15192
|
+
var _buildBezierEasing = buildBezierEasing(leftKeyframe, rightKeyframe), points = _buildBezierEasing.points, curve = _buildBezierEasing.curve, timeInterval = _buildBezierEasing.timeInterval, valueInterval = _buildBezierEasing.valueInterval;
|
|
15193
|
+
var s = points[0];
|
|
15194
|
+
var e = points[points.length - 1];
|
|
15195
|
+
this.keys.push([].concat(s.toArray(), points[1].toArray()));
|
|
15196
|
+
this.keys.push([].concat(e.toArray(), points[2].toArray()));
|
|
15197
|
+
var curveInfo = {
|
|
15198
|
+
points: points,
|
|
15199
|
+
timeInterval: timeInterval,
|
|
15200
|
+
valueInterval: valueInterval,
|
|
15201
|
+
curve: curve,
|
|
15202
|
+
timeStart: Number(s.x),
|
|
15203
|
+
timeEnd: Number(e.x)
|
|
15204
|
+
};
|
|
15205
|
+
this.curveMap[s.x + "&" + e.x] = curveInfo;
|
|
15206
|
+
this.curveInfos.push(curveInfo);
|
|
15207
|
+
}
|
|
15208
|
+
};
|
|
15209
|
+
_proto.getValue = function getValue(time) {
|
|
15210
|
+
var result = 0;
|
|
15211
|
+
var keysNumber = this.keyFrames.length;
|
|
15212
|
+
if (time <= this.keyFrames[0].time) {
|
|
15213
|
+
result = this.keyFrames[0].value;
|
|
15214
|
+
} else if (time < this.keyFrames[keysNumber - 1].time) {
|
|
15215
|
+
for(var i = 0; i < this.keyFrames.length - 1; i++){
|
|
15216
|
+
var xMin = this.keyFrames[i].time;
|
|
15217
|
+
var xMax = this.keyFrames[i + 1].time;
|
|
15218
|
+
if (time >= xMin && time < xMax) {
|
|
15219
|
+
var curveInfo = this.curveInfos[i];
|
|
15220
|
+
var p0 = curveInfo.points[0];
|
|
15221
|
+
var timeInterval = curveInfo.timeInterval;
|
|
15222
|
+
var valueInterval = curveInfo.valueInterval;
|
|
15223
|
+
var normalizeTime = (time - p0.x) / timeInterval;
|
|
15224
|
+
var value = curveInfo.curve.getValue(normalizeTime);
|
|
15225
|
+
result = p0.y + valueInterval * value;
|
|
15226
|
+
break;
|
|
15227
|
+
}
|
|
15228
|
+
}
|
|
15229
|
+
} else if (time >= this.keyFrames[keysNumber - 1].time) {
|
|
15230
|
+
result = this.keyFrames[keysNumber - 1].value;
|
|
15231
|
+
}
|
|
15232
|
+
return result;
|
|
15233
|
+
};
|
|
15234
|
+
_proto.getIntegrateValue = function getIntegrateValue(t0, t1, ts) {
|
|
15235
|
+
if (ts === void 0) ts = 1;
|
|
15236
|
+
var time = (t1 - t0) / ts;
|
|
15237
|
+
var result = 0;
|
|
15238
|
+
var keyTimeData = Object.keys(this.curveMap);
|
|
15239
|
+
var keyTimeStart = this.curveMap[keyTimeData[0]].timeStart;
|
|
15240
|
+
if (time <= keyTimeStart) {
|
|
15241
|
+
return 0;
|
|
15242
|
+
}
|
|
15243
|
+
for(var i = 0; i < keyTimeData.length; i++){
|
|
15244
|
+
var xMin = this.curveMap[keyTimeData[i]].timeStart;
|
|
15245
|
+
var xMax = this.curveMap[keyTimeData[i]].timeEnd;
|
|
15246
|
+
if (time >= Number(xMax)) {
|
|
15247
|
+
result += ts * this.getCurveIntegrateValue(keyTimeData[i], Number(xMax));
|
|
15248
|
+
}
|
|
15249
|
+
if (time >= Number(xMin) && time < Number(xMax)) {
|
|
15250
|
+
result += ts * this.getCurveIntegrateValue(keyTimeData[i], time);
|
|
15251
|
+
break;
|
|
15252
|
+
}
|
|
15253
|
+
}
|
|
15254
|
+
return result;
|
|
15255
|
+
};
|
|
15256
|
+
_proto.getIntegrateByTime = function getIntegrateByTime(t0, t1) {
|
|
15257
|
+
return this.getIntegrateValue(0, t1) - this.getIntegrateValue(0, t0);
|
|
15258
|
+
};
|
|
15259
|
+
// 速度变化曲线面板移除后下线
|
|
15260
|
+
_proto.getCurveIntegrateValue = function getCurveIntegrateValue(curveKey, time) {
|
|
15261
|
+
var curveInfo = this.curveMap[curveKey];
|
|
15262
|
+
var _curveInfo_points = curveInfo.points, p0 = _curveInfo_points[0];
|
|
15263
|
+
var timeInterval = curveInfo.timeInterval;
|
|
15264
|
+
var valueInterval = curveInfo.valueInterval;
|
|
15265
|
+
var segments = 20;
|
|
15266
|
+
var total = 0;
|
|
15267
|
+
var h = (time - p0.x) / segments;
|
|
15268
|
+
for(var i = 0; i <= segments; i++){
|
|
15269
|
+
var t = i * h;
|
|
15270
|
+
var normalizeTime = t / timeInterval;
|
|
15271
|
+
var y = p0.y + valueInterval * curveInfo.curve.getValue(normalizeTime);
|
|
15272
|
+
if (i === 0 || i === segments) {
|
|
15273
|
+
total += y;
|
|
15274
|
+
} else if (i % 2 === 1) {
|
|
15275
|
+
total += 4 * y;
|
|
15276
|
+
} else {
|
|
15277
|
+
total += 2 * y;
|
|
15278
|
+
}
|
|
15279
|
+
}
|
|
15280
|
+
total *= h / 3;
|
|
15281
|
+
return total;
|
|
15282
|
+
};
|
|
15283
|
+
_proto.toUniform = function toUniform(meta) {
|
|
15284
|
+
var index = meta.index;
|
|
15285
|
+
var count = this.keys.length;
|
|
15286
|
+
meta.curves.push(this);
|
|
15287
|
+
meta.index = index + count;
|
|
15288
|
+
// 兼容 WebGL1
|
|
15289
|
+
meta.max = Math.max(meta.max, count);
|
|
15290
|
+
meta.curveCount += count;
|
|
15291
|
+
return new Float32Array([
|
|
15292
|
+
5,
|
|
15293
|
+
index + 1 / count,
|
|
15294
|
+
index,
|
|
15295
|
+
count
|
|
15296
|
+
]);
|
|
15297
|
+
};
|
|
15298
|
+
_proto.toData = function toData() {
|
|
15299
|
+
var keys = this.keys;
|
|
15300
|
+
var data = new Float32Array(keys.length * 4);
|
|
15301
|
+
for(var i = 0, cursor = 0; i < keys.length; i++, cursor += 4){
|
|
15302
|
+
data.set(keys[i], cursor);
|
|
15303
|
+
}
|
|
15304
|
+
return data;
|
|
15305
|
+
};
|
|
15306
|
+
_proto.getMaxTime = function getMaxTime() {
|
|
15307
|
+
return this.keyFrames[this.keyFrames.length - 1].time;
|
|
15308
|
+
};
|
|
15309
|
+
return BezierCurve;
|
|
15310
|
+
}(ValueGetter);
|
|
15311
|
+
function buildBezierEasing(leftKeyframe, rightKeyframe) {
|
|
15312
|
+
var p0 = new Vector2(leftKeyframe.time, leftKeyframe.value);
|
|
15313
|
+
var p1 = new Vector2();
|
|
15314
|
+
var p2 = new Vector2();
|
|
15315
|
+
var p3 = new Vector2();
|
|
15316
|
+
var isWeighted = leftKeyframe.weightedMode === 2 || leftKeyframe.weightedMode === 3 || rightKeyframe.weightedMode === 1 || rightKeyframe.weightedMode === 3;
|
|
15317
|
+
var isConstant = leftKeyframe.tangentMode === 2;
|
|
15318
|
+
var rightDeltaX = (isWeighted ? leftKeyframe.outWeight : 1) * (rightKeyframe.time - leftKeyframe.time) / 3;
|
|
15319
|
+
p1.x = leftKeyframe.time + rightDeltaX;
|
|
15320
|
+
p1.y = leftKeyframe.value + rightDeltaX * (isConstant ? 0 : leftKeyframe.outSlope);
|
|
15321
|
+
var leftDeltaX = (isWeighted ? rightKeyframe.inWeight : 1) * (rightKeyframe.time - leftKeyframe.time) / 3;
|
|
15322
|
+
p2.x = rightKeyframe.time - leftDeltaX;
|
|
15323
|
+
p2.y = rightKeyframe.value - leftDeltaX * (isConstant ? 0 : rightKeyframe.inSlope);
|
|
15324
|
+
p3.x = rightKeyframe.time;
|
|
15325
|
+
p3.y = isConstant ? leftKeyframe.value : rightKeyframe.value;
|
|
15326
|
+
assertExist(p2);
|
|
15327
|
+
assertExist(p3);
|
|
15328
|
+
var timeInterval = p3.x - p0.x;
|
|
15329
|
+
var valueInterval = p3.y - p0.y;
|
|
15330
|
+
var y1, y2;
|
|
15331
|
+
var x1 = numberToFix((p1.x - p0.x) / timeInterval, 5);
|
|
15332
|
+
var x2 = numberToFix((p2.x - p0.x) / timeInterval, 5);
|
|
15333
|
+
if (decimalEqual(valueInterval, 0)) {
|
|
15334
|
+
y1 = y2 = NaN;
|
|
15335
|
+
} else {
|
|
15336
|
+
y1 = numberToFix((p1.y - p0.y) / valueInterval, 5);
|
|
15337
|
+
y2 = numberToFix((p2.y - p0.y) / valueInterval, 5);
|
|
15338
|
+
}
|
|
15339
|
+
if (x1 < 0) {
|
|
15340
|
+
console.error("Invalid bezier points, x1 < 0", p0, p1, p2, p3);
|
|
15341
|
+
x1 = 0;
|
|
15342
|
+
}
|
|
15343
|
+
if (x2 < 0) {
|
|
15344
|
+
console.error("Invalid bezier points, x2 < 0", p0, p1, p2, p3);
|
|
15345
|
+
x2 = 0;
|
|
15346
|
+
}
|
|
15347
|
+
if (x1 > 1) {
|
|
15348
|
+
console.error("Invalid bezier points, x1 >= 1", p0, p1, p2, p3);
|
|
15349
|
+
x1 = 1;
|
|
15350
|
+
}
|
|
15351
|
+
if (x2 > 1) {
|
|
15352
|
+
console.error("Invalid bezier points, x2 >= 1", p0, p1, p2, p3);
|
|
15353
|
+
x2 = 1;
|
|
15354
|
+
}
|
|
15355
|
+
var str = ("bez_" + x1 + "_" + y1 + "_" + x2 + "_" + y2).replace(/\./g, "p");
|
|
15356
|
+
var bezEasing;
|
|
15357
|
+
if (BezierMap[str]) {
|
|
15358
|
+
bezEasing = BezierMap[str];
|
|
15359
|
+
} else {
|
|
15360
|
+
if (decimalEqual(valueInterval, 0)) {
|
|
15361
|
+
bezEasing = new BezierEasing();
|
|
15362
|
+
} else if (isWeighted) {
|
|
15363
|
+
bezEasing = new BezierEasing(x1, y1, x2, y2);
|
|
15364
|
+
} else {
|
|
15365
|
+
bezEasing = new BezierEasing(y1, y2);
|
|
15366
|
+
}
|
|
15367
|
+
BezierMap[str] = bezEasing;
|
|
15368
|
+
}
|
|
15369
|
+
return {
|
|
15370
|
+
points: [
|
|
15371
|
+
p0,
|
|
15372
|
+
p1,
|
|
15373
|
+
p2,
|
|
15374
|
+
p3
|
|
15375
|
+
],
|
|
15376
|
+
timeInterval: timeInterval,
|
|
15377
|
+
valueInterval: valueInterval,
|
|
15378
|
+
curve: bezEasing
|
|
15379
|
+
};
|
|
15380
|
+
}
|
|
15381
|
+
function oldBezierKeyFramesToNew(props) {
|
|
15382
|
+
var oldKeyframes = props;
|
|
15383
|
+
var keyframes = [];
|
|
15384
|
+
var keyDatas = [];
|
|
15385
|
+
var lastControl = {
|
|
15386
|
+
x: 0,
|
|
15387
|
+
y: 0
|
|
15388
|
+
};
|
|
15389
|
+
for(var i = 0; i < oldKeyframes.length - 1; i++){
|
|
15390
|
+
var leftKeyframe = oldKeyframes[i];
|
|
15391
|
+
var rightKeyframe = oldKeyframes[i + 1];
|
|
15392
|
+
var _getControlPoints = getControlPoints(leftKeyframe, rightKeyframe, true), p0 = _getControlPoints.p0, p1 = _getControlPoints.p1, p2 = _getControlPoints.p2, p3 = _getControlPoints.p3;
|
|
15393
|
+
assertExist(p2);
|
|
15394
|
+
assertExist(p3);
|
|
15395
|
+
var keyData = {
|
|
15396
|
+
leftControl: lastControl,
|
|
15397
|
+
value: p0,
|
|
15398
|
+
rightControl: p1,
|
|
15399
|
+
tangentMode: 0
|
|
15400
|
+
};
|
|
15401
|
+
if (leftKeyframe[0] === BezierKeyframeType.HOLD) {
|
|
15402
|
+
keyData.tangentMode = 2;
|
|
15403
|
+
}
|
|
15404
|
+
keyDatas.push(keyData);
|
|
15405
|
+
lastControl = p2;
|
|
15406
|
+
if (i === oldKeyframes.length - 2) {
|
|
15407
|
+
var res = getControlPoints(rightKeyframe, rightKeyframe, true);
|
|
15408
|
+
assertExist(res.p3);
|
|
15409
|
+
keyDatas.push({
|
|
15410
|
+
leftControl: p2,
|
|
15411
|
+
value: res.p3,
|
|
15412
|
+
rightControl: {
|
|
15413
|
+
x: 0,
|
|
15414
|
+
y: 0
|
|
15415
|
+
},
|
|
15416
|
+
tangentMode: rightKeyframe[0] === BezierKeyframeType.HOLD ? 2 : 0
|
|
15417
|
+
});
|
|
15418
|
+
}
|
|
15419
|
+
}
|
|
15420
|
+
var calculateSlop = function(p0, p1) {
|
|
15421
|
+
return (p1.y - p0.y) / (p1.x - p0.x + NumberEpsilon);
|
|
15422
|
+
};
|
|
15423
|
+
for(var i1 = 0; i1 < keyDatas.length; i1++){
|
|
15424
|
+
var leftControl = keyDatas[i1].leftControl;
|
|
15425
|
+
var value = keyDatas[i1].value;
|
|
15426
|
+
var rightControl = keyDatas[i1].rightControl;
|
|
15427
|
+
var outSlop = calculateSlop(value, rightControl);
|
|
15428
|
+
var inSlop = calculateSlop(leftControl, value);
|
|
15429
|
+
var keyframe = {
|
|
15430
|
+
time: value.x,
|
|
15431
|
+
value: value.y,
|
|
15432
|
+
inSlope: inSlop,
|
|
15433
|
+
outSlope: outSlop,
|
|
15434
|
+
inWeight: 0,
|
|
15435
|
+
outWeight: 0,
|
|
15436
|
+
tangentMode: keyDatas[i1].tangentMode,
|
|
15437
|
+
weightedMode: 3
|
|
15438
|
+
};
|
|
15439
|
+
keyframes.push(keyframe);
|
|
15440
|
+
if (i1 > 0) {
|
|
15441
|
+
keyframe.inWeight = (value.x - leftControl.x) / ((value.x - keyDatas[i1 - 1].value.x) / 3);
|
|
15442
|
+
}
|
|
15443
|
+
if (i1 + 1 < keyDatas.length) {
|
|
15444
|
+
keyframe.outWeight = (rightControl.x - value.x) / ((keyDatas[i1 + 1].value.x - value.x) / 3);
|
|
15445
|
+
}
|
|
15446
|
+
}
|
|
15447
|
+
return keyframes;
|
|
15448
|
+
}
|
|
15449
|
+
|
|
15280
15450
|
var _obj$2;
|
|
15281
15451
|
var map = (_obj$2 = {}, _obj$2[ValueType.RANDOM] = function(props) {
|
|
15282
15452
|
if (_instanceof1(props[0], Array)) {
|
|
@@ -15313,7 +15483,8 @@ var map = (_obj$2 = {}, _obj$2[ValueType.RANDOM] = function(props) {
|
|
|
15313
15483
|
if (props.length === 1) {
|
|
15314
15484
|
return new StaticValue(props[0][1][1]);
|
|
15315
15485
|
}
|
|
15316
|
-
|
|
15486
|
+
// TODO: Move to migration.
|
|
15487
|
+
return new BezierCurve(oldBezierKeyFramesToNew(props));
|
|
15317
15488
|
}, _obj$2[ValueType.BEZIER_CURVE_PATH] = function(props) {
|
|
15318
15489
|
if (props[0].length === 1) {
|
|
15319
15490
|
return new StaticValue(_construct(Vector3, [].concat(props[1][0])));
|
|
@@ -26208,10 +26379,14 @@ var TextComponentBase = /*#__PURE__*/ function() {
|
|
|
26208
26379
|
_proto.getLineCount = function getLineCount(text, init) {
|
|
26209
26380
|
var context = this.context;
|
|
26210
26381
|
var _this_textLayout = this.textLayout, letterSpace = _this_textLayout.letterSpace, overflow = _this_textLayout.overflow;
|
|
26211
|
-
var fontScale = init ? this.textStyle.fontSize / 10 :
|
|
26382
|
+
var fontScale = init ? this.textStyle.fontSize / 10 : this.textStyle.fontScale;
|
|
26212
26383
|
var width = this.textLayout.width + this.textStyle.fontOffset;
|
|
26213
26384
|
var lineCount = 1;
|
|
26214
26385
|
var x = 0;
|
|
26386
|
+
//设置context.font的字号
|
|
26387
|
+
if (context) {
|
|
26388
|
+
context.font = this.getFontDesc(this.textStyle.fontSize);
|
|
26389
|
+
}
|
|
26215
26390
|
for(var i = 0; i < text.length; i++){
|
|
26216
26391
|
var _context_measureText;
|
|
26217
26392
|
var str = text[i];
|
|
@@ -28400,7 +28575,7 @@ function getStandardSpriteContent(sprite, transform) {
|
|
|
28400
28575
|
return ret;
|
|
28401
28576
|
}
|
|
28402
28577
|
|
|
28403
|
-
var version$1 = "2.5.0
|
|
28578
|
+
var version$1 = "2.5.0";
|
|
28404
28579
|
var v0 = /^(\d+)\.(\d+)\.(\d+)(-(\w+)\.\d+)?$/;
|
|
28405
28580
|
var standardVersion = /^(\d+)\.(\d+)$/;
|
|
28406
28581
|
var reverseParticle = false;
|
|
@@ -31650,7 +31825,7 @@ registerPlugin("sprite", SpriteLoader, exports.VFXItem);
|
|
|
31650
31825
|
registerPlugin("particle", ParticleLoader, exports.VFXItem);
|
|
31651
31826
|
registerPlugin("cal", CalculateLoader, exports.VFXItem);
|
|
31652
31827
|
registerPlugin("interact", InteractLoader, exports.VFXItem);
|
|
31653
|
-
var version = "2.5.0
|
|
31828
|
+
var version = "2.5.0";
|
|
31654
31829
|
logger.info("Core version: " + version + ".");
|
|
31655
31830
|
|
|
31656
31831
|
exports.AbstractPlugin = AbstractPlugin;
|
|
@@ -31868,6 +32043,7 @@ exports.nearestPowerOfTwo = nearestPowerOfTwo;
|
|
|
31868
32043
|
exports.noop = noop;
|
|
31869
32044
|
exports.normalizeColor = normalizeColor;
|
|
31870
32045
|
exports.numberToFix = numberToFix;
|
|
32046
|
+
exports.oldBezierKeyFramesToNew = oldBezierKeyFramesToNew;
|
|
31871
32047
|
exports.parsePercent = parsePercent$1;
|
|
31872
32048
|
exports.particleFrag = particleFrag;
|
|
31873
32049
|
exports.particleOriginTranslateMap = particleOriginTranslateMap$1;
|