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 // copy the avatar into the mixedAvatarByteArray packet
mixedAvatarByteArray.append(avatarByteArray); 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); QByteArray billboardPacket = byteArrayWithPopulatedHeader(PacketTypeAvatarBillboard);
billboardPacket.append(otherNode->getUUID().toRfc4122()); billboardPacket.append(otherNode->getUUID().toRfc4122());
billboardPacket.append(otherNodeData->getAvatar().getBillboard()); billboardPacket.append(otherNodeData->getAvatar().getBillboard());
nodeList->writeDatagram(billboardPacket, node); nodeList->writeDatagram(billboardPacket, node);
} }
if (randFloat() < BILLBOARD_AND_IDENTITY_SEND_PROBABILITY) { if (randFloat() < BILLBOARD_AND_IDENTITY_SEND_PROBABILITY || forceSend) {
QByteArray identityPacket = byteArrayWithPopulatedHeader(PacketTypeAvatarIdentity); QByteArray identityPacket = byteArrayWithPopulatedHeader(PacketTypeAvatarIdentity);
QByteArray individualData = otherNodeData->getAvatar().identityByteArray(); QByteArray individualData = otherNodeData->getAvatar().identityByteArray();

View file

@ -9,7 +9,8 @@
#include "AvatarMixerClientData.h" #include "AvatarMixerClientData.h"
AvatarMixerClientData::AvatarMixerClientData() : AvatarMixerClientData::AvatarMixerClientData() :
NodeData() NodeData(),
_hasReceivedFirstPackets(false)
{ {
} }
@ -19,3 +20,9 @@ int AvatarMixerClientData::parseData(const QByteArray& packet) {
int offset = numBytesForPacketHeader(packet); int offset = numBytesForPacketHeader(packet);
return _avatar.parseDataAtOffset(packet, offset); 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); int parseData(const QByteArray& packet);
AvatarData& getAvatar() { return _avatar; } AvatarData& getAvatar() { return _avatar; }
bool checkAndSetHasReceivedFirstPackets();
private: private:
AvatarData _avatar; AvatarData _avatar;
bool _hasReceivedFirstPackets;
}; };
#endif /* defined(__hifi__AvatarMixerClientData__) */ #endif /* defined(__hifi__AvatarMixerClientData__) */