send mesh and billboard on receiver's first connect

This commit is contained in:
Stephen Birarda 2014-03-25 10:34:38 -07:00
parent e8b9594758
commit e6b83ac52d
3 changed files with 16 additions and 4 deletions

View file

@ -102,14 +102,16 @@ void AvatarMixer::broadcastAvatarData() {
// copy the avatar into the mixedAvatarByteArray packet
mixedAvatarByteArray.append(avatarByteArray);
if (randFloat() < BILLBOARD_AND_IDENTITY_SEND_PROBABILITY) {
bool forceSend = !myData->checkAndSetHasReceivedFirstPackets();
if (randFloat() < BILLBOARD_AND_IDENTITY_SEND_PROBABILITY || forceSend) {
QByteArray billboardPacket = byteArrayWithPopulatedHeader(PacketTypeAvatarBillboard);
billboardPacket.append(otherNode->getUUID().toRfc4122());
billboardPacket.append(otherNodeData->getAvatar().getBillboard());
nodeList->writeDatagram(billboardPacket, node);
}
if (randFloat() < BILLBOARD_AND_IDENTITY_SEND_PROBABILITY) {
if (randFloat() < BILLBOARD_AND_IDENTITY_SEND_PROBABILITY || forceSend) {
QByteArray identityPacket = byteArrayWithPopulatedHeader(PacketTypeAvatarIdentity);
QByteArray individualData = otherNodeData->getAvatar().identityByteArray();

View file

@ -9,7 +9,8 @@
#include "AvatarMixerClientData.h"
AvatarMixerClientData::AvatarMixerClientData() :
NodeData()
NodeData(),
_hasReceivedFirstPackets(false)
{
}
@ -19,3 +20,9 @@ int AvatarMixerClientData::parseData(const QByteArray& packet) {
int offset = numBytesForPacketHeader(packet);
return _avatar.parseDataAtOffset(packet, offset);
}
bool AvatarMixerClientData::checkAndSetHasReceivedFirstPackets() {
bool oldValue = _hasReceivedFirstPackets;
_hasReceivedFirstPackets = true;
return oldValue;
}

View file

@ -21,9 +21,12 @@ public:
int parseData(const QByteArray& packet);
AvatarData& getAvatar() { return _avatar; }
bool checkAndSetHasReceivedFirstPackets();
private:
AvatarData _avatar;
bool _hasReceivedFirstPackets;
};
#endif /* defined(__hifi__AvatarMixerClientData__) */