Just in-case it actually gets through, it will fail to be parsed
by AvatarData::parseDataFromBuffer() due to it's size.
AvatarData::hasIdentityChangedAfterParsing() has no such checks.
For this to work, the server needs to send an empty AvatarIdentity packet back to the sender
when it receives a packet mismatch error. This AvatarIdentity packet will be different then
what the client expects and will trigger the incompatible version dialog.
Previously, the avatar-mixer was just silently dropping incoming mismatched version packets.
Causing the client to never get a response, and thus never showing the incompatible version dialog.
Because the joint mappings in the .fst can be wrong when the .fst isn't updated for quick changes in the .fbx.
Because models now really need the preRotation, which is only in the avatar .fbx.
Removed AvatarClientData::checkAndSetHasReceivedFirstPackets boolean.
This is handled by the AvatarClientData::checkAndSetHasReceivedFirstPacketsFrom
set.
This should fix the issue where a persons avatar was occasionally not visible to others
for a long period of time. This was due to several factors:
1) When a new avatar was added to the simulation that identity packet was not broadcast to
other avatars on the server. This would rely on random logic to send the identity eventually.
This is fixed in this PR, by sending identity packets to all other clients when a new clients
arrive.
2) The random identity logic was not being executed if the sequence number check caused an update
to be skipped. This means the probability of sending a random packet was reduced significantly,
especially for clients that were loading geometry on entry. This was fixed by doing the random
check before sequence number check.
3) The 1/300 probably used in the check was too low, this was only a 63% chance of sending a identity
packet within 5 seconds. This was fixed by changing the probability to 1/187, which is a 80% chance
to send an identity packet within 5 seconds.
4) The randFloat() implementation slightly reduced the identity packet probability due to quantization errors.
This has been replaced by a C++ std random number generator.