00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _CIvfCulledScene_h_
00026 #define _CIvfCulledScene_h_
00027
00028 #include <ivf/IvfScene.h>
00029 #include <ivf/IvfView.h>
00030
00031 #include <ivfmath/IvfMatrixStack.h>
00032 #include <ivfmath/IvfViewFrustum.h>
00033
00034 IvfSmartPointer(CIvfCulledScene);
00035
00043 class IVF_API CIvfCulledScene : public CIvfScene {
00044 private:
00045 void cullChildren(CIvfShape* shape);
00046
00047 CIvfMatrixStack* m_matrixStack;
00048 CIvfViewFrustum* m_frustum;
00049 CIvfView* m_cullView;
00050 int m_cullCount;
00051 bool m_useCulling;
00052
00053 public:
00055 CIvfCulledScene();
00056
00058 virtual ~CIvfCulledScene();
00059
00060 IvfClassInfo("CIvfCulledScene",CIvfScene);
00061
00069 void addChild(CIvfShape* shape);
00070
00078 void setCullView(CIvfView* view);
00079
00081 CIvfView* getCullView();
00082
00089 void setUseCulling(bool flag);
00090
00092 bool getUseCulling();
00093
00095 int getCullCount();
00096
00097 protected:
00098 bool intersectFrustum(CIvfBoundingSphere* bSphere);
00099 void cull();
00100 virtual void createGeometry();
00101 };
00102
00103 #endif