8 #ifndef __BV_KDOPTree_h__
9 #define __BV_KDOPTree_h__
31 UT_ASSERT_P((NULL == myLeft && NULL == myRight && myLeafId >= 0) ||
32 (NULL != myLeft && NULL != myRight && myLeafId < 0));
38 void save(std::ostream &os,
bool onlyStructure)
const;
42 int64 getMemoryUsage()
const;
85 const char *
getType()
const override;
113 void saveSubclass(std::ostream &os,
bool onlyStructure)
const override;
124 fpreal tol)
const override;
125 static bool intersectRecurse(
BV_Callback &callback,
131 int startLeaf,
int numLeaves);
140 const char *typeImpl()
const;
virtual void saveSubclass(std::ostream &os, bool onlyStructure) const =0
virtual bool loadSubclass(UT_IStream &is, bool onlyStructure)=0
BV_KDOPTree< 18 > BV_18DOPTree
const BV_KDOPNode< K > * getRoot() const
virtual BV_Status intersectSubclass(BV_Callback &callback, const BV_Tree &treeb, const UT_DMatrix4 &startxforma, const UT_DMatrix4 &startxformb, const UT_DMatrix4 &endxforma, const UT_DMatrix4 &endxformb, fpreal tol) const =0
virtual void updateExtentsSubclass(BV_LeafIterator &leafIt)=0
virtual int64 getMemoryUsageSubclass() const =0
Callback for bounding volume hierarchy intersection operation.
static int getNumSlabs()
This defines the number of "slabs" used to define the polytope.
BV_KDOPTree< 6 > BV_AABBTree
virtual BV_Tree * cloneSubclass() const =0
virtual const BV_Tree * castTo(const char *type) const
LeafData & operator=(const LeafData &)=delete
BV_KDOPTree< 14 > BV_14DOPTree
A single node of a BV_KDOPTree.
virtual const char * getType() const =0
BV_KDOPTree< 26 > BV_26DOPTree
virtual int getNumLeavesSubclass() const =0
virtual void buildSubclass(BV_LeafIterator &leafIt)=0