mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 13:11:43 +02:00
make AABox encoder and decode safer
This commit is contained in:
parent
da7aed8666
commit
076e2b73a1
1 changed files with 18 additions and 8 deletions
|
@ -23,6 +23,11 @@ AtomicUIntStat OctreePacketData::_totalBytesOfValues { 0 };
|
||||||
AtomicUIntStat OctreePacketData::_totalBytesOfPositions { 0 };
|
AtomicUIntStat OctreePacketData::_totalBytesOfPositions { 0 };
|
||||||
AtomicUIntStat OctreePacketData::_totalBytesOfRawData { 0 };
|
AtomicUIntStat OctreePacketData::_totalBytesOfRawData { 0 };
|
||||||
|
|
||||||
|
struct aaCubeData {
|
||||||
|
glm::vec3 corner;
|
||||||
|
float scale;
|
||||||
|
};
|
||||||
|
|
||||||
OctreePacketData::OctreePacketData(bool enableCompression, int targetSize) {
|
OctreePacketData::OctreePacketData(bool enableCompression, int targetSize) {
|
||||||
changeSettings(enableCompression, targetSize); // does reset...
|
changeSettings(enableCompression, targetSize); // does reset...
|
||||||
}
|
}
|
||||||
|
@ -462,8 +467,15 @@ bool OctreePacketData::appendValue(const QByteArray& bytes) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OctreePacketData::appendValue(const AACube& aaCube) {
|
bool OctreePacketData::appendValue(const AACube& aaCube) {
|
||||||
bool success = appendValue(aaCube.getCorner());
|
aaCubeData cube { aaCube.getCorner(), aaCube.getScale() };
|
||||||
return success & appendValue(aaCube.getScale());
|
const unsigned char* data = (const unsigned char*)&cube;
|
||||||
|
int length = sizeof(aaCubeData);
|
||||||
|
bool success = append(data, length);
|
||||||
|
if (success) {
|
||||||
|
_bytesOfValues += length;
|
||||||
|
_totalBytesOfValues += length;
|
||||||
|
}
|
||||||
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool OctreePacketData::appendPosition(const glm::vec3& value) {
|
bool OctreePacketData::appendPosition(const glm::vec3& value) {
|
||||||
|
@ -644,10 +656,8 @@ int OctreePacketData::unpackDataFromBytes(const unsigned char* dataBytes, QByteA
|
||||||
}
|
}
|
||||||
|
|
||||||
int OctreePacketData::unpackDataFromBytes(const unsigned char* dataBytes, AACube& result) {
|
int OctreePacketData::unpackDataFromBytes(const unsigned char* dataBytes, AACube& result) {
|
||||||
glm::vec3 corner;
|
aaCubeData cube;
|
||||||
float scale;
|
memcpy(&cube, dataBytes, sizeof(aaCubeData));
|
||||||
int bytes = unpackDataFromBytes(dataBytes, corner);
|
result = AACube(cube.corner, cube.scale);
|
||||||
bytes += unpackDataFromBytes(dataBytes + bytes, scale);
|
return sizeof(aaCubeData);
|
||||||
result = AACube(corner, scale);
|
|
||||||
return bytes;
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue