![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2008 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtViewStateProcessor.h,v $ $Revision: 1.14 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00011 00012 #pragma once 00013 #include <vrvCore/vrvCore.h> 00014 #include <vrvCore/DtUniqueID.h> 00015 #include <boost/function.hpp> 00016 00017 namespace makVrv 00018 { 00019 class DtObserver; 00020 00026 class DT_DLL_VRVCORE DtViewStateProcessor 00027 { 00028 public: 00029 00030 struct Vec3d { double x; double y; double z; }; 00031 00032 typedef boost::function<void (DtObserver&)> ObserverAction; 00033 00035 DtViewStateProcessor(); 00036 00038 ~DtViewStateProcessor(); 00039 00041 ObserverAction makeAbsolute(double x, double y, double z, 00042 double psi, double theta, double phi, long ignoreFlags ); 00043 00045 ObserverAction makeTether(const DtUniqueID& targetId, 00046 double x, double y, double z, 00047 double psi, double theta, double phi, long ignoreFlags); 00048 00050 ObserverAction makeMimic(const DtUniqueID& targetId, 00051 double x, double y, double z, 00052 double psi, double theta, double phi, long ignoreFlags); 00053 00055 ObserverAction makeTrack(const DtUniqueID& targetId, 00056 double x, double y, double z, long ignoreFlags); 00057 00059 ObserverAction makeTetherTrack(const DtUniqueID& tetherId, 00060 const DtUniqueID& trackId, double x, double y, double z, long ignoreFlags); 00061 00063 ObserverAction makeMimicTrack(const DtUniqueID& mimicId, 00064 const DtUniqueID& trackId, double x, double y, double z, long ignoreFlags); 00065 00067 ObserverAction makeFollow(const DtUniqueID& targetId, 00068 double x, double y, double z, long ignoreFlags); 00069 00071 ObserverAction makeOrbit(const DtUniqueID& targetId, double azimuthRate, 00072 double attachX, double attachY, double attachZ, 00073 double offsetX, double offsetY, double offsetZ, long ignoreFlags); 00074 00076 ObserverAction makeCompass(const DtUniqueID& targetId, double bodyHeading, 00077 double headingOffset, double pitch, double pitchOffset, double roll, 00078 double radius, long ignoreFlags); 00079 00081 ObserverAction makeMove( double geocX, double geocY, double geocZ, 00082 double geocPsi, double geocTheta, double geocPhi, int move, int turn, 00083 bool reset, long ignoreFlags ); 00084 00085 protected: 00086 00088 static void setAbsolute(double x, double y, double z, 00089 double psi, double theta, double phi, long ignoreFlags, 00090 DtObserver& obs); 00091 00093 static void setTether(const DtUniqueID& targetId, 00094 Vec3d attachPos, 00096 double psi, double theta, double phi, long ignoreFlags, 00097 DtObserver& obs); 00098 00100 static void setMimic(const DtUniqueID& targetId, 00101 Vec3d attachPos, 00102 //double x, double y, double z, 00103 double psi, double theta, double phi, long ignoreFlags, 00104 DtObserver& obs); 00105 00107 static void setTrack(const DtUniqueID& targetId, 00108 double x, double y, double z, long ignoreFlags, 00109 DtObserver& obs); 00110 00112 static void setTetherTrack( 00113 const DtUniqueID& tetherId, const DtUniqueID& trackId, 00114 double x, double y, double z, long ignoreFlags, 00115 DtObserver& obs); 00116 00118 static void setMimicTrack( 00119 const DtUniqueID& mimicId, const DtUniqueID& trackId, 00120 double x, double y, double z, long ignoreFlags, 00121 DtObserver& obs); 00122 00124 static void setFollow(const DtUniqueID& targetId, 00125 double x, double y, double z, long ignoreFlags, 00126 DtObserver& obs); 00127 00131 struct RadiusArg 00132 { 00133 double heading; 00134 double pitch; 00135 double radius; 00136 }; 00137 00142 static void setOrbit(const DtUniqueID& targetId, 00143 double azimuthRate, Vec3d attachPos, Vec3d offset, long ignoreFlags, 00144 DtObserver& obs); 00145 00147 static void setCompass(const DtUniqueID& targetId, RadiusArg pos, 00148 double headingOffset, double pitchOffset, double roll, long ignoreFlags, 00149 DtObserver& obs); 00150 00152 static void setMove( Vec3d geocPos, Vec3d geocTb, int move, int turn, 00153 bool reset, long ignoreFlags, DtObserver& obs); 00154 00155 }; 00156 }