@galacean/engine-core 1.0.0-beta.12 → 1.0.0-beta.13

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/module.js CHANGED
@@ -2302,29 +2302,7 @@ var /** @internal */ PromiseState;
2302
2302
  * @remarks The release principle is that it is not referenced by the components, including direct and indirect reference.
2303
2303
  */ _proto.gc = function gc() {
2304
2304
  this._gc(false);
2305
- var engine = this.engine;
2306
- engine._renderElementPool.garbageCollection();
2307
- engine._meshRenderDataPool.garbageCollection();
2308
- engine._spriteRenderDataPool.garbageCollection();
2309
- engine._spriteMaskRenderDataPool.garbageCollection();
2310
- engine._textRenderDataPool.garbageCollection();
2311
- var _componentsManager = engine._componentsManager, _lightManager = engine._lightManager;
2312
- _componentsManager._renderers.garbageCollection();
2313
- // @ts-ignore
2314
- _componentsManager._onStartScripts.garbageCollection();
2315
- // @ts-ignore
2316
- _componentsManager._onUpdateScripts.garbageCollection();
2317
- // @ts-ignore
2318
- _componentsManager._onLateUpdateScripts.garbageCollection();
2319
- // @ts-ignore
2320
- _componentsManager._onPhysicsUpdateScripts.garbageCollection();
2321
- // @ts-ignore
2322
- _componentsManager._onUpdateAnimations.garbageCollection();
2323
- // @ts-ignore
2324
- _componentsManager._onUpdateRenderers.garbageCollection();
2325
- _lightManager._spotLights.garbageCollection();
2326
- _lightManager._pointLights.garbageCollection();
2327
- _lightManager._directLights.garbageCollection();
2305
+ this.engine._pendingGC();
2328
2306
  };
2329
2307
  /**
2330
2308
  * Add content restorer.
@@ -3250,6 +3228,17 @@ var GLCapabilityType;
3250
3228
  componentContainer.length = 0;
3251
3229
  this._componentsContainerPool.push(componentContainer);
3252
3230
  };
3231
+ /**
3232
+ * @internal
3233
+ */ _proto._gc = function _gc() {
3234
+ this._renderers.garbageCollection();
3235
+ this._onStartScripts.garbageCollection();
3236
+ this._onUpdateScripts.garbageCollection();
3237
+ this._onLateUpdateScripts.garbageCollection();
3238
+ this._onPhysicsUpdateScripts.garbageCollection();
3239
+ this._onUpdateAnimations.garbageCollection();
3240
+ this._onUpdateRenderers.garbageCollection();
3241
+ };
3253
3242
  return ComponentsManager;
3254
3243
  }();
3255
3244
 
@@ -5881,6 +5870,11 @@ var Collision = function Collision() {
5881
5870
  elements[i]._onLateUpdate();
5882
5871
  }
5883
5872
  };
5873
+ /**
5874
+ * @internal
5875
+ */ _proto._gc = function _gc() {
5876
+ this._colliders.garbageCollection();
5877
+ };
5884
5878
  _proto._setGravity = function _setGravity() {
5885
5879
  this._nativePhysicsManager.setGravity(this._gravity);
5886
5880
  };
@@ -8458,6 +8452,13 @@ __decorate([
8458
8452
  shaderData.disableMacro("SCENE_SPOT_LIGHT_COUNT");
8459
8453
  }
8460
8454
  };
8455
+ /**
8456
+ * @internal
8457
+ */ _proto._gc = function _gc() {
8458
+ this._spotLights.garbageCollection();
8459
+ this._pointLights.garbageCollection();
8460
+ this._directLights.garbageCollection();
8461
+ };
8461
8462
  return LightManager;
8462
8463
  }();
8463
8464
 
@@ -16907,6 +16908,7 @@ ShaderPool.init();
16907
16908
  _this._frameInProcess = false;
16908
16909
  _this._waitingDestroy = false;
16909
16910
  _this._isDeviceLost = false;
16911
+ _this._waitingGC = false;
16910
16912
  _this._animate = function() {
16911
16913
  if (_this._vSyncCount) {
16912
16914
  _this._requestId = requestAnimationFrame(_this._animate);
@@ -17010,6 +17012,10 @@ ShaderPool.init();
17010
17012
  if (this._waitingDestroy) {
17011
17013
  this._destroy();
17012
17014
  }
17015
+ if (this._waitingGC) {
17016
+ this._gc();
17017
+ this._waitingGC = false;
17018
+ }
17013
17019
  this._frameInProcess = false;
17014
17020
  };
17015
17021
  /**
@@ -17168,6 +17174,15 @@ ShaderPool.init();
17168
17174
  };
17169
17175
  /**
17170
17176
  * @internal
17177
+ */ _proto._pendingGC = function _pendingGC() {
17178
+ if (this._frameInProcess) {
17179
+ this._waitingGC = true;
17180
+ } else {
17181
+ this._gc();
17182
+ }
17183
+ };
17184
+ /**
17185
+ * @internal
17171
17186
  */ _proto._initialize = function _initialize(configuration) {
17172
17187
  var _this = this;
17173
17188
  var physics = configuration.physics;
@@ -17230,6 +17245,16 @@ ShaderPool.init();
17230
17245
  console.error(error);
17231
17246
  });
17232
17247
  };
