mirror of
https://github.com/overte-org/overte.git
synced 2025-07-24 09:23:49 +02:00
fixes to AvatarMixer for new UUID setup
This commit is contained in:
parent
1c70e09178
commit
628a3ba489
2 changed files with 9 additions and 6 deletions
|
@ -46,7 +46,7 @@ void attachAvatarDataToNode(Node* newNode) {
|
||||||
// 3) if we need to rate limit the amount of data we send, we can use a distance weighted "semi-random" function to
|
// 3) if we need to rate limit the amount of data we send, we can use a distance weighted "semi-random" function to
|
||||||
// determine which avatars are included in the packet stream
|
// determine which avatars are included in the packet stream
|
||||||
// 4) we should optimize the avatar data format to be more compact (100 bytes is pretty wasteful).
|
// 4) we should optimize the avatar data format to be more compact (100 bytes is pretty wasteful).
|
||||||
void broadcastAvatarData(NodeList* nodeList, sockaddr* nodeAddress) {
|
void broadcastAvatarData(NodeList* nodeList, const QUuid& receiverUUID, sockaddr* receiverAddress) {
|
||||||
static unsigned char broadcastPacketBuffer[MAX_PACKET_SIZE];
|
static unsigned char broadcastPacketBuffer[MAX_PACKET_SIZE];
|
||||||
static unsigned char avatarDataBuffer[MAX_PACKET_SIZE];
|
static unsigned char avatarDataBuffer[MAX_PACKET_SIZE];
|
||||||
unsigned char* broadcastPacket = (unsigned char*)&broadcastPacketBuffer[0];
|
unsigned char* broadcastPacket = (unsigned char*)&broadcastPacketBuffer[0];
|
||||||
|
@ -57,7 +57,7 @@ void broadcastAvatarData(NodeList* nodeList, sockaddr* nodeAddress) {
|
||||||
|
|
||||||
// send back a packet with other active node data to this node
|
// send back a packet with other active node data to this node
|
||||||
for (NodeList::iterator node = nodeList->begin(); node != nodeList->end(); node++) {
|
for (NodeList::iterator node = nodeList->begin(); node != nodeList->end(); node++) {
|
||||||
if (node->getLinkedData() && !socketMatch(nodeAddress, node->getActiveSocket())) {
|
if (node->getLinkedData() && node->getUUID() != receiverUUID) {
|
||||||
unsigned char* avatarDataEndpoint = addNodeToBroadcastPacket((unsigned char*)&avatarDataBuffer[0], &*node);
|
unsigned char* avatarDataEndpoint = addNodeToBroadcastPacket((unsigned char*)&avatarDataBuffer[0], &*node);
|
||||||
int avatarDataLength = avatarDataEndpoint - (unsigned char*)&avatarDataBuffer;
|
int avatarDataLength = avatarDataEndpoint - (unsigned char*)&avatarDataBuffer;
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ void broadcastAvatarData(NodeList* nodeList, sockaddr* nodeAddress) {
|
||||||
} else {
|
} else {
|
||||||
packetsSent++;
|
packetsSent++;
|
||||||
//printf("packetsSent=%d packetLength=%d\n", packetsSent, packetLength);
|
//printf("packetsSent=%d packetLength=%d\n", packetsSent, packetLength);
|
||||||
nodeList->getNodeSocket()->send(nodeAddress, broadcastPacket, currentBufferPosition - broadcastPacket);
|
nodeList->getNodeSocket()->send(receiverAddress, broadcastPacket, currentBufferPosition - broadcastPacket);
|
||||||
|
|
||||||
// reset the packet
|
// reset the packet
|
||||||
currentBufferPosition = broadcastPacket + numHeaderBytes;
|
currentBufferPosition = broadcastPacket + numHeaderBytes;
|
||||||
|
@ -83,7 +83,7 @@ void broadcastAvatarData(NodeList* nodeList, sockaddr* nodeAddress) {
|
||||||
}
|
}
|
||||||
packetsSent++;
|
packetsSent++;
|
||||||
//printf("packetsSent=%d packetLength=%d\n", packetsSent, packetLength);
|
//printf("packetsSent=%d packetLength=%d\n", packetsSent, packetLength);
|
||||||
nodeList->getNodeSocket()->send(nodeAddress, broadcastPacket, currentBufferPosition - broadcastPacket);
|
nodeList->getNodeSocket()->send(receiverAddress, broadcastPacket, currentBufferPosition - broadcastPacket);
|
||||||
}
|
}
|
||||||
|
|
||||||
AvatarMixer::AvatarMixer(const unsigned char* dataBuffer, int numBytes) : Assignment(dataBuffer, numBytes) {
|
AvatarMixer::AvatarMixer(const unsigned char* dataBuffer, int numBytes) : Assignment(dataBuffer, numBytes) {
|
||||||
|
@ -136,7 +136,7 @@ void AvatarMixer::run() {
|
||||||
// parse positional data from an node
|
// parse positional data from an node
|
||||||
nodeList->updateNodeWithData(avatarNode, packetData, receivedBytes);
|
nodeList->updateNodeWithData(avatarNode, packetData, receivedBytes);
|
||||||
case PACKET_TYPE_INJECT_AUDIO:
|
case PACKET_TYPE_INJECT_AUDIO:
|
||||||
broadcastAvatarData(nodeList, &nodeAddress);
|
broadcastAvatarData(nodeList, nodeUUID, &nodeAddress);
|
||||||
break;
|
break;
|
||||||
case PACKET_TYPE_AVATAR_URLS:
|
case PACKET_TYPE_AVATAR_URLS:
|
||||||
case PACKET_TYPE_AVATAR_FACE_VIDEO:
|
case PACKET_TYPE_AVATAR_FACE_VIDEO:
|
||||||
|
|
|
@ -224,7 +224,10 @@ int AvatarData::parseData(unsigned char* sourceBuffer, int numBytes) {
|
||||||
|
|
||||||
unsigned char* startPosition = sourceBuffer;
|
unsigned char* startPosition = sourceBuffer;
|
||||||
|
|
||||||
// UUID
|
// push past the node session UUID
|
||||||
|
sourceBuffer += NUM_BYTES_RFC4122_UUID;
|
||||||
|
|
||||||
|
// user UUID
|
||||||
_uuid = QUuid::fromRfc4122(QByteArray((char*) sourceBuffer, NUM_BYTES_RFC4122_UUID));
|
_uuid = QUuid::fromRfc4122(QByteArray((char*) sourceBuffer, NUM_BYTES_RFC4122_UUID));
|
||||||
sourceBuffer += NUM_BYTES_RFC4122_UUID;
|
sourceBuffer += NUM_BYTES_RFC4122_UUID;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue