mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 20:58:38 +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() {
|
void Agent::sendAvatarViewFrustum() {
|
||||||
auto scriptedAvatar = DependencyManager::get<ScriptableAvatar>();
|
auto scriptedAvatar = DependencyManager::get<ScriptableAvatar>();
|
||||||
|
|
||||||
ViewFrustum view;
|
ViewFrustum view;
|
||||||
view.setPosition(scriptedAvatar->getWorldPosition());
|
view.setPosition(scriptedAvatar->getWorldPosition());
|
||||||
view.setOrientation(scriptedAvatar->getHeadOrientation());
|
view.setOrientation(scriptedAvatar->getHeadOrientation());
|
||||||
|
view.calculate();
|
||||||
|
|
||||||
|
uint8_t numFrustums = 1;
|
||||||
auto viewFrustumByteArray = view.toByteArray();
|
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);
|
avatarPacket->write(viewFrustumByteArray);
|
||||||
|
|
||||||
DependencyManager::get<NodeList>()->broadcastToNodes(std::move(avatarPacket),
|
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();
|
_currentViewFrustums.clear();
|
||||||
|
|
||||||
|
uint8_t numFrustums = 0;
|
||||||
|
memcpy(&numFrustums, message.constData(), sizeof(numFrustums));
|
||||||
|
message.remove(0, sizeof(numFrustums));
|
||||||
|
|
||||||
auto offset = 0;
|
for (uint8_t i = 0; i < numFrustums; ++i) {
|
||||||
while (offset < message.size()) {
|
|
||||||
ViewFrustum frustum;
|
ViewFrustum frustum;
|
||||||
offset += frustum.fromByteArray(message);
|
auto bytesRead = frustum.fromByteArray(message);
|
||||||
|
message.remove(0, bytesRead);
|
||||||
|
|
||||||
_currentViewFrustums.push_back(frustum);
|
_currentViewFrustums.push_back(frustum);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,7 +98,7 @@ public:
|
||||||
void removeFromRadiusIgnoringSet(SharedNodePointer self, const QUuid& other);
|
void removeFromRadiusIgnoringSet(SharedNodePointer self, const QUuid& other);
|
||||||
void ignoreOther(SharedNodePointer self, SharedNodePointer other);
|
void ignoreOther(SharedNodePointer self, SharedNodePointer other);
|
||||||
|
|
||||||
void readViewFrustumPacket(const QByteArray& message);
|
void readViewFrustumPacket(QByteArray message);
|
||||||
|
|
||||||
bool otherAvatarInView(const AABox& otherAvatarBox);
|
bool otherAvatarInView(const AABox& otherAvatarBox);
|
||||||
|
|
||||||
|
|
|
@ -5805,12 +5805,16 @@ void Application::update(float deltaTime) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::sendAvatarViewFrustum() {
|
void Application::sendAvatarViewFrustum() {
|
||||||
|
uint8_t numFrustums = 1;
|
||||||
QByteArray viewFrustumByteArray = _viewFrustum.toByteArray();
|
QByteArray viewFrustumByteArray = _viewFrustum.toByteArray();
|
||||||
|
|
||||||
if (_hasSecondaryViewFrustum) {
|
if (_hasSecondaryViewFrustum) {
|
||||||
|
++numFrustums;
|
||||||
viewFrustumByteArray += _secondaryViewFrustum.toByteArray();
|
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);
|
avatarPacket->write(viewFrustumByteArray);
|
||||||
|
|
||||||
DependencyManager::get<NodeList>()->broadcastToNodes(std::move(avatarPacket), NodeSet() << NodeType::AvatarMixer);
|
DependencyManager::get<NodeList>()->broadcastToNodes(std::move(avatarPacket), NodeSet() << NodeType::AvatarMixer);
|
||||||
|
|
Loading…
Reference in a new issue