#include "stt_class.h"

void SttGenerator::ReturnLeaf(QuadTreeNode** p_tree){
	QuadTreeNode* current_node = *p_tree;
	if (current_node->children[0]==nullptr && current_node->children[1]==nullptr && 
		current_node->children[2]==nullptr && current_node->children[3]==nullptr && 
		current_node->out_ok==true){
		// bug fix 这里将输出的节点的邻居重置为nullptr 否则在输出局部stt的邻居列表时将产生一个bug 即边缘位置的三角形会默认与0号三角形相邻
		// 这是因为在之前的闭合三角面过程中我们已全部对邻居列表赋值，所以所有节点三角形的邻居列表全不为空，因此一定会输出三个邻居，但对局部
		// stt而言，因为在输出环节的邻居排序中并不能找到对应的三角形索引，所以会输出一个默认值，即0。
		current_node->neighbor[0] = nullptr;
		current_node->neighbor[1] = nullptr;
		current_node->neighbor[2] = nullptr;
		array_out_tri_pointer_.push_back(current_node);
		return;
	}
	else{
		for (int i = 0; i < 4; i++){
			if (current_node->children[i]!=nullptr)
				ReturnLeaf(&(current_node->children[i]));
		}
		return;
	}
}