17248
+ _proto._gc = function _gc() {
17249
+ this._renderElementPool.garbageCollection();
17250
+ this._meshRenderDataPool.garbageCollection();
17251
+ this._spriteRenderDataPool.garbageCollection();
17252
+ this._spriteMaskRenderDataPool.garbageCollection();
17253
+ this._textRenderDataPool.garbageCollection();
17254
+ this._componentsManager._gc();
17255
+ this._lightManager._gc();
17256
+ this.physicsManager._gc();
17257
+ };
17233
17258
  _create_class(Engine, [
17234
17259
  {
17235
17260
  key: "settings",
@@ -22645,7 +22670,6 @@ var DirtyFlag;
22645
22670
  * @internal
22646
22671
  */ var AnimationCurveOwner = /*#__PURE__*/ function() {
22647
22672
  function AnimationCurveOwner(target, type, property, cureType) {
22648
- this.hasSavedDefaultValue = false;
22649
22673
  this.baseEvaluateData = {
22650
22674
  curKeyframeIndex: 0,
22651
22675
  value: null
@@ -22658,7 +22682,7 @@ var DirtyFlag;
22658
22682
  this.type = type;
22659
22683
  this.property = property;
22660
22684
  this.component = target.getComponent(type);
22661
- this._cureType = cureType;
22685
+ this.cureType = cureType;
22662
22686
  var assemblerType = AnimationCurveOwner.getAssemblerType(type, property);
22663
22687
  this._assembler = new assemblerType();
22664
22688
  this._assembler.initialize(this);
@@ -22667,89 +22691,80 @@ var DirtyFlag;
22667
22691
  }
22668
22692
  }
22669
22693
  var _proto = AnimationCurveOwner.prototype;
22670
- _proto.evaluateAndApplyValue = function evaluateAndApplyValue(curve, time, layerWeight, additive) {
22671
- if (curve.keys.length) {
22672
- if (additive) {
22673
- var value = curve._evaluateAdditive(time, this.baseEvaluateData);
22674
- var cureType = this._cureType;
22675
- if (cureType._isReferenceType) {
22676
- cureType._additiveValue(value, layerWeight, this.referenceTargetValue);
22677
- } else {
22678
- var assembler = this._assembler;
22679
- var originValue = assembler.getTargetValue();
22680
- var additiveValue = cureType._additiveValue(value, layerWeight, originValue);
22681
- assembler.setTargetValue(additiveValue);
22682
- }
22683
- } else {
22684
- var value1 = curve._evaluate(time, this.baseEvaluateData);
22685
- this._applyValue(value1, layerWeight);
22686
- }
22687
- }
22694
+ _proto.evaluateValue = function evaluateValue(curve, time, additive) {
22695
+ return additive ? curve._evaluateAdditive(time, this.baseEvaluateData) : curve._evaluate(time, this.baseEvaluateData);
22688
22696
  };
22689
- _proto.crossFadeAndApplyValue = function crossFadeAndApplyValue(srcCurve, destCurve, srcTime, destTime, crossWeight, layerWeight, additive) {
22690
- var srcValue = srcCurve && srcCurve.keys.length ? additive ? srcCurve._evaluateAdditive(srcTime, this.baseEvaluateData) : srcCurve._evaluate(srcTime, this.baseEvaluateData) : additive ? this._cureType._getZeroValue(this.baseEvaluateData.value) : this.defaultValue;
22691
- var destValue = destCurve && destCurve.keys.length ? additive ? destCurve._evaluateAdditive(destTime, this.crossEvaluateData) : destCurve._evaluate(destTime, this.crossEvaluateData) : additive ? this._cureType._getZeroValue(this.crossEvaluateData.value) : this.defaultValue;
22692
- this._applyCrossValue(srcValue, destValue, crossWeight, layerWeight, additive);
22697
+ _proto.evaluateCrossFadeValue = function evaluateCrossFadeValue(srcCurve, destCurve, srcTime, destTime, crossWeight, additive) {
22698
+ var srcValue = srcCurve && srcCurve.keys.length ? additive ? srcCurve._evaluateAdditive(srcTime, this.baseEvaluateData) : srcCurve._evaluate(srcTime, this.baseEvaluateData) : additive ? this.cureType._getZeroValue(this.baseEvaluateData.value) : this.defaultValue;
22699
+ var destValue = destCurve && destCurve.keys.length ? additive ? destCurve._evaluateAdditive(destTime, this.crossEvaluateData) : destCurve._evaluate(destTime, this.crossEvaluateData) : additive ? this.cureType._getZeroValue(this.crossEvaluateData.value) : this.defaultValue;
22700
+ return this._lerpValue(srcValue, destValue, crossWeight);
22693
22701
  };
22694
- _proto.crossFadeFromPoseAndApplyValue = function crossFadeFromPoseAndApplyValue(destCurve, destTime, crossWeight, layerWeight, additive) {
22695
- var srcValue = additive ? this._cureType._subtractValue(this.fixedPoseValue, this.defaultValue, this.baseEvaluateData.value) : this.fixedPoseValue;
22696
- var destValue = destCurve && destCurve.keys.length ? additive ? destCurve._evaluateAdditive(destTime, this.crossEvaluateData) : destCurve._evaluate(destTime, this.crossEvaluateData) : additive ? this._cureType._getZeroValue(this.crossEvaluateData.value) : this.defaultValue;
22697
- this._applyCrossValue(srcValue, destValue, crossWeight, layerWeight, additive);
22702
+ _proto.crossFadeFromPoseAndApplyValue = function crossFadeFromPoseAndApplyValue(destCurve, destTime, crossWeight, additive) {
22703
+ var srcValue = additive ? this.cureType._subtractValue(this.fixedPoseValue, this.defaultValue, this.baseEvaluateData.value) : this.fixedPoseValue;
22704
+ var destValue = destCurve && destCurve.keys.length ? additive ? destCurve._evaluateAdditive(destTime, this.crossEvaluateData) : destCurve._evaluate(destTime, this.crossEvaluateData) : additive ? this.cureType._getZeroValue(this.crossEvaluateData.value) : this.defaultValue;
22705
+ return this._lerpValue(srcValue, destValue, crossWeight);
22698
22706
  };
22699
22707
  _proto.revertDefaultValue = function revertDefaultValue() {
22700
22708
  this._assembler.setTargetValue(this.defaultValue);
22701
22709
  };
22710
+ _proto.getEvaluateValue = function getEvaluateValue(out) {
22711
+ if (this.cureType._isReferenceType) {
22712
+ this.cureType._copyValue(this.baseEvaluateData.value, out);
22713
+ return out;
22714
+ } else {
22715
+ return this.baseEvaluateData.value;
22716
+ }
22717
+ };
22702
22718
  _proto.saveDefaultValue = function saveDefaultValue() {
22703
- if (this._cureType._isReferenceType) {
22704
- this._cureType._copyValue(this.referenceTargetValue, this.defaultValue);
22719
+ if (this.cureType._isReferenceType) {
22720
+ this.cureType._copyValue(this.referenceTargetValue, this.defaultValue);
22705
22721
  } else {
22706
22722
  this.defaultValue = this._assembler.getTargetValue();
22707
22723
  }
22708
- this.hasSavedDefaultValue = true;
22709
22724
  };
22710
22725
  _proto.saveFixedPoseValue = function saveFixedPoseValue() {
22711
- if (this._cureType._isReferenceType) {
22712
- this._cureType._copyValue(this.referenceTargetValue, this.fixedPoseValue);
22726
+ if (this.cureType._isReferenceType) {
22727
+ this.cureType._copyValue(this.referenceTargetValue, this.fixedPoseValue);
22713
22728
  } else {
22714
22729
  this.fixedPoseValue = this._assembler.getTargetValue();
22715
22730
  }
22716
22731
  };
22717
- _proto._applyValue = function _applyValue(value, weight) {
22718
- if (weight === 1.0) {
22719
- if (this._cureType._isReferenceType) {
22720
- this._cureType._copyValue(value, this.referenceTargetValue);
22732
+ _proto.applyValue = function applyValue(value, weight, additive) {
22733
+ var cureType = this.cureType;
22734
+ if (additive) {
22735
+ if (cureType._isReferenceType) {
22736
+ cureType._additiveValue(value, weight, this.referenceTargetValue);
22721
22737
  } else {
22722
- this._assembler.setTargetValue(value);
22738
+ var assembler = this._assembler;
22739
+ var originValue = assembler.getTargetValue();
22740
+ var additiveValue = cureType._additiveValue(value, weight, originValue);
22741
+ assembler.setTargetValue(additiveValue);
22723
22742
  }
22724
22743
  } else {
22725
- if (this._cureType._isReferenceType) {
22726
- var targetValue = this.referenceTargetValue;
22727
- this._cureType._lerpValue(targetValue, value, weight, targetValue);
22744
+ if (weight === 1.0) {
22745
+ if (cureType._isReferenceType) {
22746
+ cureType._copyValue(value, this.referenceTargetValue);
22747
+ } else {
22748
+ this._assembler.setTargetValue(value);
22749
+ }
22728
22750
  } else {
22729
- var originValue = this._assembler.getTargetValue();
22730
- var lerpValue = this._cureType._lerpValue(originValue, value, weight);
22731
- this._assembler.setTargetValue(lerpValue);
22751
+ if (cureType._isReferenceType) {
22752
+ var targetValue = this.referenceTargetValue;
22753
+ cureType._lerpValue(targetValue, value, weight, targetValue);
22754
+ } else {
22755
+ var originValue1 = this._assembler.getTargetValue();
22756
+ var lerpValue = cureType._lerpValue(originValue1, value, weight);
22757
+ this._assembler.setTargetValue(lerpValue);
22758
+ }
22732
22759
  }
22733
22760
  }
22734
22761
  };
22735
- _proto._applyCrossValue = function _applyCrossValue(srcValue, destValue, crossWeight, layerWeight, additive) {
22736
- var out;
22737
- if (this._cureType._isReferenceType) {
22738
- out = this.baseEvaluateData.value;
22739
- this._cureType._lerpValue(srcValue, destValue, crossWeight, out);
22740
- } else {
22741
- out = this._cureType._lerpValue(srcValue, destValue, crossWeight);
22742
- }
22743
- if (additive) {
22744
- if (this._cureType._isReferenceType) {
22745
- this._cureType._additiveValue(out, layerWeight, this.referenceTargetValue);
22746
- } else {
22747
- var originValue = this._assembler.getTargetValue();
22748
- var lerpValue = this._cureType._additiveValue(out, layerWeight, originValue);
22749
- this._assembler.setTargetValue(lerpValue);
22750
- }
22762
+ _proto._lerpValue = function _lerpValue(srcValue, destValue, crossWeight) {
22763
+ if (this.cureType._isReferenceType) {
22764
+ return this.cureType._lerpValue(srcValue, destValue, crossWeight, this.baseEvaluateData.value);
22751
22765
  } else {
22752
- this._applyValue(out, layerWeight);
22766
+ this.baseEvaluateData.value = this.cureType._lerpValue(srcValue, destValue, crossWeight);
22767
+ return this.baseEvaluateData.value;
22753
22768
  }
22754
22769
  };
22755
22770
  AnimationCurveOwner.registerAssembler = function registerAssembler(componentType, property, assemblerType) {
@@ -22845,9 +22860,24 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
22845
22860
 
22846
22861
  /**
22847
22862
  * @internal
22848
- */ var AnimationCurveLayerOwner = function AnimationCurveLayerOwner() {
22849
- this.crossCurveMark = 0;
22850
- };
22863
+ */ var AnimationCurveLayerOwner = /*#__PURE__*/ function() {
22864
+ function AnimationCurveLayerOwner() {
22865
+ this.crossCurveMark = 0;
22866
+ }
22867
+ var _proto = AnimationCurveLayerOwner.prototype;
22868
+ _proto.initFinalValue = function initFinalValue() {
22869
+ var _this_curveOwner = this.curveOwner, cureType = _this_curveOwner.cureType, defaultValue = _this_curveOwner.defaultValue;
22870
+ if (cureType._isReferenceType) {
22871
+ cureType._copyValue(defaultValue, this.finalValue);
22872
+ } else {
22873
+ this.finalValue = defaultValue;
22874
+ }
22875
+ };
22876
+ _proto.saveFinalValue = function saveFinalValue() {
22877
+ this.finalValue = this.curveOwner.getEvaluateValue(this.finalValue);
22878
+ };
22879
+ return AnimationCurveLayerOwner;
22880
+ }();
22851
22881
 
22852
22882
  /**
22853
22883
  * Associate AnimationCurve and the Entity
@@ -22862,13 +22892,18 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
22862
22892
  var curveType = this.curve.constructor;
22863
22893
  var owner = new AnimationCurveOwner(entity, this.type, this.property, curveType);
22864
22894
  curveType._initializeOwner(owner);
22895
+ owner.saveDefaultValue();
22865
22896
  return owner;
22866
22897
  };
22867
22898
  /**
22868
22899
  * @internal
22869
22900
  */ _proto._createCurveLayerOwner = function _createCurveLayerOwner(owner) {
22901
+ var curveType = this.curve.constructor;
22870
22902
  var layerOwner = new AnimationCurveLayerOwner();
22871
22903
  layerOwner.curveOwner = owner;
22904
+ curveType._initializeLayerOwner(layerOwner);
22905
+ // If curve.keys.length is 0, updateFinishedState will assign 0 to the target, causing an error, so initialize by assigning defaultValue to finalValue.
22906
+ layerOwner.initFinalValue();
22872
22907
  return layerOwner;
22873
22908
  };
22874
22909
  /**
@@ -22956,7 +22991,8 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
22956
22991
  var targetEntity = entity.findByPath(curveData.relativePath);
22957
22992
  if (targetEntity) {
22958
22993
  var curveOwner = curveData._getTempCurveOwner(targetEntity);
22959
- curveOwner.evaluateAndApplyValue(curveData.curve, time, 1, false);
22994
+ var value = curveOwner.evaluateValue(curveData.curve, time, false);
22995
+ curveOwner.applyValue(value, 1, false);
22960
22996
  }
22961
22997
  }
22962
22998
  };
@@ -23100,6 +23136,7 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
23100
23136
  break;
23101
23137
  }
23102
23138
  }
23139
+ evaluateData.value = value;
23103
23140
  return value;
23104
23141
  };
23105
23142
  /**
@@ -23156,6 +23193,11 @@ var AnimationArrayCurve = (_AnimationArrayCurve = /*#__PURE__*/ function(Animati
23156
23193
  };
23157
23194
  /**
23158
23195
  * @internal
23196
+ */ AnimationArrayCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
23197
+ owner.finalValue = [];
23198
+ };
23199
+ /**
23200
+ * @internal
23159
23201
  */ AnimationArrayCurve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
23160
23202
  for(var i = 0, n = out.length; i < n; ++i){
23161
23203
  var src = srcValue[i];
@@ -23246,6 +23288,11 @@ var AnimationBoolCurve = (_AnimationBoolCurve = /*#__PURE__*/ function(Animation
23246
23288
  };
23247
23289
  /**
23248
23290
  * @internal
23291
+ */ AnimationBoolCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
23292
+ owner.finalValue = false;
23293
+ };
23294
+ /**
23295
+ * @internal
23249
23296
  */ AnimationBoolCurve._lerpValue = function _lerpValue(srcValue, destValue) {
23250
23297
  return destValue;
23251
23298
  };
@@ -23303,6 +23350,11 @@ var AnimationColorCurve = (_AnimationColorCurve = /*#__PURE__*/ function(Animati
23303
23350
  };
23304
23351
  /**
23305
23352
  * @internal
23353
+ */ AnimationColorCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
23354
+ owner.finalValue = new Color$1();
23355
+ };
23356
+ /**
23357
+ * @internal
23306
23358
  */ AnimationColorCurve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
23307
23359
  Color$1.lerp(srcValue, destValue, weight, out);
23308
23360
  return out;
@@ -23409,6 +23461,12 @@ var AnimationFloatArrayCurve = (_AnimationFloatArrayCurve = /*#__PURE__*/ functi
23409
23461
  };
23410
23462
  /**
23411
23463
  * @internal
23464
+ */ AnimationFloatArrayCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
23465
+ var size = owner.curveOwner.referenceTargetValue.length;
23466
+ owner.finalValue = new Float32Array(size);
23467
+ };
23468
+ /**
23469
+ * @internal
23412
23470
  */ AnimationFloatArrayCurve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
23413
23471
  for(var i = 0, n = out.length; i < n; ++i){
23414
23472
  var src = srcValue[i];
@@ -23499,6 +23557,11 @@ var AnimationFloatCurve = (_AnimationFloatCurve = /*#__PURE__*/ function(Animati
23499
23557
  };
23500
23558
  /**
23501
23559
  * @internal
23560
+ */ AnimationFloatCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
23561
+ owner.finalValue = 0;
23562
+ };
23563
+ /**
23564
+ * @internal
23502
23565
  */ AnimationFloatCurve._lerpValue = function _lerpValue(srcValue, destValue, crossWeight) {
23503
23566
  return srcValue + (destValue - srcValue) * crossWeight;
23504
23567
  };
@@ -23568,6 +23631,11 @@ var AnimationQuaternionCurve = (_AnimationQuaternionCurve = /*#__PURE__*/ functi
23568
23631
  };
23569
23632
  /**
23570
23633
  * @internal
23634
+ */ AnimationQuaternionCurve1._initializeLayerOwner = function _initializeLayerOwner(owner) {
23635
+ owner.finalValue = new Quaternion();
23636
+ };
23637
+ /**
23638
+ * @internal
23571
23639
  */ AnimationQuaternionCurve1._lerpValue = function _lerpValue(src, dest, weight, out) {
23572
23640
  Quaternion.slerp(src, dest, weight, out);
23573
23641
  return out;
@@ -23672,6 +23740,11 @@ var AnimationVector2Curve = (_AnimationVector2Curve = /*#__PURE__*/ function(Ani
23672
23740
  };
23673
23741
  /**
23674
23742
  * @internal
23743
+ */ AnimationVector2Curve._initializeLayerOwner = function _initializeLayerOwner(owner) {
23744
+ owner.finalValue = new Vector2();
23745
+ };
23746
+ /**
23747
+ * @internal
23675
23748
  */ AnimationVector2Curve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
23676
23749
  Vector2.lerp(srcValue, destValue, weight, out);
23677
23750
  return out;
@@ -23757,6 +23830,11 @@ var AnimationVector3Curve = (_AnimationVector3Curve = /*#__PURE__*/ function(Ani
23757
23830
  };
23758
23831
  /**
23759
23832
  * @internal
23833
+ */ AnimationVector3Curve._initializeLayerOwner = function _initializeLayerOwner(owner) {
23834
+ owner.finalValue = new Vector3();
23835
+ };
23836
+ /**
23837
+ * @internal
23760
23838
  */ AnimationVector3Curve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
23761
23839
  Vector3.lerp(srcValue, destValue, weight, out);
23762
23840
  return out;
@@ -23854,6 +23932,11 @@ var AnimationVector4Curve = (_AnimationVector4Curve = /*#__PURE__*/ function(Ani
23854
23932
  };
23855
23933
  /**
23856
23934
  * @internal
23935
+ */ AnimationVector4Curve._initializeLayerOwner = function _initializeLayerOwner(owner) {
23936
+ owner.finalValue = new Vector4();
23937
+ };
23938
+ /**
23939
+ * @internal
23857
23940
  */ AnimationVector4Curve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
23858
23941
  Vector4.lerp(srcValue, destValue, weight, out);
23859
23942
  return out;
@@ -23963,6 +24046,7 @@ var AnimatorLayerBlendingMode;
23963
24046
  LayerState[LayerState[/** Playing state. */ "Playing"] = 1] = "Playing";
23964
24047
  LayerState[LayerState[/** CrossFading state. */ "CrossFading"] = 2] = "CrossFading";
23965
24048
  LayerState[LayerState[/** FixedCrossFading state. */ "FixedCrossFading"] = 3] = "FixedCrossFading";
24049
+ LayerState[LayerState[/** Finished state. */ "Finished"] = 4] = "Finished";
23966
24050
  })(LayerState || (LayerState = {}));
23967
24051
 
23968
24052
  /**
@@ -24039,7 +24123,7 @@ var AnimatorLayerBlendingMode;
24039
24123
  this.layerState = LayerState.Standby;
24040
24124
  this.crossCurveMark = 0;
24041
24125
  this.manuallyTransition = new AnimatorStateTransition();
24042
- this.crossOwnerLayerDataCollection = [];
24126
+ this.crossLayerOwnerCollection = [];
24043
24127
  }
24044
24128
  var _proto = AnimatorLayerData.prototype;
24045
24129
  _proto.switchPlayData = function switchPlayData() {
@@ -24069,6 +24153,7 @@ var AnimatorLayerBlendingMode;
24069
24153
  /** The playback speed of the Animator, 1.0 is normal playback speed. */ _this.speed = 1.0;
24070
24154
  _this._animatorLayersData = [];
24071
24155
  _this._curveOwnerPool = Object.create(null);
24156
+ _this._needRevertCurveOwners = [];
24072
24157
  _this._animationEventHandlerPool = new ClassPool(AnimationEventHandler);
24073
24158
  _this._tempAnimatorStateInfo = {
24074
24159
  layerIndex: -1,
@@ -24091,7 +24176,7 @@ var AnimatorLayerBlendingMode;
24091
24176
  this._reset();
24092
24177
  }
24093
24178
  var stateInfo = this._getAnimatorStateInfo(stateName, layerIndex);
24094
- var state = stateInfo.state;
24179
+ var state = stateInfo.state, playLayerIndex = stateInfo.layerIndex;
24095
24180
  if (!state) {
24096
24181
  return;
24097
24182
  }
@@ -24100,8 +24185,8 @@ var AnimatorLayerBlendingMode;
24100
24185
  return;
24101
24186
  }
24102
24187
  var animatorLayerData = this._getAnimatorLayerData(stateInfo.layerIndex);
24103
- var animatorStateData = this._getAnimatorStateData(stateName, state, animatorLayerData);
24104
- this._preparePlay(animatorLayerData, state, animatorStateData);
24188
+ var animatorStateData = this._getAnimatorStateData(stateName, state, animatorLayerData, playLayerIndex);
24189
+ this._preparePlay(animatorLayerData, state);
24105
24190
  animatorLayerData.layerState = LayerState.Playing;
24106
24191
  animatorLayerData.srcPlayData.reset(state, animatorStateData, state._getDuration() * normalizedTimeOffset);
24107
24192
  };
@@ -24152,6 +24237,7 @@ var AnimatorLayerBlendingMode;
24152
24237
  return;
24153
24238
  }
24154
24239
  deltaTime *= this.speed;
24240
+ this._revertCurveOwners();
24155
24241
  for(var i1 = 0, n1 = animatorController.layers.length; i1 < n1; i1++){
24156
24242
  var animatorLayerData = this._getAnimatorLayerData(i1);
24157
24243
  if (animatorLayerData.layerState === LayerState.Standby) {
@@ -24195,10 +24281,11 @@ var AnimatorLayerBlendingMode;
24195
24281
  var propertyOwners = animationCurveOwners[instanceId];
24196
24282
  for(var property in propertyOwners){
24197
24283
  var owner = propertyOwners[property];
24198
- owner.hasSavedDefaultValue && owner.revertDefaultValue();
24284
+ owner.revertDefaultValue();
24199
24285
  }
24200
24286
  }
24201
24287
  this._animatorLayersData.length = 0;
24288
+ this._needRevertCurveOwners.length = 0;
24202
24289
  this._curveOwnerPool = {};
24203
24290
  this._animationEventHandlerPool.resetPool();
24204
24291
  if (this._controllerUpdateFlag) {
@@ -24226,25 +24313,18 @@ var AnimatorLayerBlendingMode;
24226
24313
  stateInfo.state = state;
24227
24314
  return stateInfo;
24228
24315
  };
24229
- _proto._saveDefaultValues = function _saveDefaultValues(stateData) {
24230
- var curveLayerOwner = stateData.curveLayerOwner;
24231
- for(var i = curveLayerOwner.length - 1; i >= 0; i--){
24232
- var _curveLayerOwner_i;
24233
- (_curveLayerOwner_i = curveLayerOwner[i]) == null ? void 0 : _curveLayerOwner_i.curveOwner.saveDefaultValue();
24234
- }
24235
- };
24236
- _proto._getAnimatorStateData = function _getAnimatorStateData(stateName, animatorState, animatorLayerData) {
24316
+ _proto._getAnimatorStateData = function _getAnimatorStateData(stateName, animatorState, animatorLayerData, layerIndex) {
24237
24317
  var animatorStateDataMap = animatorLayerData.animatorStateDataMap;
24238
24318
  var animatorStateData = animatorStateDataMap[stateName];
24239
24319
  if (!animatorStateData) {
24240
24320
  animatorStateData = new AnimatorStateData();
24241
24321
  animatorStateDataMap[stateName] = animatorStateData;
24242
- this._saveAnimatorStateData(animatorState, animatorStateData, animatorLayerData);
24322
+ this._saveAnimatorStateData(animatorState, animatorStateData, animatorLayerData, layerIndex);
24243
24323
  this._saveAnimatorEventHandlers(animatorState, animatorStateData);
24244
24324
  }
24245
24325
  return animatorStateData;
24246
24326
  };
24247
- _proto._saveAnimatorStateData = function _saveAnimatorStateData(animatorState, animatorStateData, animatorLayerData) {
24327
+ _proto._saveAnimatorStateData = function _saveAnimatorStateData(animatorState, animatorStateData, animatorLayerData, layerIndex) {
24248
24328
  var _this = this, entity = _this.entity, curveOwnerPool = _this._curveOwnerPool;
24249
24329
  var curveLayerOwner = animatorStateData.curveLayerOwner;
24250
24330
  var layerCurveOwnerPool = animatorLayerData.curveOwnerPool;
@@ -24256,9 +24336,22 @@ var AnimatorLayerBlendingMode;
24256
24336
  var _curveOwnerPool, _instanceId, _propertyOwners, _property, _layerCurveOwnerPool, _instanceId1, _layerPropertyOwners, _property1;
24257
24337
  var property = curve.property;
24258
24338
  var instanceId = targetEntity.instanceId;
24339
+ var needRevert = false;
24340
+ var baseAnimatorLayerData = this._animatorLayersData[0];
24341
+ var baseLayerCurveOwnerPool = baseAnimatorLayerData.curveOwnerPool;
24342
+ if (this.animatorController.layers[layerIndex].blendingMode === AnimatorLayerBlendingMode.Additive && layerIndex > 0 && !(baseLayerCurveOwnerPool[instanceId] && baseLayerCurveOwnerPool[instanceId][property])) {
24343
+ needRevert = true;
24344
+ }
24259
24345
  // Get owner
24260
24346
  var propertyOwners = (_curveOwnerPool = curveOwnerPool)[_instanceId = instanceId] || (_curveOwnerPool[_instanceId] = Object.create(null));
24261
24347
  var owner = (_propertyOwners = propertyOwners)[_property = property] || (_propertyOwners[_property] = curve._createCurveOwner(targetEntity));
24348
+ //@todo: There is performance waste here, which will be handled together with organizing AnimatorStateData later. The logic is changing from runtime to initialization.
24349
+ if (needRevert) {
24350
+ this._needRevertCurveOwners.push(owner);
24351
+ } else {
24352
+ var index = this._needRevertCurveOwners.indexOf(owner);
24353
+ index > -1 && this._needRevertCurveOwners.splice(index, 1);
24354
+ }
24262
24355
  // Get layer owner
24263
24356
  var layerPropertyOwners = (_layerCurveOwnerPool = layerCurveOwnerPool)[_instanceId1 = instanceId] || (_layerCurveOwnerPool[_instanceId1] = Object.create(null));
24264
24357
  var layerOwner = (_layerPropertyOwners = layerPropertyOwners)[_property1 = property] || (_layerPropertyOwners[_property1] = curve._createCurveLayerOwner(owner));
@@ -24292,12 +24385,12 @@ var AnimatorLayerBlendingMode;
24292
24385
  };
24293
24386
  _proto._clearCrossData = function _clearCrossData(animatorLayerData) {
24294
24387
  animatorLayerData.crossCurveMark++;
24295
- animatorLayerData.crossOwnerLayerDataCollection.length = 0;
24388
+ animatorLayerData.crossLayerOwnerCollection.length = 0;
24296
24389
  };
24297
24390
  _proto._addCrossOwner = function _addCrossOwner(animatorLayerData, layerOwner, curCurveIndex, nextCurveIndex) {
24298
24391
  layerOwner.crossSrcCurveIndex = curCurveIndex;
24299
24392
  layerOwner.crossDestCurveIndex = nextCurveIndex;
24300
- animatorLayerData.crossOwnerLayerDataCollection.push(layerOwner);
24393
+ animatorLayerData.crossLayerOwnerCollection.push(layerOwner);
24301
24394
  };
24302
24395
  _proto._prepareCrossFading = function _prepareCrossFading(animatorLayerData) {
24303
24396
  // Add src cross curve data.
@@ -24312,10 +24405,10 @@ var AnimatorLayerBlendingMode;
24312
24405
  this._prepareDestCrossData(animatorLayerData, true);
24313
24406
  };
24314
24407
  _proto._prepareFixedPoseCrossFading = function _prepareFixedPoseCrossFading(animatorLayerData) {
24315
- var crossOwnerLayerDataCollection = animatorLayerData.crossOwnerLayerDataCollection;
24408
+ var crossLayerOwnerCollection = animatorLayerData.crossLayerOwnerCollection;
24316
24409
  // Save current cross curve data owner fixed pose.
24317
- for(var i = crossOwnerLayerDataCollection.length - 1; i >= 0; i--){
24318
- var layerOwner = crossOwnerLayerDataCollection[i];
24410
+ for(var i = crossLayerOwnerCollection.length - 1; i >= 0; i--){
24411
+ var layerOwner = crossLayerOwnerCollection[i];
24319
24412
  if (!layerOwner) continue;
24320
24413
  layerOwner.curveOwner.saveFixedPoseValue();
24321
24414
  // Reset destCurveIndex When fixed pose crossFading again.
@@ -24343,7 +24436,6 @@ var AnimatorLayerBlendingMode;
24343
24436
  layerOwner.crossDestCurveIndex = i;
24344
24437
  } else {
24345
24438
  var owner = layerOwner.curveOwner;
24346
- owner.saveDefaultValue();
24347
24439
  saveFixed && owner.saveFixedPoseValue();
24348
24440
  layerOwner.crossCurveMark = animatorLayerData.crossCurveMark;
24349
24441
  this._addCrossOwner(animatorLayerData, layerOwner, -1, i);
@@ -24361,7 +24453,7 @@ var AnimatorLayerBlendingMode;
24361
24453
  var srcPlayData = layerData.srcPlayData, destPlayData = layerData.destPlayData, crossFadeTransitionInfo = layerData.crossFadeTransition;
24362
24454
  var additive = blendingMode === AnimatorLayerBlendingMode.Additive;
24363
24455
  firstLayer && (weight = 1.0);
24364
- //TODO: 任意情况都应该检查,后面要优化
24456
+ //@todo: All situations should be checked, optimizations will follow later.
24365
24457
  layerData.layerState !== LayerState.FixedCrossFading && this._checkTransition(srcPlayData, crossFadeTransitionInfo, layerIndex);
24366
24458
  switch(layerData.layerState){
24367
24459
  case LayerState.Playing:
@@ -24373,6 +24465,9 @@ var AnimatorLayerBlendingMode;
24373
24465
  case LayerState.CrossFading:
24374
24466
  this._updateCrossFade(srcPlayData, destPlayData, layerData, layerIndex, weight, deltaTime, additive, aniUpdate);
24375
24467
  break;
24468
+ case LayerState.Finished:
24469
+ this._updateFinishedState(srcPlayData, weight, additive, aniUpdate);
24470
+ break;
24376
24471
  }
24377
24472
  };
24378
24473
  _proto._updatePlayingState = function _updatePlayingState(playData, layerData, layerIndex, weight, delta, additive, aniUpdate) {
@@ -24380,19 +24475,26 @@ var AnimatorLayerBlendingMode;
24380
24475
  var state = playData.state, lastPlayState = playData.playState, lastClipTime = playData.clipTime;
24381
24476
  var _state_clip = state.clip, curveBindings = _state_clip._curveBindings;
24382
24477
  playData.update(this.speed < 0);
24383
- if (!aniUpdate) {
24384
- return;
24385
- }
24386
24478
  var clipTime = playData.clipTime, playState = playData.playState;
24387
- eventHandlers.length && this._fireAnimationEvents(playData, eventHandlers, lastClipTime, clipTime);
24388
- for(var i = curveBindings.length - 1; i >= 0; i--){
24389
- var _curveLayerOwner_i;
24390
- (_curveLayerOwner_i = curveLayerOwner[i]) == null ? void 0 : _curveLayerOwner_i.curveOwner.evaluateAndApplyValue(curveBindings[i].curve, clipTime, weight, additive);
24479
+ var finished = playState === AnimatorStatePlayState.Finished;
24480
+ if (aniUpdate || finished) {
24481
+ for(var i = curveBindings.length - 1; i >= 0; i--){
24482
+ var layerOwner = curveLayerOwner[i];
24483
+ var owner = layerOwner == null ? void 0 : layerOwner.curveOwner;
24484
+ if (!owner) continue;
24485
+ var curve = curveBindings[i].curve;
24486
+ if (curve.keys.length) {
24487
+ var value = owner.evaluateValue(curve, clipTime, additive);
24488
+ aniUpdate && owner.applyValue(value, weight, additive);
24489
+ finished && layerOwner.saveFinalValue();
24490
+ }
24491
+ }
24391
24492
  }
24392
24493
  playData.frameTime += state.speed * delta;
24393
24494
  if (playState === AnimatorStatePlayState.Finished) {
24394
- layerData.layerState = LayerState.Standby;
24495
+ layerData.layerState = LayerState.Finished;
24395
24496
  }
24497
+ eventHandlers.length && this._fireAnimationEvents(playData, eventHandlers, lastClipTime, clipTime);
24396
24498
  if (lastPlayState === AnimatorStatePlayState.UnStarted) {
24397
24499
  this._callAnimatorScriptOnEnter(state, layerIndex);
24398
24500
  }
@@ -24403,7 +24505,7 @@ var AnimatorLayerBlendingMode;
24403
24505
  }
24404
24506
  };
24405
24507
  _proto._updateCrossFade = function _updateCrossFade(srcPlayData, destPlayData, layerData, layerIndex, weight, delta, additive, aniUpdate) {
24406
- var crossOwnerLayerDataCollection = layerData.crossOwnerLayerDataCollection;
24508
+ var crossLayerOwnerCollection = layerData.crossLayerOwnerCollection;
24407
24509
  var _srcPlayData_state_clip = srcPlayData.state.clip, srcCurves = _srcPlayData_state_clip._curveBindings;
24408
24510
  var srcState = srcPlayData.state, srcStateData = srcPlayData.stateData, lastSrcPlayState = srcPlayData.playState;
24409
24511
  var srcEventHandlers = srcStateData.eventHandlers;
@@ -24412,18 +24514,27 @@ var AnimatorLayerBlendingMode;
24412
24514
  var _destState_clip = destState.clip, destCurves = _destState_clip._curveBindings;
24413
24515
  var lastSrcClipTime = srcPlayData.clipTime;
24414
24516
  var lastDestClipTime = destPlayData.clipTime;
24415
- var crossWeight = Math.abs(destPlayData.frameTime) / (destState._getDuration() * layerData.crossFadeTransition.duration);
24416
- crossWeight >= 1.0 && (crossWeight = 1.0);
24517
+ var duration = destState._getDuration() * layerData.crossFadeTransition.duration;
24518
+ var crossWeight = Math.abs(destPlayData.frameTime) / duration;
24519
+ (crossWeight >= 1.0 || duration === 0) && (crossWeight = 1.0);
24417
24520
  srcPlayData.update(this.speed < 0);
24418
24521
  destPlayData.update(this.speed < 0);
24419
- var srcPlayState = srcPlayData.playState;
24420
- var destPlayState = destPlayData.playState;
24421
- this._updateCrossFadeData(layerData, crossWeight, delta, false);
24422
- if (!aniUpdate) {
24423
- return;
24522
+ var srcClipTime = srcPlayData.clipTime, srcPlayState = srcPlayData.playState;
24523
+ var destClipTime = destPlayData.clipTime, destPlayState = destPlayData.playState;
24524
+ var finished = destPlayData.playState === AnimatorStatePlayState.Finished;
24525
+ if (aniUpdate || finished) {
24526
+ for(var i = crossLayerOwnerCollection.length - 1; i >= 0; i--){
24527
+ var layerOwner = crossLayerOwnerCollection[i];
24528
+ var owner = layerOwner == null ? void 0 : layerOwner.curveOwner;
24529
+ if (!owner) continue;
24530
+ var srcCurveIndex = layerOwner.crossSrcCurveIndex;
24531
+ var destCurveIndex = layerOwner.crossDestCurveIndex;
24532
+ var value = owner.evaluateCrossFadeValue(srcCurveIndex >= 0 ? srcCurves[srcCurveIndex].curve : null, destCurveIndex >= 0 ? destCurves[destCurveIndex].curve : null, srcClipTime, destClipTime, crossWeight, additive);
24533
+ aniUpdate && owner.applyValue(value, weight, additive);
24534
+ finished && layerOwner.saveFinalValue();
24535
+ }
24424
24536
  }
24425
- var srcClipTime = srcPlayData.clipTime;
24426
- var destClipTime = destPlayData.clipTime;
24537
+ this._updateCrossFadeData(layerData, crossWeight, delta, false);
24427
24538
  srcEventHandlers.length && this._fireAnimationEvents(srcPlayData, srcEventHandlers, lastSrcClipTime, srcClipTime);
24428
24539
  destEventHandlers.length && this._fireAnimationEvents(destPlayData, destEventHandlers, lastDestClipTime, destClipTime);
24429
24540
  if (lastSrcPlayState === AnimatorStatePlayState.UnStarted) {
@@ -24442,30 +24553,34 @@ var AnimatorLayerBlendingMode;
24442
24553
  } else {
24443
24554
  this._callAnimatorScriptOnUpdate(destState, layerIndex);
24444
24555
  }
24445
- for(var i = crossOwnerLayerDataCollection.length - 1; i >= 0; i--){
24446
- var layerOwner = crossOwnerLayerDataCollection[i];
24447
- if (!layerOwner) continue;
24448
- var srcCurveIndex = layerOwner.crossSrcCurveIndex;
24449
- var destCurveIndex = layerOwner.crossDestCurveIndex;
24450
- layerOwner.curveOwner.crossFadeAndApplyValue(srcCurveIndex >= 0 ? srcCurves[srcCurveIndex].curve : null, destCurveIndex >= 0 ? destCurves[destCurveIndex].curve : null, srcClipTime, destClipTime, crossWeight, weight, additive);
24451
- }
24452
24556
  };
24453
- _proto._updateCrossFadeFromPose = function _updateCrossFadeFromPose(destPlayData, layerData, layerIndex, layerWeight, delta, additive, aniUpdate) {
24454
- var crossOwnerLayerDataCollection = layerData.crossOwnerLayerDataCollection;
24557
+ _proto._updateCrossFadeFromPose = function _updateCrossFadeFromPose(destPlayData, layerData, layerIndex, weight, delta, additive, aniUpdate) {
24558
+ var crossLayerOwnerCollection = layerData.crossLayerOwnerCollection;
24455
24559
  var state = destPlayData.state, stateData = destPlayData.stateData, lastPlayState = destPlayData.playState;
24456
24560
  var eventHandlers = stateData.eventHandlers;
24457
24561
  var _state_clip = state.clip, curveBindings = _state_clip._curveBindings;
24458
24562
  var lastDestClipTime = destPlayData.clipTime;
24459
- var crossWeight = Math.abs(destPlayData.frameTime) / (state._getDuration() * layerData.crossFadeTransition.duration);
24460
- crossWeight >= 1.0 && (crossWeight = 1.0);
24563
+ var duration = state._getDuration() * layerData.crossFadeTransition.duration;
24564
+ var crossWeight = Math.abs(destPlayData.frameTime) / duration;
24565
+ (crossWeight >= 1.0 || duration === 0) && (crossWeight = 1.0);
24461
24566
  destPlayData.update(this.speed < 0);
24462
24567
  var playState = destPlayData.playState;
24463
24568
  this._updateCrossFadeData(layerData, crossWeight, delta, true);
24464
- if (!aniUpdate) {
24465
- return;
24466
- }
24467
24569
  var destClipTime = destPlayData.clipTime;
24468
- //TODO: srcState 少了最新一段时间的判断
24570
+ var finished = playState === AnimatorStatePlayState.Finished;
24571
+ // When the animator is culled (aniUpdate=false), if the play state has finished, the final value needs to be calculated and saved to be applied directly.
24572
+ if (aniUpdate || finished) {
24573
+ for(var i = crossLayerOwnerCollection.length - 1; i >= 0; i--){
24574
+ var layerOwner = crossLayerOwnerCollection[i];
24575
+ var owner = layerOwner == null ? void 0 : layerOwner.curveOwner;
24576
+ if (!owner) continue;
24577
+ var curveIndex = layerOwner.crossDestCurveIndex;
24578
+ var value = layerOwner.curveOwner.crossFadeFromPoseAndApplyValue(curveIndex >= 0 ? curveBindings[curveIndex].curve : null, destClipTime, crossWeight, additive);
24579
+ aniUpdate && owner.applyValue(value, weight, additive);
24580
+ finished && layerOwner.saveFinalValue();
24581
+ }
24582
+ }
24583
+ //@todo: srcState is missing the judgment of the most recent period."
24469
24584
  eventHandlers.length && this._fireAnimationEvents(destPlayData, eventHandlers, lastDestClipTime, destClipTime);
24470
24585
  if (lastPlayState === AnimatorStatePlayState.UnStarted) {
24471
24586
  this._callAnimatorScriptOnEnter(state, layerIndex);
@@ -24475,11 +24590,18 @@ var AnimatorLayerBlendingMode;
24475
24590
  } else {
24476
24591
  this._callAnimatorScriptOnUpdate(state, layerIndex);
24477
24592
  }
24478
- for(var i = crossOwnerLayerDataCollection.length - 1; i >= 0; i--){
24479
- var layerOwner = crossOwnerLayerDataCollection[i];
24480
- if (!layerOwner) continue;
24481
- var curveIndex = layerOwner.crossDestCurveIndex;
24482
- layerOwner.curveOwner.crossFadeFromPoseAndApplyValue(curveIndex >= 0 ? curveBindings[curveIndex].curve : null, destClipTime, crossWeight, layerWeight, additive);
24593
+ };
24594
+ _proto._updateFinishedState = function _updateFinishedState(playData, weight, additive, aniUpdate) {
24595
+ if (!aniUpdate) {
24596
+ return;
24597
+ }
24598
+ var curveLayerOwner = playData.stateData.curveLayerOwner;
24599
+ var _playData_state_clip = playData.state.clip, curveBindings = _playData_state_clip._curveBindings;
24600
+ for(var i = curveBindings.length - 1; i >= 0; i--){
24601
+ var layerOwner = curveLayerOwner[i];
24602
+ var owner = layerOwner == null ? void 0 : layerOwner.curveOwner;
24603
+ if (!owner) continue;
24604
+ owner.applyValue(layerOwner.finalValue, weight, additive);
24483
24605
  }
24484
24606
  };
24485
24607
  _proto._updateCrossFadeData = function _updateCrossFadeData(layerData, crossWeight, delta, fixed) {
@@ -24487,7 +24609,7 @@ var AnimatorLayerBlendingMode;
24487
24609
  destPlayData.frameTime += destPlayData.state.speed * delta;
24488
24610
  if (crossWeight === 1.0) {
24489
24611
  if (destPlayData.playState === AnimatorStatePlayState.Finished) {
24490
- layerData.layerState = LayerState.Standby;
24612
+ layerData.layerState = LayerState.Finished;
24491
24613
  } else {
24492
24614
  layerData.layerState = LayerState.Playing;
24493
24615
  }
@@ -24497,7 +24619,7 @@ var AnimatorLayerBlendingMode;
24497
24619
  fixed || (layerData.srcPlayData.frameTime += layerData.srcPlayData.state.speed * delta);
24498
24620
  }
24499
24621
  };
24500
- _proto._preparePlay = function _preparePlay(layerData, playState, playStateData) {
24622
+ _proto._preparePlay = function _preparePlay(layerData, playState) {
24501
24623
  if (layerData.layerState === LayerState.Playing) {
24502
24624
  var srcPlayData = layerData.srcPlayData;
24503
24625
  if (srcPlayData.state !== playState) {
@@ -24505,18 +24627,16 @@ var AnimatorLayerBlendingMode;
24505
24627
  for(var i = curveLayerOwner.length - 1; i >= 0; i--){
24506
24628
  var _curveLayerOwner_i;
24507
24629
  var owner = (_curveLayerOwner_i = curveLayerOwner[i]) == null ? void 0 : _curveLayerOwner_i.curveOwner;
24508
- (owner == null ? void 0 : owner.hasSavedDefaultValue) && owner.revertDefaultValue();
24630
+ owner.revertDefaultValue();
24509
24631
  }
24510
- this._saveDefaultValues(playStateData);
24511
24632
  }
24512
24633
  } else {
24513
- // layerState is CrossFading, FixedCrossFading, Standby
24514
- var crossOwnerLayerDataCollection = layerData.crossOwnerLayerDataCollection;
24515
- for(var i1 = crossOwnerLayerDataCollection.length - 1; i1 >= 0; i1--){
24516
- var owner1 = crossOwnerLayerDataCollection[i1].curveOwner;
24517
- owner1.hasSavedDefaultValue && owner1.revertDefaultValue();
24634
+ // layerState is CrossFading, FixedCrossFading, Standby, Finished
24635
+ var crossLayerOwnerCollection = layerData.crossLayerOwnerCollection;
24636
+ for(var i1 = crossLayerOwnerCollection.length - 1; i1 >= 0; i1--){
24637
+ var owner1 = crossLayerOwnerCollection[i1].curveOwner;
24638
+ owner1.revertDefaultValue();
24518
24639
  }
24519
- this._saveDefaultValues(playStateData);
24520
24640
  }
24521
24641
  };
24522
24642
  _proto._checkTransition = function _checkTransition(stateData, crossFadeTransition, layerIndex) {
@@ -24533,7 +24653,7 @@ var AnimatorLayerBlendingMode;
24533
24653
  _proto._crossFadeByTransition = function _crossFadeByTransition(transition, layerIndex) {
24534
24654
  var name = transition.destinationState.name;
24535
24655
  var stateInfo = this._getAnimatorStateInfo(name, layerIndex);
24536
- var crossState = stateInfo.state;
24656
+ var crossState = stateInfo.state, playLayerIndex = stateInfo.layerIndex;
24537
24657
  if (!crossState) {
24538
24658
  return;
24539
24659
  }
@@ -24541,21 +24661,21 @@ var AnimatorLayerBlendingMode;
24541
24661
  console.warn("The state named " + name + " has no AnimationClip data.");
24542
24662
  return;
24543
24663
  }
24544
- var animatorLayerData = this._getAnimatorLayerData(stateInfo.layerIndex);
24664
+ var animatorLayerData = this._getAnimatorLayerData(playLayerIndex);
24545
24665
  var layerState = animatorLayerData.layerState;
24546
24666
  var destPlayData = animatorLayerData.destPlayData;
24547
- var animatorStateData = this._getAnimatorStateData(name, crossState, animatorLayerData);
24667
+ var animatorStateData = this._getAnimatorStateData(name, crossState, animatorLayerData, playLayerIndex);
24548
24668
  var duration = crossState._getDuration();
24549
24669
  var offset = duration * transition.offset;
24550
24670
  destPlayData.reset(crossState, animatorStateData, offset);
24551
24671
  switch(layerState){
24552
- // Maybe not play, maybe end.
24553
24672
  case LayerState.Standby:
24554
24673
  animatorLayerData.layerState = LayerState.FixedCrossFading;
24555
24674
  this._clearCrossData(animatorLayerData);
24556
24675
  this._prepareStandbyCrossFading(animatorLayerData);
24557
24676
  break;
24558
24677
  case LayerState.Playing:
24678
+ case LayerState.Finished:
24559
24679
  animatorLayerData.layerState = LayerState.CrossFading;
24560
24680
  this._clearCrossData(animatorLayerData);
24561
24681
  this._prepareCrossFading(animatorLayerData);
@@ -24652,6 +24772,12 @@ var AnimatorLayerBlendingMode;
24652
24772
  }
24653
24773
  }
24654
24774
  };
24775
+ _proto._revertCurveOwners = function _revertCurveOwners() {
24776
+ var curveOwners = this._needRevertCurveOwners;
24777
+ for(var i = 0, n = curveOwners.length; i < n; ++i){
24778
+ curveOwners[i].revertDefaultValue();
24779
+ }
24780
+ };
24655
24781
  _create_class(Animator, [
24656
24782
  {
24657
24783
  key: "animatorController",
@@ -24684,6 +24810,9 @@ __decorate([
24684
24810
  __decorate([
24685
24811
  ignoreClone
24686
24812
  ], Animator.prototype, "_curveOwnerPool", void 0);
24813
+ __decorate([
24814
+ ignoreClone
24815
+ ], Animator.prototype, "_needRevertCurveOwners", void 0);
24687
24816
  __decorate([
24688
24817
  ignoreClone
24689
24818
  ], Animator.prototype, "_animationEventHandlerPool", void 0);