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  _PO_MESHPROBEPOINT_
00026 #define  _PO_MESHPROBEPOINT_
00027 
00028 #include <Inventor/fields/SoSFVec3f.h>
00029 #include <MeshViz/3Ddata/PoMesh.h>
00030 
00031 class PbCell;
00044 class  PoMeshProbePoint : public PoMesh {
00045   
00046   SO_KIT_HEADER(PoMeshProbePoint) ;
00047   
00048 
00049  public:
00050 
00054   PoMeshProbePoint() ;
00055 
00056   
00057 
00061   SoSFVec3f position;               
00062 
00067   SoSFFloat tolerance;             
00068 
00072   virtual void   rebuild() ;
00073 
00074 
00078   typedef void PoProbeCB(void *userData, PoMeshProbePoint *probe, const PbCell *cell);
00079 
00083   void setMotionCallback(PoProbeCB *cb, void *data)  ;
00084 
00088   void setChangeCellCallback(PoProbeCB *cb, void *data)  ;
00089 
00093   void setEnterMeshCallback(PoProbeCB *cb, void *data)  ;
00094 
00098   void setLeaveMeshCallback(PoProbeCB *cb, void *data)  ;
00099  private:
00100   static void initClass() ;
00101     static void exitClass() ;
00102 
00103  private:
00104   virtual ~PoMeshProbePoint() ;  
00105   
00106 
00107   virtual SbBool setUpConnections(SbBool onOff, SbBool doItAlways = FALSE) ;
00108   virtual void setDefaultOnNonWritingFields();
00109 
00110   virtual void addElementsAllCaches() ;
00111   virtual void preRebuild();
00112 
00113  private:
00114   FieldSensorList m_fieldSensorList ;
00115   
00116   
00117   SoFieldList     m_fieldList ;
00118   
00119 
00120   const PbCell  *m_currentCell;
00121   SbBool        m_isInsideMesh;
00122   PoProbeCB      *m_motionCB, *m_changeCellCB, *m_enterMeshCB, *m_leaveMeshCB;
00123   void           *m_motionData, *m_changeCellData, *m_enterMeshData, *m_leaveMeshData;
00124 
00125 } ;
00126 
00127 
00128 
00129 #endif 
00130 
00131 
00132