mirror of
https://github.com/lubosz/overte.git
synced 2025-04-12 11:58:22 +02:00
Fix sequence number encoding issue
Don't mix QDataStream and readPrimitive. Also fix logic issues in completion check; move new packet type; don't reset known sent entities upon initial completion; other reviewer recommendations.
This commit is contained in:
parent
8c512ec19b
commit
a320308eaf
6 changed files with 13 additions and 13 deletions
assignment-client/src/entities
interface/src
libraries/networking/src/udt
tools/dissectors
|
@ -160,12 +160,11 @@ bool EntityTreeSendThread::traverseTreeAndSendContents(SharedNodePointer node, O
|
|||
if (sendComplete && nodeData->wantReportInitialCompletion() && _traversal.finished()) {
|
||||
// Dealt with all nearby entities.
|
||||
nodeData->setReportInitialCompletion(false);
|
||||
resetState();
|
||||
|
||||
// Send EntityQueryInitialResultsComplete reliable packet ...
|
||||
auto initialCompletion = NLPacket::create(PacketType::EntityQueryInitialResultsComplete, -1, true);
|
||||
QDataStream initialCompletionStream(initialCompletion.get());
|
||||
initialCompletionStream << OCTREE_PACKET_SEQUENCE(nodeData->getSequenceNumber() - 1U);
|
||||
auto initialCompletion = NLPacket::create(PacketType::EntityQueryInitialResultsComplete,
|
||||
sizeof(OCTREE_PACKET_SEQUENCE), true);
|
||||
initialCompletion->writePrimitive(OCTREE_PACKET_SEQUENCE(nodeData->getSequenceNumber() - 1U));
|
||||
DependencyManager::get<NodeList>()->sendPacket(std::move(initialCompletion), *node.data());
|
||||
}
|
||||
|
||||
|
|
|
@ -5483,6 +5483,7 @@ void Application::update(float deltaTime) {
|
|||
// we've received a new full-scene octree stats packet, or it's been long enough to try again anyway
|
||||
_lastPhysicsCheckTime = now;
|
||||
_fullSceneCounterAtLastPhysicsCheck = _fullSceneReceivedCounter;
|
||||
_lastQueriedViews.clear(); // Force new view.
|
||||
|
||||
// process octree stats packets are sent in between full sends of a scene (this isn't currently true).
|
||||
// We keep physics disabled until we've received a full scene and everything near the avatar in that
|
||||
|
|
|
@ -135,7 +135,7 @@ void OctreePacketProcessor::resetCompletionSequenceNumber() {
|
|||
namespace {
|
||||
template<typename T> bool lessThanWraparound(int a, int b) {
|
||||
constexpr int MAX_T_VALUE = std::numeric_limits<T>::max();
|
||||
if (b < a) {
|
||||
if (b <= a) {
|
||||
b += MAX_T_VALUE;
|
||||
}
|
||||
return (b - a) < (MAX_T_VALUE / 2);
|
||||
|
@ -146,5 +146,5 @@ bool OctreePacketProcessor::octreeSequenceIsComplete(int sequenceNumber) const {
|
|||
Locker lock(_completionMutex);
|
||||
// If we've received the flagged seq # and the current one is >= it.
|
||||
return _completionSequenceNumberValid &&
|
||||
!lessThanWraparound<OCTREE_PACKET_SEQUENCE>(_completionSequenceNumber, sequenceNumber);
|
||||
!lessThanWraparound<OCTREE_PACKET_SEQUENCE>(sequenceNumber, _completionSequenceNumber);
|
||||
}
|
||||
|
|
|
@ -95,7 +95,7 @@ PacketVersion versionForPacketType(PacketType packetType) {
|
|||
case PacketType::AvatarIdentityRequest:
|
||||
return 22;
|
||||
default:
|
||||
return 22;
|
||||
return 21;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -126,13 +126,13 @@ public:
|
|||
EntityScriptCallMethod,
|
||||
ChallengeOwnershipRequest,
|
||||
ChallengeOwnershipReply,
|
||||
EntityQueryInitialResultsComplete,
|
||||
|
||||
OctreeDataFileRequest,
|
||||
OctreeDataFileReply,
|
||||
OctreeDataPersist,
|
||||
|
||||
EntityClone,
|
||||
EntityQueryInitialResultsComplete,
|
||||
|
||||
NUM_PACKET_TYPE
|
||||
};
|
||||
|
|
|
@ -156,11 +156,11 @@ local packet_types = {
|
|||
[92] = "EntityScriptCallMethod",
|
||||
[93] = "ChallengeOwnershipRequest",
|
||||
[94] = "ChallengeOwnershipReply",
|
||||
[95] = "EntityQueryInitialResultsComplete",
|
||||
[96] = "OctreeDataFileRequest",
|
||||
[97] = "OctreeDataFileReply",
|
||||
[98] = "OctreeDataPersist",
|
||||
[99] = "EntityClone"
|
||||
[95] = "OctreeDataFileRequest",
|
||||
[96] = "OctreeDataFileReply",
|
||||
[97] = "OctreeDataPersist",
|
||||
[98] = "EntityClone",
|
||||
[99] = "EntityQueryInitialResultsComplete"
|
||||
}
|
||||
|
||||
local unsourced_packet_types = {
|
||||
|
|
Loading…
Reference in a new issue