@galacean/engine-core 0.9.13 → 0.9.15

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
@@ -21465,8 +21465,6 @@ var DirtyFlag;
21465
21465
  * @internal
21466
21466
  */ var AnimationCurveOwner = /*#__PURE__*/ function() {
21467
21467
  function AnimationCurveOwner(target, type, property, cureType) {
21468
- this.crossCurveMark = 0;
21469
- this.hasSavedDefaultValue = false;
21470
21468
  this.baseEvaluateData = {
21471
21469
  curKeyframeIndex: 0,
21472
21470
  value: null
@@ -21479,7 +21477,7 @@ var DirtyFlag;
21479
21477
  this.type = type;
21480
21478
  this.property = property;
21481
21479
  this.component = target.getComponent(type);
21482
- this._cureType = cureType;
21480
+ this.cureType = cureType;
21483
21481
  var assemblerType = AnimationCurveOwner.getAssemblerType(type, property);
21484
21482
  this._assembler = new assemblerType();
21485
21483
  this._assembler.initialize(this);
@@ -21488,89 +21486,80 @@ var DirtyFlag;
21488
21486
  }
21489
21487
  }
21490
21488
  var _proto = AnimationCurveOwner.prototype;
21491
- _proto.evaluateAndApplyValue = function evaluateAndApplyValue(curve, time, layerWeight, additive) {
21492
- if (curve.keys.length) {
21493
- if (additive) {
21494
- var value = curve._evaluateAdditive(time, this.baseEvaluateData);
21495
- var cureType = this._cureType;
21496
- if (cureType._isReferenceType) {
21497
- cureType._additiveValue(value, layerWeight, this.referenceTargetValue);
21498
- } else {
21499
- var assembler = this._assembler;
21500
- var originValue = assembler.getTargetValue();
21501
- var additiveValue = cureType._additiveValue(value, layerWeight, originValue);
21502
- assembler.setTargetValue(additiveValue);
21503
- }
21504
- } else {
21505
- var value1 = curve._evaluate(time, this.baseEvaluateData);
21506
- this._applyValue(value1, layerWeight);
21507
- }
21508
- }
21489
+ _proto.evaluateValue = function evaluateValue(curve, time, additive) {
21490
+ return additive ? curve._evaluateAdditive(time, this.baseEvaluateData) : curve._evaluate(time, this.baseEvaluateData);
21509
21491
  };
21510
- _proto.crossFadeAndApplyValue = function crossFadeAndApplyValue(srcCurve, destCurve, srcTime, destTime, crossWeight, layerWeight, additive) {
21511
- 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;
21512
- 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;
21513
- this._applyCrossValue(srcValue, destValue, crossWeight, layerWeight, additive);
21492
+ _proto.evaluateCrossFadeValue = function evaluateCrossFadeValue(srcCurve, destCurve, srcTime, destTime, crossWeight, additive) {
21493
+ 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;
21494
+ 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;
21495
+ return this._lerpValue(srcValue, destValue, crossWeight);
21514
21496
  };
21515
- _proto.crossFadeFromPoseAndApplyValue = function crossFadeFromPoseAndApplyValue(destCurve, destTime, crossWeight, layerWeight, additive) {
21516
- var srcValue = additive ? this._cureType._subtractValue(this.fixedPoseValue, this.defaultValue, this.baseEvaluateData.value) : this.fixedPoseValue;
21517
- 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;
21518
- this._applyCrossValue(srcValue, destValue, crossWeight, layerWeight, additive);
21497
+ _proto.crossFadeFromPoseAndApplyValue = function crossFadeFromPoseAndApplyValue(destCurve, destTime, crossWeight, additive) {
21498
+ var srcValue = additive ? this.cureType._subtractValue(this.fixedPoseValue, this.defaultValue, this.baseEvaluateData.value) : this.fixedPoseValue;
21499
+ 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;
21500
+ return this._lerpValue(srcValue, destValue, crossWeight);
21519
21501
  };
21520
21502
  _proto.revertDefaultValue = function revertDefaultValue() {
21521
21503
  this._assembler.setTargetValue(this.defaultValue);
21522
21504
  };
21505
+ _proto.getEvaluateValue = function getEvaluateValue(out) {
21506
+ if (this.cureType._isReferenceType) {
21507
+ this.cureType._copyValue(this.baseEvaluateData.value, out);
21508
+ return out;
21509
+ } else {
21510
+ return this.baseEvaluateData.value;
21511
+ }
21512
+ };
21523
21513
  _proto.saveDefaultValue = function saveDefaultValue() {
21524
- if (this._cureType._isReferenceType) {
21525
- this._cureType._copyValue(this.referenceTargetValue, this.defaultValue);
21514
+ if (this.cureType._isReferenceType) {
21515
+ this.cureType._copyValue(this.referenceTargetValue, this.defaultValue);
21526
21516
  } else {
21527
21517
  this.defaultValue = this._assembler.getTargetValue();
21528
21518
  }
21529
- this.hasSavedDefaultValue = true;
21530
21519
  };
21531
21520
  _proto.saveFixedPoseValue = function saveFixedPoseValue() {
21532
- if (this._cureType._isReferenceType) {
21533
- this._cureType._copyValue(this.referenceTargetValue, this.fixedPoseValue);
21521
+ if (this.cureType._isReferenceType) {
21522
+ this.cureType._copyValue(this.referenceTargetValue, this.fixedPoseValue);
21534
21523
  } else {
21535
21524
  this.fixedPoseValue = this._assembler.getTargetValue();
21536
21525
  }
21537
21526
  };
21538
- _proto._applyValue = function _applyValue(value, weight) {
21539
- if (weight === 1.0) {
21540
- if (this._cureType._isReferenceType) {
21541
- this._cureType._copyValue(value, this.referenceTargetValue);
21527
+ _proto.applyValue = function applyValue(value, weight, additive) {
21528
+ var cureType = this.cureType;
21529
+ if (additive) {
21530
+ if (cureType._isReferenceType) {
21531
+ cureType._additiveValue(value, weight, this.referenceTargetValue);
21542
21532
  } else {
21543
- this._assembler.setTargetValue(value);
21533
+ var assembler = this._assembler;
21534
+ var originValue = assembler.getTargetValue();
21535
+ var additiveValue = cureType._additiveValue(value, weight, originValue);
21536
+ assembler.setTargetValue(additiveValue);
21544
21537
  }
21545
21538
  } else {
21546
- if (this._cureType._isReferenceType) {
21547
- var targetValue = this.referenceTargetValue;
21548
- this._cureType._lerpValue(targetValue, value, weight, targetValue);
21539
+ if (weight === 1.0) {
21540
+ if (cureType._isReferenceType) {
21541
+ cureType._copyValue(value, this.referenceTargetValue);
21542
+ } else {
21543
+ this._assembler.setTargetValue(value);
21544
+ }
21549
21545
  } else {
21550
- var originValue = this._assembler.getTargetValue();
21551
- var lerpValue = this._cureType._lerpValue(originValue, value, weight);
21552
- this._assembler.setTargetValue(lerpValue);
21546
+ if (cureType._isReferenceType) {
21547
+ var targetValue = this.referenceTargetValue;
21548
+ cureType._lerpValue(targetValue, value, weight, targetValue);
21549
+ } else {
21550
+ var originValue1 = this._assembler.getTargetValue();
21551
+ var lerpValue = cureType._lerpValue(originValue1, value, weight);
21552
+ this._assembler.setTargetValue(lerpValue);
21553
+ }
21553
21554
  }
21554
21555
  }
21555
21556
  };
21556
- _proto._applyCrossValue = function _applyCrossValue(srcValue, destValue, crossWeight, layerWeight, additive) {
21557
- var out;
21558
- if (this._cureType._isReferenceType) {
21559
- out = this.baseEvaluateData.value;
21560
- this._cureType._lerpValue(srcValue, destValue, crossWeight, out);
21557
+ _proto._lerpValue = function _lerpValue(srcValue, destValue, crossWeight) {
21558
+ if (this.cureType._isReferenceType) {
21559
+ return this.cureType._lerpValue(srcValue, destValue, crossWeight, this.baseEvaluateData.value);
21561
21560
  } else {
21562
- out = this._cureType._lerpValue(srcValue, destValue, crossWeight);
21563
- }
21564
- if (additive) {
21565
- if (this._cureType._isReferenceType) {
21566
- this._cureType._additiveValue(out, layerWeight, this.referenceTargetValue);
21567
- } else {
21568
- var originValue = this._assembler.getTargetValue();
21569
- var lerpValue = this._cureType._additiveValue(out, layerWeight, originValue);
21570
- this._assembler.setTargetValue(lerpValue);
21571
- }
21572
- } else {
21573
- this._applyValue(out, layerWeight);
21561
+ this.baseEvaluateData.value = this.cureType._lerpValue(srcValue, destValue, crossWeight);
21562
+ return this.baseEvaluateData.value;
21574
21563
  }
21575
21564
  };
21576
21565
  AnimationCurveOwner.registerAssembler = function registerAssembler(componentType, property, assemblerType) {
@@ -21664,6 +21653,27 @@ AnimationCurveOwner.registerAssembler(Transform, "scale", ScaleAnimationCurveOwn
21664
21653
  }();
21665
21654
  AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights", BlendShapeWeightsAnimationCurveOwnerAssembler);
21666
21655
 
21656
+ /**
21657
+ * @internal
21658
+ */ var AnimationCurveLayerOwner = /*#__PURE__*/ function() {
21659
+ function AnimationCurveLayerOwner() {
21660
+ this.crossCurveMark = 0;
21661
+ }
21662
+ var _proto = AnimationCurveLayerOwner.prototype;
21663
+ _proto.initFinalValue = function initFinalValue() {
21664
+ var _this_curveOwner = this.curveOwner, cureType = _this_curveOwner.cureType, defaultValue = _this_curveOwner.defaultValue;
21665
+ if (cureType._isReferenceType) {
21666
+ cureType._copyValue(defaultValue, this.finalValue);
21667
+ } else {
21668
+ this.finalValue = defaultValue;
21669
+ }
21670
+ };
21671
+ _proto.saveFinalValue = function saveFinalValue() {
21672
+ this.finalValue = this.curveOwner.getEvaluateValue(this.finalValue);
21673
+ };
21674
+ return AnimationCurveLayerOwner;
21675
+ }();
21676
+
21667
21677
  /**
21668
21678
  * Associate AnimationCurve and the Entity
21669
21679
  */ var AnimationClipCurveBinding = /*#__PURE__*/ function() {
@@ -21677,10 +21687,22 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
21677
21687
  var curveType = this.curve.constructor;
21678
21688
  var owner = new AnimationCurveOwner(entity, this.type, this.property, curveType);
21679
21689
  curveType._initializeOwner(owner);
21690
+ owner.saveDefaultValue();
21680
21691
  return owner;
21681
21692
  };
21682
21693
  /**
21683
21694
  * @internal
21695
+ */ _proto._createCurveLayerOwner = function _createCurveLayerOwner(owner) {
21696
+ var curveType = this.curve.constructor;
21697
+ var layerOwner = new AnimationCurveLayerOwner();
21698
+ layerOwner.curveOwner = owner;
21699
+ curveType._initializeLayerOwner(layerOwner);
21700
+ // If curve.keys.length is 0, updateFinishedState will assign 0 to the target, causing an error, so initialize by assigning defaultValue to finalValue.
21701
+ layerOwner.initFinalValue();
21702
+ return layerOwner;
21703
+ };
21704
+ /**
21705
+ * @internal
21684
21706
  */ _proto._getTempCurveOwner = function _getTempCurveOwner(entity) {
21685
21707
  var instanceId = entity.instanceId;
21686
21708
  if (!this._tempCurveOwner[instanceId]) {
@@ -21760,7 +21782,8 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
21760
21782
  var targetEntity = entity.findByPath(curveData.relativePath);
21761
21783
  if (targetEntity) {
21762
21784
  var curveOwner = curveData._getTempCurveOwner(targetEntity);
21763
- curveOwner.evaluateAndApplyValue(curveData.curve, time, 1, false);
21785
+ var value = curveOwner.evaluateValue(curveData.curve, time, false);
21786
+ curveOwner.applyValue(value, 1, false);
21764
21787
  }
21765
21788
  }
21766
21789
  };
@@ -21904,6 +21927,7 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
21904
21927
  break;
21905
21928
  }
21906
21929
  }
21930
+ evaluateData.value = value;
21907
21931
  return value;
21908
21932
  };
21909
21933
  /**
@@ -21960,6 +21984,11 @@ var AnimationArrayCurve = (_AnimationArrayCurve = /*#__PURE__*/ function(Animati
21960
21984
  };
21961
21985
  /**
21962
21986
  * @internal
21987
+ */ AnimationArrayCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
21988
+ owner.finalValue = [];
21989
+ };
21990
+ /**
21991
+ * @internal
21963
21992
  */ AnimationArrayCurve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
21964
21993
  for(var i = 0, n = out.length; i < n; ++i){
21965
21994
  var src = srcValue[i];
@@ -22050,6 +22079,11 @@ var AnimationBoolCurve = (_AnimationBoolCurve = /*#__PURE__*/ function(Animation
22050
22079
  };
22051
22080
  /**
22052
22081
  * @internal
22082
+ */ AnimationBoolCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
22083
+ owner.finalValue = false;
22084
+ };
22085
+ /**
22086
+ * @internal
22053
22087
  */ AnimationBoolCurve._lerpValue = function _lerpValue(srcValue, destValue) {
22054
22088
  return destValue;
22055
22089
  };
@@ -22107,6 +22141,11 @@ var AnimationColorCurve = (_AnimationColorCurve = /*#__PURE__*/ function(Animati
22107
22141
  };
22108
22142
  /**
22109
22143
  * @internal
22144
+ */ AnimationColorCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
22145
+ owner.finalValue = new Color$1();
22146
+ };
22147
+ /**
22148
+ * @internal
22110
22149
  */ AnimationColorCurve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
22111
22150
  Color$1.lerp(srcValue, destValue, weight, out);
22112
22151
  return out;
@@ -22214,6 +22253,12 @@ var AnimationFloatArrayCurve = (_AnimationFloatArrayCurve = /*#__PURE__*/ functi
22214
22253
  };
22215
22254
  /**
22216
22255
  * @internal
22256
+ */ AnimationFloatArrayCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
22257
+ var size = owner.curveOwner.referenceTargetValue.length;
22258
+ owner.finalValue = new Float32Array(size);
22259
+ };
22260
+ /**
22261
+ * @internal
22217
22262
  */ AnimationFloatArrayCurve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
22218
22263
  for(var i = 0, n = out.length; i < n; ++i){
22219
22264
  var src = srcValue[i];
@@ -22304,6 +22349,11 @@ var AnimationFloatCurve = (_AnimationFloatCurve = /*#__PURE__*/ function(Animati
22304
22349
  };
22305
22350
  /**
22306
22351
  * @internal
22352
+ */ AnimationFloatCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
22353
+ owner.finalValue = 0;
22354
+ };
22355
+ /**
22356
+ * @internal
22307
22357
  */ AnimationFloatCurve._lerpValue = function _lerpValue(srcValue, destValue, crossWeight) {
22308
22358
  return srcValue + (destValue - srcValue) * crossWeight;
22309
22359
  };
@@ -22373,6 +22423,11 @@ var AnimationQuaternionCurve = (_AnimationQuaternionCurve = /*#__PURE__*/ functi
22373
22423
  };
22374
22424
  /**
22375
22425
  * @internal
22426
+ */ AnimationQuaternionCurve1._initializeLayerOwner = function _initializeLayerOwner(owner) {
22427
+ owner.finalValue = new Quaternion();
22428
+ };
22429
+ /**
22430
+ * @internal
22376
22431
  */ AnimationQuaternionCurve1._lerpValue = function _lerpValue(src, dest, weight, out) {
22377
22432
  Quaternion.slerp(src, dest, weight, out);
22378
22433
  return out;
@@ -22477,6 +22532,11 @@ var AnimationVector2Curve = (_AnimationVector2Curve = /*#__PURE__*/ function(Ani
22477
22532
  };
22478
22533
  /**
22479
22534
  * @internal
22535
+ */ AnimationVector2Curve._initializeLayerOwner = function _initializeLayerOwner(owner) {
22536
+ owner.finalValue = new Vector2();
22537
+ };
22538
+ /**
22539
+ * @internal
22480
22540
  */ AnimationVector2Curve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
22481
22541
  Vector2.lerp(srcValue, destValue, weight, out);
22482
22542
  return out;
@@ -22562,6 +22622,11 @@ var AnimationVector3Curve = (_AnimationVector3Curve = /*#__PURE__*/ function(Ani
22562
22622
  };
22563
22623
  /**
22564
22624
  * @internal
22625
+ */ AnimationVector3Curve._initializeLayerOwner = function _initializeLayerOwner(owner) {
22626
+ owner.finalValue = new Vector3();
22627
+ };
22628
+ /**
22629
+ * @internal
22565
22630
  */ AnimationVector3Curve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
22566
22631
  Vector3.lerp(srcValue, destValue, weight, out);
22567
22632
  return out;
@@ -22659,6 +22724,11 @@ var AnimationVector4Curve = (_AnimationVector4Curve = /*#__PURE__*/ function(Ani
22659
22724
  };
22660
22725
  /**
22661
22726
  * @internal
22727
+ */ AnimationVector4Curve._initializeLayerOwner = function _initializeLayerOwner(owner) {
22728
+ owner.finalValue = new Vector4();
22729
+ };
22730
+ /**
22731
+ * @internal
22662
22732
  */ AnimationVector4Curve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
22663
22733
  Vector4.lerp(srcValue, destValue, weight, out);
22664
22734
  return out;
@@ -22768,6 +22838,7 @@ var AnimatorLayerBlendingMode;
22768
22838
  LayerState[LayerState[/** Playing state. */ "Playing"] = 1] = "Playing";
22769
22839
  LayerState[LayerState[/** CrossFading state. */ "CrossFading"] = 2] = "CrossFading";
22770
22840
  LayerState[LayerState[/** FixedCrossFading state. */ "FixedCrossFading"] = 3] = "FixedCrossFading";
22841
+ LayerState[LayerState[/** Finished state. */ "Finished"] = 4] = "Finished";
22771
22842
  })(LayerState || (LayerState = {}));
22772
22843
 
22773
22844
  /**
@@ -22839,12 +22910,14 @@ var AnimatorLayerBlendingMode;
22839
22910
  * @internal
22840
22911
  */ var AnimatorLayerData = /*#__PURE__*/ function() {
22841
22912
  function AnimatorLayerData() {
22913
+ this.curveOwnerPool = Object.create(null);
22842
22914
  this.animatorStateDataMap = {};
22843
22915
  this.srcPlayData = new AnimatorStatePlayData();
22844
22916
  this.destPlayData = new AnimatorStatePlayData();
22845
22917
  this.layerState = LayerState.Standby;
22846
22918
  this.crossCurveMark = 0;
22847
22919
  this.manuallyTransition = new AnimatorStateTransition();
22920
+ this.crossLayerOwnerCollection = [];
22848
22921
  }
22849
22922
  var _proto = AnimatorLayerData.prototype;
22850
22923
  _proto.switchPlayData = function switchPlayData() {
@@ -22859,7 +22932,7 @@ var AnimatorLayerBlendingMode;
22859
22932
  /**
22860
22933
  * @internal
22861
22934
  */ var AnimatorStateData = function AnimatorStateData() {
22862
- this.curveOwners = [];
22935
+ this.curveLayerOwner = [];
22863
22936
  this.eventHandlers = [];
22864
22937
  };
22865
22938
 
@@ -22873,8 +22946,8 @@ var AnimatorLayerBlendingMode;
22873
22946
  /** Culling mode of this Animator. */ _this.cullingMode = AnimatorCullingMode.None;
22874
22947
  /** The playback speed of the Animator, 1.0 is normal playback speed. */ _this.speed = 1.0;
22875
22948
  _this._animatorLayersData = [];
22876
- _this._crossOwnerCollection = [];
22877
- _this._animationCurveOwners = [];
22949
+ _this._curveOwnerPool = Object.create(null);
22950
+ _this._needRevertCurveOwners = [];
22878
22951
  _this._animationEventHandlerPool = new ClassPool(AnimationEventHandler);
22879
22952
  _this._tempAnimatorStateInfo = {
22880
22953
  layerIndex: -1,
@@ -22897,7 +22970,7 @@ var AnimatorLayerBlendingMode;
22897
22970
  this._reset();
22898
22971
  }
22899
22972
  var stateInfo = this._getAnimatorStateInfo(stateName, layerIndex);
22900
- var state = stateInfo.state;
22973
+ var state = stateInfo.state, playLayerIndex = stateInfo.layerIndex;
22901
22974
  if (!state) {
22902
22975
  return;
22903
22976
  }
@@ -22906,9 +22979,8 @@ var AnimatorLayerBlendingMode;
22906
22979
  return;
22907
22980
  }
22908
22981
  var animatorLayerData = this._getAnimatorLayerData(stateInfo.layerIndex);
22909
- //TODO CM: Not consider same stateName, but different animation
22910
- var animatorStateData = this._getAnimatorStateData(stateName, state, animatorLayerData);
22911
- this._preparePlay(animatorLayerData, state, animatorStateData);
22982
+ var animatorStateData = this._getAnimatorStateData(stateName, state, animatorLayerData, playLayerIndex);
22983
+ this._preparePlay(animatorLayerData, state);
22912
22984
  animatorLayerData.layerState = LayerState.Playing;
22913
22985
  animatorLayerData.srcPlayData.reset(state, animatorStateData, state._getDuration() * normalizedTimeOffset);
22914
22986
  };
@@ -22959,6 +23031,7 @@ var AnimatorLayerBlendingMode;
22959
23031
  return;
22960
23032
  }
22961
23033
  deltaTime *= this.speed;
23034
+ this._revertCurveOwners();
22962
23035
  for(var i1 = 0, n1 = animatorController.layers.length; i1 < n1; i1++){
22963
23036
  var animatorLayerData = this._getAnimatorLayerData(i1);
22964
23037
  if (animatorLayerData.layerState === LayerState.Standby) {
@@ -22999,17 +23072,17 @@ var AnimatorLayerBlendingMode;
22999
23072
  /**
23000
23073
  * @internal
23001
23074
  */ _proto._reset = function _reset() {
23002
- var _this = this, animationCurveOwners = _this._animationCurveOwners;
23075
+ var _this = this, animationCurveOwners = _this._curveOwnerPool;
23003
23076
  for(var instanceId in animationCurveOwners){
23004
23077
  var propertyOwners = animationCurveOwners[instanceId];
23005
23078
  for(var property in propertyOwners){
23006
23079
  var owner = propertyOwners[property];
23007
- owner.hasSavedDefaultValue && owner.revertDefaultValue();
23080
+ owner.revertDefaultValue();
23008
23081
  }
23009
23082
  }
23010
23083
  this._animatorLayersData.length = 0;
23011
- this._crossOwnerCollection.length = 0;
23012
- this._animationCurveOwners.length = 0;
23084
+ this._needRevertCurveOwners.length = 0;
23085
+ this._curveOwnerPool = {};
23013
23086
  this._animationEventHandlerPool.resetPool();
23014
23087
  if (this._controllerUpdateFlag) {
23015
23088
  this._controllerUpdateFlag.flag = false;
@@ -23036,38 +23109,51 @@ var AnimatorLayerBlendingMode;
23036
23109
  stateInfo.state = state;
23037
23110
  return stateInfo;
23038
23111
  };
23039
- _proto._saveDefaultValues = function _saveDefaultValues(stateData) {
23040
- var curveOwners = stateData.curveOwners;
23041
- for(var i = curveOwners.length - 1; i >= 0; i--){
23042
- var _curveOwners_i;
23043
- (_curveOwners_i = curveOwners[i]) == null ? void 0 : _curveOwners_i.saveDefaultValue();
23044
- }
23045
- };
23046
- _proto._getAnimatorStateData = function _getAnimatorStateData(stateName, animatorState, animatorLayerData) {
23112
+ _proto._getAnimatorStateData = function _getAnimatorStateData(stateName, animatorState, animatorLayerData, layerIndex) {
23047
23113
  var animatorStateDataMap = animatorLayerData.animatorStateDataMap;
23048
23114
  var animatorStateData = animatorStateDataMap[stateName];
23049
23115
  if (!animatorStateData) {
23050
23116
  animatorStateData = new AnimatorStateData();
23051
23117
  animatorStateDataMap[stateName] = animatorStateData;
23052
- this._saveAnimatorStateData(animatorState, animatorStateData);
23118
+ this._saveAnimatorStateData(animatorState, animatorStateData, animatorLayerData, layerIndex);
23053
23119
  this._saveAnimatorEventHandlers(animatorState, animatorStateData);
23054
23120
  }
23055
23121
  return animatorStateData;
23056
23122
  };
23057
- _proto._saveAnimatorStateData = function _saveAnimatorStateData(animatorState, animatorStateData) {
23058
- var _this = this, entity = _this.entity, animationCureOwners = _this._animationCurveOwners;
23059
- var curveOwners = animatorStateData.curveOwners;
23123
+ _proto._saveAnimatorStateData = function _saveAnimatorStateData(animatorState, animatorStateData, animatorLayerData, layerIndex) {
23124
+ var _this = this, entity = _this.entity, curveOwnerPool = _this._curveOwnerPool;
23125
+ var curveLayerOwner = animatorStateData.curveLayerOwner;
23126
+ var layerCurveOwnerPool = animatorLayerData.curveOwnerPool;
23060
23127
  var _animatorState_clip = animatorState.clip, curves = _animatorState_clip._curveBindings;
23061
23128
  for(var i = curves.length - 1; i >= 0; i--){
23062
23129
  var curve = curves[i];
23063
23130
  var targetEntity = curve.relativePath === "" ? entity : entity.findByPath(curve.relativePath);
23064
23131
  if (targetEntity) {
23132
+ var _curveOwnerPool, _instanceId, _propertyOwners, _property, _layerCurveOwnerPool, _instanceId1, _layerPropertyOwners, _property1;
23065
23133
  var property = curve.property;
23066
23134
  var instanceId = targetEntity.instanceId;
23067
- var propertyOwners = animationCureOwners[instanceId] || (animationCureOwners[instanceId] = {});
23068
- curveOwners[i] = propertyOwners[property] || (propertyOwners[property] = curve._createCurveOwner(targetEntity));
23135
+ var needRevert = false;
23136
+ var baseAnimatorLayerData = this._animatorLayersData[0];
23137
+ var baseLayerCurveOwnerPool = baseAnimatorLayerData.curveOwnerPool;
23138
+ if (this.animatorController.layers[layerIndex].blendingMode === AnimatorLayerBlendingMode.Additive && layerIndex > 0 && !(baseLayerCurveOwnerPool[instanceId] && baseLayerCurveOwnerPool[instanceId][property])) {
23139
+ needRevert = true;
23140
+ }
23141
+ // Get owner
23142
+ var propertyOwners = (_curveOwnerPool = curveOwnerPool)[_instanceId = instanceId] || (_curveOwnerPool[_instanceId] = Object.create(null));
23143
+ var owner = (_propertyOwners = propertyOwners)[_property = property] || (_propertyOwners[_property] = curve._createCurveOwner(targetEntity));
23144
+ //@todo: There is performance waste here, which will be handled together with organizing AnimatorStateData later. The logic is changing from runtime to initialization.
23145
+ if (needRevert) {
23146
+ this._needRevertCurveOwners.push(owner);
23147
+ } else {
23148
+ var index = this._needRevertCurveOwners.indexOf(owner);
23149
+ index > -1 && this._needRevertCurveOwners.splice(index, 1);
23150
+ }
23151
+ // Get layer owner
23152
+ var layerPropertyOwners = (_layerCurveOwnerPool = layerCurveOwnerPool)[_instanceId1 = instanceId] || (_layerCurveOwnerPool[_instanceId1] = Object.create(null));
23153
+ var layerOwner = (_layerPropertyOwners = layerPropertyOwners)[_property1 = property] || (_layerPropertyOwners[_property1] = curve._createCurveLayerOwner(owner));
23154
+ curveLayerOwner[i] = layerOwner;
23069
23155
  } else {
23070
- curveOwners[i] = null;
23156
+ curveLayerOwner[i] = null;
23071
23157
  console.warn("The entity don't have the child entity which path is " + curve.relativePath + ".");
23072
23158
  }
23073
23159
  }
@@ -23095,65 +23181,60 @@ var AnimatorLayerBlendingMode;
23095
23181
  };
23096
23182
  _proto._clearCrossData = function _clearCrossData(animatorLayerData) {
23097
23183
  animatorLayerData.crossCurveMark++;
23098
- this._crossOwnerCollection.length = 0;
23184
+ animatorLayerData.crossLayerOwnerCollection.length = 0;
23099
23185
  };
23100
- _proto._addCrossCurveData = function _addCrossCurveData(crossCurveData, owner, curCurveIndex, nextCurveIndex) {
23101
- owner.crossSrcCurveIndex = curCurveIndex;
23102
- owner.crossDestCurveIndex = nextCurveIndex;
23103
- crossCurveData.push(owner);
23186
+ _proto._addCrossOwner = function _addCrossOwner(animatorLayerData, layerOwner, curCurveIndex, nextCurveIndex) {
23187
+ layerOwner.crossSrcCurveIndex = curCurveIndex;
23188
+ layerOwner.crossDestCurveIndex = nextCurveIndex;
23189
+ animatorLayerData.crossLayerOwnerCollection.push(layerOwner);
23104
23190
  };
23105
23191
  _proto._prepareCrossFading = function _prepareCrossFading(animatorLayerData) {
23106
- var crossCurveData = this._crossOwnerCollection;
23107
- var crossCurveMark = animatorLayerData.crossCurveMark;
23108
23192
  // Add src cross curve data.
23109
- this._prepareSrcCrossData(crossCurveData, animatorLayerData.srcPlayData, crossCurveMark, false);
23193
+ this._prepareSrcCrossData(animatorLayerData, false);
23110
23194
  // Add dest cross curve data.
23111
- this._prepareDestCrossData(crossCurveData, animatorLayerData.destPlayData, crossCurveMark, false);
23195
+ this._prepareDestCrossData(animatorLayerData, false);
23112
23196
  };
23113
23197
  _proto._prepareStandbyCrossFading = function _prepareStandbyCrossFading(animatorLayerData) {
23114
- var crossOwnerCollection = this._crossOwnerCollection;
23115
- var srcPlayData = animatorLayerData.srcPlayData, crossCurveMark = animatorLayerData.crossCurveMark;
23116
23198
  // Standby have two sub state, one is never play, one is finished, never play srcPlayData.state is null.
23117
- srcPlayData.state && this._prepareSrcCrossData(crossOwnerCollection, srcPlayData, crossCurveMark, true);
23199
+ animatorLayerData.srcPlayData.state && this._prepareSrcCrossData(animatorLayerData, true);
23118
23200
  // Add dest cross curve data.
23119
- this._prepareDestCrossData(crossOwnerCollection, animatorLayerData.destPlayData, crossCurveMark, true);
23201
+ this._prepareDestCrossData(animatorLayerData, true);
23120
23202
  };
23121
23203
  _proto._prepareFixedPoseCrossFading = function _prepareFixedPoseCrossFading(animatorLayerData) {
23122
- var crossOwnerCollection = this._crossOwnerCollection;
23204
+ var crossLayerOwnerCollection = animatorLayerData.crossLayerOwnerCollection;
23123
23205
  // Save current cross curve data owner fixed pose.
23124
- for(var i = crossOwnerCollection.length - 1; i >= 0; i--){
23125
- var item = crossOwnerCollection[i];
23126
- item.saveFixedPoseValue();
23206
+ for(var i = crossLayerOwnerCollection.length - 1; i >= 0; i--){
23207
+ var layerOwner = crossLayerOwnerCollection[i];
23208
+ if (!layerOwner) continue;
23209
+ layerOwner.curveOwner.saveFixedPoseValue();
23127
23210
  // Reset destCurveIndex When fixed pose crossFading again.
23128
- item.crossDestCurveIndex = -1;
23211
+ layerOwner.crossDestCurveIndex = -1;
23129
23212
  }
23130
23213
  // prepare dest AnimatorState cross data.
23131
- this._prepareDestCrossData(crossOwnerCollection, animatorLayerData.destPlayData, animatorLayerData.crossCurveMark, true);
23132
- };
23133
- _proto._prepareSrcCrossData = function _prepareSrcCrossData(crossCurveData, srcPlayData, crossCurveMark, saveFixed) {
23134
- var curveOwners = srcPlayData.stateData.curveOwners;
23135
- for(var i = curveOwners.length - 1; i >= 0; i--){
23136
- var owner = curveOwners[i];
23137
- if (!owner) continue;
23138
- owner.crossCurveMark = crossCurveMark;
23139
- owner.crossCurveDataIndex = crossCurveData.length;
23140
- saveFixed && owner.saveFixedPoseValue();
23141
- this._addCrossCurveData(crossCurveData, owner, i, -1);
23142
- }
23143
- };
23144
- _proto._prepareDestCrossData = function _prepareDestCrossData(crossCurveData, destPlayData, crossCurveMark, saveFixed) {
23145
- var curveOwners = destPlayData.stateData.curveOwners;
23146
- for(var i = curveOwners.length - 1; i >= 0; i--){
23147
- var owner = curveOwners[i];
23148
- if (!owner) continue;
23149
- if (owner.crossCurveMark === crossCurveMark) {
23150
- crossCurveData[owner.crossCurveDataIndex].crossDestCurveIndex = i;
23214
+ this._prepareDestCrossData(animatorLayerData, true);
23215
+ };
23216
+ _proto._prepareSrcCrossData = function _prepareSrcCrossData(animatorLayerData, saveFixed) {
23217
+ var curveLayerOwner = animatorLayerData.srcPlayData.stateData.curveLayerOwner;
23218
+ for(var i = curveLayerOwner.length - 1; i >= 0; i--){
23219
+ var layerOwner = curveLayerOwner[i];
23220
+ if (!layerOwner) continue;
23221
+ layerOwner.crossCurveMark = animatorLayerData.crossCurveMark;
23222
+ saveFixed && layerOwner.curveOwner.saveFixedPoseValue();
23223
+ this._addCrossOwner(animatorLayerData, layerOwner, i, -1);
23224
+ }
23225
+ };
23226
+ _proto._prepareDestCrossData = function _prepareDestCrossData(animatorLayerData, saveFixed) {
23227
+ var curveLayerOwner = animatorLayerData.destPlayData.stateData.curveLayerOwner;
23228
+ for(var i = curveLayerOwner.length - 1; i >= 0; i--){
23229
+ var layerOwner = curveLayerOwner[i];
23230
+ if (!layerOwner) continue;
23231
+ if (layerOwner.crossCurveMark === animatorLayerData.crossCurveMark) {
23232
+ layerOwner.crossDestCurveIndex = i;
23151
23233
  } else {
23152
- owner.saveDefaultValue();
23234
+ var owner = layerOwner.curveOwner;
23153
23235
  saveFixed && owner.saveFixedPoseValue();
23154
- owner.crossCurveMark = crossCurveMark;
23155
- owner.crossCurveDataIndex = crossCurveData.length;
23156
- this._addCrossCurveData(crossCurveData, owner, -1, i);
23236
+ layerOwner.crossCurveMark = animatorLayerData.crossCurveMark;
23237
+ this._addCrossOwner(animatorLayerData, layerOwner, -1, i);
23157
23238
  }
23158
23239
  }
23159
23240
  };
@@ -23168,7 +23249,7 @@ var AnimatorLayerBlendingMode;
23168
23249
  var srcPlayData = layerData.srcPlayData, destPlayData = layerData.destPlayData, crossFadeTransitionInfo = layerData.crossFadeTransition;
23169
23250
  var additive = blendingMode === AnimatorLayerBlendingMode.Additive;
23170
23251
  firstLayer && (weight = 1.0);
23171
- //TODO: 任意情况都应该检查,后面要优化
23252
+ //@todo: All situations should be checked, optimizations will follow later.
23172
23253
  layerData.layerState !== LayerState.FixedCrossFading && this._checkTransition(srcPlayData, crossFadeTransitionInfo, layerIndex);
23173
23254
  switch(layerData.layerState){
23174
23255
  case LayerState.Playing:
@@ -23180,26 +23261,36 @@ var AnimatorLayerBlendingMode;
23180
23261
  case LayerState.CrossFading:
23181
23262
  this._updateCrossFade(srcPlayData, destPlayData, layerData, layerIndex, weight, deltaTime, additive, aniUpdate);
23182
23263
  break;
23264
+ case LayerState.Finished:
23265
+ this._updateFinishedState(srcPlayData, weight, additive, aniUpdate);
23266
+ break;
23183
23267
  }
23184
23268
  };
23185
23269
  _proto._updatePlayingState = function _updatePlayingState(playData, layerData, layerIndex, weight, delta, additive, aniUpdate) {
23186
- var _playData_stateData = playData.stateData, curveOwners = _playData_stateData.curveOwners, eventHandlers = _playData_stateData.eventHandlers;
23270
+ var _playData_stateData = playData.stateData, curveLayerOwner = _playData_stateData.curveLayerOwner, eventHandlers = _playData_stateData.eventHandlers;
23187
23271
  var state = playData.state, lastPlayState = playData.playState, lastClipTime = playData.clipTime;
23188
23272
  var _state_clip = state.clip, curveBindings = _state_clip._curveBindings;
23189
23273
  playData.update(this.speed < 0);
23190
- if (!aniUpdate) {
23191
- return;
23192
- }
23193
23274
  var clipTime = playData.clipTime, playState = playData.playState;
23194
- eventHandlers.length && this._fireAnimationEvents(playData, eventHandlers, lastClipTime, clipTime);
23195
- for(var i = curveBindings.length - 1; i >= 0; i--){
23196
- var owner = curveOwners[i];
23197
- owner == null ? void 0 : owner.evaluateAndApplyValue(curveBindings[i].curve, clipTime, weight, additive);
23275
+ var finished = playState === AnimatorStatePlayState.Finished;
23276
+ if (aniUpdate || finished) {
23277
+ for(var i = curveBindings.length - 1; i >= 0; i--){
23278
+ var layerOwner = curveLayerOwner[i];
23279
+ var owner = layerOwner == null ? void 0 : layerOwner.curveOwner;
23280
+ if (!owner) continue;
23281
+ var curve = curveBindings[i].curve;
23282
+ if (curve.keys.length) {
23283
+ var value = owner.evaluateValue(curve, clipTime, additive);
23284
+ aniUpdate && owner.applyValue(value, weight, additive);
23285
+ finished && layerOwner.saveFinalValue();
23286
+ }
23287
+ }
23198
23288
  }
23199
23289
  playData.frameTime += state.speed * delta;
23200
23290
  if (playState === AnimatorStatePlayState.Finished) {
23201
- layerData.layerState = LayerState.Standby;
23291
+ layerData.layerState = LayerState.Finished;
23202
23292
  }
23293
+ eventHandlers.length && this._fireAnimationEvents(playData, eventHandlers, lastClipTime, clipTime);
23203
23294
  if (lastPlayState === AnimatorStatePlayState.UnStarted) {
23204
23295
  this._callAnimatorScriptOnEnter(state, layerIndex);
23205
23296
  }
@@ -23210,7 +23301,7 @@ var AnimatorLayerBlendingMode;
23210
23301
  }
23211
23302
  };
23212
23303
  _proto._updateCrossFade = function _updateCrossFade(srcPlayData, destPlayData, layerData, layerIndex, weight, delta, additive, aniUpdate) {
23213
- var _this = this, crossCurveDataCollection = _this._crossOwnerCollection;
23304
+ var crossLayerOwnerCollection = layerData.crossLayerOwnerCollection;
23214
23305
  var _srcPlayData_state_clip = srcPlayData.state.clip, srcCurves = _srcPlayData_state_clip._curveBindings;
23215
23306
  var srcState = srcPlayData.state, srcStateData = srcPlayData.stateData, lastSrcPlayState = srcPlayData.playState;
23216
23307
  var srcEventHandlers = srcStateData.eventHandlers;
@@ -23219,18 +23310,27 @@ var AnimatorLayerBlendingMode;
23219
23310
  var _destState_clip = destState.clip, destCurves = _destState_clip._curveBindings;
23220
23311
  var lastSrcClipTime = srcPlayData.clipTime;
23221
23312
  var lastDestClipTime = destPlayData.clipTime;
23222
- var crossWeight = Math.abs(destPlayData.frameTime) / (destState._getDuration() * layerData.crossFadeTransition.duration);
23223
- crossWeight >= 1.0 && (crossWeight = 1.0);
23313
+ var duration = destState._getDuration() * layerData.crossFadeTransition.duration;
23314
+ var crossWeight = Math.abs(destPlayData.frameTime) / duration;
23315
+ (crossWeight >= 1.0 || duration === 0) && (crossWeight = 1.0);
23224
23316
  srcPlayData.update(this.speed < 0);
23225
23317
  destPlayData.update(this.speed < 0);
23226
- var srcPlayState = srcPlayData.playState;
23227
- var destPlayState = destPlayData.playState;
23228
- this._updateCrossFadeData(layerData, crossWeight, delta, false);
23229
- if (!aniUpdate) {
23230
- return;
23318
+ var srcClipTime = srcPlayData.clipTime, srcPlayState = srcPlayData.playState;
23319
+ var destClipTime = destPlayData.clipTime, destPlayState = destPlayData.playState;
23320
+ var finished = destPlayData.playState === AnimatorStatePlayState.Finished;
23321
+ if (aniUpdate || finished) {
23322
+ for(var i = crossLayerOwnerCollection.length - 1; i >= 0; i--){
23323
+ var layerOwner = crossLayerOwnerCollection[i];
23324
+ var owner = layerOwner == null ? void 0 : layerOwner.curveOwner;
23325
+ if (!owner) continue;
23326
+ var srcCurveIndex = layerOwner.crossSrcCurveIndex;
23327
+ var destCurveIndex = layerOwner.crossDestCurveIndex;
23328
+ var value = owner.evaluateCrossFadeValue(srcCurveIndex >= 0 ? srcCurves[srcCurveIndex].curve : null, destCurveIndex >= 0 ? destCurves[destCurveIndex].curve : null, srcClipTime, destClipTime, crossWeight, additive);
23329
+ aniUpdate && owner.applyValue(value, weight, additive);
23330
+ finished && layerOwner.saveFinalValue();
23331
+ }
23231
23332
  }
23232
- var srcClipTime = srcPlayData.clipTime;
23233
- var destClipTime = destPlayData.clipTime;
23333
+ this._updateCrossFadeData(layerData, crossWeight, delta, false);
23234
23334
  srcEventHandlers.length && this._fireAnimationEvents(srcPlayData, srcEventHandlers, lastSrcClipTime, srcClipTime);
23235
23335
  destEventHandlers.length && this._fireAnimationEvents(destPlayData, destEventHandlers, lastDestClipTime, destClipTime);
23236
23336
  if (lastSrcPlayState === AnimatorStatePlayState.UnStarted) {
@@ -23249,28 +23349,34 @@ var AnimatorLayerBlendingMode;
23249
23349
  } else {
23250
23350
  this._callAnimatorScriptOnUpdate(destState, layerIndex);
23251
23351
  }
23252
- for(var i = crossCurveDataCollection.length - 1; i >= 0; i--){
23253
- var crossCurveData = crossCurveDataCollection[i];
23254
- var crossSrcCurveIndex = crossCurveData.crossSrcCurveIndex, crossDestCurveIndex = crossCurveData.crossDestCurveIndex;
23255
- crossCurveData.crossFadeAndApplyValue(crossSrcCurveIndex >= 0 ? srcCurves[crossSrcCurveIndex].curve : null, crossDestCurveIndex >= 0 ? destCurves[crossDestCurveIndex].curve : null, srcClipTime, destClipTime, crossWeight, weight, additive);
23256
- }
23257
23352
  };
23258
- _proto._updateCrossFadeFromPose = function _updateCrossFadeFromPose(destPlayData, layerData, layerIndex, layerWeight, delta, additive, aniUpdate) {
23259
- var crossCurveDataCollection = this._crossOwnerCollection;
23353
+ _proto._updateCrossFadeFromPose = function _updateCrossFadeFromPose(destPlayData, layerData, layerIndex, weight, delta, additive, aniUpdate) {
23354
+ var crossLayerOwnerCollection = layerData.crossLayerOwnerCollection;
23260
23355
  var state = destPlayData.state, stateData = destPlayData.stateData, lastPlayState = destPlayData.playState;
23261
23356
  var eventHandlers = stateData.eventHandlers;
23262
23357
  var _state_clip = state.clip, curveBindings = _state_clip._curveBindings;
23263
23358
  var lastDestClipTime = destPlayData.clipTime;
23264
- var crossWeight = Math.abs(destPlayData.frameTime) / (state._getDuration() * layerData.crossFadeTransition.duration);
23265
- crossWeight >= 1.0 && (crossWeight = 1.0);
23359
+ var duration = state._getDuration() * layerData.crossFadeTransition.duration;
23360
+ var crossWeight = Math.abs(destPlayData.frameTime) / duration;
23361
+ (crossWeight >= 1.0 || duration === 0) && (crossWeight = 1.0);
23266
23362
  destPlayData.update(this.speed < 0);
23267
23363
  var playState = destPlayData.playState;
23268
23364
  this._updateCrossFadeData(layerData, crossWeight, delta, true);
23269
- if (!aniUpdate) {
23270
- return;
23271
- }
23272
23365
  var destClipTime = destPlayData.clipTime;
23273
- //TODO: srcState 少了最新一段时间的判断
23366
+ var finished = playState === AnimatorStatePlayState.Finished;
23367
+ // 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.
23368
+ if (aniUpdate || finished) {
23369
+ for(var i = crossLayerOwnerCollection.length - 1; i >= 0; i--){
23370
+ var layerOwner = crossLayerOwnerCollection[i];
23371
+ var owner = layerOwner == null ? void 0 : layerOwner.curveOwner;
23372
+ if (!owner) continue;
23373
+ var curveIndex = layerOwner.crossDestCurveIndex;
23374
+ var value = layerOwner.curveOwner.crossFadeFromPoseAndApplyValue(curveIndex >= 0 ? curveBindings[curveIndex].curve : null, destClipTime, crossWeight, additive);
23375
+ aniUpdate && owner.applyValue(value, weight, additive);
23376
+ finished && layerOwner.saveFinalValue();
23377
+ }
23378
+ }
23379
+ //@todo: srcState is missing the judgment of the most recent period."
23274
23380
  eventHandlers.length && this._fireAnimationEvents(destPlayData, eventHandlers, lastDestClipTime, destClipTime);
23275
23381
  if (lastPlayState === AnimatorStatePlayState.UnStarted) {
23276
23382
  this._callAnimatorScriptOnEnter(state, layerIndex);
@@ -23280,10 +23386,18 @@ var AnimatorLayerBlendingMode;
23280
23386
  } else {
23281
23387
  this._callAnimatorScriptOnUpdate(state, layerIndex);
23282
23388
  }
23283
- for(var i = crossCurveDataCollection.length - 1; i >= 0; i--){
23284
- var crossCurveData = crossCurveDataCollection[i];
23285
- var crossDestCurveIndex = crossCurveData.crossDestCurveIndex;
23286
- crossCurveData.crossFadeFromPoseAndApplyValue(crossDestCurveIndex >= 0 ? curveBindings[crossDestCurveIndex].curve : null, destClipTime, crossWeight, layerWeight, additive);
23389
+ };
23390
+ _proto._updateFinishedState = function _updateFinishedState(playData, weight, additive, aniUpdate) {
23391
+ if (!aniUpdate) {
23392
+ return;
23393
+ }
23394
+ var curveLayerOwner = playData.stateData.curveLayerOwner;
23395
+ var _playData_state_clip = playData.state.clip, curveBindings = _playData_state_clip._curveBindings;
23396
+ for(var i = curveBindings.length - 1; i >= 0; i--){
23397
+ var layerOwner = curveLayerOwner[i];
23398
+ var owner = layerOwner == null ? void 0 : layerOwner.curveOwner;
23399
+ if (!owner) continue;
23400
+ owner.applyValue(layerOwner.finalValue, weight, additive);
23287
23401
  }
23288
23402
  };
23289
23403
  _proto._updateCrossFadeData = function _updateCrossFadeData(layerData, crossWeight, delta, fixed) {
@@ -23291,7 +23405,7 @@ var AnimatorLayerBlendingMode;
23291
23405
  destPlayData.frameTime += destPlayData.state.speed * delta;
23292
23406
  if (crossWeight === 1.0) {
23293
23407
  if (destPlayData.playState === AnimatorStatePlayState.Finished) {
23294
- layerData.layerState = LayerState.Standby;
23408
+ layerData.layerState = LayerState.Finished;
23295
23409
  } else {
23296
23410
  layerData.layerState = LayerState.Playing;
23297
23411
  }
@@ -23301,25 +23415,24 @@ var AnimatorLayerBlendingMode;
23301
23415
  fixed || (layerData.srcPlayData.frameTime += layerData.srcPlayData.state.speed * delta);
23302
23416
  }
23303
23417
  };
23304
- _proto._preparePlay = function _preparePlay(layerData, playState, playStateData) {
23418
+ _proto._preparePlay = function _preparePlay(layerData, playState) {
23305
23419
  if (layerData.layerState === LayerState.Playing) {
23306
23420
  var srcPlayData = layerData.srcPlayData;
23307
23421
  if (srcPlayData.state !== playState) {
23308
- var curveOwners = srcPlayData.stateData.curveOwners;
23309
- for(var i = curveOwners.length - 1; i >= 0; i--){
23310
- var owner = curveOwners[i];
23311
- (owner == null ? void 0 : owner.hasSavedDefaultValue) && owner.revertDefaultValue();
23422
+ var curveLayerOwner = srcPlayData.stateData.curveLayerOwner;
23423
+ for(var i = curveLayerOwner.length - 1; i >= 0; i--){
23424
+ var _curveLayerOwner_i;
23425
+ var owner = (_curveLayerOwner_i = curveLayerOwner[i]) == null ? void 0 : _curveLayerOwner_i.curveOwner;
23426
+ owner.revertDefaultValue();
23312
23427
  }
23313
- this._saveDefaultValues(playStateData);
23314
23428
  }
23315
23429
  } else {
23316
- // layerState is CrossFading, FixedCrossFading, Standby
23317
- var crossCurveDataCollection = this._crossOwnerCollection;
23318
- for(var i1 = crossCurveDataCollection.length - 1; i1 >= 0; i1--){
23319
- var owner1 = crossCurveDataCollection[i1];
23320
- owner1.hasSavedDefaultValue && owner1.revertDefaultValue();
23430
+ // layerState is CrossFading, FixedCrossFading, Standby, Finished
23431
+ var crossLayerOwnerCollection = layerData.crossLayerOwnerCollection;
23432
+ for(var i1 = crossLayerOwnerCollection.length - 1; i1 >= 0; i1--){
23433
+ var owner1 = crossLayerOwnerCollection[i1].curveOwner;
23434
+ owner1.revertDefaultValue();
23321
23435
  }
23322
- this._saveDefaultValues(playStateData);
23323
23436
  }
23324
23437
  };
23325
23438
  _proto._checkTransition = function _checkTransition(stateData, crossFadeTransition, layerIndex) {
@@ -23336,7 +23449,7 @@ var AnimatorLayerBlendingMode;
23336
23449
  _proto._crossFadeByTransition = function _crossFadeByTransition(transition, layerIndex) {
23337
23450
  var name = transition.destinationState.name;
23338
23451
  var stateInfo = this._getAnimatorStateInfo(name, layerIndex);
23339
- var crossState = stateInfo.state;
23452
+ var crossState = stateInfo.state, playLayerIndex = stateInfo.layerIndex;
23340
23453
  if (!crossState) {
23341
23454
  return;
23342
23455
  }
@@ -23344,21 +23457,21 @@ var AnimatorLayerBlendingMode;
23344
23457
  console.warn("The state named " + name + " has no AnimationClip data.");
23345
23458
  return;
23346
23459
  }
23347
- var animatorLayerData = this._getAnimatorLayerData(stateInfo.layerIndex);
23460
+ var animatorLayerData = this._getAnimatorLayerData(playLayerIndex);
23348
23461
  var layerState = animatorLayerData.layerState;
23349
23462
  var destPlayData = animatorLayerData.destPlayData;
23350
- var animatorStateData = this._getAnimatorStateData(name, crossState, animatorLayerData);
23463
+ var animatorStateData = this._getAnimatorStateData(name, crossState, animatorLayerData, playLayerIndex);
23351
23464
  var duration = crossState._getDuration();
23352
23465
  var offset = duration * transition.offset;
23353
23466
  destPlayData.reset(crossState, animatorStateData, offset);
23354
23467
  switch(layerState){
23355
- // Maybe not play, maybe end.
23356
23468
  case LayerState.Standby:
23357
23469
  animatorLayerData.layerState = LayerState.FixedCrossFading;
23358
23470
  this._clearCrossData(animatorLayerData);
23359
23471
  this._prepareStandbyCrossFading(animatorLayerData);
23360
23472
  break;
23361
23473
  case LayerState.Playing:
23474
+ case LayerState.Finished:
23362
23475
  animatorLayerData.layerState = LayerState.CrossFading;
23363
23476
  this._clearCrossData(animatorLayerData);
23364
23477
  this._prepareCrossFading(animatorLayerData);
@@ -23455,6 +23568,12 @@ var AnimatorLayerBlendingMode;
23455
23568
  }
23456
23569
  }
23457
23570
  };
23571
+ _proto._revertCurveOwners = function _revertCurveOwners() {
23572
+ var curveOwners = this._needRevertCurveOwners;
23573
+ for(var i = 0, n = curveOwners.length; i < n; ++i){
23574
+ curveOwners[i].revertDefaultValue();
23575
+ }
23576
+ };
23458
23577
  _create_class(Animator, [
23459
23578
  {
23460
23579
  key: "animatorController",
@@ -23486,10 +23605,10 @@ __decorate([
23486
23605
  ], Animator.prototype, "_animatorLayersData", void 0);
23487
23606
  __decorate([
23488
23607
  ignoreClone
23489
- ], Animator.prototype, "_crossOwnerCollection", void 0);
23608
+ ], Animator.prototype, "_curveOwnerPool", void 0);
23490
23609
  __decorate([
23491
23610
  ignoreClone
23492
- ], Animator.prototype, "_animationCurveOwners", void 0);
23611
+ ], Animator.prototype, "_needRevertCurveOwners", void 0);
23493
23612
  __decorate([
23494
23613
  ignoreClone
23495
23614
  ], Animator.prototype, "_animationEventHandlerPool", void 0);