cr cleanup

This commit is contained in:
ZappoMan 2013-04-30 10:46:48 -07:00
parent a6b486aa89
commit 2ec2824e8f

View file

@ -243,7 +243,8 @@ void VoxelTree::readBitstreamToTree(unsigned char * bitstream, int bufferSizeByt
int octalCodeBytes = bytesRequiredForCodeLength(*bitstreamAt); int octalCodeBytes = bytesRequiredForCodeLength(*bitstreamAt);
int theseBytesRead = 0; int theseBytesRead = 0;
theseBytesRead += octalCodeBytes; theseBytesRead += octalCodeBytes;
theseBytesRead += readNodeData(bitstreamRootNode, bitstreamAt + octalCodeBytes, bufferSizeBytes - (bytesRead+octalCodeBytes)); theseBytesRead += readNodeData(bitstreamRootNode, bitstreamAt + octalCodeBytes,
bufferSizeBytes - (bytesRead + octalCodeBytes));
// skip bitstream to new startPoint // skip bitstream to new startPoint
bitstreamAt += theseBytesRead; bitstreamAt += theseBytesRead;
@ -257,33 +258,33 @@ void VoxelTree::readBitstreamToTree(unsigned char * bitstream, int bufferSizeByt
// Note: uses the codeColorBuffer format, but the color's are ignored, because // Note: uses the codeColorBuffer format, but the color's are ignored, because
// this only finds and deletes the node from the tree. // this only finds and deletes the node from the tree.
void VoxelTree::deleteVoxelCodeFromTree(unsigned char *codeBuffer) { void VoxelTree::deleteVoxelCodeFromTree(unsigned char *codeBuffer) {
VoxelNode* parentNode = NULL; VoxelNode* parentNode = NULL;
VoxelNode* nodeToDelete = nodeForOctalCode(rootNode, codeBuffer, &parentNode); VoxelNode* nodeToDelete = nodeForOctalCode(rootNode, codeBuffer, &parentNode);
// If the node exists... // If the node exists...
int lengthInBytes = bytesRequiredForCodeLength(*codeBuffer); // includes octet count, not color! int lengthInBytes = bytesRequiredForCodeLength(*codeBuffer); // includes octet count, not color!
if (0 == memcmp(nodeToDelete->octalCode,codeBuffer,lengthInBytes)) { if (0 == memcmp(nodeToDelete->octalCode,codeBuffer,lengthInBytes)) {
float* vertices = firstVertexForCode(nodeToDelete->octalCode); float* vertices = firstVertexForCode(nodeToDelete->octalCode);
delete []vertices; delete[] vertices;
if (parentNode) { if (parentNode) {
float* vertices = firstVertexForCode(parentNode->octalCode); float* vertices = firstVertexForCode(parentNode->octalCode);
delete []vertices; delete[] vertices;
int childNDX = branchIndexWithDescendant(parentNode->octalCode, codeBuffer); int childIndex = branchIndexWithDescendant(parentNode->octalCode, codeBuffer);
delete parentNode->children[childNDX]; // delete the child nodes delete parentNode->children[childIndex]; // delete the child nodes
parentNode->children[childNDX]=NULL; // set it to NULL parentNode->children[childIndex] = NULL; // set it to NULL
reaverageVoxelColors(rootNode); // Fix our colors!! Need to call it on rootNode reaverageVoxelColors(rootNode); // Fix our colors!! Need to call it on rootNode
} }
} }
} }
void VoxelTree::eraseAllVoxels() { void VoxelTree::eraseAllVoxels() {
// XXXBHG Hack attack - is there a better way to erase the voxel tree? // XXXBHG Hack attack - is there a better way to erase the voxel tree?
delete rootNode; // this will recurse and delete all children delete rootNode; // this will recurse and delete all children
rootNode = new VoxelNode(); rootNode = new VoxelNode();
rootNode->octalCode = new unsigned char[1]; rootNode->octalCode = new unsigned char[1];