mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 03:44:02 +02:00
allow QByteArray data to be sent with a length. Use appendRawData in places that used to append raw byte-arrays
This commit is contained in:
parent
988ecf9d55
commit
1ec384ab4d
4 changed files with 23 additions and 11 deletions
|
@ -183,9 +183,9 @@ OctreeElement::AppendState EntityItem::appendEntityData(OctreePacketData* packet
|
|||
QByteArray encodedPropertyFlags;
|
||||
int propertyCount = 0;
|
||||
|
||||
successIDFits = packetData->appendValue(encodedID);
|
||||
successIDFits = packetData->appendRawData(encodedID);
|
||||
if (successIDFits) {
|
||||
successTypeFits = packetData->appendValue(encodedType);
|
||||
successTypeFits = packetData->appendRawData(encodedType);
|
||||
}
|
||||
if (successTypeFits) {
|
||||
successCreatedFits = packetData->appendValue(_created);
|
||||
|
@ -194,17 +194,17 @@ OctreeElement::AppendState EntityItem::appendEntityData(OctreePacketData* packet
|
|||
successLastEditedFits = packetData->appendValue(lastEdited);
|
||||
}
|
||||
if (successLastEditedFits) {
|
||||
successLastUpdatedFits = packetData->appendValue(encodedUpdateDelta);
|
||||
successLastUpdatedFits = packetData->appendRawData(encodedUpdateDelta);
|
||||
}
|
||||
if (successLastUpdatedFits) {
|
||||
successLastSimulatedFits = packetData->appendValue(encodedSimulatedDelta);
|
||||
successLastSimulatedFits = packetData->appendRawData(encodedSimulatedDelta);
|
||||
}
|
||||
|
||||
if (successLastSimulatedFits) {
|
||||
propertyFlagsOffset = packetData->getUncompressedByteOffset();
|
||||
encodedPropertyFlags = propertyFlags;
|
||||
oldPropertyFlagsLength = encodedPropertyFlags.length();
|
||||
successPropertyFlagsFits = packetData->appendValue(encodedPropertyFlags);
|
||||
successPropertyFlagsFits = packetData->appendRawData(encodedPropertyFlags);
|
||||
}
|
||||
|
||||
bool headerFits = successIDFits && successTypeFits && successCreatedFits && successLastEditedFits
|
||||
|
|
|
@ -623,23 +623,23 @@ bool EntityItemProperties::encodeEntityEditPacket(PacketType command, EntityItem
|
|||
quint64 lastEdited = properties.getLastEdited();
|
||||
bool successLastEditedFits = packetData->appendValue(lastEdited);
|
||||
|
||||
bool successIDFits = packetData->appendValue(encodedID);
|
||||
bool successIDFits = packetData->appendRawData(encodedID);
|
||||
if (successIDFits) {
|
||||
successIDFits = packetData->appendValue(encodedToken);
|
||||
successIDFits = packetData->appendRawData(encodedToken);
|
||||
}
|
||||
bool successTypeFits = packetData->appendValue(encodedType);
|
||||
bool successTypeFits = packetData->appendRawData(encodedType);
|
||||
|
||||
// NOTE: We intentionally do not send "created" times in edit messages. This is because:
|
||||
// 1) if the edit is to an existing entity, the created time can not be changed
|
||||
// 2) if the edit is to a new entity, the created time is the last edited time
|
||||
|
||||
// TODO: Should we get rid of this in this in edit packets, since this has to always be 0?
|
||||
bool successLastUpdatedFits = packetData->appendValue(encodedUpdateDelta);
|
||||
bool successLastUpdatedFits = packetData->appendRawData(encodedUpdateDelta);
|
||||
|
||||
int propertyFlagsOffset = packetData->getUncompressedByteOffset();
|
||||
QByteArray encodedPropertyFlags = propertyFlags;
|
||||
int oldPropertyFlagsLength = encodedPropertyFlags.length();
|
||||
bool successPropertyFlagsFits = packetData->appendValue(encodedPropertyFlags);
|
||||
bool successPropertyFlagsFits = packetData->appendRawData(encodedPropertyFlags);
|
||||
int propertyCount = 0;
|
||||
|
||||
bool headerFits = successIDFits && successTypeFits && successLastEditedFits
|
||||
|
|
|
@ -426,7 +426,12 @@ bool OctreePacketData::appendValue(const QUuid& uuid) {
|
|||
}
|
||||
|
||||
bool OctreePacketData::appendValue(const QByteArray& bytes) {
|
||||
bool success = appendRawData((const unsigned char*)bytes.constData(), bytes.size());
|
||||
// TODO: make this a ByteCountCoded leading byte
|
||||
uint16_t length = bytes.size();
|
||||
bool success = appendValue(length);
|
||||
if (success) {
|
||||
success = appendRawData((const unsigned char*)bytes.constData(), bytes.size());
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
||||
|
@ -451,6 +456,12 @@ bool OctreePacketData::appendRawData(const unsigned char* data, int length) {
|
|||
return success;
|
||||
}
|
||||
|
||||
|
||||
bool OctreePacketData::appendRawData(QByteArray data) {
|
||||
return appendRawData((unsigned char *)data.data(), data.size());
|
||||
}
|
||||
|
||||
|
||||
quint64 OctreePacketData::_compressContentTime = 0;
|
||||
quint64 OctreePacketData::_compressContentCalls = 0;
|
||||
|
||||
|
|
|
@ -183,6 +183,7 @@ public:
|
|||
|
||||
/// appends raw bytes, might fail if byte would cause packet to be too large
|
||||
bool appendRawData(const unsigned char* data, int length);
|
||||
bool appendRawData(QByteArray data);
|
||||
|
||||
/// returns a byte offset from beginning of the uncompressed stream based on offset from end.
|
||||
/// Positive offsetFromEnd returns that many bytes before the end of uncompressed stream
|
||||
|
|
Loading…
Reference in a new issue