![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2005 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: vrfLineOfSightFunctor.h,v $ $Revision: 1.4 $ $State: Exp $ 00007 *******************************************************************************/ 00008 #ifndef vrfLineOfSightFunctor_H_ 00009 #define vrfLineOfSightFunctor_H_ 00010 00013 00016 00017 #include <vlutil/vlSmartPointers.h> 00018 #include "vrfobjcore/vrfLineOfSightCheckParams.h" 00019 00022 #include "vrfobjcore/vrfobjcoreDefines.h" 00023 class DT_DLL_vrfobjcore DtVrfLineOfSightFunctor 00024 { 00025 public: 00027 virtual ~DtVrfLineOfSightFunctor() {}; 00028 00030 virtual bool operator()(const DtVrfLineOfSightCheckParams& params) = 0; 00031 }; 00032 00033 00035 typedef DtBoost::shared_ptr<DtVrfLineOfSightFunctor> DtVrfLineOfSightFunctorSP; 00036 00037 00040 template <typename T> 00041 class DtVrfMemberLineOfSightFunctor : public DtVrfLineOfSightFunctor 00042 { 00043 public: 00045 typedef bool (T::*CheckLineOfSightFunction)(const DtVrfLineOfSightCheckParams& params) const; 00046 00061 DtVrfMemberLineOfSightFunctor(T* object, CheckLineOfSightFunction function); 00062 00064 virtual ~DtVrfMemberLineOfSightFunctor(); 00065 00068 virtual bool operator()(const DtVrfLineOfSightCheckParams& params); 00069 00070 protected: 00071 00073 T* myObject; 00074 00076 CheckLineOfSightFunction myFunction; 00077 }; 00078 00079 00082 template <typename T> 00083 DtVrfLineOfSightFunctorSP DtVrfMemberLOSFunctorSPGenerator(T* object, 00084 typename DtVrfMemberLineOfSightFunctor<T>::CheckLineOfSightFunction function); 00085 00086 00087 #define vrfLineOfSightFunctor_inl_ 00088 #include "vrfobjcore/vrfLineOfSightFunctor.inl" 00089 #undef vrfLineOfSightFunctor_inl_ 00090 00091 #endif 00092