00001 /***************************************************************************** 00002 * $Id: camera.h,v 1.8 2003/07/16 11:42:15 schou Exp $ 00003 * Author: Jakob Schou Jensen <schou@sourceforge.net> 00004 * Licence: GPL 00005 * 00006 * Description: Camera 00007 * 00008 ****************************************************************************/ 00009 00015 #ifndef CAMERA_H 00016 #define CAMERA_H 00017 00018 #include <adsomath.h> 00019 #include <adsoheightmap.h> 00020 #include "rigidbody.h" 00021 #include "animation.h" 00022 00023 #define CAMERA_FOLLOW 0 00024 #define CAMERA_VEHICLE 1 00025 #define CAMERA_FLOAT 2 00026 #define CAMERA_FLY 3 00027 #define CAMERA_ROTATE 4 00028 #define CAMERA_MAX_MODE_NUM 2 00029 00030 struct CameraCtrl { 00031 // input 00032 int forward; 00033 int back; 00034 int left; 00035 int right; 00036 int mouse_dx; 00037 int mouse_dy; 00038 int mouse_button; 00039 00040 // target location 00041 v3f pos, dir, dup; 00042 00043 AdsoHeightMap *heightMap; 00044 }; 00045 00046 class Camera : public RigidBody, public PhysicalAnimation { 00047 int mode; 00048 int defMode; // variable for keeping track of user selected mode 00049 00050 public: 00051 CameraCtrl ctrl; 00052 00053 int grab_keys; 00054 00055 float angle; // this is the inverse zoom factor 00056 00057 // Relative eye location variables 00058 float tilt; 00059 float course; 00060 float dist; 00061 00062 int changeMode(); 00063 void setMode(int m); 00064 void defaultMode(int m){ defMode = m; } // (ie. user selected mode) 00065 int getMode(){return mode;} 00066 int getDefaultMode(){ return defMode; } 00067 char *modeName(); 00068 00069 void update(double delta_time); 00070 00071 Camera(); 00072 friend class ScreenDump; 00073 }; 00074 00075 #endif 00076
1.3.2