00001 00007 #ifndef CALIBRATETRACKER_H 00008 #define CALIBRATETRACKER_H 00009 00010 #include "IS3DCommon.H" 00011 #include "Event.H" 00012 #include "ModalVRFsa.H" 00013 #include "TrackerDevice.H" 00014 00015 namespace IS3D { 00016 00017 typedef ReferenceCountedPointer<class CalibrateTracker> CalibrateTrackerRef; 00018 00019 00020 class CalibrateTracker : public ReferenceCountedObject 00021 { 00022 public: 00023 CalibrateTracker(); 00024 virtual ~CalibrateTracker(); 00025 00026 void startCalibrationProcedure(); 00027 00028 std::string findMovingTracker(std::string newEvent, Vector3 newPos); 00029 00030 void findMovingTrackerForDeviceSample(EventRef e); 00031 void storeDeviceSample(EventRef e); 00032 void doneDeviceSample(EventRef e); 00033 00034 void findMovingTrackerForOffsetSample(EventRef e); 00035 void storeOffsetSample(EventRef e); 00036 void doneOffsetSample(EventRef e); 00037 00038 void doneCalibration(EventRef e); 00039 00040 private: 00041 Table<std::string, Vector3> _trackerStartPos; 00042 Table<std::string, Vector3> _trackerLastPos; 00043 00044 std::string _activeTracker; 00045 TrackerDevice *_activeDevice; 00046 00047 ModalVRFsaRef _modalFindTrackerForDeviceSampleFsa; 00048 ModalVRFsaRef _modalGetDeviceSampleFsa; 00049 CoordinateFrame _deviceSample; 00050 00051 ModalVRFsaRef _modalFindTrackerForOffsetSampleFsa; 00052 ModalVRFsaRef _modalGetOffsetSampleFsa; 00053 CoordinateFrame _offsetSample; 00054 }; 00055 00056 00057 } // end namespace 00058 00059 #endif 00060