void FixedUpdate()
    {
        foreach (KeyValuePair <short, NetworkedActor> na in actors)
        {
            VoosActor va = na.Value.actor;
            if (va != null && !va.reliablePhotonView.isMine && !va.IsParented())
            {
                Rigidbody rb        = va.GetComponent <Rigidbody>();
                bool      isDynamic = rb != null && va.GetEnablePhysics();

                Vector3    pos = rb != null ? rb.position : va.transform.position;
                Quaternion rot = rb != null ? rb.rotation : va.transform.rotation;

                if (!isDynamic || va.GetReplicantCatchUpMode())
                {
                    // Kinematic or non-RB. Lerp it.
                    Quaternion lerpedRot = Quaternion.Lerp(rot, na.Value.lastRotation, Mathf.Clamp01(Time.deltaTime * 5));
                    var        damped    = Vector3.SmoothDamp(pos, na.Value.lastPosition,
                                                              ref na.Value.posDampVelocity, 0.2f);

                    va.ForceReplicantPosition(damped);
                    va.ForceReplicantRotation(lerpedRot);
                }
                else
                {
                    rb.angularVelocity *= 0.9f;

                    if (!SnapRigidbodyOnRecv)
                    {
                        // Let physics simulate the position with our corrective velocity,
                        // but we still lerp the rotation.
                        Quaternion lerpedRot = Quaternion.Lerp(rot, na.Value.lastRotation, Mathf.Clamp01(Time.deltaTime * 5));
                        rb.rotation = lerpedRot;
                    }
                }
            }
        }
    }