@@ -86,9 +86,9 @@ export class SkinnedMeshRenderer extends MeshRenderer {
86
86
87
87
set rootBone ( value : Entity ) {
88
88
if ( this . _rootBone !== value ) {
89
- this . _rootBone ?. transform . _updateFlagManager . removeListener ( this . _onTransformChanged ) ;
90
- value . transform . _updateFlagManager . addListener ( this . _onTransformChanged ) ;
89
+ this . _unRegisterEntityTransformListener ( ) ;
91
90
this . _rootBone = value ;
91
+ this . _registerEntityTransformListener ( ) ;
92
92
this . _dirtyUpdateFlag |= RendererUpdateFlags . WorldVolume ;
93
93
}
94
94
}
@@ -173,7 +173,7 @@ export class SkinnedMeshRenderer extends MeshRenderer {
173
173
*/
174
174
protected override _updateShaderData ( context : RenderContext ) : void {
175
175
const entity = this . entity ;
176
- const worldMatrix = this . _rootBone ? this . _rootBone . transform . worldMatrix : entity . transform . worldMatrix ;
176
+ const worldMatrix = ( this . _rootBone ?? entity ) . transform . worldMatrix ;
177
177
this . _updateTransformShaderData ( context , worldMatrix ) ;
178
178
179
179
const shaderData = this . shaderData ;
@@ -235,7 +235,7 @@ export class SkinnedMeshRenderer extends MeshRenderer {
235
235
*/
236
236
override _onDestroy ( ) : void {
237
237
super . _onDestroy ( ) ;
238
- this . _rootBone ?. transform . _updateFlagManager . removeListener ( this . _onTransformChanged ) ;
238
+ this . _unRegisterEntityTransformListener ( ) ;
239
239
this . _rootBone = null ;
240
240
this . _jointDataCreateCache = null ;
241
241
this . _skin = null ;
@@ -280,7 +280,14 @@ export class SkinnedMeshRenderer extends MeshRenderer {
280
280
* @internal
281
281
*/
282
282
protected override _registerEntityTransformListener ( ) : void {
283
- // Cancel register listener to entity transform.
283
+ ( this . _rootBone ?? this . _entity ) . transform . _updateFlagManager . addListener ( this . _onTransformChanged ) ;
284
+ }
285
+
286
+ /**
287
+ * @internal
288
+ */
289
+ protected override _unRegisterEntityTransformListener ( ) : void {
290
+ ( this . _rootBone ?? this . _entity ) . transform . _updateFlagManager . removeListener ( this . _onTransformChanged ) ;
284
291
}
285
292
286
293
/**
0 commit comments