40 {
return cloneSubclass(); }
42 virtual const char *getType()
const = 0;
44 *castTo(
const char *
type)
const;
48 {
return getMemoryUsageSubclass(); }
50 {
return getNumLeavesSubclass(); }
55 void save(std::ostream &os,
bool onlyStructure)
const
56 { saveSubclass(os, onlyStructure); }
58 {
return loadSubclass(is, onlyStructure); }
64 { buildSubclass(leafIt); }
68 { updateExtentsSubclass(leafIt); }
90 return intersectSubclass(callback, treeb,
100 return intersectSubclass(callback, treeb,
114 fpreal tol = 0.001F)
const
116 return intersectSubclass(callback, treeb,
132 fpreal tol = 0.001F)
const
135 return intersectSubclass(callback, treeb,
136 startxforma * xforma,
137 startxformb * xformb,
148 virtual BV_Tree *cloneSubclass()
const = 0;
150 virtual int64 getMemoryUsageSubclass()
const = 0;
151 virtual int getNumLeavesSubclass()
const = 0;
152 virtual void saveSubclass(std::ostream &os,
bool onlyStructure)
const = 0;
153 virtual bool loadSubclass(
UT_IStream &is,
bool onlyStructure) = 0;
155 virtual BV_Status intersectSubclass(
BV_Callback &callback,
UT_Matrix4T< double > UT_DMatrix4
BV_Status intersect(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=0.001F) const
Moving boxes only!
BV_Status intersect(BV_Callback &callback, const BV_Tree &treeb, const UT_DMatrix4 &xforma, const UT_DMatrix4 &startxforma, const UT_DMatrix4 &startxformb, const UT_DMatrix4 &xformb, const UT_DMatrix4 &endxforma, const UT_DMatrix4 &endxformb, fpreal tol=0.001F) const
Moving boxes only!
Rotations are not allowed.
Callback for bounding volume hierarchy intersection operation.
BV_Status intersect(BV_Callback &callback, const BV_Tree &treeb, const UT_DMatrix4 &xforma, const UT_DMatrix4 &xformb, fpreal tol=0.001F) const
void build(BV_LeafIterator &leafIt)
Construct a volume hierarchy from the given primitives.
Tree B was an unsupported type.
int64 getMemoryUsage() const
LeafData & operator=(const LeafData &)=delete
BV_Status intersect(BV_Callback &callback, const BV_Tree &treeb, fpreal tol=0.001F) const
Static boxes only!
void updateExtents(BV_LeafIterator &leafIt)
bool load(UT_IStream &is, bool onlyStructure)
void save(std::ostream &os, bool onlyStructure) const