@@ -25,8 +25,6 @@ export abstract class Joint extends Component {
2525 private _force = Infinity ;
2626 private _torque = Infinity ;
2727 private _automaticConnectedAnchor = true ;
28- @ignoreClone
29- private _updateConnectedActualAnchor : Function ;
3028
3129 /**
3230 * The connected collider.
@@ -72,26 +70,13 @@ export abstract class Joint extends Component {
7270 * The connectedAnchor is automatically calculated, if you want to set it manually, please set automaticConnectedAnchor to false
7371 */
7472 get connectedAnchor ( ) : Vector3 {
75- const connectedColliderAnchor = this . _connectedColliderInfo . anchor ;
76- if ( this . _automaticConnectedAnchor ) {
77- //@ts -ignore
78- connectedColliderAnchor . _onValueChanged = null ;
79- this . _calculateConnectedAnchor ( ) ;
80- //@ts -ignore
81- connectedColliderAnchor . _onValueChanged = this . _updateConnectedActualAnchor ;
82- }
83- return connectedColliderAnchor ;
73+ return this . _connectedColliderInfo . anchor ;
8474 }
8575
8676 set connectedAnchor ( value : Vector3 ) {
87- if ( this . _automaticConnectedAnchor ) {
88- console . warn ( "Cannot set connectedAnchor when automaticConnectedAnchor is true." ) ;
89- return ;
90- }
9177 const connectedAnchor = this . _connectedColliderInfo . anchor ;
9278 if ( value !== connectedAnchor ) {
9379 connectedAnchor . copyFrom ( value ) ;
94- this . _updateActualAnchor ( AnchorOwner . Connected ) ;
9580 }
9681 }
9782
@@ -195,9 +180,9 @@ export abstract class Joint extends Component {
195180 super ( entity ) ;
196181 //@ts -ignore
197182 this . _colliderInfo . anchor . _onValueChanged = this . _updateActualAnchor . bind ( this , AnchorOwner . Self ) ;
198- this . _updateConnectedActualAnchor = this . _updateActualAnchor . bind ( this , AnchorOwner . Connected ) ;
183+ this . _handleConnectedAnchorChanged = this . _handleConnectedAnchorChanged . bind ( this ) ;
199184 //@ts -ignore
200- this . _connectedColliderInfo . anchor . _onValueChanged = this . _updateConnectedActualAnchor ;
185+ this . _connectedColliderInfo . anchor . _onValueChanged = this . _handleConnectedAnchorChanged . bind ( this ) ;
201186
202187 this . _onSelfTransformChanged = this . _onSelfTransformChanged . bind ( this ) ;
203188 this . _onConnectedTransformChanged = this . _onConnectedTransformChanged . bind ( this ) ;
@@ -250,6 +235,8 @@ export abstract class Joint extends Component {
250235 const connectedActualAnchor = connectedColliderInfo . actualAnchor ;
251236 const connectedCollider = connectedColliderInfo . collider ;
252237
238+ // @ts -ignore
239+ connectedAnchor . _onValueChanged = null ;
253240 if ( connectedCollider ) {
254241 const { worldPosition : connectedPos , lossyWorldScale : connectedWorldScale } = connectedCollider . entity . transform ;
255242 Vector3 . subtract ( selfPos , connectedPos , Joint . _tempVector3 ) ;
@@ -259,6 +246,18 @@ export abstract class Joint extends Component {
259246 Vector3 . add ( selfPos , selfActualAnchor , connectedActualAnchor ) ;
260247 connectedAnchor . copyFrom ( connectedActualAnchor ) ;
261248 }
249+ // @ts -ignore
250+ connectedAnchor . _onValueChanged = this . _handleConnectedAnchorChanged ;
251+ this . _updateActualAnchor ( AnchorOwner . Connected ) ;
252+ }
253+
254+ @ignoreClone
255+ private _handleConnectedAnchorChanged ( ) : void {
256+ if ( this . _automaticConnectedAnchor ) {
257+ console . warn ( "Cannot set connectedAnchor when automaticConnectedAnchor is true." ) ;
258+ } else {
259+ this . _updateActualAnchor ( AnchorOwner . Connected ) ;
260+ }
262261 }
263262
264263 @ignoreClone
0 commit comments