00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __IENGINE_VISCULL_H__
00021 #define __IENGINE_VISCULL_H__
00022
00023 #include "csutil/scf.h"
00024
00025 struct iRenderView;
00026 struct iFrustumView;
00027 struct iVisibilityObject;
00028 struct iMovable;
00029 struct iShadowReceiver;
00030 struct iPolygon3D;
00031 struct iMeshWrapper;
00032 class csBox3;
00033
00034 SCF_VERSION (iVisibilityCuller, 0, 0, 5);
00035
00042 struct iVisibilityCuller : public iBase
00043 {
00049 virtual void Setup (const char* name) = 0;
00056 virtual void RegisterVisObject (iVisibilityObject* visobj) = 0;
00058 virtual void UnregisterVisObject (iVisibilityObject* visobj) = 0;
00067 virtual bool VisTest (iRenderView* irview) = 0;
00068
00075 virtual iPolygon3D* IntersectSegment (const csVector3& start,
00076 const csVector3& end, csVector3& isect, float* pr = NULL,
00077 iMeshWrapper** p_mesh = NULL) = 0;
00078
00080 virtual bool SupportsShadowCasting () = 0;
00084 virtual void CastShadows (iFrustumView* fview) = 0;
00085
00087 virtual void RegisterShadowReceiver (iShadowReceiver* receiver) = 0;
00089 virtual void UnregisterShadowReceiver (iShadowReceiver* receiver) = 0;
00090 };
00091
00092 SCF_VERSION (iVisibilityObject, 0, 0, 3);
00093
00098 struct iVisibilityObject : public iBase
00099 {
00101 virtual iMovable* GetMovable () const = 0;
00103 virtual long GetShapeNumber () const = 0;
00105 virtual void GetBoundingBox (csBox3& bbox) = 0;
00110 virtual void MarkVisible () = 0;
00115 virtual void MarkInvisible () = 0;
00120 virtual bool IsVisible () const = 0;
00121 };
00122
00123 #endif // __IENGINE_VISCULL_H__
00124