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