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 WPICKINFO_H
00026 #define WPICKINFO_H
00027
00028 #include <string>
00029 #include <utility>
00030
00031 #include "../common/math/linearAlgebra/WLinearAlgebra.h"
00032 #include "../common/WDefines.h"
00033 #include "WExportWGE.h"
00034
00035
00036
00037
00038
00039 class WGE_EXPORT WPickInfo
00040 {
00041 public:
00042
00043
00044
00045 enum modifierKey
00046 {
00047 NONE,
00048 SHIFT,
00049 STRG,
00050 ALT,
00051 WIN
00052 };
00053
00054
00055
00056
00057 typedef enum
00058 {
00059 NOMOUSE,
00060 MOUSE_LEFT,
00061 MOUSE_RIGHT,
00062 MOUSE_MIDDLE,
00063 MOUSE4,
00064 MOUSE5
00065 }
00066 WMouseButton;
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078 inline WPickInfo( std::string name,
00079 std::string viewerName,
00080 WPosition pickPosition,
00081 std::pair< float, float > pixelCoords,
00082 modifierKey modKey,
00083 WMouseButton mButton = WPickInfo::MOUSE_LEFT,
00084 WVector3d pickNormal = WVector3d() );
00085
00086
00087
00088
00089 inline WPickInfo();
00090
00091
00092
00093
00094
00095
00096 inline modifierKey getModifierKey() const;
00097
00098
00099
00100
00101
00102
00103 inline WMouseButton getMouseButton() const;
00104
00105
00106
00107
00108
00109 inline void setModifierKey( const modifierKey& modKey );
00110
00111
00112
00113
00114
00115 inline void setMouseButton( const WMouseButton& mButton );
00116
00117
00118
00119
00120
00121
00122
00123 inline std::string getName() const;
00124
00125
00126
00127
00128
00129
00130 inline std::string getViewerName() const;
00131
00132
00133
00134
00135
00136
00137 inline WPosition getPickPosition() const;
00138
00139
00140
00141
00142
00143
00144 inline WVector3d getPickNormal() const;
00145
00146
00147
00148
00149
00150
00151 inline WVector2d getPickPixel() const;
00152
00153
00154
00155
00156
00157
00158
00159 inline bool operator==( WPickInfo rhs ) const;
00160
00161
00162
00163
00164
00165
00166
00167
00168 inline bool operator!=( WPickInfo rhs ) const;
00169
00170 protected:
00171 private:
00172
00173 std::string m_name;
00174 std::string m_viewerName;
00175 WPosition m_pickPosition;
00176 std::pair< float, float > m_pixelCoords;
00177 modifierKey m_modKey;
00178 WMouseButton m_mouseButton;
00179 WVector3d m_pickNormal;
00180 };
00181
00182 WPickInfo::WPickInfo( std::string name,
00183 std::string viewerName,
00184 WPosition pickPosition,
00185 std::pair< float, float > pixelCoords,
00186 modifierKey modKey,
00187 WMouseButton mButton,
00188 WVector3d pickNormal ) :
00189 m_name( name ),
00190 m_viewerName( viewerName ),
00191 m_pickPosition( pickPosition ),
00192 m_pixelCoords( pixelCoords ),
00193 m_modKey( modKey ),
00194 m_mouseButton( mButton ),
00195 m_pickNormal( pickNormal )
00196 {
00197 }
00198
00199 WPickInfo::WPickInfo() :
00200 m_name( "" ),
00201 m_viewerName( "" ),
00202 m_pickPosition( WPosition() ),
00203 m_pixelCoords( std::make_pair( 0.0, 0.0 ) ),
00204 m_modKey( WPickInfo::NONE ),
00205 m_mouseButton( WPickInfo::MOUSE_LEFT )
00206 {
00207 }
00208
00209 WPickInfo::modifierKey WPickInfo::getModifierKey() const
00210 {
00211 return m_modKey;
00212 }
00213
00214 void WPickInfo::setModifierKey( const modifierKey& modKey )
00215 {
00216 m_modKey = modKey;
00217 }
00218
00219 WPickInfo::WMouseButton WPickInfo::getMouseButton() const
00220 {
00221 return m_mouseButton;
00222 }
00223
00224 void WPickInfo::setMouseButton( const WMouseButton& mButton )
00225 {
00226 m_mouseButton = mButton;
00227 }
00228
00229 std::string WPickInfo::getName() const
00230 {
00231 return m_name;
00232 }
00233
00234 std::string WPickInfo::getViewerName() const
00235 {
00236 return m_viewerName;
00237 }
00238
00239 WPosition WPickInfo::getPickPosition() const
00240 {
00241 return m_pickPosition;
00242 }
00243
00244 WVector3d WPickInfo::getPickNormal() const
00245 {
00246 return m_pickNormal;
00247 }
00248
00249 inline bool WPickInfo::operator==( WPickInfo rhs ) const
00250 {
00251 return ( this->m_name == rhs.m_name
00252 && this->m_pickPosition == rhs.m_pickPosition
00253 && this->m_modKey == rhs.m_modKey );
00254 }
00255
00256 inline bool WPickInfo::operator!=( WPickInfo rhs ) const
00257 {
00258 return !( *this == rhs );
00259 }
00260
00261 inline WVector2d WPickInfo::getPickPixel() const
00262 {
00263 WVector2d v;
00264 v[0] = m_pixelCoords.first;
00265 v[1] = m_pixelCoords.second;
00266 return v;
00267 }
00268
00269 #endif // WPICKINFO_H