mirror of
https://github.com/overte-org/overte.git
synced 2025-07-28 11:47:11 +02:00
Update AvatarHashMap to use packet callbacks
This commit is contained in:
parent
bb132e354b
commit
32b232c87a
2 changed files with 25 additions and 9 deletions
|
@ -19,7 +19,6 @@
|
||||||
AvatarHashMap::AvatarHashMap() {
|
AvatarHashMap::AvatarHashMap() {
|
||||||
connect(DependencyManager::get<NodeList>().data(), &NodeList::uuidChanged, this, &AvatarHashMap::sessionUUIDChanged);
|
connect(DependencyManager::get<NodeList>().data(), &NodeList::uuidChanged, this, &AvatarHashMap::sessionUUIDChanged);
|
||||||
|
|
||||||
|
|
||||||
auto& packetReceiver = DependencyManager::get<NodeList>()->getPacketReceiver();
|
auto& packetReceiver = DependencyManager::get<NodeList>()->getPacketReceiver();
|
||||||
packetReceiver.registerPacketListener(PacketType::BulkAvatarData, this, "processAvatarDataPacket");
|
packetReceiver.registerPacketListener(PacketType::BulkAvatarData, this, "processAvatarDataPacket");
|
||||||
packetReceiver.registerPacketListener(PacketType::KillAvatar, this, "processKillAvatar");
|
packetReceiver.registerPacketListener(PacketType::KillAvatar, this, "processKillAvatar");
|
||||||
|
@ -58,6 +57,10 @@ void AvatarHashMap::processAvatarDataPacket(std::unique_ptr<NLPacket> packet, Hi
|
||||||
int bytesRead = 0;
|
int bytesRead = 0;
|
||||||
|
|
||||||
SharedNodePointer avatarMixer = DependencyManager::get<NodeList>()->nodeWithUUID(packet->getSourceID());
|
SharedNodePointer avatarMixer = DependencyManager::get<NodeList>()->nodeWithUUID(packet->getSourceID());
|
||||||
|
if (avatarMixer) {
|
||||||
|
avatarMixer->setLastHeardMicrostamp(usecTimestampNow());
|
||||||
|
}
|
||||||
|
|
||||||
// enumerate over all of the avatars in this packet
|
// enumerate over all of the avatars in this packet
|
||||||
// only add them if mixerWeakPointer points to something (meaning that mixer is still around)
|
// only add them if mixerWeakPointer points to something (meaning that mixer is still around)
|
||||||
while (bytesRead < data.size() && avatarMixer.data()) {
|
while (bytesRead < data.size() && avatarMixer.data()) {
|
||||||
|
@ -86,6 +89,11 @@ void AvatarHashMap::processAvatarIdentityPacket(std::unique_ptr<NLPacket> packet
|
||||||
|
|
||||||
QUuid sessionUUID;
|
QUuid sessionUUID;
|
||||||
|
|
||||||
|
SharedNodePointer avatarMixer = DependencyManager::get<NodeList>()->nodeWithUUID(packet->getSourceID());
|
||||||
|
if (avatarMixer) {
|
||||||
|
avatarMixer->setLastHeardMicrostamp(usecTimestampNow());
|
||||||
|
}
|
||||||
|
|
||||||
while (!identityStream.atEnd()) {
|
while (!identityStream.atEnd()) {
|
||||||
|
|
||||||
QUrl faceMeshURL, skeletonURL;
|
QUrl faceMeshURL, skeletonURL;
|
||||||
|
@ -96,7 +104,6 @@ void AvatarHashMap::processAvatarIdentityPacket(std::unique_ptr<NLPacket> packet
|
||||||
// mesh URL for a UUID, find avatar in our list
|
// mesh URL for a UUID, find avatar in our list
|
||||||
AvatarSharedPointer avatar = _avatarHash.value(sessionUUID);
|
AvatarSharedPointer avatar = _avatarHash.value(sessionUUID);
|
||||||
if (!avatar) {
|
if (!avatar) {
|
||||||
SharedNodePointer avatarMixer = DependencyManager::get<NodeList>()->nodeWithUUID(packet->getSourceID());
|
|
||||||
avatar = addAvatar(sessionUUID, avatarMixer);
|
avatar = addAvatar(sessionUUID, avatarMixer);
|
||||||
}
|
}
|
||||||
if (avatar->getFaceModelURL() != faceMeshURL) {
|
if (avatar->getFaceModelURL() != faceMeshURL) {
|
||||||
|
@ -121,9 +128,13 @@ void AvatarHashMap::processAvatarBillboardPacket(std::unique_ptr<NLPacket> packe
|
||||||
const auto data = QByteArray::fromRawData(packet->getPayload(), packet->size);
|
const auto data = QByteArray::fromRawData(packet->getPayload(), packet->size);
|
||||||
QUuid sessionUUID = QUuid::fromRfc4122(QByteArray::fromRawData(data, NUM_BYTES_RFC4122_UUID));
|
QUuid sessionUUID = QUuid::fromRfc4122(QByteArray::fromRawData(data, NUM_BYTES_RFC4122_UUID));
|
||||||
|
|
||||||
|
SharedNodePointer avatarMixer = DependencyManager::get<NodeList>()->nodeWithUUID(packet->getSourceID());
|
||||||
|
if (avatarMixer) {
|
||||||
|
avatarMixer->setLastHeardMicrostamp(usecTimestampNow());
|
||||||
|
}
|
||||||
|
|
||||||
AvatarSharedPointer avatar = _avatarHash.value(sessionUUID);
|
AvatarSharedPointer avatar = _avatarHash.value(sessionUUID);
|
||||||
if (!avatar) {
|
if (!avatar) {
|
||||||
SharedNodePointer avatarMixer = DependencyManager::get<NodeList>()->nodeWithUUID(packet->getSourceID());
|
|
||||||
avatar = addAvatar(sessionUUID, avatarMixer);
|
avatar = addAvatar(sessionUUID, avatarMixer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,6 +145,11 @@ void AvatarHashMap::processAvatarBillboardPacket(std::unique_ptr<NLPacket> packe
|
||||||
}
|
}
|
||||||
|
|
||||||
void AvatarHashMap::processKillAvatar(std::unique_ptr<NLPacket> packet, HifiSockAddr senderSockAddr) {
|
void AvatarHashMap::processKillAvatar(std::unique_ptr<NLPacket> packet, HifiSockAddr senderSockAddr) {
|
||||||
|
SharedNodePointer avatarMixer = DependencyManager::get<NodeList>()->nodeWithUUID(packet->getSourceID());
|
||||||
|
if (avatarMixer) {
|
||||||
|
avatarMixer->setLastHeardMicrostamp(usecTimestampNow());
|
||||||
|
}
|
||||||
|
|
||||||
// read the node id
|
// read the node id
|
||||||
QUuid sessionUUID = QUuid::fromRfc4122(QByteArray(packet->getPayload(), NUM_BYTES_RFC4122_UUID));
|
QUuid sessionUUID = QUuid::fromRfc4122(QByteArray(packet->getPayload(), NUM_BYTES_RFC4122_UUID));
|
||||||
removeAvatar(sessionUUID);
|
removeAvatar(sessionUUID);
|
||||||
|
|
Loading…
Reference in a new issue