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 _CIvfCulledComposite_h_
00026 #define _CIvfCulledComposite_h_
00027
00028 #include <ivf/IvfComposite.h>
00029 #include <ivf/IvfView.h>
00030
00031 #include <ivfmath/IvfMatrixStack.h>
00032 #include <ivfmath/IvfViewFrustum.h>
00033
00034 IvfSmartPointer(CIvfCulledComposite);
00035
00037 class IVF_API CIvfCulledComposite : public CIvfComposite {
00038 private:
00039 CIvfMatrixStack* m_matrixStack;
00040 CIvfViewFrustum* m_frustum;
00041 CIvfView* m_cullView;
00042 int m_cullCount;
00043 bool m_useCulling;
00044
00045 void cullChildren(CIvfShape* shape);
00046 bool intersectFrustum(CIvfBoundingSphere *bSphere);
00047 public:
00048 CIvfCulledComposite();
00049 virtual ~CIvfCulledComposite();
00050
00051 IvfClassInfo("CIvfCulledComposite",CIvfComposite);
00052
00053 void addChild(CIvfShape* shape);
00054
00055 void setUseCulling(bool flag);
00056 bool getUseCulling();
00057
00058 void setCullView(CIvfView* view);
00059 CIvfView* getCullView();
00060
00061 int getCullCount();
00062
00063 protected:
00064 virtual void cull();
00065 virtual void createGeometry();
00066 };
00067
00068 #endif