00001 /* $Id: ObjsInAreaExplorer.h,v 1.3 2002/11/05 14:41:19 anonymous Exp $ */ 00002 00003 #ifndef __OBJECTS_INSIDE_AREA_EXPLORER_H 00004 #define __OBJECTS_INSIDE_AREA_EXPLORER_H 00005 00006 #include <esg/geometry/Geometry.h> 00007 #include <esg/Group.h> 00008 #include <esg/SceneGraphObject.h> 00009 #include <esg/Definitions.h> 00010 #include <esg/explorer/Explorer.h> 00011 00012 /* 00013 * Finds drawable objects (shapes) interfering given area. 00014 * Shapes are returned by the result() method, shape by shape 00015 * until NULL is retured. 00016 */ 00017 00018 namespace esg { 00019 00020 class OGSCENE_EXPORT ObjsInAreaExplorer : public Explorer { 00021 protected: 00022 struct TrObj { 00023 SceneGraphObject * pObject; 00024 Matrix4 * pTrMat; 00025 }; 00026 00027 Geometry* _pArea; 00028 Geometry* _pTrArea; 00029 List<TrObj> _foundObjects; 00030 00031 protected: 00032 virtual bool _iterate (SceneGraphObject&); 00033 virtual bool _process_leaf (SceneGraphObject&); 00034 virtual void _accept_new_transformation (const Matrix4&); 00035 00036 ObjsInAreaExplorer () {} 00037 00038 public: 00039 ObjsInAreaExplorer(const Geometry& /* area */); 00040 virtual ~ObjsInAreaExplorer (); 00041 00042 SceneGraphObject* result (Matrix4&, bool&); 00043 }; 00044 00045 }; // namespace 00046 00047 #endif // __OBJECTS_INSIDE_AREA_EXPLORER_H