Modified objapplyfunctor to nodeapplyfunctor.
This commit is contained in:
parent
2a0cf74739
commit
56412a6071
|
@ -25,6 +25,9 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.5 2005/10/05 01:59:56 m_di_benedetto
|
||||||
|
First Commit, new version.
|
||||||
|
|
||||||
Revision 1.3 2005/09/29 22:20:49 m_di_benedetto
|
Revision 1.3 2005/09/29 22:20:49 m_di_benedetto
|
||||||
Removed '&' in FrustumCull() method.
|
Removed '&' in FrustumCull() method.
|
||||||
|
|
||||||
|
@ -40,6 +43,9 @@ First Commit.
|
||||||
#ifndef __VCGLIB_AABBBINARYTREE_FRUSTUMCULL_H
|
#ifndef __VCGLIB_AABBBINARYTREE_FRUSTUMCULL_H
|
||||||
#define __VCGLIB_AABBBINARYTREE_FRUSTUMCULL_H
|
#define __VCGLIB_AABBBINARYTREE_FRUSTUMCULL_H
|
||||||
|
|
||||||
|
// std headers
|
||||||
|
/* EMPTY */
|
||||||
|
|
||||||
// vcg headers
|
// vcg headers
|
||||||
#include <vcg/space/point3.h>
|
#include <vcg/space/point3.h>
|
||||||
#include <vcg/space/plane3.h>
|
#include <vcg/space/plane3.h>
|
||||||
|
@ -99,8 +105,8 @@ public:
|
||||||
ClassType::InitializeNodeFlagsRec(pRoot);
|
ClassType::InitializeNodeFlagsRec(pRoot);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class OBJAPPLYFUNCTOR>
|
template <class NODEAPPLYFUNCTOR>
|
||||||
static inline void FrustumCull(TreeType & tree, const Point3<ScalarType> & viewerPosition, const Plane3<ScalarType> frustumPlanes[6], const unsigned int minNodeObjectsCount, OBJAPPLYFUNCTOR & objApply) {
|
static inline void FrustumCull(TreeType & tree, const Point3<ScalarType> & viewerPosition, const Plane3<ScalarType> frustumPlanes[6], const unsigned int minNodeObjectsCount, NODEAPPLYFUNCTOR & nodeApply) {
|
||||||
NodeType * pRoot = tree.pRoot;
|
NodeType * pRoot = tree.pRoot;
|
||||||
if (pRoot == 0) {
|
if (pRoot == 0) {
|
||||||
return;
|
return;
|
||||||
|
@ -116,7 +122,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
const unsigned char inMask = 0x3F;
|
const unsigned char inMask = 0x3F;
|
||||||
ClassType::NodeVsFrustum(tree.pRoot, viewerPosition, frustum, inMask, minNodeObjectsCount, objApply);
|
ClassType::NodeVsFrustum(tree.pRoot, viewerPosition, frustum, inMask, minNodeObjectsCount, nodeApply);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -131,8 +137,8 @@ protected:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class OBJAPPLYFUNCTOR>
|
template <class NODEAPPLYFUNCTOR>
|
||||||
static inline void NodeVsFrustum(NodeType * node, const Point3<ScalarType> & viewerPosition, const VFrustum & f, unsigned char inMask, unsigned int minNodeObjectsCount, OBJAPPLYFUNCTOR & objApply) {
|
static inline void NodeVsFrustum(NodeType * node, const Point3<ScalarType> & viewerPosition, const VFrustum & f, unsigned char inMask, unsigned int minNodeObjectsCount, NODEAPPLYFUNCTOR & nodeApply) {
|
||||||
if (node == 0) {
|
if (node == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -198,9 +204,7 @@ protected:
|
||||||
|
|
||||||
if (fullInside || (node->ObjectsCount() <= minNodeObjectsCount)) {
|
if (fullInside || (node->ObjectsCount() <= minNodeObjectsCount)) {
|
||||||
node->Flags() |= FC_FULLY_VISIBLE_BIT;
|
node->Flags() |= FC_FULLY_VISIBLE_BIT;
|
||||||
for (typename TreeType::ObjPtrVectorConstIterator oi=node->oBegin; oi!=node->oEnd; ++oi) {
|
nodeApply(*node);
|
||||||
objApply(*(*oi));
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -218,12 +222,12 @@ protected:
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dt <= (ScalarType)0) {
|
if (dt <= (ScalarType)0) {
|
||||||
ClassType::NodeVsFrustum(node->children[0], viewerPosition, f, newMask, minNodeObjectsCount, objApply);
|
ClassType::NodeVsFrustum(node->children[0], viewerPosition, f, newMask, minNodeObjectsCount, nodeApply);
|
||||||
ClassType::NodeVsFrustum(node->children[1], viewerPosition, f, newMask, minNodeObjectsCount, objApply);
|
ClassType::NodeVsFrustum(node->children[1], viewerPosition, f, newMask, minNodeObjectsCount, nodeApply);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ClassType::NodeVsFrustum(node->children[1], viewerPosition, f, newMask, minNodeObjectsCount, objApply);
|
ClassType::NodeVsFrustum(node->children[1], viewerPosition, f, newMask, minNodeObjectsCount, nodeApply);
|
||||||
ClassType::NodeVsFrustum(node->children[0], viewerPosition, f, newMask, minNodeObjectsCount, objApply);
|
ClassType::NodeVsFrustum(node->children[0], viewerPosition, f, newMask, minNodeObjectsCount, nodeApply);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in New Issue