Skip to content

Commit bc17e11

Browse files
committed
feat: blendShape anim compatible with multiple SkinMeshRenderer in one entity
1 parent 593396a commit bc17e11

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

packages/core/src/animation/internal/animationCurveOwner/assembler/BlendShapeWeightsAnimationCurveOwnerAssembler.ts

+7-4
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,21 @@ import { IAnimationCurveOwnerAssembler } from "./IAnimationCurveOwnerAssembler";
77
* @internal
88
*/
99
export class BlendShapeWeightsAnimationCurveOwnerAssembler implements IAnimationCurveOwnerAssembler<Float32Array> {
10-
private _skinnedMeshRenderer: SkinnedMeshRenderer;
10+
private _skinnedMeshRenderer: SkinnedMeshRenderer[] = [];
1111

1212
initialize(owner: AnimationCurveOwner<KeyframeValueType>): void {
13-
this._skinnedMeshRenderer = owner.target.getComponent(SkinnedMeshRenderer);
13+
owner.target.getComponents(SkinnedMeshRenderer, this._skinnedMeshRenderer);
1414
}
1515

1616
getTargetValue(): Float32Array {
17-
return this._skinnedMeshRenderer.blendShapeWeights;
17+
return this._skinnedMeshRenderer[0].blendShapeWeights;
1818
}
1919

2020
setTargetValue(value: Float32Array): void {
21-
this._skinnedMeshRenderer.blendShapeWeights = value;
21+
const skinnedMeshRenderer = this._skinnedMeshRenderer;
22+
for (let i = 0; i < skinnedMeshRenderer.length; i++) {
23+
skinnedMeshRenderer[i].blendShapeWeights = value;
24+
}
2225
}
2326
}
2427

0 commit comments

Comments
 (0)