mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 18:41:10 +02:00
removing optional compression
This commit is contained in:
parent
849a8707d2
commit
1a5bc5d111
10 changed files with 19 additions and 36 deletions
|
@ -179,14 +179,9 @@ void OctreeQueryNode::resetOctreePacket() {
|
||||||
|
|
||||||
// If we're moving, and the client asked for low res, then we force monochrome, otherwise, use
|
// If we're moving, and the client asked for low res, then we force monochrome, otherwise, use
|
||||||
// the clients requested color state.
|
// the clients requested color state.
|
||||||
_currentPacketIsCompressed = getWantCompression();
|
|
||||||
OCTREE_PACKET_FLAGS flags = 0;
|
OCTREE_PACKET_FLAGS flags = 0;
|
||||||
if (_currentPacketIsColor) {
|
setAtBit(flags, PACKET_IS_COLOR_BIT);
|
||||||
setAtBit(flags, PACKET_IS_COLOR_BIT);
|
setAtBit(flags, PACKET_IS_COMPRESSED_BIT);
|
||||||
}
|
|
||||||
if (_currentPacketIsCompressed) {
|
|
||||||
setAtBit(flags, PACKET_IS_COMPRESSED_BIT);
|
|
||||||
}
|
|
||||||
|
|
||||||
_octreePacket->reset();
|
_octreePacket->reset();
|
||||||
|
|
||||||
|
|
|
@ -77,9 +77,7 @@ public:
|
||||||
|
|
||||||
bool getCurrentPacketIsColor() const { return _currentPacketIsColor; }
|
bool getCurrentPacketIsColor() const { return _currentPacketIsColor; }
|
||||||
bool getCurrentPacketIsCompressed() const { return _currentPacketIsCompressed; }
|
bool getCurrentPacketIsCompressed() const { return _currentPacketIsCompressed; }
|
||||||
bool getCurrentPacketFormatMatches() {
|
bool getCurrentPacketFormatMatches() { return (getCurrentPacketIsCompressed() == true); } // FIXME
|
||||||
return (getCurrentPacketIsCompressed() == getWantCompression());
|
|
||||||
}
|
|
||||||
|
|
||||||
bool hasLodChanged() const { return _lodChanged; }
|
bool hasLodChanged() const { return _lodChanged; }
|
||||||
|
|
||||||
|
|
|
@ -321,7 +321,6 @@ int OctreeSendThread::packetDistributor(OctreeQueryNode* nodeData, bool viewFrus
|
||||||
// If we're starting a fresh packet, then...
|
// If we're starting a fresh packet, then...
|
||||||
// If we're moving, and the client asked for low res, then we force monochrome, otherwise, use
|
// If we're moving, and the client asked for low res, then we force monochrome, otherwise, use
|
||||||
// the clients requested color state.
|
// the clients requested color state.
|
||||||
bool wantCompression = nodeData->getWantCompression();
|
|
||||||
|
|
||||||
// If we have a packet waiting, and our desired want color, doesn't match the current waiting packets color
|
// If we have a packet waiting, and our desired want color, doesn't match the current waiting packets color
|
||||||
// then let's just send that waiting packet.
|
// then let's just send that waiting packet.
|
||||||
|
@ -332,10 +331,8 @@ int OctreeSendThread::packetDistributor(OctreeQueryNode* nodeData, bool viewFrus
|
||||||
nodeData->resetOctreePacket();
|
nodeData->resetOctreePacket();
|
||||||
}
|
}
|
||||||
int targetSize = MAX_OCTREE_PACKET_DATA_SIZE;
|
int targetSize = MAX_OCTREE_PACKET_DATA_SIZE;
|
||||||
if (wantCompression) {
|
targetSize = nodeData->getAvailable() - sizeof(OCTREE_PACKET_INTERNAL_SECTION_SIZE);
|
||||||
targetSize = nodeData->getAvailable() - sizeof(OCTREE_PACKET_INTERNAL_SECTION_SIZE);
|
_packetData.changeSettings(targetSize);
|
||||||
}
|
|
||||||
_packetData.changeSettings(wantCompression, targetSize);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const ViewFrustum* lastViewFrustum = wantDelta ? &nodeData->getLastKnownViewFrustum() : NULL;
|
const ViewFrustum* lastViewFrustum = wantDelta ? &nodeData->getLastKnownViewFrustum() : NULL;
|
||||||
|
@ -551,10 +548,7 @@ int OctreeSendThread::packetDistributor(OctreeQueryNode* nodeData, bool viewFrus
|
||||||
packetsSentThisInterval += handlePacketSend(nodeData, trueBytesSent, truePacketsSent);
|
packetsSentThisInterval += handlePacketSend(nodeData, trueBytesSent, truePacketsSent);
|
||||||
quint64 packetSendingEnd = usecTimestampNow();
|
quint64 packetSendingEnd = usecTimestampNow();
|
||||||
packetSendingElapsedUsec = (float)(packetSendingEnd - packetSendingStart);
|
packetSendingElapsedUsec = (float)(packetSendingEnd - packetSendingStart);
|
||||||
|
targetSize = nodeData->getAvailable() - sizeof(OCTREE_PACKET_INTERNAL_SECTION_SIZE);
|
||||||
if (wantCompression) {
|
|
||||||
targetSize = nodeData->getAvailable() - sizeof(OCTREE_PACKET_INTERNAL_SECTION_SIZE);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
// If we're in compressed mode, then we want to see if we have room for more in this wire packet.
|
// If we're in compressed mode, then we want to see if we have room for more in this wire packet.
|
||||||
// but we've finalized the _packetData, so we want to start a new section, we will do that by
|
// but we've finalized the _packetData, so we want to start a new section, we will do that by
|
||||||
|
@ -564,7 +558,7 @@ int OctreeSendThread::packetDistributor(OctreeQueryNode* nodeData, bool viewFrus
|
||||||
// a larger compressed size then uncompressed size
|
// a larger compressed size then uncompressed size
|
||||||
targetSize = nodeData->getAvailable() - sizeof(OCTREE_PACKET_INTERNAL_SECTION_SIZE) - COMPRESS_PADDING;
|
targetSize = nodeData->getAvailable() - sizeof(OCTREE_PACKET_INTERNAL_SECTION_SIZE) - COMPRESS_PADDING;
|
||||||
}
|
}
|
||||||
_packetData.changeSettings(nodeData->getWantCompression(), targetSize); // will do reset
|
_packetData.changeSettings(targetSize); // will do reset
|
||||||
|
|
||||||
}
|
}
|
||||||
OctreeServer::trackTreeWaitTime(lockWaitElapsedUsec);
|
OctreeServer::trackTreeWaitTime(lockWaitElapsedUsec);
|
||||||
|
|
|
@ -3075,7 +3075,6 @@ void Application::queryOctree(NodeType_t serverType, PacketType packetType, Node
|
||||||
// These will be the same for all servers, so we can set them up once and then reuse for each server we send to.
|
// These will be the same for all servers, so we can set them up once and then reuse for each server we send to.
|
||||||
_octreeQuery.setWantLowResMoving(true);
|
_octreeQuery.setWantLowResMoving(true);
|
||||||
_octreeQuery.setWantDelta(true);
|
_octreeQuery.setWantDelta(true);
|
||||||
_octreeQuery.setWantCompression(true);
|
|
||||||
|
|
||||||
_octreeQuery.setCameraPosition(_viewFrustum.getPosition());
|
_octreeQuery.setCameraPosition(_viewFrustum.getPosition());
|
||||||
_octreeQuery.setCameraOrientation(_viewFrustum.getOrientation());
|
_octreeQuery.setCameraOrientation(_viewFrustum.getOrientation());
|
||||||
|
|
|
@ -790,7 +790,9 @@ void EntityItemProperties::entityPropertyFlagsFromScriptValue(const QScriptValue
|
||||||
//
|
//
|
||||||
bool EntityItemProperties::encodeEntityEditPacket(PacketType command, EntityItemID id, const EntityItemProperties& properties,
|
bool EntityItemProperties::encodeEntityEditPacket(PacketType command, EntityItemID id, const EntityItemProperties& properties,
|
||||||
QByteArray& buffer) {
|
QByteArray& buffer) {
|
||||||
OctreePacketData ourDataPacket(false, buffer.size()); // create a packetData object to add out packet details too.
|
|
||||||
|
// FIXME - remove non-compressed OctreePacketData and handle compressed edit packets
|
||||||
|
OctreePacketData ourDataPacket(buffer.size(), false); // create a packetData object to add out packet details too.
|
||||||
OctreePacketData* packetData = &ourDataPacket; // we want a pointer to this so we can use our APPEND_ENTITY_PROPERTY macro
|
OctreePacketData* packetData = &ourDataPacket; // we want a pointer to this so we can use our APPEND_ENTITY_PROPERTY macro
|
||||||
|
|
||||||
bool success = true; // assume the best
|
bool success = true; // assume the best
|
||||||
|
|
|
@ -52,7 +52,6 @@ void OctreeHeadlessViewer::queryOctree() {
|
||||||
// These will be the same for all servers, so we can set them up once and then reuse for each server we send to.
|
// These will be the same for all servers, so we can set them up once and then reuse for each server we send to.
|
||||||
_octreeQuery.setWantLowResMoving(true);
|
_octreeQuery.setWantLowResMoving(true);
|
||||||
_octreeQuery.setWantDelta(true);
|
_octreeQuery.setWantDelta(true);
|
||||||
_octreeQuery.setWantCompression(true); // TODO: should be on by default
|
|
||||||
|
|
||||||
_octreeQuery.setCameraPosition(_viewFrustum.getPosition());
|
_octreeQuery.setCameraPosition(_viewFrustum.getPosition());
|
||||||
_octreeQuery.setCameraOrientation(_viewFrustum.getOrientation());
|
_octreeQuery.setCameraOrientation(_viewFrustum.getOrientation());
|
||||||
|
|
|
@ -23,12 +23,13 @@ AtomicUIntStat OctreePacketData::_totalBytesOfValues { 0 };
|
||||||
AtomicUIntStat OctreePacketData::_totalBytesOfPositions { 0 };
|
AtomicUIntStat OctreePacketData::_totalBytesOfPositions { 0 };
|
||||||
AtomicUIntStat OctreePacketData::_totalBytesOfRawData { 0 };
|
AtomicUIntStat OctreePacketData::_totalBytesOfRawData { 0 };
|
||||||
|
|
||||||
OctreePacketData::OctreePacketData(bool enableCompression, int targetSize) {
|
OctreePacketData::OctreePacketData(int targetSize, bool enableCompression) {
|
||||||
changeSettings(enableCompression, targetSize); // does reset...
|
changeSettings(targetSize); // does reset...
|
||||||
|
_enableCompression = enableCompression; // FIXME
|
||||||
}
|
}
|
||||||
|
|
||||||
void OctreePacketData::changeSettings(bool enableCompression, unsigned int targetSize) {
|
void OctreePacketData::changeSettings(unsigned int targetSize) {
|
||||||
_enableCompression = enableCompression;
|
_enableCompression = true; // FIXME
|
||||||
_targetSize = std::min(MAX_OCTREE_UNCOMRESSED_PACKET_SIZE, targetSize);
|
_targetSize = std::min(MAX_OCTREE_UNCOMRESSED_PACKET_SIZE, targetSize);
|
||||||
reset();
|
reset();
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,11 +83,11 @@ private:
|
||||||
/// Handles packing of the data portion of PacketType_OCTREE_DATA messages.
|
/// Handles packing of the data portion of PacketType_OCTREE_DATA messages.
|
||||||
class OctreePacketData {
|
class OctreePacketData {
|
||||||
public:
|
public:
|
||||||
OctreePacketData(bool enableCompression = false, int maxFinalizedSize = MAX_OCTREE_PACKET_DATA_SIZE);
|
OctreePacketData(int maxFinalizedSize = MAX_OCTREE_PACKET_DATA_SIZE, bool enableCompression = true);
|
||||||
~OctreePacketData();
|
~OctreePacketData();
|
||||||
|
|
||||||
/// change compression and target size settings
|
/// change compression and target size settings
|
||||||
void changeSettings(bool enableCompression = false, unsigned int targetSize = MAX_OCTREE_PACKET_DATA_SIZE);
|
void changeSettings(unsigned int targetSize = MAX_OCTREE_PACKET_DATA_SIZE);
|
||||||
|
|
||||||
/// reset completely, all data is discarded
|
/// reset completely, all data is discarded
|
||||||
void reset();
|
void reset();
|
||||||
|
@ -262,7 +262,7 @@ private:
|
||||||
bool append(unsigned char byte);
|
bool append(unsigned char byte);
|
||||||
|
|
||||||
unsigned int _targetSize;
|
unsigned int _targetSize;
|
||||||
bool _enableCompression;
|
bool _enableCompression { true }; // FIXME - these will always be compressed, so remove this option
|
||||||
|
|
||||||
unsigned char _uncompressed[MAX_OCTREE_UNCOMRESSED_PACKET_SIZE];
|
unsigned char _uncompressed[MAX_OCTREE_UNCOMRESSED_PACKET_SIZE];
|
||||||
int _bytesInUse;
|
int _bytesInUse;
|
||||||
|
|
|
@ -42,7 +42,6 @@ int OctreeQuery::getBroadcastData(unsigned char* destinationBuffer) {
|
||||||
unsigned char bitItems = 0;
|
unsigned char bitItems = 0;
|
||||||
if (_wantLowResMoving) { setAtBit(bitItems, WANT_LOW_RES_MOVING_BIT); }
|
if (_wantLowResMoving) { setAtBit(bitItems, WANT_LOW_RES_MOVING_BIT); }
|
||||||
if (_wantDelta) { setAtBit(bitItems, WANT_DELTA_AT_BIT); }
|
if (_wantDelta) { setAtBit(bitItems, WANT_DELTA_AT_BIT); }
|
||||||
if (_wantCompression) { setAtBit(bitItems, WANT_COMPRESSION); }
|
|
||||||
|
|
||||||
*destinationBuffer++ = bitItems;
|
*destinationBuffer++ = bitItems;
|
||||||
|
|
||||||
|
@ -83,7 +82,6 @@ int OctreeQuery::parseData(NLPacket& packet) {
|
||||||
bitItems = (unsigned char)*sourceBuffer++;
|
bitItems = (unsigned char)*sourceBuffer++;
|
||||||
_wantLowResMoving = oneAtBit(bitItems, WANT_LOW_RES_MOVING_BIT);
|
_wantLowResMoving = oneAtBit(bitItems, WANT_LOW_RES_MOVING_BIT);
|
||||||
_wantDelta = oneAtBit(bitItems, WANT_DELTA_AT_BIT);
|
_wantDelta = oneAtBit(bitItems, WANT_DELTA_AT_BIT);
|
||||||
_wantCompression = oneAtBit(bitItems, WANT_COMPRESSION);
|
|
||||||
|
|
||||||
// desired Max Octree PPS
|
// desired Max Octree PPS
|
||||||
memcpy(&_maxQueryPPS, sourceBuffer, sizeof(_maxQueryPPS));
|
memcpy(&_maxQueryPPS, sourceBuffer, sizeof(_maxQueryPPS));
|
||||||
|
|
|
@ -38,7 +38,7 @@ const int WANT_LOW_RES_MOVING_BIT = 0;
|
||||||
const int UNUSED_BIT_1 = 1; // unused... available for new feature
|
const int UNUSED_BIT_1 = 1; // unused... available for new feature
|
||||||
const int WANT_DELTA_AT_BIT = 2;
|
const int WANT_DELTA_AT_BIT = 2;
|
||||||
const int UNUSED_BIT_3 = 3; // unused... available for new feature
|
const int UNUSED_BIT_3 = 3; // unused... available for new feature
|
||||||
const int WANT_COMPRESSION = 4; // 5th bit
|
const int UNUSED_BIT_4 = 4; // 5th bit, unused... available for new feature
|
||||||
|
|
||||||
class OctreeQuery : public NodeData {
|
class OctreeQuery : public NodeData {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -73,7 +73,6 @@ public:
|
||||||
// related to Octree Sending strategies
|
// related to Octree Sending strategies
|
||||||
bool getWantDelta() const { return _wantDelta; }
|
bool getWantDelta() const { return _wantDelta; }
|
||||||
bool getWantLowResMoving() const { return _wantLowResMoving; }
|
bool getWantLowResMoving() const { return _wantLowResMoving; }
|
||||||
bool getWantCompression() const { return _wantCompression; }
|
|
||||||
int getMaxQueryPacketsPerSecond() const { return _maxQueryPPS; }
|
int getMaxQueryPacketsPerSecond() const { return _maxQueryPPS; }
|
||||||
float getOctreeSizeScale() const { return _octreeElementSizeScale; }
|
float getOctreeSizeScale() const { return _octreeElementSizeScale; }
|
||||||
int getBoundaryLevelAdjust() const { return _boundaryLevelAdjust; }
|
int getBoundaryLevelAdjust() const { return _boundaryLevelAdjust; }
|
||||||
|
@ -81,7 +80,6 @@ public:
|
||||||
public slots:
|
public slots:
|
||||||
void setWantLowResMoving(bool wantLowResMoving) { _wantLowResMoving = wantLowResMoving; }
|
void setWantLowResMoving(bool wantLowResMoving) { _wantLowResMoving = wantLowResMoving; }
|
||||||
void setWantDelta(bool wantDelta) { _wantDelta = wantDelta; }
|
void setWantDelta(bool wantDelta) { _wantDelta = wantDelta; }
|
||||||
void setWantCompression(bool wantCompression) { _wantCompression = wantCompression; }
|
|
||||||
void setMaxQueryPacketsPerSecond(int maxQueryPPS) { _maxQueryPPS = maxQueryPPS; }
|
void setMaxQueryPacketsPerSecond(int maxQueryPPS) { _maxQueryPPS = maxQueryPPS; }
|
||||||
void setOctreeSizeScale(float octreeSizeScale) { _octreeElementSizeScale = octreeSizeScale; }
|
void setOctreeSizeScale(float octreeSizeScale) { _octreeElementSizeScale = octreeSizeScale; }
|
||||||
void setBoundaryLevelAdjust(int boundaryLevelAdjust) { _boundaryLevelAdjust = boundaryLevelAdjust; }
|
void setBoundaryLevelAdjust(int boundaryLevelAdjust) { _boundaryLevelAdjust = boundaryLevelAdjust; }
|
||||||
|
@ -99,7 +97,6 @@ protected:
|
||||||
// octree server sending items
|
// octree server sending items
|
||||||
bool _wantDelta = true;
|
bool _wantDelta = true;
|
||||||
bool _wantLowResMoving = true;
|
bool _wantLowResMoving = true;
|
||||||
bool _wantCompression = false;
|
|
||||||
int _maxQueryPPS = DEFAULT_MAX_OCTREE_PPS;
|
int _maxQueryPPS = DEFAULT_MAX_OCTREE_PPS;
|
||||||
float _octreeElementSizeScale = DEFAULT_OCTREE_SIZE_SCALE; /// used for LOD calculations
|
float _octreeElementSizeScale = DEFAULT_OCTREE_SIZE_SCALE; /// used for LOD calculations
|
||||||
int _boundaryLevelAdjust = 0; /// used for LOD calculations
|
int _boundaryLevelAdjust = 0; /// used for LOD calculations
|
||||||
|
|
Loading…
Reference in a new issue