Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

FlightCamManip.h

Go to the documentation of this file.
00001 // Copyright NVIDIA Corporation 2002-2004
00002 // TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THIS SOFTWARE IS PROVIDED
00003 // *AS IS* AND NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, EITHER EXPRESS
00004 // OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
00005 // AND FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS
00006 // BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES
00007 // WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
00008 // BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS)
00009 // ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF NVIDIA HAS
00010 // BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES 
00011 
00012 #pragma once
00013 
00015 #include "nvsgcommon.h"
00016 
00017 #include "nvui/CameraManipulator.h"
00018 
00019 namespace nvui
00020 {
00022 
00037   class FlightCamManip : public CameraManipulator
00038   {
00039     public:
00041       NVSG_API FlightCamManip(void);
00042 
00044       NVSG_API ~FlightCamManip(void);
00045 
00047       enum
00048       { _W_KEY        = 0x0400 
00049       , _S_KEY        = 0x0800 
00050       };
00051 
00053 
00054       NVSG_API virtual void apply(void);
00055 
00057 
00058       NVSG_API virtual void keyRepeat();
00059 
00061 
00066       bool isFly(void);
00067 
00069 
00071       void setScreenSize( UINT x  
00072                         , UINT y  
00073                         );
00074 
00076 
00077       void setWorldUpVector( nvmath::Vec3f up 
00078                            );
00080 
00081       const nvmath::Vec3f& getWorldUpVector();
00082 
00084 
00085       void setSpeedIncreaseFactor(float factor   
00086                                  );
00087       
00089 
00090       float getSpeedIncreaseFactor();
00091 
00093 
00095       void setHSensitivity(float sensitivity 
00096                           );
00097       
00099 
00100       float getHSensitivity();
00101 
00103 
00105       void setVSensitivity(float sensitivity 
00106                           );
00107 
00109 
00110       float getVSensitivity();
00111       
00113 
00114       void setSpeed(float speed 
00115                    );
00116 
00118 
00119       float getSpeed();
00120 
00121     protected:
00122       UINT  m_ScreenSizeX;    
00123       UINT  m_ScreenSizeY;    
00124       
00125       nvmath::Vec3f m_worldUpVector;  
00126 
00127       float m_speedIncreaseFactor;  
00128       float m_hSensitivity;         
00129       float m_vSensitivity;         
00130 
00131       float m_speed; 
00132       
00133       static NVSG_API const UINT FLYFORWARD;     
00134       static NVSG_API const UINT FLYBACKWARD;    
00135       static NVSG_API const UINT INCREASESPEED;  
00136       static NVSG_API const UINT DECREASESPEED;  
00137 
00138       static NVSG_API const float AREAOFPEACE;   
00139       
00141 
00142       NVSG_API virtual UINT convertKey(UINT key  
00143                                       );
00145 
00147       void fly(void);
00148 
00150 
00155       bool isFlyForward(void);
00156 
00158 
00163       bool isFlyBackward(void);
00164 
00165   };
00166 
00167   inline bool FlightCamManip::isFly(void)
00168   {
00169     return (isFlyForward() || isFlyBackward());
00170   }
00171 
00172   inline bool FlightCamManip::isFlyForward(void)
00173   {
00174     return(FLYFORWARD == m_buttonState && (  m_keyState == 0 
00175                                           || m_keyState == INCREASESPEED 
00176                                           || m_keyState == DECREASESPEED));
00177   }
00178 
00179   inline bool FlightCamManip::isFlyBackward(void)
00180   {
00181     return(FLYBACKWARD == m_buttonState && (  m_keyState == 0
00182                                            || m_keyState == INCREASESPEED 
00183                                            || m_keyState == DECREASESPEED));
00184   }
00185 
00186   inline void FlightCamManip::setScreenSize(UINT x, UINT y)
00187   {
00188     __ASSERT(x>0);
00189     __ASSERT(y>0);
00190     m_ScreenSizeX = x;
00191     m_ScreenSizeX = y;
00192   }
00193 
00194   inline void FlightCamManip::setWorldUpVector(nvmath::Vec3f up)
00195   {
00196     m_worldUpVector = up; 
00197   }
00198   
00199   inline const nvmath::Vec3f& FlightCamManip::getWorldUpVector()
00200   {
00201     return m_worldUpVector; 
00202   }
00203 
00204   inline void FlightCamManip::setSpeedIncreaseFactor(float factor)
00205   {
00206     __ASSERT(fabs(factor) > FLT_EPSILON);
00207     m_speedIncreaseFactor = factor; 
00208   }
00209   
00210   inline float FlightCamManip::getSpeedIncreaseFactor()
00211   {
00212     return m_speedIncreaseFactor; 
00213   }
00214 
00215   inline void FlightCamManip::setHSensitivity(float sensitivity)
00216   {
00217     m_hSensitivity = sensitivity; 
00218   }
00219   
00220   inline float FlightCamManip::getHSensitivity()
00221   {
00222     return m_hSensitivity; 
00223   }
00224 
00225   inline void FlightCamManip::setVSensitivity(float sensitivity)
00226   {
00227     m_vSensitivity = sensitivity; 
00228   }
00229 
00230   inline float FlightCamManip::getVSensitivity()
00231   {
00232     return m_vSensitivity;
00233   }
00234 
00235   inline void FlightCamManip::setSpeed(float speed)
00236   {
00237     m_speed = speed; 
00238   }
00239 
00240   inline float FlightCamManip::getSpeed()
00241   {
00242     return m_speed;
00243   }
00244 
00245 } //  namespace nvui

Generated on Tue Mar 1 13:19:19 2005 for NVSGSDK by NVIDIA