#pragma once #include "Occluder.hpp" #include "Heap.hpp" #define MERGETREELEAFNODE 55 class MergeTree { Occluder* occluders; unsigned short nOccluders; unsigned short* locations; Heap freeNodes; class Node{ public: char type; //0 - x, 1 - y, 2 - z, 55 - leaf unsigned short parent; union{ struct{ float cut; unsigned short left; unsigned short right; }; unsigned short occluderIndex; }; } *pool; unsigned short nAllocated; unsigned short poolSize; float maxR; public: bool verify(unsigned short p, float minx, float maxx, float miny, float maxy, float minz, float maxz); MergeTree(unsigned short nOccluders, Occluder* accArray); ~MergeTree(void); void insert(unsigned short index); void remove(unsigned short index); unsigned short indexOfCandidate; float minCost; unsigned short minMerger; void searchOptimalMerger(unsigned short p); bool foundMyselfAllRight; };