octomap::OcTree* mapPtr;
void travTreeRec(octomap::OcTreeNode* nodePtr) {
if (mapPtr->nodeHasChildren(nodePtr)) {
for (int i = 0; i < 8; ++i) {
if (mapPtr->nodeChildExists(nodePtr, i)) travTreeRec(mapPtr->getNodeChild(nodePtr, i));
}
} else if (mapPtr->isNodeOccupied(nodePtr)) {
// node is an occupied leaf node, now find adjacent nodes
}
}
void* travTree(void* voidArgsPtr) {
travTreeRec((octomap::OcTreeNode*) voidArgsPtr);
}
int main(int argc, char **argv) {
mapPtr = new octomap::OcTree("/home/fapsros/Downloads/fr_campus.bt");
octomap::OcTreeNode* rootNodePtr = mapPtr->getRoot();
pthread_t threads[8];
for (int i = 0; i < 8; ++i) {
if (mapPtr->nodeChildExists(rootNodePtr, i)) {
octomap::OcTreeNode* childNodePtr = mapPtr->getNodeChild(rootNodePtr, i);
pthread_create(&threads[i], nullptr, travTree, (void*) childNodePtr);
pthread_join(threads[i], nullptr);
}
}
return 0;
}