mirror of
https://github.com/overte-org/overte.git
synced 2025-04-19 15:03:53 +02:00
Send number of frustums in packet
This commit is contained in:
parent
ddde0228ba
commit
a283d28686
4 changed files with 21 additions and 7 deletions
|
@ -600,12 +600,17 @@ void Agent::sendAvatarIdentityPacket() {
|
|||
|
||||
void Agent::sendAvatarViewFrustum() {
|
||||
auto scriptedAvatar = DependencyManager::get<ScriptableAvatar>();
|
||||
|
||||
ViewFrustum view;
|
||||
view.setPosition(scriptedAvatar->getWorldPosition());
|
||||
view.setOrientation(scriptedAvatar->getHeadOrientation());
|
||||
view.calculate();
|
||||
|
||||
uint8_t numFrustums = 1;
|
||||
auto viewFrustumByteArray = view.toByteArray();
|
||||
|
||||
auto avatarPacket = NLPacket::create(PacketType::ViewFrustum, viewFrustumByteArray.size());
|
||||
auto avatarPacket = NLPacket::create(PacketType::ViewFrustum, viewFrustumByteArray.size() + sizeof(numFrustums));
|
||||
avatarPacket->writePrimitive(numFrustums);
|
||||
avatarPacket->write(viewFrustumByteArray);
|
||||
|
||||
DependencyManager::get<NodeList>()->broadcastToNodes(std::move(avatarPacket),
|
||||
|
|
|
@ -126,13 +126,18 @@ void AvatarMixerClientData::removeFromRadiusIgnoringSet(SharedNodePointer self,
|
|||
}
|
||||
}
|
||||
|
||||
void AvatarMixerClientData::readViewFrustumPacket(const QByteArray& message) {
|
||||
void AvatarMixerClientData::readViewFrustumPacket(QByteArray message) {
|
||||
_currentViewFrustums.clear();
|
||||
|
||||
uint8_t numFrustums = 0;
|
||||
memcpy(&numFrustums, message.constData(), sizeof(numFrustums));
|
||||
message.remove(0, sizeof(numFrustums));
|
||||
|
||||
auto offset = 0;
|
||||
while (offset < message.size()) {
|
||||
for (uint8_t i = 0; i < numFrustums; ++i) {
|
||||
ViewFrustum frustum;
|
||||
offset += frustum.fromByteArray(message);
|
||||
auto bytesRead = frustum.fromByteArray(message);
|
||||
message.remove(0, bytesRead);
|
||||
|
||||
_currentViewFrustums.push_back(frustum);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -98,7 +98,7 @@ public:
|
|||
void removeFromRadiusIgnoringSet(SharedNodePointer self, const QUuid& other);
|
||||
void ignoreOther(SharedNodePointer self, SharedNodePointer other);
|
||||
|
||||
void readViewFrustumPacket(const QByteArray& message);
|
||||
void readViewFrustumPacket(QByteArray message);
|
||||
|
||||
bool otherAvatarInView(const AABox& otherAvatarBox);
|
||||
|
||||
|
|
|
@ -5805,12 +5805,16 @@ void Application::update(float deltaTime) {
|
|||
}
|
||||
|
||||
void Application::sendAvatarViewFrustum() {
|
||||
uint8_t numFrustums = 1;
|
||||
QByteArray viewFrustumByteArray = _viewFrustum.toByteArray();
|
||||
|
||||
if (_hasSecondaryViewFrustum) {
|
||||
++numFrustums;
|
||||
viewFrustumByteArray += _secondaryViewFrustum.toByteArray();
|
||||
}
|
||||
|
||||
auto avatarPacket = NLPacket::create(PacketType::ViewFrustum, viewFrustumByteArray.size());
|
||||
auto avatarPacket = NLPacket::create(PacketType::ViewFrustum, viewFrustumByteArray.size() + sizeof(numFrustums));
|
||||
avatarPacket->writePrimitive(numFrustums);
|
||||
avatarPacket->write(viewFrustumByteArray);
|
||||
|
||||
DependencyManager::get<NodeList>()->broadcastToNodes(std::move(avatarPacket), NodeSet() << NodeType::AvatarMixer);
|
||||
|
|
Loading…
Reference in a new issue