So I have a few questions regarding this feature:
- When autoSync is turned on, does the system actually force everything to sync positions/rotations every time, or does it have some kind of optimized way of only moving the rigidbodies that are “dirty”? If so, how expensive is the “dirty” check (in other words; how great are the potential performance gains of doing it manually if we weren’t moving rigidbodies by using transforms anyway?)
- A sync is only needed when a transform with an attached Rigidbody/Collider was moved directly; not when a Rigidbody was moved directly with .position, .MovePosition, .velocity, or through physics forces/impacts. Correct?
- Right now, a MovePosition() is only really applied after the FixedUpdate phase. Does calling SyncTransforms apply it instantly or affects it in any way?
- If moving a Rigidbody with rigidbody.position or MovePosition, and autoSync is turned off, does it automatically do all the sync work for child Rigidbodies/Colliders, or do we have to call SyncTransforms manually to sync children?
- Will turning off autoSync cause any sort of unexpected behaviour with rigidbody interpolation? (does interpolation rely on changing the transform’s position internally and not the rigidbody’s?)
Basically, with all this, I am trying to figure out if I really need more than one single sync per fixedUpdate. I already make sure all of my rigidbodies are moved through rigidbody methods, and none of my vanilla colliders are moved at all (if they are moved, I’ll make them kinematic rigidbodies). So from what I understand, one sync would be enough (?)
thanks!