AI_SDB_OccludedFrustumVisitor.h

Go to the documentation of this file.
00001 #ifndef AI_SDB_OCCLUDEDFRUSTUMVISITOR_H
00002 #define AI_SDB_OCCLUDEDFRUSTUMVISITOR_H
00003 
00004 #include "AI_SDB_VisibleFrustumVisitor.h"
00005 
00045 class AI_SDB_OccludedFrustumVisitor : public AI_SDB_VisibleFrustumVisitor {
00046 public:
00047     AI_SDB_OccludedFrustumVisitor(const AI_SDB_Camera &cameraprojection, const AI_Matrix44 &cameratransform, AI_SDB_OcclusionVisitor &occlusionvisitor); 
00048     ~AI_SDB_OccludedFrustumVisitor();
00049 
00051     void Reset();
00052 
00054     void Reset(const AI_SDB_Camera &newcamera, const AI_Matrix44 &newxform);
00055 
00056     // visit() is not overridden, so this is still an abstract class!
00057 
00061     AI_SDB_VisitorFlags VisibilityTest(const AI_BBox &testbox, AI_SDB_VisitorFlags flags);
00062     AI_SDB_VisitorFlags VisibilityTest(const AI_Sphere &testsphere, AI_SDB_VisitorFlags flags);
00063 
00064     // entering a new local space; the matrix given will transform from the current local system into
00065     // the new space local coordinate system.  This is used to possibly update a transform matrix
00066     // or to transform the spatial region to a new coordinate system.
00067     void EnterLocalSpace(AI_Matrix44 &warp);
00068 
00069     // leave a local space
00070     void LeaveLocalSpace();
00071 
00072 protected:
00073     AI_SDB_OcclusionVisitor &m_occlusionvisitor;
00074     AI_SDB_VisibleFrustumVisitor m_frustumvisitor; // for use by the occlusion visitor
00075 };
00076 
00077 
00078 #endif