@galacean/engine-physics-lite 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.
@@ -21260,8 +21260,6 @@ var DirtyFlag;
21260
21260
  * @internal
21261
21261
  */ var AnimationCurveOwner = /*#__PURE__*/ function() {
21262
21262
  function AnimationCurveOwner(target, type, property, cureType) {
21263
- this.crossCurveMark = 0;
21264
- this.hasSavedDefaultValue = false;
21265
21263
  this.baseEvaluateData = {
21266
21264
  curKeyframeIndex: 0,
21267
21265
  value: null
@@ -21274,7 +21272,7 @@ var DirtyFlag;
21274
21272
  this.type = type;
21275
21273
  this.property = property;
21276
21274
  this.component = target.getComponent(type);
21277
- this._cureType = cureType;
21275
+ this.cureType = cureType;
21278
21276
  var assemblerType = AnimationCurveOwner.getAssemblerType(type, property);
21279
21277
  this._assembler = new assemblerType();
21280
21278
  this._assembler.initialize(this);
@@ -21283,89 +21281,80 @@ var DirtyFlag;
21283
21281
  }
21284
21282
  }
21285
21283
  var _proto = AnimationCurveOwner.prototype;
21286
- _proto.evaluateAndApplyValue = function evaluateAndApplyValue(curve, time, layerWeight, additive) {
21287
- if (curve.keys.length) {
21288
- if (additive) {
21289
- var value = curve._evaluateAdditive(time, this.baseEvaluateData);
21290
- var cureType = this._cureType;
21291
- if (cureType._isReferenceType) {
21292
- cureType._additiveValue(value, layerWeight, this.referenceTargetValue);
21293
- } else {
21294
- var assembler = this._assembler;
21295
- var originValue = assembler.getTargetValue();
21296
- var additiveValue = cureType._additiveValue(value, layerWeight, originValue);
21297
- assembler.setTargetValue(additiveValue);
21298
- }
21299
- } else {
21300
- var value1 = curve._evaluate(time, this.baseEvaluateData);
21301
- this._applyValue(value1, layerWeight);
21302
- }
21303
- }
21284
+ _proto.evaluateValue = function evaluateValue(curve, time, additive) {
21285
+ return additive ? curve._evaluateAdditive(time, this.baseEvaluateData) : curve._evaluate(time, this.baseEvaluateData);
21304
21286
  };
21305
- _proto.crossFadeAndApplyValue = function crossFadeAndApplyValue(srcCurve, destCurve, srcTime, destTime, crossWeight, layerWeight, additive) {
21306
- 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;
21307
- 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;
21308
- this._applyCrossValue(srcValue, destValue, crossWeight, layerWeight, additive);
21287
+ _proto.evaluateCrossFadeValue = function evaluateCrossFadeValue(srcCurve, destCurve, srcTime, destTime, crossWeight, additive) {
21288
+ 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;
21289
+ 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;
21290
+ return this._lerpValue(srcValue, destValue, crossWeight);
21309
21291
  };
21310
- _proto.crossFadeFromPoseAndApplyValue = function crossFadeFromPoseAndApplyValue(destCurve, destTime, crossWeight, layerWeight, additive) {
21311
- var srcValue = additive ? this._cureType._subtractValue(this.fixedPoseValue, this.defaultValue, this.baseEvaluateData.value) : this.fixedPoseValue;
21312
- 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;
21313
- this._applyCrossValue(srcValue, destValue, crossWeight, layerWeight, additive);
21292
+ _proto.crossFadeFromPoseAndApplyValue = function crossFadeFromPoseAndApplyValue(destCurve, destTime, crossWeight, additive) {
21293
+ var srcValue = additive ? this.cureType._subtractValue(this.fixedPoseValue, this.defaultValue, this.baseEvaluateData.value) : this.fixedPoseValue;
21294
+ 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;
21295
+ return this._lerpValue(srcValue, destValue, crossWeight);
21314
21296
  };
21315
21297
  _proto.revertDefaultValue = function revertDefaultValue() {
21316
21298
  this._assembler.setTargetValue(this.defaultValue);
21317
21299
  };
21300
+ _proto.getEvaluateValue = function getEvaluateValue(out) {
21301
+ if (this.cureType._isReferenceType) {
21302
+ this.cureType._copyValue(this.baseEvaluateData.value, out);
21303
+ return out;
21304
+ } else {
21305
+ return this.baseEvaluateData.value;
21306
+ }
21307
+ };
21318
21308
  _proto.saveDefaultValue = function saveDefaultValue() {
21319
- if (this._cureType._isReferenceType) {
21320
- this._cureType._copyValue(this.referenceTargetValue, this.defaultValue);
21309
+ if (this.cureType._isReferenceType) {
21310
+ this.cureType._copyValue(this.referenceTargetValue, this.defaultValue);
21321
21311
  } else {
21322
21312
  this.defaultValue = this._assembler.getTargetValue();
21323
21313
  }
21324
- this.hasSavedDefaultValue = true;
21325
21314
  };
21326
21315
  _proto.saveFixedPoseValue = function saveFixedPoseValue() {
21327
- if (this._cureType._isReferenceType) {
21328
- this._cureType._copyValue(this.referenceTargetValue, this.fixedPoseValue);
21316
+ if (this.cureType._isReferenceType) {
21317
+ this.cureType._copyValue(this.referenceTargetValue, this.fixedPoseValue);
21329
21318
  } else {
21330
21319
  this.fixedPoseValue = this._assembler.getTargetValue();
21331
21320
  }
21332
21321
  };
21333
- _proto._applyValue = function _applyValue(value, weight) {
21334
- if (weight === 1.0) {
21335
- if (this._cureType._isReferenceType) {
21336
- this._cureType._copyValue(value, this.referenceTargetValue);
21322
+ _proto.applyValue = function applyValue(value, weight, additive) {
21323
+ var cureType = this.cureType;
21324
+ if (additive) {
21325
+ if (cureType._isReferenceType) {
21326
+ cureType._additiveValue(value, weight, this.referenceTargetValue);
21337
21327
  } else {
21338
- this._assembler.setTargetValue(value);
21328
+ var assembler = this._assembler;
21329
+ var originValue = assembler.getTargetValue();
21330
+ var additiveValue = cureType._additiveValue(value, weight, originValue);
21331
+ assembler.setTargetValue(additiveValue);
21339
21332
  }
21340
21333
  } else {
21341
- if (this._cureType._isReferenceType) {
21342
- var targetValue = this.referenceTargetValue;
21343
- this._cureType._lerpValue(targetValue, value, weight, targetValue);
21334
+ if (weight === 1.0) {
21335
+ if (cureType._isReferenceType) {
21336
+ cureType._copyValue(value, this.referenceTargetValue);
21337
+ } else {
21338
+ this._assembler.setTargetValue(value);
21339
+ }
21344
21340
  } else {
21345
- var originValue = this._assembler.getTargetValue();
21346
- var lerpValue = this._cureType._lerpValue(originValue, value, weight);
21347
- this._assembler.setTargetValue(lerpValue);
21341
+ if (cureType._isReferenceType) {
21342
+ var targetValue = this.referenceTargetValue;
21343
+ cureType._lerpValue(targetValue, value, weight, targetValue);
21344
+ } else {
21345
+ var originValue1 = this._assembler.getTargetValue();
21346
+ var lerpValue = cureType._lerpValue(originValue1, value, weight);
21347
+ this._assembler.setTargetValue(lerpValue);
21348
+ }
21348
21349
  }
21349
21350
  }
21350
21351
  };
21351
- _proto._applyCrossValue = function _applyCrossValue(srcValue, destValue, crossWeight, layerWeight, additive) {
21352
- var out;
21353
- if (this._cureType._isReferenceType) {
21354
- out = this.baseEvaluateData.value;
21355
- this._cureType._lerpValue(srcValue, destValue, crossWeight, out);
21356
- } else {
21357
- out = this._cureType._lerpValue(srcValue, destValue, crossWeight);
21358
- }
21359
- if (additive) {
21360
- if (this._cureType._isReferenceType) {
21361
- this._cureType._additiveValue(out, layerWeight, this.referenceTargetValue);
21362
- } else {
21363
- var originValue = this._assembler.getTargetValue();
21364
- var lerpValue = this._cureType._additiveValue(out, layerWeight, originValue);
21365
- this._assembler.setTargetValue(lerpValue);
21366
- }
21352
+ _proto._lerpValue = function _lerpValue(srcValue, destValue, crossWeight) {
21353
+ if (this.cureType._isReferenceType) {
21354
+ return this.cureType._lerpValue(srcValue, destValue, crossWeight, this.baseEvaluateData.value);
21367
21355
  } else {
21368
- this._applyValue(out, layerWeight);
21356
+ this.baseEvaluateData.value = this.cureType._lerpValue(srcValue, destValue, crossWeight);
21357
+ return this.baseEvaluateData.value;
21369
21358
  }
21370
21359
  };
21371
21360
  AnimationCurveOwner.registerAssembler = function registerAssembler(componentType, property, assemblerType) {
@@ -21454,6 +21443,26 @@ AnimationCurveOwner.registerAssembler(Transform, "scale", ScaleAnimationCurveOwn
21454
21443
  return BlendShapeWeightsAnimationCurveOwnerAssembler;
21455
21444
  }();
21456
21445
  AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights", BlendShapeWeightsAnimationCurveOwnerAssembler);
21446
+ /**
21447
+ * @internal
21448
+ */ var AnimationCurveLayerOwner = /*#__PURE__*/ function() {
21449
+ var AnimationCurveLayerOwner = function AnimationCurveLayerOwner() {
21450
+ this.crossCurveMark = 0;
21451
+ };
21452
+ var _proto = AnimationCurveLayerOwner.prototype;
21453
+ _proto.initFinalValue = function initFinalValue() {
21454
+ var _this_curveOwner = this.curveOwner, cureType = _this_curveOwner.cureType, defaultValue = _this_curveOwner.defaultValue;
21455
+ if (cureType._isReferenceType) {
21456
+ cureType._copyValue(defaultValue, this.finalValue);
21457
+ } else {
21458
+ this.finalValue = defaultValue;
21459
+ }
21460
+ };
21461
+ _proto.saveFinalValue = function saveFinalValue() {
21462
+ this.finalValue = this.curveOwner.getEvaluateValue(this.finalValue);
21463
+ };
21464
+ return AnimationCurveLayerOwner;
21465
+ }();
21457
21466
  /**
21458
21467
  * Associate AnimationCurve and the Entity
21459
21468
  */ var AnimationClipCurveBinding = /*#__PURE__*/ function() {
@@ -21467,10 +21476,22 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
21467
21476
  var curveType = this.curve.constructor;
21468
21477
  var owner = new AnimationCurveOwner(entity, this.type, this.property, curveType);
21469
21478
  curveType._initializeOwner(owner);
21479
+ owner.saveDefaultValue();
21470
21480
  return owner;
21471
21481
  };
21472
21482
  /**
21473
21483
  * @internal
21484
+ */ _proto._createCurveLayerOwner = function _createCurveLayerOwner(owner) {
21485
+ var curveType = this.curve.constructor;
21486
+ var layerOwner = new AnimationCurveLayerOwner();
21487
+ layerOwner.curveOwner = owner;
21488
+ curveType._initializeLayerOwner(layerOwner);
21489
+ // If curve.keys.length is 0, updateFinishedState will assign 0 to the target, causing an error, so initialize by assigning defaultValue to finalValue.
21490
+ layerOwner.initFinalValue();
21491
+ return layerOwner;
21492
+ };
21493
+ /**
21494
+ * @internal
21474
21495
  */ _proto._getTempCurveOwner = function _getTempCurveOwner(entity) {
21475
21496
  var instanceId = entity.instanceId;
21476
21497
  if (!this._tempCurveOwner[instanceId]) {
@@ -21547,7 +21568,8 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
21547
21568
  var targetEntity = entity.findByPath(curveData.relativePath);
21548
21569
  if (targetEntity) {
21549
21570
  var curveOwner = curveData._getTempCurveOwner(targetEntity);
21550
- curveOwner.evaluateAndApplyValue(curveData.curve, time, 1, false);
21571
+ var value = curveOwner.evaluateValue(curveData.curve, time, false);
21572
+ curveOwner.applyValue(value, 1, false);
21551
21573
  }
21552
21574
  }
21553
21575
  };
@@ -21689,6 +21711,7 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
21689
21711
  break;
21690
21712
  }
21691
21713
  }
21714
+ evaluateData.value = value;
21692
21715
  return value;
21693
21716
  };
21694
21717
  /**
@@ -21744,6 +21767,11 @@ exports.AnimationArrayCurve = (_AnimationArrayCurve = /*#__PURE__*/ function(Ani
21744
21767
  };
21745
21768
  /**
21746
21769
  * @internal
21770
+ */ AnimationArrayCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
21771
+ owner.finalValue = [];
21772
+ };
21773
+ /**
21774
+ * @internal
21747
21775
  */ AnimationArrayCurve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
21748
21776
  for(var i = 0, n = out.length; i < n; ++i){
21749
21777
  var src = srcValue[i];
@@ -21833,6 +21861,11 @@ exports.AnimationBoolCurve = (_AnimationBoolCurve = /*#__PURE__*/ function(Anima
21833
21861
  };
21834
21862
  /**
21835
21863
  * @internal
21864
+ */ AnimationBoolCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
21865
+ owner.finalValue = false;
21866
+ };
21867
+ /**
21868
+ * @internal
21836
21869
  */ AnimationBoolCurve._lerpValue = function _lerpValue(srcValue, destValue) {
21837
21870
  return destValue;
21838
21871
  };
@@ -21889,6 +21922,11 @@ exports.AnimationColorCurve = (_AnimationColorCurve = /*#__PURE__*/ function(Ani
21889
21922
  };
21890
21923
  /**
21891
21924
  * @internal
21925
+ */ AnimationColorCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
21926
+ owner.finalValue = new miniprogram$7.Color();
21927
+ };
21928
+ /**
21929
+ * @internal
21892
21930
  */ AnimationColorCurve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
21893
21931
  miniprogram$7.Color.lerp(srcValue, destValue, weight, out);
21894
21932
  return out;
@@ -21995,6 +22033,12 @@ exports.AnimationFloatArrayCurve = (_AnimationFloatArrayCurve = /*#__PURE__*/ fu
21995
22033
  };
21996
22034
  /**
21997
22035
  * @internal
22036
+ */ AnimationFloatArrayCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
22037
+ var size = owner.curveOwner.referenceTargetValue.length;
22038
+ owner.finalValue = new Float32Array(size);
22039
+ };
22040
+ /**
22041
+ * @internal
21998
22042
  */ AnimationFloatArrayCurve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
21999
22043
  for(var i = 0, n = out.length; i < n; ++i){
22000
22044
  var src = srcValue[i];
@@ -22084,6 +22128,11 @@ exports.AnimationFloatCurve = (_AnimationFloatCurve = /*#__PURE__*/ function(Ani
22084
22128
  };
22085
22129
  /**
22086
22130
  * @internal
22131
+ */ AnimationFloatCurve._initializeLayerOwner = function _initializeLayerOwner(owner) {
22132
+ owner.finalValue = 0;
22133
+ };
22134
+ /**
22135
+ * @internal
22087
22136
  */ AnimationFloatCurve._lerpValue = function _lerpValue(srcValue, destValue, crossWeight) {
22088
22137
  return srcValue + (destValue - srcValue) * crossWeight;
22089
22138
  };
@@ -22152,6 +22201,11 @@ exports.AnimationQuaternionCurve = (_AnimationQuaternionCurve = /*#__PURE__*/ fu
22152
22201
  };
22153
22202
  /**
22154
22203
  * @internal
22204
+ */ AnimationQuaternionCurve1._initializeLayerOwner = function _initializeLayerOwner(owner) {
22205
+ owner.finalValue = new miniprogram$7.Quaternion();
22206
+ };
22207
+ /**
22208
+ * @internal
22155
22209
  */ AnimationQuaternionCurve1._lerpValue = function _lerpValue(src, dest, weight, out) {
22156
22210
  miniprogram$7.Quaternion.slerp(src, dest, weight, out);
22157
22211
  return out;
@@ -22255,6 +22309,11 @@ exports.AnimationVector2Curve = (_AnimationVector2Curve = /*#__PURE__*/ function
22255
22309
  };
22256
22310
  /**
22257
22311
  * @internal
22312
+ */ AnimationVector2Curve._initializeLayerOwner = function _initializeLayerOwner(owner) {
22313
+ owner.finalValue = new miniprogram$7.Vector2();
22314
+ };
22315
+ /**
22316
+ * @internal
22258
22317
  */ AnimationVector2Curve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
22259
22318
  miniprogram$7.Vector2.lerp(srcValue, destValue, weight, out);
22260
22319
  return out;
@@ -22339,6 +22398,11 @@ exports.AnimationVector3Curve = (_AnimationVector3Curve = /*#__PURE__*/ function
22339
22398
  };
22340
22399
  /**
22341
22400
  * @internal
22401
+ */ AnimationVector3Curve._initializeLayerOwner = function _initializeLayerOwner(owner) {
22402
+ owner.finalValue = new miniprogram$7.Vector3();
22403
+ };
22404
+ /**
22405
+ * @internal
22342
22406
  */ AnimationVector3Curve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
22343
22407
  miniprogram$7.Vector3.lerp(srcValue, destValue, weight, out);
22344
22408
  return out;
@@ -22435,6 +22499,11 @@ exports.AnimationVector4Curve = (_AnimationVector4Curve = /*#__PURE__*/ function
22435
22499
  };
22436
22500
  /**
22437
22501
  * @internal
22502
+ */ AnimationVector4Curve._initializeLayerOwner = function _initializeLayerOwner(owner) {
22503
+ owner.finalValue = new miniprogram$7.Vector4();
22504
+ };
22505
+ /**
22506
+ * @internal
22438
22507
  */ AnimationVector4Curve._lerpValue = function _lerpValue(srcValue, destValue, weight, out) {
22439
22508
  miniprogram$7.Vector4.lerp(srcValue, destValue, weight, out);
22440
22509
  return out;
@@ -22540,6 +22609,7 @@ exports.AnimatorLayerBlendingMode = void 0;
22540
22609
  LayerState[LayerState[/** Playing state. */ "Playing"] = 1] = "Playing";
22541
22610
  LayerState[LayerState[/** CrossFading state. */ "CrossFading"] = 2] = "CrossFading";
22542
22611
  LayerState[LayerState[/** FixedCrossFading state. */ "FixedCrossFading"] = 3] = "FixedCrossFading";
22612
+ LayerState[LayerState[/** Finished state. */ "Finished"] = 4] = "Finished";
22543
22613
  })(LayerState || (LayerState = {}));
22544
22614
  /**
22545
22615
  * @internal
@@ -22606,12 +22676,14 @@ exports.AnimatorLayerBlendingMode = void 0;
22606
22676
  * @internal
22607
22677
  */ var AnimatorLayerData = /*#__PURE__*/ function() {
22608
22678
  var AnimatorLayerData = function AnimatorLayerData() {
22679
+ this.curveOwnerPool = Object.create(null);
22609
22680
  this.animatorStateDataMap = {};
22610
22681
  this.srcPlayData = new AnimatorStatePlayData();
22611
22682
  this.destPlayData = new AnimatorStatePlayData();
22612
22683
  this.layerState = LayerState.Standby;
22613
22684
  this.crossCurveMark = 0;
22614
22685
  this.manuallyTransition = new AnimatorStateTransition();
22686
+ this.crossLayerOwnerCollection = [];
22615
22687
  };
22616
22688
  var _proto = AnimatorLayerData.prototype;
22617
22689
  _proto.switchPlayData = function switchPlayData() {
@@ -22625,7 +22697,7 @@ exports.AnimatorLayerBlendingMode = void 0;
22625
22697
  /**
22626
22698
  * @internal
22627
22699
  */ var AnimatorStateData = function AnimatorStateData() {
22628
- this.curveOwners = [];
22700
+ this.curveLayerOwner = [];
22629
22701
  this.eventHandlers = [];
22630
22702
  };
22631
22703
  /**
@@ -22637,8 +22709,8 @@ exports.AnimatorLayerBlendingMode = void 0;
22637
22709
  /** Culling mode of this Animator. */ _this.cullingMode = exports.AnimatorCullingMode.None;
22638
22710
  /** The playback speed of the Animator, 1.0 is normal playback speed. */ _this.speed = 1.0;
22639
22711
  _this._animatorLayersData = [];
22640
- _this._crossOwnerCollection = [];
22641
- _this._animationCurveOwners = [];
22712
+ _this._curveOwnerPool = Object.create(null);
22713
+ _this._needRevertCurveOwners = [];
22642
22714
  _this._animationEventHandlerPool = new ClassPool(AnimationEventHandler);
22643
22715
  _this._tempAnimatorStateInfo = {
22644
22716
  layerIndex: -1,
@@ -22662,7 +22734,7 @@ exports.AnimatorLayerBlendingMode = void 0;
22662
22734
  this._reset();
22663
22735
  }
22664
22736
  var stateInfo = this._getAnimatorStateInfo(stateName, layerIndex);
22665
- var state = stateInfo.state;
22737
+ var state = stateInfo.state, playLayerIndex = stateInfo.layerIndex;
22666
22738
  if (!state) {
22667
22739
  return;
22668
22740
  }
@@ -22671,9 +22743,8 @@ exports.AnimatorLayerBlendingMode = void 0;
22671
22743
  return;
22672
22744
  }
22673
22745
  var animatorLayerData = this._getAnimatorLayerData(stateInfo.layerIndex);
22674
- //TODO CM: Not consider same stateName, but different animation
22675
- var animatorStateData = this._getAnimatorStateData(stateName, state, animatorLayerData);
22676
- this._preparePlay(animatorLayerData, state, animatorStateData);
22746
+ var animatorStateData = this._getAnimatorStateData(stateName, state, animatorLayerData, playLayerIndex);
22747
+ this._preparePlay(animatorLayerData, state);
22677
22748
  animatorLayerData.layerState = LayerState.Playing;
22678
22749
  animatorLayerData.srcPlayData.reset(state, animatorStateData, state._getDuration() * normalizedTimeOffset);
22679
22750
  };
@@ -22724,6 +22795,7 @@ exports.AnimatorLayerBlendingMode = void 0;
22724
22795
  return;
22725
22796
  }
22726
22797
  deltaTime *= this.speed;
22798
+ this._revertCurveOwners();
22727
22799
  for(var i1 = 0, n1 = animatorController.layers.length; i1 < n1; i1++){
22728
22800
  var animatorLayerData = this._getAnimatorLayerData(i1);
22729
22801
  if (animatorLayerData.layerState === LayerState.Standby) {
@@ -22764,17 +22836,17 @@ exports.AnimatorLayerBlendingMode = void 0;
22764
22836
  /**
22765
22837
  * @internal
22766
22838
  */ _proto._reset = function _reset() {
22767
- var _this = this, animationCurveOwners = _this._animationCurveOwners;
22839
+ var _this = this, animationCurveOwners = _this._curveOwnerPool;
22768
22840
  for(var instanceId in animationCurveOwners){
22769
22841
  var propertyOwners = animationCurveOwners[instanceId];
22770
22842
  for(var property in propertyOwners){
22771
22843
  var owner = propertyOwners[property];
22772
- owner.hasSavedDefaultValue && owner.revertDefaultValue();
22844
+ owner.revertDefaultValue();
22773
22845
  }
22774
22846
  }
22775
22847
  this._animatorLayersData.length = 0;
22776
- this._crossOwnerCollection.length = 0;
22777
- this._animationCurveOwners.length = 0;
22848
+ this._needRevertCurveOwners.length = 0;
22849
+ this._curveOwnerPool = {};
22778
22850
  this._animationEventHandlerPool.resetPool();
22779
22851
  if (this._controllerUpdateFlag) {
22780
22852
  this._controllerUpdateFlag.flag = false;
@@ -22801,38 +22873,51 @@ exports.AnimatorLayerBlendingMode = void 0;
22801
22873
  stateInfo.state = state;
22802
22874
  return stateInfo;
22803
22875
  };
22804
- _proto._saveDefaultValues = function _saveDefaultValues(stateData) {
22805
- var curveOwners = stateData.curveOwners;
22806
- for(var i = curveOwners.length - 1; i >= 0; i--){
22807
- var _curveOwners_i;
22808
- (_curveOwners_i = curveOwners[i]) == null ? void 0 : _curveOwners_i.saveDefaultValue();
22809
- }
22810
- };
22811
- _proto._getAnimatorStateData = function _getAnimatorStateData(stateName, animatorState, animatorLayerData) {
22876
+ _proto._getAnimatorStateData = function _getAnimatorStateData(stateName, animatorState, animatorLayerData, layerIndex) {
22812
22877
  var animatorStateDataMap = animatorLayerData.animatorStateDataMap;
22813
22878
  var animatorStateData = animatorStateDataMap[stateName];
22814
22879
  if (!animatorStateData) {
22815
22880
  animatorStateData = new AnimatorStateData();
22816
22881
  animatorStateDataMap[stateName] = animatorStateData;
22817
- this._saveAnimatorStateData(animatorState, animatorStateData);
22882
+ this._saveAnimatorStateData(animatorState, animatorStateData, animatorLayerData, layerIndex);
22818
22883
  this._saveAnimatorEventHandlers(animatorState, animatorStateData);
22819
22884
  }
22820
22885
  return animatorStateData;
22821
22886
  };
22822
- _proto._saveAnimatorStateData = function _saveAnimatorStateData(animatorState, animatorStateData) {
22823
- var _this = this, entity = _this.entity, animationCureOwners = _this._animationCurveOwners;
22824
- var curveOwners = animatorStateData.curveOwners;
22887
+ _proto._saveAnimatorStateData = function _saveAnimatorStateData(animatorState, animatorStateData, animatorLayerData, layerIndex) {
22888
+ var _this = this, entity = _this.entity, curveOwnerPool = _this._curveOwnerPool;
22889
+ var curveLayerOwner = animatorStateData.curveLayerOwner;
22890
+ var layerCurveOwnerPool = animatorLayerData.curveOwnerPool;
22825
22891
  var _animatorState_clip = animatorState.clip, curves = _animatorState_clip._curveBindings;
22826
22892
  for(var i = curves.length - 1; i >= 0; i--){
22827
22893
  var curve = curves[i];
22828
22894
  var targetEntity = curve.relativePath === "" ? entity : entity.findByPath(curve.relativePath);
22829
22895
  if (targetEntity) {
22896
+ var _curveOwnerPool, _instanceId, _propertyOwners, _property, _layerCurveOwnerPool, _instanceId1, _layerPropertyOwners, _property1;
22830
22897
  var property = curve.property;
22831
22898
  var instanceId = targetEntity.instanceId;
22832
- var propertyOwners = animationCureOwners[instanceId] || (animationCureOwners[instanceId] = {});
22833
- curveOwners[i] = propertyOwners[property] || (propertyOwners[property] = curve._createCurveOwner(targetEntity));
22899
+ var needRevert = false;
22900
+ var baseAnimatorLayerData = this._animatorLayersData[0];
22901
+ var baseLayerCurveOwnerPool = baseAnimatorLayerData.curveOwnerPool;
22902
+ if (this.animatorController.layers[layerIndex].blendingMode === exports.AnimatorLayerBlendingMode.Additive && layerIndex > 0 && !(baseLayerCurveOwnerPool[instanceId] && baseLayerCurveOwnerPool[instanceId][property])) {
22903
+ needRevert = true;
22904
+ }
22905
+ // Get owner
22906
+ var propertyOwners = (_curveOwnerPool = curveOwnerPool)[_instanceId = instanceId] || (_curveOwnerPool[_instanceId] = Object.create(null));
22907
+ var owner = (_propertyOwners = propertyOwners)[_property = property] || (_propertyOwners[_property] = curve._createCurveOwner(targetEntity));
22908
+ //@todo: There is performance waste here, which will be handled together with organizing AnimatorStateData later. The logic is changing from runtime to initialization.
22909
+ if (needRevert) {
22910
+ this._needRevertCurveOwners.push(owner);
22911
+ } else {
22912
+ var index = this._needRevertCurveOwners.indexOf(owner);
22913
+ index > -1 && this._needRevertCurveOwners.splice(index, 1);
22914
+ }
22915
+ // Get layer owner
22916
+ var layerPropertyOwners = (_layerCurveOwnerPool = layerCurveOwnerPool)[_instanceId1 = instanceId] || (_layerCurveOwnerPool[_instanceId1] = Object.create(null));
22917
+ var layerOwner = (_layerPropertyOwners = layerPropertyOwners)[_property1 = property] || (_layerPropertyOwners[_property1] = curve._createCurveLayerOwner(owner));
22918
+ curveLayerOwner[i] = layerOwner;
22834
22919
  } else {
22835
- curveOwners[i] = null;
22920
+ curveLayerOwner[i] = null;
22836
22921
  console.warn("The entity don't have the child entity which path is " + curve.relativePath + ".");
22837
22922
  }
22838
22923
  }
@@ -22860,65 +22945,60 @@ exports.AnimatorLayerBlendingMode = void 0;
22860
22945
  };
22861
22946
  _proto._clearCrossData = function _clearCrossData(animatorLayerData) {
22862
22947
  animatorLayerData.crossCurveMark++;
22863
- this._crossOwnerCollection.length = 0;
22948
+ animatorLayerData.crossLayerOwnerCollection.length = 0;
22864
22949
  };
22865
- _proto._addCrossCurveData = function _addCrossCurveData(crossCurveData, owner, curCurveIndex, nextCurveIndex) {
22866
- owner.crossSrcCurveIndex = curCurveIndex;
22867
- owner.crossDestCurveIndex = nextCurveIndex;
22868
- crossCurveData.push(owner);
22950
+ _proto._addCrossOwner = function _addCrossOwner(animatorLayerData, layerOwner, curCurveIndex, nextCurveIndex) {
22951
+ layerOwner.crossSrcCurveIndex = curCurveIndex;
22952
+ layerOwner.crossDestCurveIndex = nextCurveIndex;
22953
+ animatorLayerData.crossLayerOwnerCollection.push(layerOwner);
22869
22954
  };
22870
22955
  _proto._prepareCrossFading = function _prepareCrossFading(animatorLayerData) {
22871
- var crossCurveData = this._crossOwnerCollection;
22872
- var crossCurveMark = animatorLayerData.crossCurveMark;
22873
22956
  // Add src cross curve data.
22874
- this._prepareSrcCrossData(crossCurveData, animatorLayerData.srcPlayData, crossCurveMark, false);
22957
+ this._prepareSrcCrossData(animatorLayerData, false);
22875
22958
  // Add dest cross curve data.
22876
- this._prepareDestCrossData(crossCurveData, animatorLayerData.destPlayData, crossCurveMark, false);
22959
+ this._prepareDestCrossData(animatorLayerData, false);
22877
22960
  };
22878
22961
  _proto._prepareStandbyCrossFading = function _prepareStandbyCrossFading(animatorLayerData) {
22879
- var crossOwnerCollection = this._crossOwnerCollection;
22880
- var srcPlayData = animatorLayerData.srcPlayData, crossCurveMark = animatorLayerData.crossCurveMark;
22881
22962
  // Standby have two sub state, one is never play, one is finished, never play srcPlayData.state is null.
22882
- srcPlayData.state && this._prepareSrcCrossData(crossOwnerCollection, srcPlayData, crossCurveMark, true);
22963
+ animatorLayerData.srcPlayData.state && this._prepareSrcCrossData(animatorLayerData, true);
22883
22964
  // Add dest cross curve data.
22884
- this._prepareDestCrossData(crossOwnerCollection, animatorLayerData.destPlayData, crossCurveMark, true);
22965
+ this._prepareDestCrossData(animatorLayerData, true);
22885
22966
  };
22886
22967
  _proto._prepareFixedPoseCrossFading = function _prepareFixedPoseCrossFading(animatorLayerData) {
22887
- var crossOwnerCollection = this._crossOwnerCollection;
22968
+ var crossLayerOwnerCollection = animatorLayerData.crossLayerOwnerCollection;
22888
22969
  // Save current cross curve data owner fixed pose.
22889
- for(var i = crossOwnerCollection.length - 1; i >= 0; i--){
22890
- var item = crossOwnerCollection[i];
22891
- item.saveFixedPoseValue();
22970
+ for(var i = crossLayerOwnerCollection.length - 1; i >= 0; i--){
22971
+ var layerOwner = crossLayerOwnerCollection[i];
22972
+ if (!layerOwner) continue;
22973
+ layerOwner.curveOwner.saveFixedPoseValue();
22892
22974
  // Reset destCurveIndex When fixed pose crossFading again.
22893
- item.crossDestCurveIndex = -1;
22975
+ layerOwner.crossDestCurveIndex = -1;
22894
22976
  }
22895
22977
  // prepare dest AnimatorState cross data.
22896
- this._prepareDestCrossData(crossOwnerCollection, animatorLayerData.destPlayData, animatorLayerData.crossCurveMark, true);
22897
- };
22898
- _proto._prepareSrcCrossData = function _prepareSrcCrossData(crossCurveData, srcPlayData, crossCurveMark, saveFixed) {
22899
- var curveOwners = srcPlayData.stateData.curveOwners;
22900
- for(var i = curveOwners.length - 1; i >= 0; i--){
22901
- var owner = curveOwners[i];
22902
- if (!owner) continue;
22903
- owner.crossCurveMark = crossCurveMark;
22904
- owner.crossCurveDataIndex = crossCurveData.length;
22905
- saveFixed && owner.saveFixedPoseValue();
22906
- this._addCrossCurveData(crossCurveData, owner, i, -1);
22907
- }
22908
- };
22909
- _proto._prepareDestCrossData = function _prepareDestCrossData(crossCurveData, destPlayData, crossCurveMark, saveFixed) {
22910
- var curveOwners = destPlayData.stateData.curveOwners;
22911
- for(var i = curveOwners.length - 1; i >= 0; i--){
22912
- var owner = curveOwners[i];
22913
- if (!owner) continue;
22914
- if (owner.crossCurveMark === crossCurveMark) {
22915
- crossCurveData[owner.crossCurveDataIndex].crossDestCurveIndex = i;
22978
+ this._prepareDestCrossData(animatorLayerData, true);
22979
+ };
22980
+ _proto._prepareSrcCrossData = function _prepareSrcCrossData(animatorLayerData, saveFixed) {
22981
+ var curveLayerOwner = animatorLayerData.srcPlayData.stateData.curveLayerOwner;
22982
+ for(var i = curveLayerOwner.length - 1; i >= 0; i--){
22983
+ var layerOwner = curveLayerOwner[i];
22984
+ if (!layerOwner) continue;
22985
+ layerOwner.crossCurveMark = animatorLayerData.crossCurveMark;
22986
+ saveFixed && layerOwner.curveOwner.saveFixedPoseValue();
22987
+ this._addCrossOwner(animatorLayerData, layerOwner, i, -1);
22988
+ }
22989
+ };
22990
+ _proto._prepareDestCrossData = function _prepareDestCrossData(animatorLayerData, saveFixed) {
22991
+ var curveLayerOwner = animatorLayerData.destPlayData.stateData.curveLayerOwner;
22992
+ for(var i = curveLayerOwner.length - 1; i >= 0; i--){
22993
+ var layerOwner = curveLayerOwner[i];
22994
+ if (!layerOwner) continue;
22995
+ if (layerOwner.crossCurveMark === animatorLayerData.crossCurveMark) {
22996
+ layerOwner.crossDestCurveIndex = i;
22916
22997
  } else {
22917
- owner.saveDefaultValue();
22998
+ var owner = layerOwner.curveOwner;
22918
22999
  saveFixed && owner.saveFixedPoseValue();
22919
- owner.crossCurveMark = crossCurveMark;
22920
- owner.crossCurveDataIndex = crossCurveData.length;
22921
- this._addCrossCurveData(crossCurveData, owner, -1, i);
23000
+ layerOwner.crossCurveMark = animatorLayerData.crossCurveMark;
23001
+ this._addCrossOwner(animatorLayerData, layerOwner, -1, i);
22922
23002
  }
22923
23003
  }
22924
23004
  };
@@ -22933,7 +23013,7 @@ exports.AnimatorLayerBlendingMode = void 0;
22933
23013
  var srcPlayData = layerData.srcPlayData, destPlayData = layerData.destPlayData, crossFadeTransitionInfo = layerData.crossFadeTransition;
22934
23014
  var additive = blendingMode === exports.AnimatorLayerBlendingMode.Additive;
22935
23015
  firstLayer && (weight = 1.0);
22936
- //TODO: 任意情况都应该检查,后面要优化
23016
+ //@todo: All situations should be checked, optimizations will follow later.
22937
23017
  layerData.layerState !== LayerState.FixedCrossFading && this._checkTransition(srcPlayData, crossFadeTransitionInfo, layerIndex);
22938
23018
  switch(layerData.layerState){
22939
23019
  case LayerState.Playing:
@@ -22945,26 +23025,36 @@ exports.AnimatorLayerBlendingMode = void 0;
22945
23025
  case LayerState.CrossFading:
22946
23026
  this._updateCrossFade(srcPlayData, destPlayData, layerData, layerIndex, weight, deltaTime, additive, aniUpdate);
22947
23027
  break;
23028
+ case LayerState.Finished:
23029
+ this._updateFinishedState(srcPlayData, weight, additive, aniUpdate);
23030
+ break;
22948
23031
  }
22949
23032
  };
22950
23033
  _proto._updatePlayingState = function _updatePlayingState(playData, layerData, layerIndex, weight, delta, additive, aniUpdate) {
22951
- var _playData_stateData = playData.stateData, curveOwners = _playData_stateData.curveOwners, eventHandlers = _playData_stateData.eventHandlers;
23034
+ var _playData_stateData = playData.stateData, curveLayerOwner = _playData_stateData.curveLayerOwner, eventHandlers = _playData_stateData.eventHandlers;
22952
23035
  var state = playData.state, lastPlayState = playData.playState, lastClipTime = playData.clipTime;
22953
23036
  var _state_clip = state.clip, curveBindings = _state_clip._curveBindings;
22954
23037
  playData.update(this.speed < 0);
22955
- if (!aniUpdate) {
22956
- return;
22957
- }
22958
23038
  var clipTime = playData.clipTime, playState = playData.playState;
22959
- eventHandlers.length && this._fireAnimationEvents(playData, eventHandlers, lastClipTime, clipTime);
22960
- for(var i = curveBindings.length - 1; i >= 0; i--){
22961
- var owner = curveOwners[i];
22962
- owner == null ? void 0 : owner.evaluateAndApplyValue(curveBindings[i].curve, clipTime, weight, additive);
23039
+ var finished = playState === AnimatorStatePlayState.Finished;
23040
+ if (aniUpdate || finished) {
23041
+ for(var i = curveBindings.length - 1; i >= 0; i--){
23042
+ var layerOwner = curveLayerOwner[i];
23043
+ var owner = layerOwner == null ? void 0 : layerOwner.curveOwner;
23044
+ if (!owner) continue;
23045
+ var curve = curveBindings[i].curve;
23046
+ if (curve.keys.length) {
23047
+ var value = owner.evaluateValue(curve, clipTime, additive);
23048
+ aniUpdate && owner.applyValue(value, weight, additive);
23049
+ finished && layerOwner.saveFinalValue();
23050
+ }
23051
+ }
22963
23052
  }
22964
23053
  playData.frameTime += state.speed * delta;
22965
23054
  if (playState === AnimatorStatePlayState.Finished) {
22966
- layerData.layerState = LayerState.Standby;
23055
+ layerData.layerState = LayerState.Finished;
22967
23056
  }
23057
+ eventHandlers.length && this._fireAnimationEvents(playData, eventHandlers, lastClipTime, clipTime);
22968
23058
  if (lastPlayState === AnimatorStatePlayState.UnStarted) {
22969
23059
  this._callAnimatorScriptOnEnter(state, layerIndex);
22970
23060
  }
@@ -22975,7 +23065,7 @@ exports.AnimatorLayerBlendingMode = void 0;
22975
23065
  }
22976
23066
  };
22977
23067
  _proto._updateCrossFade = function _updateCrossFade(srcPlayData, destPlayData, layerData, layerIndex, weight, delta, additive, aniUpdate) {
22978
- var _this = this, crossCurveDataCollection = _this._crossOwnerCollection;
23068
+ var crossLayerOwnerCollection = layerData.crossLayerOwnerCollection;
22979
23069
  var _srcPlayData_state_clip = srcPlayData.state.clip, srcCurves = _srcPlayData_state_clip._curveBindings;
22980
23070
  var srcState = srcPlayData.state, srcStateData = srcPlayData.stateData, lastSrcPlayState = srcPlayData.playState;
22981
23071
  var srcEventHandlers = srcStateData.eventHandlers;
@@ -22984,18 +23074,27 @@ exports.AnimatorLayerBlendingMode = void 0;
22984
23074
  var _destState_clip = destState.clip, destCurves = _destState_clip._curveBindings;
22985
23075
  var lastSrcClipTime = srcPlayData.clipTime;
22986
23076
  var lastDestClipTime = destPlayData.clipTime;
22987
- var crossWeight = Math.abs(destPlayData.frameTime) / (destState._getDuration() * layerData.crossFadeTransition.duration);
22988
- crossWeight >= 1.0 && (crossWeight = 1.0);
23077
+ var duration = destState._getDuration() * layerData.crossFadeTransition.duration;
23078
+ var crossWeight = Math.abs(destPlayData.frameTime) / duration;
23079
+ (crossWeight >= 1.0 || duration === 0) && (crossWeight = 1.0);
22989
23080
  srcPlayData.update(this.speed < 0);
22990
23081
  destPlayData.update(this.speed < 0);
22991
- var srcPlayState = srcPlayData.playState;
22992
- var destPlayState = destPlayData.playState;
22993
- this._updateCrossFadeData(layerData, crossWeight, delta, false);
22994
- if (!aniUpdate) {
22995
- return;
23082
+ var srcClipTime = srcPlayData.clipTime, srcPlayState = srcPlayData.playState;
23083
+ var destClipTime = destPlayData.clipTime, destPlayState = destPlayData.playState;
23084
+ var finished = destPlayData.playState === AnimatorStatePlayState.Finished;
23085
+ if (aniUpdate || finished) {
23086
+ for(var i = crossLayerOwnerCollection.length - 1; i >= 0; i--){
23087
+ var layerOwner = crossLayerOwnerCollection[i];
23088
+ var owner = layerOwner == null ? void 0 : layerOwner.curveOwner;
23089
+ if (!owner) continue;
23090
+ var srcCurveIndex = layerOwner.crossSrcCurveIndex;
23091
+ var destCurveIndex = layerOwner.crossDestCurveIndex;
23092
+ var value = owner.evaluateCrossFadeValue(srcCurveIndex >= 0 ? srcCurves[srcCurveIndex].curve : null, destCurveIndex >= 0 ? destCurves[destCurveIndex].curve : null, srcClipTime, destClipTime, crossWeight, additive);
23093
+ aniUpdate && owner.applyValue(value, weight, additive);
23094
+ finished && layerOwner.saveFinalValue();
23095
+ }
22996
23096
  }
22997
- var srcClipTime = srcPlayData.clipTime;
22998
- var destClipTime = destPlayData.clipTime;
23097
+ this._updateCrossFadeData(layerData, crossWeight, delta, false);
22999
23098
  srcEventHandlers.length && this._fireAnimationEvents(srcPlayData, srcEventHandlers, lastSrcClipTime, srcClipTime);
23000
23099
  destEventHandlers.length && this._fireAnimationEvents(destPlayData, destEventHandlers, lastDestClipTime, destClipTime);
23001
23100
  if (lastSrcPlayState === AnimatorStatePlayState.UnStarted) {
@@ -23014,28 +23113,34 @@ exports.AnimatorLayerBlendingMode = void 0;
23014
23113
  } else {
23015
23114
  this._callAnimatorScriptOnUpdate(destState, layerIndex);
23016
23115
  }
23017
- for(var i = crossCurveDataCollection.length - 1; i >= 0; i--){
23018
- var crossCurveData = crossCurveDataCollection[i];
23019
- var crossSrcCurveIndex = crossCurveData.crossSrcCurveIndex, crossDestCurveIndex = crossCurveData.crossDestCurveIndex;
23020
- crossCurveData.crossFadeAndApplyValue(crossSrcCurveIndex >= 0 ? srcCurves[crossSrcCurveIndex].curve : null, crossDestCurveIndex >= 0 ? destCurves[crossDestCurveIndex].curve : null, srcClipTime, destClipTime, crossWeight, weight, additive);
23021
- }
23022
23116
  };
23023
- _proto._updateCrossFadeFromPose = function _updateCrossFadeFromPose(destPlayData, layerData, layerIndex, layerWeight, delta, additive, aniUpdate) {
23024
- var crossCurveDataCollection = this._crossOwnerCollection;
23117
+ _proto._updateCrossFadeFromPose = function _updateCrossFadeFromPose(destPlayData, layerData, layerIndex, weight, delta, additive, aniUpdate) {
23118
+ var crossLayerOwnerCollection = layerData.crossLayerOwnerCollection;
23025
23119
  var state = destPlayData.state, stateData = destPlayData.stateData, lastPlayState = destPlayData.playState;
23026
23120
  var eventHandlers = stateData.eventHandlers;
23027
23121
  var _state_clip = state.clip, curveBindings = _state_clip._curveBindings;
23028
23122
  var lastDestClipTime = destPlayData.clipTime;
23029
- var crossWeight = Math.abs(destPlayData.frameTime) / (state._getDuration() * layerData.crossFadeTransition.duration);
23030
- crossWeight >= 1.0 && (crossWeight = 1.0);
23123
+ var duration = state._getDuration() * layerData.crossFadeTransition.duration;
23124
+ var crossWeight = Math.abs(destPlayData.frameTime) / duration;
23125
+ (crossWeight >= 1.0 || duration === 0) && (crossWeight = 1.0);
23031
23126
  destPlayData.update(this.speed < 0);
23032
23127
  var playState = destPlayData.playState;
23033
23128
  this._updateCrossFadeData(layerData, crossWeight, delta, true);
23034
- if (!aniUpdate) {
23035
- return;
23036
- }
23037
23129
  var destClipTime = destPlayData.clipTime;
23038
- //TODO: srcState 少了最新一段时间的判断
23130
+ var finished = playState === AnimatorStatePlayState.Finished;
23131
+ // 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.
23132
+ if (aniUpdate || finished) {
23133
+ for(var i = crossLayerOwnerCollection.length - 1; i >= 0; i--){
23134
+ var layerOwner = crossLayerOwnerCollection[i];
23135
+ var owner = layerOwner == null ? void 0 : layerOwner.curveOwner;
23136
+ if (!owner) continue;
23137
+ var curveIndex = layerOwner.crossDestCurveIndex;
23138
+ var value = layerOwner.curveOwner.crossFadeFromPoseAndApplyValue(curveIndex >= 0 ? curveBindings[curveIndex].curve : null, destClipTime, crossWeight, additive);
23139
+ aniUpdate && owner.applyValue(value, weight, additive);
23140
+ finished && layerOwner.saveFinalValue();
23141
+ }
23142
+ }
23143
+ //@todo: srcState is missing the judgment of the most recent period."
23039
23144
  eventHandlers.length && this._fireAnimationEvents(destPlayData, eventHandlers, lastDestClipTime, destClipTime);
23040
23145
  if (lastPlayState === AnimatorStatePlayState.UnStarted) {
23041
23146
  this._callAnimatorScriptOnEnter(state, layerIndex);
@@ -23045,10 +23150,18 @@ exports.AnimatorLayerBlendingMode = void 0;
23045
23150
  } else {
23046
23151
  this._callAnimatorScriptOnUpdate(state, layerIndex);
23047
23152
  }
23048
- for(var i = crossCurveDataCollection.length - 1; i >= 0; i--){
23049
- var crossCurveData = crossCurveDataCollection[i];
23050
- var crossDestCurveIndex = crossCurveData.crossDestCurveIndex;
23051
- crossCurveData.crossFadeFromPoseAndApplyValue(crossDestCurveIndex >= 0 ? curveBindings[crossDestCurveIndex].curve : null, destClipTime, crossWeight, layerWeight, additive);
23153
+ };
23154
+ _proto._updateFinishedState = function _updateFinishedState(playData, weight, additive, aniUpdate) {
23155
+ if (!aniUpdate) {
23156
+ return;
23157
+ }
23158
+ var curveLayerOwner = playData.stateData.curveLayerOwner;
23159
+ var _playData_state_clip = playData.state.clip, curveBindings = _playData_state_clip._curveBindings;
23160
+ for(var i = curveBindings.length - 1; i >= 0; i--){
23161
+ var layerOwner = curveLayerOwner[i];
23162
+ var owner = layerOwner == null ? void 0 : layerOwner.curveOwner;
23163
+ if (!owner) continue;
23164
+ owner.applyValue(layerOwner.finalValue, weight, additive);
23052
23165
  }
23053
23166
  };
23054
23167
  _proto._updateCrossFadeData = function _updateCrossFadeData(layerData, crossWeight, delta, fixed) {
@@ -23056,7 +23169,7 @@ exports.AnimatorLayerBlendingMode = void 0;
23056
23169
  destPlayData.frameTime += destPlayData.state.speed * delta;
23057
23170
  if (crossWeight === 1.0) {
23058
23171
  if (destPlayData.playState === AnimatorStatePlayState.Finished) {
23059
- layerData.layerState = LayerState.Standby;
23172
+ layerData.layerState = LayerState.Finished;
23060
23173
  } else {
23061
23174
  layerData.layerState = LayerState.Playing;
23062
23175
  }
@@ -23066,25 +23179,24 @@ exports.AnimatorLayerBlendingMode = void 0;
23066
23179
  fixed || (layerData.srcPlayData.frameTime += layerData.srcPlayData.state.speed * delta);
23067
23180
  }
23068
23181
  };
23069
- _proto._preparePlay = function _preparePlay(layerData, playState, playStateData) {
23182
+ _proto._preparePlay = function _preparePlay(layerData, playState) {
23070
23183
  if (layerData.layerState === LayerState.Playing) {
23071
23184
  var srcPlayData = layerData.srcPlayData;
23072
23185
  if (srcPlayData.state !== playState) {
23073
- var curveOwners = srcPlayData.stateData.curveOwners;
23074
- for(var i = curveOwners.length - 1; i >= 0; i--){
23075
- var owner = curveOwners[i];
23076
- (owner == null ? void 0 : owner.hasSavedDefaultValue) && owner.revertDefaultValue();
23186
+ var curveLayerOwner = srcPlayData.stateData.curveLayerOwner;
23187
+ for(var i = curveLayerOwner.length - 1; i >= 0; i--){
23188
+ var _curveLayerOwner_i;
23189
+ var owner = (_curveLayerOwner_i = curveLayerOwner[i]) == null ? void 0 : _curveLayerOwner_i.curveOwner;
23190
+ owner.revertDefaultValue();
23077
23191
  }
23078
- this._saveDefaultValues(playStateData);
23079
23192
  }
23080
23193
  } else {
23081
- // layerState is CrossFading, FixedCrossFading, Standby
23082
- var crossCurveDataCollection = this._crossOwnerCollection;
23083
- for(var i1 = crossCurveDataCollection.length - 1; i1 >= 0; i1--){
23084
- var owner1 = crossCurveDataCollection[i1];
23085
- owner1.hasSavedDefaultValue && owner1.revertDefaultValue();
23194
+ // layerState is CrossFading, FixedCrossFading, Standby, Finished
23195
+ var crossLayerOwnerCollection = layerData.crossLayerOwnerCollection;
23196
+ for(var i1 = crossLayerOwnerCollection.length - 1; i1 >= 0; i1--){
23197
+ var owner1 = crossLayerOwnerCollection[i1].curveOwner;
23198
+ owner1.revertDefaultValue();
23086
23199
  }
23087
- this._saveDefaultValues(playStateData);
23088
23200
  }
23089
23201
  };
23090
23202
  _proto._checkTransition = function _checkTransition(stateData, crossFadeTransition, layerIndex) {
@@ -23101,7 +23213,7 @@ exports.AnimatorLayerBlendingMode = void 0;
23101
23213
  _proto._crossFadeByTransition = function _crossFadeByTransition(transition, layerIndex) {
23102
23214
  var name = transition.destinationState.name;
23103
23215
  var stateInfo = this._getAnimatorStateInfo(name, layerIndex);
23104
- var crossState = stateInfo.state;
23216
+ var crossState = stateInfo.state, playLayerIndex = stateInfo.layerIndex;
23105
23217
  if (!crossState) {
23106
23218
  return;
23107
23219
  }
@@ -23109,21 +23221,21 @@ exports.AnimatorLayerBlendingMode = void 0;
23109
23221
  console.warn("The state named " + name + " has no AnimationClip data.");
23110
23222
  return;
23111
23223
  }
23112
- var animatorLayerData = this._getAnimatorLayerData(stateInfo.layerIndex);
23224
+ var animatorLayerData = this._getAnimatorLayerData(playLayerIndex);
23113
23225
  var layerState = animatorLayerData.layerState;
23114
23226
  var destPlayData = animatorLayerData.destPlayData;
23115
- var animatorStateData = this._getAnimatorStateData(name, crossState, animatorLayerData);
23227
+ var animatorStateData = this._getAnimatorStateData(name, crossState, animatorLayerData, playLayerIndex);
23116
23228
  var duration = crossState._getDuration();
23117
23229
  var offset = duration * transition.offset;
23118
23230
  destPlayData.reset(crossState, animatorStateData, offset);
23119
23231
  switch(layerState){
23120
- // Maybe not play, maybe end.
23121
23232
  case LayerState.Standby:
23122
23233
  animatorLayerData.layerState = LayerState.FixedCrossFading;
23123
23234
  this._clearCrossData(animatorLayerData);
23124
23235
  this._prepareStandbyCrossFading(animatorLayerData);
23125
23236
  break;
23126
23237
  case LayerState.Playing:
23238
+ case LayerState.Finished:
23127
23239
  animatorLayerData.layerState = LayerState.CrossFading;
23128
23240
  this._clearCrossData(animatorLayerData);
23129
23241
  this._prepareCrossFading(animatorLayerData);
@@ -23220,6 +23332,12 @@ exports.AnimatorLayerBlendingMode = void 0;
23220
23332
  }
23221
23333
  }
23222
23334
  };
23335
+ _proto._revertCurveOwners = function _revertCurveOwners() {
23336
+ var curveOwners = this._needRevertCurveOwners;
23337
+ for(var i = 0, n = curveOwners.length; i < n; ++i){
23338
+ curveOwners[i].revertDefaultValue();
23339
+ }
23340
+ };
23223
23341
  _create_class$2(Animator, [
23224
23342
  {
23225
23343
  key: "animatorController",
@@ -23251,10 +23369,10 @@ __decorate$1([
23251
23369
  ], Animator.prototype, "_animatorLayersData", void 0);
23252
23370
  __decorate$1([
23253
23371
  ignoreClone
23254
- ], Animator.prototype, "_crossOwnerCollection", void 0);
23372
+ ], Animator.prototype, "_curveOwnerPool", void 0);
23255
23373
  __decorate$1([
23256
23374
  ignoreClone
23257
- ], Animator.prototype, "_animationCurveOwners", void 0);
23375
+ ], Animator.prototype, "_needRevertCurveOwners", void 0);
23258
23376
  __decorate$1([
23259
23377
  ignoreClone
23260
23378
  ], Animator.prototype, "_animationEventHandlerPool", void 0);
@@ -36149,7 +36267,7 @@ function _interopNamespace(e) {
36149
36267
  }
36150
36268
  var CoreObjects__namespace = /*#__PURE__*/ _interopNamespace(CoreObjects);
36151
36269
  //@ts-ignore
36152
- var version = "0.9.13";
36270
+ var version = "0.9.15";
36153
36271
  console.log("Galacean engine version: " + version);
36154
36272
  for(var key in CoreObjects__namespace){
36155
36273
  CoreObjects.Loader.registerClass(key, CoreObjects__namespace[key]);