00001
00002
00003 #ifndef __INTERSECTOR_H
00004 #define __INTERSECTOR_H
00005
00006 #include <esg/Definitions.h>
00007 #include <esg/SceneGraphObject.h>
00008
00009 namespace esg {
00010
00016 class OGSCENE_EXPORT Intersector {
00017 protected:
00018 PointEnv* _pEnv;
00019 PointEnv* _pNewEnv;
00020 float _distance;
00021 ESGbitmask _wantedMask;
00022
00023
00024 public:
00028 Intersector () : _pEnv(NULL) { _pNewEnv = new PointEnv; }
00029
00033 virtual ~Intersector () { if (_pNewEnv) delete _pNewEnv; }
00034
00042 virtual void init (int mask, float maxDist = MAXFLOAT);
00043
00050 PointEnv* adoptIntersection (void);
00051
00058 const PointEnv* inspectIntersection (void) const { return _pEnv; }
00059
00063 float getActDistance (void) const { return _distance; }
00064
00068 int getMask (void) const { return _wantedMask; }
00069
00081 virtual int processCandidate (SceneGraphObject* pObject,
00082 const Vector3& origin,
00083 const Vector3& direction);
00084 };
00085
00086 };
00087
00088 #endif // __INTERSECTOR_H