File tree 2 files changed +10
-6
lines changed
core/src/animation/internal/animationCurveOwner/assembler
2 files changed +10
-6
lines changed Original file line number Diff line number Diff line change @@ -7,18 +7,22 @@ import { IAnimationCurveOwnerAssembler } from "./IAnimationCurveOwnerAssembler";
7
7
* @internal
8
8
*/
9
9
export class BlendShapeWeightsAnimationCurveOwnerAssembler implements IAnimationCurveOwnerAssembler < Float32Array > {
10
- private _skinnedMeshRenderer : SkinnedMeshRenderer ;
10
+ private _skinnedMeshRenderer : SkinnedMeshRenderer [ ] = [ ] ;
11
11
12
12
initialize ( owner : AnimationCurveOwner < KeyframeValueType > ) : void {
13
- this . _skinnedMeshRenderer = owner . target . getComponent ( SkinnedMeshRenderer ) ;
13
+ // @todo : Compatible with multiple SkinnedMeshRenderer in a entity, optimize later.
14
+ owner . target . getComponents ( SkinnedMeshRenderer , this . _skinnedMeshRenderer ) ;
14
15
}
15
16
16
17
getTargetValue ( ) : Float32Array {
17
- return this . _skinnedMeshRenderer . blendShapeWeights ;
18
+ return this . _skinnedMeshRenderer [ 0 ] . blendShapeWeights ;
18
19
}
19
20
20
21
setTargetValue ( value : Float32Array ) : void {
21
- this . _skinnedMeshRenderer . blendShapeWeights = value ;
22
+ const skinnedMeshRenderer = this . _skinnedMeshRenderer ;
23
+ for ( let i = 0 , n = skinnedMeshRenderer . length ; i < n ; i ++ ) {
24
+ skinnedMeshRenderer [ i ] . blendShapeWeights = value ;
25
+ }
22
26
}
23
27
}
24
28
Original file line number Diff line number Diff line change @@ -203,12 +203,12 @@ export class AnimationParser extends Parser {
203
203
if ( curve . interpolation === InterpolationType . CubicSpine ) {
204
204
keyframe . inTangent = Array . from ( output . subarray ( offset , offset + outputSize ) ) ;
205
205
offset += outputSize ;
206
- keyframe . value = output . subarray ( offset , offset + outputSize ) as Float32Array ;
206
+ keyframe . value = output . slice ( offset , offset + outputSize ) as Float32Array ;
207
207
offset += outputSize ;
208
208
keyframe . outTangent = Array . from ( output . subarray ( offset , offset + outputSize ) ) ;
209
209
offset += outputSize ;
210
210
} else {
211
- keyframe . value = output . subarray ( offset , offset + outputSize ) as Float32Array ;
211
+ keyframe . value = output . slice ( offset , offset + outputSize ) as Float32Array ;
212
212
offset += outputSize ;
213
213
}
214
214
curve . addKey ( keyframe ) ;
You can’t perform that action at this time.
0 commit comments