@galacean/engine-physics-physx 0.9.13 → 0.9.14

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.
@@ -21253,8 +21253,6 @@ var DirtyFlag;
21253
21253
  * @internal
21254
21254
  */ var AnimationCurveOwner = /*#__PURE__*/ function() {
21255
21255
  function AnimationCurveOwner(target, type, property, cureType) {
21256
- this.crossCurveMark = 0;
21257
- this.hasSavedDefaultValue = false;
21258
21256
  this.baseEvaluateData = {
21259
21257
  curKeyframeIndex: 0,
21260
21258
  value: null
@@ -21267,7 +21265,7 @@ var DirtyFlag;
21267
21265
  this.type = type;
21268
21266
  this.property = property;
21269
21267
  this.component = target.getComponent(type);
21270
- this._cureType = cureType;
21268
+ this.cureType = cureType;
21271
21269
  var assemblerType = AnimationCurveOwner.getAssemblerType(type, property);
21272
21270
  this._assembler = new assemblerType();
21273
21271
  this._assembler.initialize(this);
@@ -21276,89 +21274,80 @@ var DirtyFlag;
21276
21274
  }
21277
21275
  }
21278
21276
  var _proto = AnimationCurveOwner.prototype;
21279
- _proto.evaluateAndApplyValue = function evaluateAndApplyValue(curve, time, layerWeight, additive) {
21280
- if (curve.keys.length) {
21281
- if (additive) {
21282
- var value = curve._evaluateAdditive(time, this.baseEvaluateData);
21283
- var cureType = this._cureType;
21284
- if (cureType._isReferenceType) {
21285
- cureType._additiveValue(value, layerWeight, this.referenceTargetValue);
21286
- } else {
21287
- var assembler = this._assembler;
21288
- var originValue = assembler.getTargetValue();
21289
- var additiveValue = cureType._additiveValue(value, layerWeight, originValue);
21290
- assembler.setTargetValue(additiveValue);
21291
- }
21292
- } else {
21293
- var value1 = curve._evaluate(time, this.baseEvaluateData);
21294
- this._applyValue(value1, layerWeight);
21295
- }
21296
- }
21277
+ _proto.evaluateValue = function evaluateValue(curve, time, additive) {
21278
+ return additive ? curve._evaluateAdditive(time, this.baseEvaluateData) : curve._evaluate(time, this.baseEvaluateData);
21297
21279
  };
21298
- _proto.crossFadeAndApplyValue = function crossFadeAndApplyValue(srcCurve, destCurve, srcTime, destTime, crossWeight, layerWeight, additive) {
21299
- 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;
21300
- 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;
21301
- this._applyCrossValue(srcValue, destValue, crossWeight, layerWeight, additive);
21280
+ _proto.evaluateCrossFadeValue = function evaluateCrossFadeValue(srcCurve, destCurve, srcTime, destTime, crossWeight, additive) {
21281
+ 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;
21282
+ 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;
21283
+ return this._lerpValue(srcValue, destValue, crossWeight);
21302
21284
  };
21303
- _proto.crossFadeFromPoseAndApplyValue = function crossFadeFromPoseAndApplyValue(destCurve, destTime, crossWeight, layerWeight, additive) {
21304
- var srcValue = additive ? this._cureType._subtractValue(this.fixedPoseValue, this.defaultValue, this.baseEvaluateData.value) : this.fixedPoseValue;
21305
- 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;
21306
- this._applyCrossValue(srcValue, destValue, crossWeight, layerWeight, additive);
21285
+ _proto.crossFadeFromPoseAndApplyValue = function crossFadeFromPoseAndApplyValue(destCurve, destTime, crossWeight, additive) {
21286
+ var srcValue = additive ? this.cureType._subtractValue(this.fixedPoseValue, this.defaultValue, this.baseEvaluateData.value) : this.fixedPoseValue;
21287
+ 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;
21288
+ return this._lerpValue(srcValue, destValue, crossWeight);
21307
21289
  };
21308
21290
  _proto.revertDefaultValue = function revertDefaultValue() {
21309
21291
  this._assembler.setTargetValue(this.defaultValue);
21310
21292
  };
21293
+ _proto.getEvaluateValue = function getEvaluateValue(out) {
21294
+ if (this.cureType._isReferenceType) {
21295
+ this.cureType._copyValue(this.baseEvaluateData.value, out);
21296
+ return out;
21297
+ } else {
21298
+ return this.baseEvaluateData.value;
21299
+ }
21300
+ };
21311
21301
  _proto.saveDefaultValue = function saveDefaultValue() {
21312
- if (this._cureType._isReferenceType) {
21313
- this._cureType._copyValue(this.referenceTargetValue, this.defaultValue);
21302
+ if (this.cureType._isReferenceType) {
21303
+ this.cureType._copyValue(this.referenceTargetValue, this.defaultValue);
21314
21304
  } else {
21315
21305
  this.defaultValue = this._assembler.getTargetValue();
21316
21306
  }
21317
- this.hasSavedDefaultValue = true;
21318
21307
  };
21319
21308
  _proto.saveFixedPoseValue = function saveFixedPoseValue() {
21320
- if (this._cureType._isReferenceType) {
21321
- this._cureType._copyValue(this.referenceTargetValue, this.fixedPoseValue);
21309
+ if (this.cureType._isReferenceType) {
21310
+ this.cureType._copyValue(this.referenceTargetValue, this.fixedPoseValue);
21322
21311
  } else {
21323
21312
  this.fixedPoseValue = this._assembler.getTargetValue();
21324
21313
  }
21325
21314
  };
21326
- _proto._applyValue = function _applyValue(value, weight) {
21327
- if (weight === 1.0) {
21328
- if (this._cureType._isReferenceType) {
21329
- this._cureType._copyValue(value, this.referenceTargetValue);
21315
+ _proto.applyValue = function applyValue(value, weight, additive) {
21316
+ var cureType = this.cureType;
21317
+ if (additive) {
21318
+ if (cureType._isReferenceType) {
21319
+ cureType._additiveValue(value, weight, this.referenceTargetValue);
21330
21320
  } else {
21331
- this._assembler.setTargetValue(value);
21321
+ var assembler = this._assembler;
21322
+ var originValue = assembler.getTargetValue();
21323
+ var additiveValue = cureType._additiveValue(value, weight, originValue);
21324
+ assembler.setTargetValue(additiveValue);
21332
21325
  }
21333
21326
  } else {
21334
- if (this._cureType._isReferenceType) {
21335
- var targetValue = this.referenceTargetValue;
21336
- this._cureType._lerpValue(targetValue, value, weight, targetValue);
21327
+ if (weight === 1.0) {
21328
+ if (cureType._isReferenceType) {
21329
+ cureType._copyValue(value, this.referenceTargetValue);
21330
+ } else {
21331
+ this._assembler.setTargetValue(value);
21332
+ }
21337
21333
  } else {
21338
- var originValue = this._assembler.getTargetValue();
21339
- var lerpValue = this._cureType._lerpValue(originValue, value, weight);
21340
- this._assembler.setTargetValue(lerpValue);
21334
+ if (cureType._isReferenceType) {
21335
+ var targetValue = this.referenceTargetValue;
21336
+ cureType._lerpValue(targetValue, value, weight, targetValue);
21337
+ } else {
21338
+ var originValue1 = this._assembler.getTargetValue();
21339
+ var lerpValue = cureType._lerpValue(originValue1, value, weight);
21340
+ this._assembler.setTargetValue(lerpValue);
21341
+ }
21341
21342
  }
21342
21343
  }
21343
21344
  };
21344
- _proto._applyCrossValue = function _applyCrossValue(srcValue, destValue, crossWeight, layerWeight, additive) {
21345
- var out;
21346
- if (this._cureType._isReferenceType) {
21347
- out = this.baseEvaluateData.value;
21348
- this._cureType._lerpValue(srcValue, destValue, crossWeight, out);
21349
- } else {
21350
- out = this._cureType._lerpValue(srcValue, destValue, crossWeight);
21351
- }
21352
- if (additive) {
21353
- if (this._cureType._isReferenceType) {
21354
- this._cureType._additiveValue(out, layerWeight, this.referenceTargetValue);
21355
- } else {
21356
- var originValue = this._assembler.getTargetValue();
21357
- var lerpValue = this._cureType._additiveValue(out, layerWeight, originValue);
21358
- this._assembler.setTargetValue(lerpValue);
21359
- }
21345
+ _proto._lerpValue = function _lerpValue(srcValue, destValue, crossWeight) {
21346
+ if (this.cureType._isReferenceType) {
21347
+ return this.cureType._lerpValue(srcValue, destValue, crossWeight, this.baseEvaluateData.value);
21360
21348
  } else {
21361
- this._applyValue(out, layerWeight);
21349
+ this.baseEvaluateData.value = this.cureType._lerpValue(srcValue, destValue, crossWeight);
21350
+ return this.baseEvaluateData.value;
21362
21351
  }
21363
21352
  };
21364
21353
  AnimationCurveOwner.registerAssembler = function registerAssembler(componentType, property, assemblerType) {
@@ -21447,6 +21436,26 @@ AnimationCurveOwner.registerAssembler(Transform, "scale", ScaleAnimationCurveOwn
21447
21436
  return BlendShapeWeightsAnimationCurveOwnerAssembler;
21448
21437
  }();
21449
21438
  AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights", BlendShapeWeightsAnimationCurveOwnerAssembler);
21439
+ /**
21440
+ * @internal
21441
+ */ var AnimationCurveLayerOwner = /*#__PURE__*/ function() {
21442
+ var AnimationCurveLayerOwner = function AnimationCurveLayerOwner() {
21443
+ this.crossCurveMark = 0;
21444
+ };
21445
+ var _proto = AnimationCurveLayerOwner.prototype;
21446
+ _proto.initFinalValue = function initFinalValue() {
21447
+ var _this_curveOwner = this.curveOwner, cureType = _this_curveOwner.cureType, defaultValue = _this_curveOwner.defaultValue;
21448
+ if (cureType._isReferenceType) {
21449
+ cureType._copyValue(defaultValue, this.finalValue);
21450
+ } else {
21451
+ this.finalValue = defaultValue;
21452
+ }
21453
+ };
21454
+ _proto.saveFinalValue = function saveFinalValue() {
21455
+ this.finalValue = this.curveOwner.getEvaluateValue(this.finalValue);
21456
+ };
21457
+ return AnimationCurveLayerOwner;
21458
+ }();
21450
21459
  /**
21451
21460
  * Associate AnimationCurve and the Entity
21452
21461
  */ var AnimationClipCurveBinding = /*#__PURE__*/ function() {
@@ -21460,10 +21469,22 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
21460
21469
  var curveType = this.curve.constructor;
21461
21470
  var owner = new AnimationCurveOwner(entity, this.type, this.property, curveType);
21462
21471
  curveType._initializeOwner(owner);
21472
+ owner.saveDefaultValue();
21463
21473
  return owner;
21464
21474
  };
21465
21475
  /**
21466
21476
  * @internal
21477
+ */ _proto._createCurveLayerOwner = function _createCurveLayerOwner(owner) {
21478
+ var curveType = this.curve.constructor;
21479
+ var layerOwner = new AnimationCurveLayerOwner();
21480
+ curveType._initializeLayerOwner(layerOwner);
21481
+ layerOwner.curveOwner = owner;
21482
+ // If curve.keys.length is 0, updateFinishedState will assign 0 to the target, causing an error, so initialize by assigning defaultValue to finalValue.
21483
+ layerOwner.initFinalValue();
21484
+ return layerOwner;
21485
+ };
21486
+ /**
21487
+ * @internal
21467
21488
  */ _proto._getTempCurveOwner = function _getTempCurveOwner(entity) {
21468
21489
  var instanceId = entity.instanceId;
21469
21490
  if (!this._tempCurveOwner[instanceId]) {
@@ -21540,7 +21561,8 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
21540
21561
  var targetEntity = entity.findByPath(curveData.relativePath);
21541
21562
  if (targetEntity) {
21542
21563
  var curveOwner = curveData._getTempCurveOwner(targetEntity);
21543
- curveOwner.evaluateAndApplyValue(curveData.curve, time, 1, false);
21564
+ var value = curveOwner.evaluateValue(curveData.curve, time, false);
21565
+ curveOwner.applyValue(value, 1, false);
21544
21566
  }
21545
21567
  }
21546
21568
  };
@@ -21682,6 +21704,7 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
21682
21704
  break;
21683
21705
  }
21684
21706
  }
21707
+ evaluateData.value = value;
21685
21708
  return value;
21686
21709
  };
21687
21710
  /**
@@ -21737,6 +21760,11 @@ exports.AnimationArrayCurve = (_AnimationArrayCurve = /*#__PURE__*/ function(Ani
21737
21760
  };
21738
21761
  /**
21739
21762
  * @internal
21763
+ */ AnimationArrayCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
21764
+ owner.finalValue = [];
21765
+ };
21766
+ /**
21767
+ * @internal
21740
21768
  */ AnimationArrayCurve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
21741
21769
  for(var i = 0, n = out.length; i < n; ++i){
21742
21770
  var src = srcValue[i];
@@ -21826,6 +21854,11 @@ exports.AnimationBoolCurve = (_AnimationBoolCurve = /*#__PURE__*/ function(Anima
21826
21854
  };
21827
21855
  /**
21828
21856
  * @internal
21857
+ */ AnimationBoolCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
21858
+ owner.finalValue = false;
21859
+ };
21860
+ /**
21861
+ * @internal
21829
21862
  */ AnimationBoolCurve._lerpValue = function _lerpValue(srcValue, destValue) {
21830
21863
  return destValue;
21831
21864
  };
@@ -21882,6 +21915,11 @@ exports.AnimationColorCurve = (_AnimationColorCurve = /*#__PURE__*/ function(Ani
21882
21915
  };
21883
21916
  /**
21884
21917
  * @internal
21918
+ */ AnimationColorCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
21919
+ owner.finalValue = new miniprogram$7.Color();
21920
+ };
21921
+ /**
21922
+ * @internal
21885
21923
  */ AnimationColorCurve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
21886
21924
  miniprogram$7.Color.lerp(srcValue, destValue, weight, out);
21887
21925
  return out;
@@ -21988,6 +22026,12 @@ exports.AnimationFloatArrayCurve = (_AnimationFloatArrayCurve = /*#__PURE__*/ fu
21988
22026
  };
21989
22027
  /**
21990
22028
  * @internal
22029
+ */ AnimationFloatArrayCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
22030
+ var size = owner.curveOwner.referenceTargetValue.length;
22031
+ owner.finalValue = new Float32Array(size);
22032
+ };
22033
+ /**
22034
+ * @internal
21991
22035
  */ AnimationFloatArrayCurve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
21992
22036
  for(var i = 0, n = out.length; i < n; ++i){
21993
22037
  var src = srcValue[i];
@@ -22077,6 +22121,11 @@ exports.AnimationFloatCurve = (_AnimationFloatCurve = /*#__PURE__*/ function(Ani
22077
22121
  };
22078
22122
  /**
22079
22123
  * @internal
22124
+ */ AnimationFloatCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
22125
+ owner.finalValue = 0;
22126
+ };
22127
+ /**
22128
+ * @internal
22080
22129
  */ AnimationFloatCurve._lerpValue = function _lerpValue(srcValue, destValue, crossWeight) {
22081
22130
  return srcValue + (destValue - srcValue) * crossWeight;
22082
22131
  };
@@ -22145,6 +22194,11 @@ exports.AnimationQuaternionCurve = (_AnimationQuaternionCurve = /*#__PURE__*/ fu
22145
22194
  };
22146
22195
  /**
22147
22196
  * @internal
22197
+ */ AnimationQuaternionCurve1._initializeLayerOwner = function _initializeLayerOwner(owner) {
22198
+ owner.finalValue = new miniprogram$7.Quaternion();
22199
+ };
22200
+ /**
22201
+ * @internal
22148
22202
  */ AnimationQuaternionCurve1._lerpValue = function _lerpValue(src, dest, weight, out) {
22149
22203
  miniprogram$7.Quaternion.slerp(src, dest, weight, out);
22150
22204
  return out;
@@ -22248,6 +22302,11 @@ exports.AnimationVector2Curve = (_AnimationVector2Curve = /*#__PURE__*/ function
22248
22302
  };
22249
22303
  /**
22250
22304
  * @internal
22305
+ */ AnimationVector2Curve._initializeLayerOwner = function _initializeLayerOwner(owner) {
22306
+ owner.finalValue = new miniprogram$7.Vector2();
22307
+ };
22308
+ /**
22309
+ * @internal
22251
22310
  */ AnimationVector2Curve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
22252
22311
  miniprogram$7.Vector2.lerp(srcValue, destValue, weight, out);
22253
22312
  return out;
@@ -22332,6 +22391,11 @@ exports.AnimationVector3Curve = (_AnimationVector3Curve = /*#__PURE__*/ function
22332
22391
  };
22333
22392
  /**
22334
22393
  * @internal
22394
+ */ AnimationVector3Curve._initializeLayerOwner = function _initializeLayerOwner(owner) {
22395
+ owner.finalValue = new miniprogram$7.Vector3();
22396
+ };
22397
+ /**
22398
+ * @internal
22335
22399
  */ AnimationVector3Curve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
22336
22400
  miniprogram$7.Vector3.lerp(srcValue, destValue, weight, out);
22337
22401
  return out;
@@ -22428,6 +22492,11 @@ exports.AnimationVector4Curve = (_AnimationVector4Curve = /*#__PURE__*/ function
22428
22492
  };
22429
22493
  /**
22430
22494
  * @internal
22495
+ */ AnimationVector4Curve._initializeLayerOwner = function _initializeLayerOwner(owner) {
22496
+ owner.finalValue = new miniprogram$7.Vector4();
22497
+ };
22498
+ /**
22499
+ * @internal
22431
22500
  */ AnimationVector4Curve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
22432
22501
  miniprogram$7.Vector4.lerp(srcValue, destValue, weight, out);
22433
22502
  return out;
@@ -22533,6 +22602,7 @@ exports.AnimatorLayerBlendingMode = void 0;
22533
22602
  LayerState[LayerState[/** Playing state. */ "Playing"] = 1] = "Playing";
22534
22603
  LayerState[LayerState[/** CrossFading state. */ "CrossFading"] = 2] = "CrossFading";
22535
22604
  LayerState[LayerState[/** FixedCrossFading state. */ "FixedCrossFading"] = 3] = "FixedCrossFading";
22605
+ LayerState[LayerState[/** Finished state. */ "Finished"] = 4] = "Finished";
22536
22606
  })(LayerState || (LayerState = {}));
22537
22607
  /**
22538
22608
  * @internal
@@ -22599,12 +22669,14 @@ exports.AnimatorLayerBlendingMode = void 0;
22599
22669
  * @internal
22600
22670
  */ var AnimatorLayerData = /*#__PURE__*/ function() {
22601
22671
  var AnimatorLayerData = function AnimatorLayerData() {
22672
+ this.curveOwnerPool = Object.create(null);
22602
22673
  this.animatorStateDataMap = {};
22603
22674
  this.srcPlayData = new AnimatorStatePlayData();
22604
22675
  this.destPlayData = new AnimatorStatePlayData();
22605
22676
  this.layerState = LayerState.Standby;
22606
22677
  this.crossCurveMark = 0;
22607
22678
  this.manuallyTransition = new AnimatorStateTransition();
22679
+ this.crossLayerOwnerCollection = [];
22608
22680
  };
22609
22681
  var _proto = AnimatorLayerData.prototype;
22610
22682
  _proto.switchPlayData = function switchPlayData() {
@@ -22618,7 +22690,7 @@ exports.AnimatorLayerBlendingMode = void 0;
22618
22690
  /**
22619
22691
  * @internal
22620
22692
  */ var AnimatorStateData = function AnimatorStateData() {
22621
- this.curveOwners = [];
22693
+ this.curveLayerOwner = [];
22622
22694
  this.eventHandlers = [];
22623
22695
  };
22624
22696
  /**
@@ -22630,8 +22702,8 @@ exports.AnimatorLayerBlendingMode = void 0;
22630
22702
  /** Culling mode of this Animator. */ _this.cullingMode = exports.AnimatorCullingMode.None;
22631
22703
  /** The playback speed of the Animator, 1.0 is normal playback speed. */ _this.speed = 1.0;
22632
22704
  _this._animatorLayersData = [];
22633
- _this._crossOwnerCollection = [];
22634
- _this._animationCurveOwners = [];
22705
+ _this._curveOwnerPool = Object.create(null);
22706
+ _this._needRevertCurveOwners = [];
22635
22707
  _this._animationEventHandlerPool = new ClassPool(AnimationEventHandler);
22636
22708
  _this._tempAnimatorStateInfo = {
22637
22709
  layerIndex: -1,
@@ -22655,7 +22727,7 @@ exports.AnimatorLayerBlendingMode = void 0;
22655
22727
  this._reset();
22656
22728
  }
22657
22729
  var stateInfo = this._getAnimatorStateInfo(stateName, layerIndex);
22658
- var state = stateInfo.state;
22730
+ var state = stateInfo.state, playLayerIndex = stateInfo.layerIndex;
22659
22731
  if (!state) {
22660
22732
  return;
22661
22733
  }
@@ -22664,9 +22736,8 @@ exports.AnimatorLayerBlendingMode = void 0;
22664
22736
  return;
22665
22737
  }
22666
22738
  var animatorLayerData = this._getAnimatorLayerData(stateInfo.layerIndex);
22667
- //TODO CM: Not consider same stateName, but different animation
22668
- var animatorStateData = this._getAnimatorStateData(stateName, state, animatorLayerData);
22669
- this._preparePlay(animatorLayerData, state, animatorStateData);
22739
+ var animatorStateData = this._getAnimatorStateData(stateName, state, animatorLayerData, playLayerIndex);
22740
+ this._preparePlay(animatorLayerData, state);
22670
22741
  animatorLayerData.layerState = LayerState.Playing;
22671
22742
  animatorLayerData.srcPlayData.reset(state, animatorStateData, state._getDuration() * normalizedTimeOffset);
22672
22743
  };
@@ -22717,6 +22788,7 @@ exports.AnimatorLayerBlendingMode = void 0;
22717
22788
  return;
22718
22789
  }
22719
22790
  deltaTime *= this.speed;
22791
+ this._revertCurveOwners();
22720
22792
  for(var i1 = 0, n1 = animatorController.layers.length; i1 < n1; i1++){
22721
22793
  var animatorLayerData = this._getAnimatorLayerData(i1);
22722
22794
  if (animatorLayerData.layerState === LayerState.Standby) {
@@ -22757,17 +22829,17 @@ exports.AnimatorLayerBlendingMode = void 0;
22757
22829
  /**
22758
22830
  * @internal
22759
22831
  */ _proto._reset = function _reset() {
22760
- var _this = this, animationCurveOwners = _this._animationCurveOwners;
22832
+ var _this = this, animationCurveOwners = _this._curveOwnerPool;
22761
22833
  for(var instanceId in animationCurveOwners){
22762
22834
  var propertyOwners = animationCurveOwners[instanceId];
22763
22835
  for(var property in propertyOwners){
22764
22836
  var owner = propertyOwners[property];
22765
- owner.hasSavedDefaultValue && owner.revertDefaultValue();
22837
+ owner.revertDefaultValue();
22766
22838
  }
22767
22839
  }
22768
22840
  this._animatorLayersData.length = 0;
22769
- this._crossOwnerCollection.length = 0;
22770
- this._animationCurveOwners.length = 0;
22841
+ this._needRevertCurveOwners.length = 0;
22842
+ this._curveOwnerPool = {};
22771
22843
  this._animationEventHandlerPool.resetPool();
22772
22844
  if (this._controllerUpdateFlag) {
22773
22845
  this._controllerUpdateFlag.flag = false;
@@ -22794,38 +22866,51 @@ exports.AnimatorLayerBlendingMode = void 0;
22794
22866
  stateInfo.state = state;
22795
22867
  return stateInfo;
22796
22868
  };
22797
- _proto._saveDefaultValues = function _saveDefaultValues(stateData) {
22798
- var curveOwners = stateData.curveOwners;
22799
- for(var i = curveOwners.length - 1; i >= 0; i--){
22800
- var _curveOwners_i;
22801
- (_curveOwners_i = curveOwners[i]) == null ? void 0 : _curveOwners_i.saveDefaultValue();
22802
- }
22803
- };
22804
- _proto._getAnimatorStateData = function _getAnimatorStateData(stateName, animatorState, animatorLayerData) {
22869
+ _proto._getAnimatorStateData = function _getAnimatorStateData(stateName, animatorState, animatorLayerData, layerIndex) {
22805
22870
  var animatorStateDataMap = animatorLayerData.animatorStateDataMap;
22806
22871
  var animatorStateData = animatorStateDataMap[stateName];
22807
22872
  if (!animatorStateData) {
22808
22873
  animatorStateData = new AnimatorStateData();
22809
22874
  animatorStateDataMap[stateName] = animatorStateData;
22810
- this._saveAnimatorStateData(animatorState, animatorStateData);
22875
+ this._saveAnimatorStateData(animatorState, animatorStateData, animatorLayerData, layerIndex);
22811
22876
  this._saveAnimatorEventHandlers(animatorState, animatorStateData);
22812
22877
  }
22813
22878
  return animatorStateData;
22814
22879
  };
22815
- _proto._saveAnimatorStateData = function _saveAnimatorStateData(animatorState, animatorStateData) {
22816
- var _this = this, entity = _this.entity, animationCureOwners = _this._animationCurveOwners;
22817
- var curveOwners = animatorStateData.curveOwners;
22880
+ _proto._saveAnimatorStateData = function _saveAnimatorStateData(animatorState, animatorStateData, animatorLayerData, layerIndex) {
22881
+ var _this = this, entity = _this.entity, curveOwnerPool = _this._curveOwnerPool;
22882
+ var curveLayerOwner = animatorStateData.curveLayerOwner;
22883
+ var layerCurveOwnerPool = animatorLayerData.curveOwnerPool;
22818
22884
  var _animatorState_clip = animatorState.clip, curves = _animatorState_clip._curveBindings;
22819
22885
  for(var i = curves.length - 1; i >= 0; i--){
22820
22886
  var curve = curves[i];
22821
22887
  var targetEntity = curve.relativePath === "" ? entity : entity.findByPath(curve.relativePath);
22822
22888
  if (targetEntity) {
22889
+ var _curveOwnerPool, _instanceId, _propertyOwners, _property, _layerCurveOwnerPool, _instanceId1, _layerPropertyOwners, _property1;
22823
22890
  var property = curve.property;
22824
22891
  var instanceId = targetEntity.instanceId;
22825
- var propertyOwners = animationCureOwners[instanceId] || (animationCureOwners[instanceId] = {});
22826
- curveOwners[i] = propertyOwners[property] || (propertyOwners[property] = curve._createCurveOwner(targetEntity));
22892
+ var needRevert = false;
22893
+ var baseAnimatorLayerData = this._animatorLayersData[0];
22894
+ var baseLayerCurveOwnerPool = baseAnimatorLayerData.curveOwnerPool;
22895
+ if (this.animatorController.layers[layerIndex].blendingMode === exports.AnimatorLayerBlendingMode.Additive && layerIndex > 0 && !(baseLayerCurveOwnerPool[instanceId] && baseLayerCurveOwnerPool[instanceId][property])) {
22896
+ needRevert = true;
22897
+ }
22898
+ // Get owner
22899
+ var propertyOwners = (_curveOwnerPool = curveOwnerPool)[_instanceId = instanceId] || (_curveOwnerPool[_instanceId] = Object.create(null));
22900
+ var owner = (_propertyOwners = propertyOwners)[_property = property] || (_propertyOwners[_property] = curve._createCurveOwner(targetEntity));
22901
+ //@todo: There is performance waste here, which will be handled together with organizing AnimatorStateData later. The logic is changing from runtime to initialization.
22902
+ if (needRevert) {
22903
+ this._needRevertCurveOwners.push(owner);
22904
+ } else {
22905
+ var index = this._needRevertCurveOwners.indexOf(owner);
22906
+ index > -1 && this._needRevertCurveOwners.splice(index, 1);
22907
+ }
22908
+ // Get layer owner
22909
+ var layerPropertyOwners = (_layerCurveOwnerPool = layerCurveOwnerPool)[_instanceId1 = instanceId] || (_layerCurveOwnerPool[_instanceId1] = Object.create(null));
22910
+ var layerOwner = (_layerPropertyOwners = layerPropertyOwners)[_property1 = property] || (_layerPropertyOwners[_property1] = curve._createCurveLayerOwner(owner));
22911
+ curveLayerOwner[i] = layerOwner;
22827
22912
  } else {
22828
- curveOwners[i] = null;
22913
+ curveLayerOwner[i] = null;
22829
22914
  console.warn("The entity don't have the child entity which path is " + curve.relativePath + ".");
22830
22915
  }
22831
22916
  }
@@ -22853,65 +22938,60 @@ exports.AnimatorLayerBlendingMode = void 0;
22853
22938
  };
22854
22939
  _proto._clearCrossData = function _clearCrossData(animatorLayerData) {
22855
22940
  animatorLayerData.crossCurveMark++;
22856
- this._crossOwnerCollection.length = 0;
22941
+ animatorLayerData.crossLayerOwnerCollection.length = 0;
22857
22942
  };
22858
- _proto._addCrossCurveData = function _addCrossCurveData(crossCurveData, owner, curCurveIndex, nextCurveIndex) {
22859
- owner.crossSrcCurveIndex = curCurveIndex;
22860
- owner.crossDestCurveIndex = nextCurveIndex;
22861
- crossCurveData.push(owner);
22943
+ _proto._addCrossOwner = function _addCrossOwner(animatorLayerData, layerOwner, curCurveIndex, nextCurveIndex) {
22944
+ layerOwner.crossSrcCurveIndex = curCurveIndex;
22945
+ layerOwner.crossDestCurveIndex = nextCurveIndex;
22946
+ animatorLayerData.crossLayerOwnerCollection.push(layerOwner);
22862
22947
  };
22863
22948
  _proto._prepareCrossFading = function _prepareCrossFading(animatorLayerData) {
22864
- var crossCurveData = this._crossOwnerCollection;
22865
- var crossCurveMark = animatorLayerData.crossCurveMark;
22866
22949
  // Add src cross curve data.
22867
- this._prepareSrcCrossData(crossCurveData, animatorLayerData.srcPlayData, crossCurveMark, false);
22950
+ this._prepareSrcCrossData(animatorLayerData, false);
22868
22951
  // Add dest cross curve data.
22869
- this._prepareDestCrossData(crossCurveData, animatorLayerData.destPlayData, crossCurveMark, false);
22952
+ this._prepareDestCrossData(animatorLayerData, false);
22870
22953
  };
22871
22954
  _proto._prepareStandbyCrossFading = function _prepareStandbyCrossFading(animatorLayerData) {
22872
- var crossOwnerCollection = this._crossOwnerCollection;
22873
- var srcPlayData = animatorLayerData.srcPlayData, crossCurveMark = animatorLayerData.crossCurveMark;
22874
22955
  // Standby have two sub state, one is never play, one is finished, never play srcPlayData.state is null.
22875
- srcPlayData.state && this._prepareSrcCrossData(crossOwnerCollection, srcPlayData, crossCurveMark, true);
22956
+ animatorLayerData.srcPlayData.state && this._prepareSrcCrossData(animatorLayerData, true);
22876
22957
  // Add dest cross curve data.
22877
- this._prepareDestCrossData(crossOwnerCollection, animatorLayerData.destPlayData, crossCurveMark, true);
22958
+ this._prepareDestCrossData(animatorLayerData, true);
22878
22959
  };
22879
22960
  _proto._prepareFixedPoseCrossFading = function _prepareFixedPoseCrossFading(animatorLayerData) {
22880
- var crossOwnerCollection = this._crossOwnerCollection;
22961
+ var crossLayerOwnerCollection = animatorLayerData.crossLayerOwnerCollection;
22881
22962
  // Save current cross curve data owner fixed pose.
22882
- for(var i = crossOwnerCollection.length - 1; i >= 0; i--){
22883
- var item = crossOwnerCollection[i];
22884
- item.saveFixedPoseValue();
22963
+ for(var i = crossLayerOwnerCollection.length - 1; i >= 0; i--){
22964
+ var layerOwner = crossLayerOwnerCollection[i];
22965
+ if (!layerOwner) continue;
22966
+ layerOwner.curveOwner.saveFixedPoseValue();
22885
22967
  // Reset destCurveIndex When fixed pose crossFading again.
22886
- item.crossDestCurveIndex = -1;
22968
+ layerOwner.crossDestCurveIndex = -1;
22887
22969
  }
22888
22970
  // prepare dest AnimatorState cross data.
22889
- this._prepareDestCrossData(crossOwnerCollection, animatorLayerData.destPlayData, animatorLayerData.crossCurveMark, true);
22890
- };
22891
- _proto._prepareSrcCrossData = function _prepareSrcCrossData(crossCurveData, srcPlayData, crossCurveMark, saveFixed) {
22892
- var curveOwners = srcPlayData.stateData.curveOwners;
22893
- for(var i = curveOwners.length - 1; i >= 0; i--){
22894
- var owner = curveOwners[i];
22895
- if (!owner) continue;
22896
- owner.crossCurveMark = crossCurveMark;
22897
- owner.crossCurveDataIndex = crossCurveData.length;
22898
- saveFixed && owner.saveFixedPoseValue();
22899
- this._addCrossCurveData(crossCurveData, owner, i, -1);
22900
- }
22901
- };
22902
- _proto._prepareDestCrossData = function _prepareDestCrossData(crossCurveData, destPlayData, crossCurveMark, saveFixed) {
22903
- var curveOwners = destPlayData.stateData.curveOwners;
22904
- for(var i = curveOwners.length - 1; i >= 0; i--){
22905
- var owner = curveOwners[i];
22906
- if (!owner) continue;
22907
- if (owner.crossCurveMark === crossCurveMark) {
22908
- crossCurveData[owner.crossCurveDataIndex].crossDestCurveIndex = i;
22971
+ this._prepareDestCrossData(animatorLayerData, true);
22972
+ };
22973
+ _proto._prepareSrcCrossData = function _prepareSrcCrossData(animatorLayerData, saveFixed) {
22974
+ var curveLayerOwner = animatorLayerData.srcPlayData.stateData.curveLayerOwner;
22975
+ for(var i = curveLayerOwner.length - 1; i >= 0; i--){
22976
+ var layerOwner = curveLayerOwner[i];
22977
+ if (!layerOwner) continue;
22978
+ layerOwner.crossCurveMark = animatorLayerData.crossCurveMark;
22979
+ saveFixed && layerOwner.curveOwner.saveFixedPoseValue();
22980
+ this._addCrossOwner(animatorLayerData, layerOwner, i, -1);
22981
+ }
22982
+ };
22983
+ _proto._prepareDestCrossData = function _prepareDestCrossData(animatorLayerData, saveFixed) {
22984
+ var curveLayerOwner = animatorLayerData.destPlayData.stateData.curveLayerOwner;
22985
+ for(var i = curveLayerOwner.length - 1; i >= 0; i--){
22986
+ var layerOwner = curveLayerOwner[i];
22987
+ if (!layerOwner) continue;
22988
+ if (layerOwner.crossCurveMark === animatorLayerData.crossCurveMark) {
22989
+ layerOwner.crossDestCurveIndex = i;
22909
22990
  } else {
22910
- owner.saveDefaultValue();
22991
+ var owner = layerOwner.curveOwner;
22911
22992
  saveFixed && owner.saveFixedPoseValue();
22912
- owner.crossCurveMark = crossCurveMark;
22913
- owner.crossCurveDataIndex = crossCurveData.length;
22914
- this._addCrossCurveData(crossCurveData, owner, -1, i);
22993
+ layerOwner.crossCurveMark = animatorLayerData.crossCurveMark;
22994
+ this._addCrossOwner(animatorLayerData, layerOwner, -1, i);
22915
22995
  }
22916
22996
  }
22917
22997
  };
@@ -22926,7 +23006,7 @@ exports.AnimatorLayerBlendingMode = void 0;
22926
23006
  var srcPlayData = layerData.srcPlayData, destPlayData = layerData.destPlayData, crossFadeTransitionInfo = layerData.crossFadeTransition;
22927
23007
  var additive = blendingMode === exports.AnimatorLayerBlendingMode.Additive;
22928
23008
  firstLayer && (weight = 1.0);
22929
- //TODO: 任意情况都应该检查,后面要优化
23009
+ //@todo: All situations should be checked, optimizations will follow later.
22930
23010
  layerData.layerState !== LayerState.FixedCrossFading && this._checkTransition(srcPlayData, crossFadeTransitionInfo, layerIndex);
22931
23011
  switch(layerData.layerState){
22932
23012
  case LayerState.Playing:
@@ -22938,26 +23018,36 @@ exports.AnimatorLayerBlendingMode = void 0;
22938
23018
  case LayerState.CrossFading:
22939
23019
  this._updateCrossFade(srcPlayData, destPlayData, layerData, layerIndex, weight, deltaTime, additive, aniUpdate);
22940
23020
  break;
23021
+ case LayerState.Finished:
23022
+ this._updateFinishedState(srcPlayData, weight, additive, aniUpdate);
23023
+ break;
22941
23024
  }
22942
23025
  };
22943
23026
  _proto._updatePlayingState = function _updatePlayingState(playData, layerData, layerIndex, weight, delta, additive, aniUpdate) {
22944
- var _playData_stateData = playData.stateData, curveOwners = _playData_stateData.curveOwners, eventHandlers = _playData_stateData.eventHandlers;
23027
+ var _playData_stateData = playData.stateData, curveLayerOwner = _playData_stateData.curveLayerOwner, eventHandlers = _playData_stateData.eventHandlers;
22945
23028
  var state = playData.state, lastPlayState = playData.playState, lastClipTime = playData.clipTime;
22946
23029
  var _state_clip = state.clip, curveBindings = _state_clip._curveBindings;
22947
23030
  playData.update(this.speed < 0);
22948
- if (!aniUpdate) {
22949
- return;
22950
- }
22951
23031
  var clipTime = playData.clipTime, playState = playData.playState;
22952
- eventHandlers.length && this._fireAnimationEvents(playData, eventHandlers, lastClipTime, clipTime);
22953
- for(var i = curveBindings.length - 1; i >= 0; i--){
22954
- var owner = curveOwners[i];
22955
- owner == null ? void 0 : owner.evaluateAndApplyValue(curveBindings[i].curve, clipTime, weight, additive);
23032
+ var finished = playState === AnimatorStatePlayState.Finished;
23033
+ if (aniUpdate || finished) {
23034
+ for(var i = curveBindings.length - 1; i >= 0; i--){
23035
+ var layerOwner = curveLayerOwner[i];
23036
+ var owner = layerOwner == null ? void 0 : layerOwner.curveOwner;
23037
+ if (!owner) continue;
23038
+ var curve = curveBindings[i].curve;
23039
+ if (curve.keys.length) {
23040
+ var value = owner.evaluateValue(curve, clipTime, additive);
23041
+ aniUpdate && owner.applyValue(value, weight, additive);
23042
+ finished && layerOwner.saveFinalValue();
23043
+ }
23044
+ }
22956
23045
  }
22957
23046
  playData.frameTime += state.speed * delta;
22958
23047
  if (playState === AnimatorStatePlayState.Finished) {
22959
- layerData.layerState = LayerState.Standby;
23048
+ layerData.layerState = LayerState.Finished;
22960
23049
  }
23050
+ eventHandlers.length && this._fireAnimationEvents(playData, eventHandlers, lastClipTime, clipTime);
22961
23051
  if (lastPlayState === AnimatorStatePlayState.UnStarted) {
22962
23052
  this._callAnimatorScriptOnEnter(state, layerIndex);
22963
23053
  }
@@ -22968,7 +23058,7 @@ exports.AnimatorLayerBlendingMode = void 0;
22968
23058
  }
22969
23059
  };
22970
23060
  _proto._updateCrossFade = function _updateCrossFade(srcPlayData, destPlayData, layerData, layerIndex, weight, delta, additive, aniUpdate) {
22971
- var _this = this, crossCurveDataCollection = _this._crossOwnerCollection;
23061
+ var crossLayerOwnerCollection = layerData.crossLayerOwnerCollection;
22972
23062
  var _srcPlayData_state_clip = srcPlayData.state.clip, srcCurves = _srcPlayData_state_clip._curveBindings;
22973
23063
  var srcState = srcPlayData.state, srcStateData = srcPlayData.stateData, lastSrcPlayState = srcPlayData.playState;
22974
23064
  var srcEventHandlers = srcStateData.eventHandlers;
@@ -22977,18 +23067,27 @@ exports.AnimatorLayerBlendingMode = void 0;
22977
23067
  var _destState_clip = destState.clip, destCurves = _destState_clip._curveBindings;
22978
23068
  var lastSrcClipTime = srcPlayData.clipTime;
22979
23069
  var lastDestClipTime = destPlayData.clipTime;
22980
- var crossWeight = Math.abs(destPlayData.frameTime) / (destState._getDuration() * layerData.crossFadeTransition.duration);
22981
- crossWeight >= 1.0 && (crossWeight = 1.0);
23070
+ var duration = destState._getDuration() * layerData.crossFadeTransition.duration;
23071
+ var crossWeight = Math.abs(destPlayData.frameTime) / duration;
23072
+ (crossWeight >= 1.0 || duration === 0) && (crossWeight = 1.0);
22982
23073
  srcPlayData.update(this.speed < 0);
22983
23074
  destPlayData.update(this.speed < 0);
22984
- var srcPlayState = srcPlayData.playState;
22985
- var destPlayState = destPlayData.playState;
22986
- this._updateCrossFadeData(layerData, crossWeight, delta, false);
22987
- if (!aniUpdate) {
22988
- return;
23075
+ var srcClipTime = srcPlayData.clipTime, srcPlayState = srcPlayData.playState;
23076
+ var destClipTime = destPlayData.clipTime, destPlayState = destPlayData.playState;
23077
+ var finished = destPlayData.playState === AnimatorStatePlayState.Finished;
23078
+ if (aniUpdate || finished) {
23079
+ for(var i = crossLayerOwnerCollection.length - 1; i >= 0; i--){
23080
+ var layerOwner = crossLayerOwnerCollection[i];
23081
+ var owner = layerOwner == null ? void 0 : layerOwner.curveOwner;
23082
+ if (!owner) continue;
23083
+ var srcCurveIndex = layerOwner.crossSrcCurveIndex;
23084
+ var destCurveIndex = layerOwner.crossDestCurveIndex;
23085
+ var value = owner.evaluateCrossFadeValue(srcCurveIndex >= 0 ? srcCurves[srcCurveIndex].curve : null, destCurveIndex >= 0 ? destCurves[destCurveIndex].curve : null, srcClipTime, destClipTime, crossWeight, additive);
23086
+ aniUpdate && owner.applyValue(value, weight, additive);
23087
+ finished && layerOwner.saveFinalValue();
23088
+ }
22989
23089
  }
22990
- var srcClipTime = srcPlayData.clipTime;
22991
- var destClipTime = destPlayData.clipTime;
23090
+ this._updateCrossFadeData(layerData, crossWeight, delta, false);
22992
23091
  srcEventHandlers.length && this._fireAnimationEvents(srcPlayData, srcEventHandlers, lastSrcClipTime, srcClipTime);
22993
23092
  destEventHandlers.length && this._fireAnimationEvents(destPlayData, destEventHandlers, lastDestClipTime, destClipTime);
22994
23093
  if (lastSrcPlayState === AnimatorStatePlayState.UnStarted) {
@@ -23007,28 +23106,34 @@ exports.AnimatorLayerBlendingMode = void 0;
23007
23106
  } else {
23008
23107
  this._callAnimatorScriptOnUpdate(destState, layerIndex);
23009
23108
  }
23010
- for(var i = crossCurveDataCollection.length - 1; i >= 0; i--){
23011
- var crossCurveData = crossCurveDataCollection[i];
23012
- var crossSrcCurveIndex = crossCurveData.crossSrcCurveIndex, crossDestCurveIndex = crossCurveData.crossDestCurveIndex;
23013
- crossCurveData.crossFadeAndApplyValue(crossSrcCurveIndex >= 0 ? srcCurves[crossSrcCurveIndex].curve : null, crossDestCurveIndex >= 0 ? destCurves[crossDestCurveIndex].curve : null, srcClipTime, destClipTime, crossWeight, weight, additive);
23014
- }
23015
23109
  };
23016
- _proto._updateCrossFadeFromPose = function _updateCrossFadeFromPose(destPlayData, layerData, layerIndex, layerWeight, delta, additive, aniUpdate) {
23017
- var crossCurveDataCollection = this._crossOwnerCollection;
23110
+ _proto._updateCrossFadeFromPose = function _updateCrossFadeFromPose(destPlayData, layerData, layerIndex, weight, delta, additive, aniUpdate) {
23111
+ var crossLayerOwnerCollection = layerData.crossLayerOwnerCollection;
23018
23112
  var state = destPlayData.state, stateData = destPlayData.stateData, lastPlayState = destPlayData.playState;
23019
23113
  var eventHandlers = stateData.eventHandlers;
23020
23114
  var _state_clip = state.clip, curveBindings = _state_clip._curveBindings;
23021
23115
  var lastDestClipTime = destPlayData.clipTime;
23022
- var crossWeight = Math.abs(destPlayData.frameTime) / (state._getDuration() * layerData.crossFadeTransition.duration);
23023
- crossWeight >= 1.0 && (crossWeight = 1.0);
23116
+ var duration = state._getDuration() * layerData.crossFadeTransition.duration;
23117
+ var crossWeight = Math.abs(destPlayData.frameTime) / duration;
23118
+ (crossWeight >= 1.0 || duration === 0) && (crossWeight = 1.0);
23024
23119
  destPlayData.update(this.speed < 0);
23025
23120
  var playState = destPlayData.playState;
23026
23121
  this._updateCrossFadeData(layerData, crossWeight, delta, true);
23027
- if (!aniUpdate) {
23028
- return;
23029
- }
23030
23122
  var destClipTime = destPlayData.clipTime;
23031
- //TODO: srcState 少了最新一段时间的判断
23123
+ var finished = playState === AnimatorStatePlayState.Finished;
23124
+ // 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.
23125
+ if (aniUpdate || finished) {
23126
+ for(var i = crossLayerOwnerCollection.length - 1; i >= 0; i--){
23127
+ var layerOwner = crossLayerOwnerCollection[i];
23128
+ var owner = layerOwner == null ? void 0 : layerOwner.curveOwner;
23129
+ if (!owner) continue;
23130
+ var curveIndex = layerOwner.crossDestCurveIndex;
23131
+ var value = layerOwner.curveOwner.crossFadeFromPoseAndApplyValue(curveIndex >= 0 ? curveBindings[curveIndex].curve : null, destClipTime, crossWeight, additive);
23132
+ aniUpdate && owner.applyValue(value, weight, additive);
23133
+ finished && layerOwner.saveFinalValue();
23134
+ }
23135
+ }
23136
+ //@todo: srcState is missing the judgment of the most recent period."
23032
23137
  eventHandlers.length && this._fireAnimationEvents(destPlayData, eventHandlers, lastDestClipTime, destClipTime);
23033
23138
  if (lastPlayState === AnimatorStatePlayState.UnStarted) {
23034
23139
  this._callAnimatorScriptOnEnter(state, layerIndex);
@@ -23038,10 +23143,18 @@ exports.AnimatorLayerBlendingMode = void 0;
23038
23143
  } else {
23039
23144
  this._callAnimatorScriptOnUpdate(state, layerIndex);
23040
23145
  }
23041
- for(var i = crossCurveDataCollection.length - 1; i >= 0; i--){
23042
- var crossCurveData = crossCurveDataCollection[i];
23043
- var crossDestCurveIndex = crossCurveData.crossDestCurveIndex;
23044
- crossCurveData.crossFadeFromPoseAndApplyValue(crossDestCurveIndex >= 0 ? curveBindings[crossDestCurveIndex].curve : null, destClipTime, crossWeight, layerWeight, additive);
23146
+ };
23147
+ _proto._updateFinishedState = function _updateFinishedState(playData, weight, additive, aniUpdate) {
23148
+ if (!aniUpdate) {
23149
+ return;
23150
+ }
23151
+ var curveLayerOwner = playData.stateData.curveLayerOwner;
23152
+ var _playData_state_clip = playData.state.clip, curveBindings = _playData_state_clip._curveBindings;
23153
+ for(var i = curveBindings.length - 1; i >= 0; i--){
23154
+ var layerOwner = curveLayerOwner[i];
23155
+ var owner = layerOwner == null ? void 0 : layerOwner.curveOwner;
23156
+ if (!owner) continue;
23157
+ owner.applyValue(layerOwner.finalValue, weight, additive);
23045
23158
  }
23046
23159
  };
23047
23160
  _proto._updateCrossFadeData = function _updateCrossFadeData(layerData, crossWeight, delta, fixed) {
@@ -23049,7 +23162,7 @@ exports.AnimatorLayerBlendingMode = void 0;
23049
23162
  destPlayData.frameTime += destPlayData.state.speed * delta;
23050
23163
  if (crossWeight === 1.0) {
23051
23164
  if (destPlayData.playState === AnimatorStatePlayState.Finished) {
23052
- layerData.layerState = LayerState.Standby;
23165
+ layerData.layerState = LayerState.Finished;
23053
23166
  } else {
23054
23167
  layerData.layerState = LayerState.Playing;
23055
23168
  }
@@ -23059,25 +23172,24 @@ exports.AnimatorLayerBlendingMode = void 0;
23059
23172
  fixed || (layerData.srcPlayData.frameTime += layerData.srcPlayData.state.speed * delta);
23060
23173
  }
23061
23174
  };
23062
- _proto._preparePlay = function _preparePlay(layerData, playState, playStateData) {
23175
+ _proto._preparePlay = function _preparePlay(layerData, playState) {
23063
23176
  if (layerData.layerState === LayerState.Playing) {
23064
23177
  var srcPlayData = layerData.srcPlayData;
23065
23178
  if (srcPlayData.state !== playState) {
23066
- var curveOwners = srcPlayData.stateData.curveOwners;
23067
- for(var i = curveOwners.length - 1; i >= 0; i--){
23068
- var owner = curveOwners[i];
23069
- (owner == null ? void 0 : owner.hasSavedDefaultValue) && owner.revertDefaultValue();
23179
+ var curveLayerOwner = srcPlayData.stateData.curveLayerOwner;
23180
+ for(var i = curveLayerOwner.length - 1; i >= 0; i--){
23181
+ var _curveLayerOwner_i;
23182
+ var owner = (_curveLayerOwner_i = curveLayerOwner[i]) == null ? void 0 : _curveLayerOwner_i.curveOwner;
23183
+ owner.revertDefaultValue();
23070
23184
  }
23071
- this._saveDefaultValues(playStateData);
23072
23185
  }
23073
23186
  } else {
23074
- // layerState is CrossFading, FixedCrossFading, Standby
23075
- var crossCurveDataCollection = this._crossOwnerCollection;
23076
- for(var i1 = crossCurveDataCollection.length - 1; i1 >= 0; i1--){
23077
- var owner1 = crossCurveDataCollection[i1];
23078
- owner1.hasSavedDefaultValue && owner1.revertDefaultValue();
23187
+ // layerState is CrossFading, FixedCrossFading, Standby, Finished
23188
+ var crossLayerOwnerCollection = layerData.crossLayerOwnerCollection;
23189
+ for(var i1 = crossLayerOwnerCollection.length - 1; i1 >= 0; i1--){
23190
+ var owner1 = crossLayerOwnerCollection[i1].curveOwner;
23191
+ owner1.revertDefaultValue();
23079
23192
  }
23080
- this._saveDefaultValues(playStateData);
23081
23193
  }
23082
23194
  };
23083
23195
  _proto._checkTransition = function _checkTransition(stateData, crossFadeTransition, layerIndex) {
@@ -23094,7 +23206,7 @@ exports.AnimatorLayerBlendingMode = void 0;
23094
23206
  _proto._crossFadeByTransition = function _crossFadeByTransition(transition, layerIndex) {
23095
23207
  var name = transition.destinationState.name;
23096
23208
  var stateInfo = this._getAnimatorStateInfo(name, layerIndex);
23097
- var crossState = stateInfo.state;
23209
+ var crossState = stateInfo.state, playLayerIndex = stateInfo.layerIndex;
23098
23210
  if (!crossState) {
23099
23211
  return;
23100
23212
  }
@@ -23102,21 +23214,21 @@ exports.AnimatorLayerBlendingMode = void 0;
23102
23214
  console.warn("The state named " + name + " has no AnimationClip data.");
23103
23215
  return;
23104
23216
  }
23105
- var animatorLayerData = this._getAnimatorLayerData(stateInfo.layerIndex);
23217
+ var animatorLayerData = this._getAnimatorLayerData(playLayerIndex);
23106
23218
  var layerState = animatorLayerData.layerState;
23107
23219
  var destPlayData = animatorLayerData.destPlayData;
23108
- var animatorStateData = this._getAnimatorStateData(name, crossState, animatorLayerData);
23220
+ var animatorStateData = this._getAnimatorStateData(name, crossState, animatorLayerData, playLayerIndex);
23109
23221
  var duration = crossState._getDuration();
23110
23222
  var offset = duration * transition.offset;
23111
23223
  destPlayData.reset(crossState, animatorStateData, offset);
23112
23224
  switch(layerState){
23113
- // Maybe not play, maybe end.
23114
23225
  case LayerState.Standby:
23115
23226
  animatorLayerData.layerState = LayerState.FixedCrossFading;
23116
23227
  this._clearCrossData(animatorLayerData);
23117
23228
  this._prepareStandbyCrossFading(animatorLayerData);
23118
23229
  break;
23119
23230
  case LayerState.Playing:
23231
+ case LayerState.Finished:
23120
23232
  animatorLayerData.layerState = LayerState.CrossFading;
23121
23233
  this._clearCrossData(animatorLayerData);
23122
23234
  this._prepareCrossFading(animatorLayerData);
@@ -23213,6 +23325,12 @@ exports.AnimatorLayerBlendingMode = void 0;
23213
23325
  }
23214
23326
  }
23215
23327
  };
23328
+ _proto._revertCurveOwners = function _revertCurveOwners() {
23329
+ var curveOwners = this._needRevertCurveOwners;
23330
+ for(var i = 0, n = curveOwners.length; i < n; ++i){
23331
+ curveOwners[i].revertDefaultValue();
23332
+ }
23333
+ };
23216
23334
  _create_class$2(Animator, [
23217
23335
  {
23218
23336
  key: "animatorController",
@@ -23244,10 +23362,10 @@ __decorate$1([
23244
23362
  ], Animator.prototype, "_animatorLayersData", void 0);
23245
23363
  __decorate$1([
23246
23364
  ignoreClone
23247
- ], Animator.prototype, "_crossOwnerCollection", void 0);
23365
+ ], Animator.prototype, "_curveOwnerPool", void 0);
23248
23366
  __decorate$1([
23249
23367
  ignoreClone
23250
- ], Animator.prototype, "_animationCurveOwners", void 0);
23368
+ ], Animator.prototype, "_needRevertCurveOwners", void 0);
23251
23369
  __decorate$1([
23252
23370
  ignoreClone
23253
23371
  ], Animator.prototype, "_animationEventHandlerPool", void 0);
@@ -36142,7 +36260,7 @@ function _interopNamespace(e) {
36142
36260
  }
36143
36261
  var CoreObjects__namespace = /*#__PURE__*/ _interopNamespace(CoreObjects);
36144
36262
  //@ts-ignore
36145
- var version = "0.9.13";
36263
+ var version = "0.9.14";
36146
36264
  console.log("Galacean engine version: " + version);
36147
36265
  for(var key in CoreObjects__namespace){
36148
36266
  CoreObjects.Loader.registerClass(key, CoreObjects__namespace[key]);