Google

Main Page   Class Hierarchy   Compound List   File List   Compound Members  

viscull.h

00001 /*
00002     Crystal Space 3D engine
00003     Copyright (C) 2001 by Jorrit Tyberghein
00004 
00005     This library is free software; you can redistribute it and/or
00006     modify it under the terms of the GNU Library General Public
00007     License as published by the Free Software Foundation; either
00008     version 2 of the License, or (at your option) any later version.
00009 
00010     This library is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013     Library General Public License for more details.
00014 
00015     You should have received a copy of the GNU Library General Public
00016     License along with this library; if not, write to the Free
00017     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
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 

Generated for Crystal Space by doxygen 1.2.5 written by Dimitri van Heesch, ©1997-2000