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 FIRST_PERSON_CAMERA_CONTROLLER_H_
00026 #define FIRST_PERSON_CAMERA_CONTROLLER_H_
00027
00028 namespace Lamp{
00029
00030 class Camera;
00031
00032
00033
00034
00035
00036 class FirstPersonCameraController{
00037 public:
00038
00039
00040
00041 FirstPersonCameraController();
00042
00043
00044
00045
00046 virtual ~FirstPersonCameraController();
00047
00048
00049
00050
00051
00052 virtual void setCamera(Camera* camera){ camera_ = camera; }
00053
00054
00055
00056
00057
00058
00059
00060 virtual void setup(float nearClip, float farClip, float aspect);
00061
00062
00063
00064
00065
00066
00067
00068
00069 virtual LRESULT windowProcedure(
00070 HWND windowHandle, u_int message, WPARAM wParam, LPARAM lParam);
00071
00072
00073
00074
00075
00076
00077 virtual void setCameraPosition(const Vector3& position){
00078 cameraPosition_ = position;
00079 }
00080
00081
00082
00083
00084
00085 virtual const Vector3& getCameraPosition() const{ return cameraPosition_; }
00086
00087
00088
00089
00090
00091
00092 virtual void setCameraRotation(const Vector3& rotation){
00093 cameraRotation_ = rotation;
00094 }
00095
00096
00097
00098
00099
00100 virtual const Vector3& getCameraRotation() const{ return cameraRotation_; }
00101
00102
00103
00104
00105
00106
00107 virtual String getOperationString() const{
00108 return String(
00109 "左ドラッグ カメラの向き変更\n"
00110 "右ドラッグ 上下左右にカメラを移動\n"
00111 "Shift+右ドラッグ 前後左右にカメラを移動\n"
00112 "[ e ] カメラ前移動\n[ d ] カメラ後移動\n"
00113 "[ f ] カメラ右移動\n[ s ] カメラ左移動\n"
00114 "[ r ] カメラ上移動\n[ v ] カメラ下移動\n"
00115 "マウスホイールでズームイン、ズームアウト\n"
00116 "Shiftを押しながらキー入力すると1/10の速度でカメラが移動します\n"
00117 );
00118 }
00119
00120
00121
00122
00123
00124 const String& getInformationString() const{ return informationString_; }
00125
00126 private:
00127
00128 FirstPersonCameraController(const FirstPersonCameraController& copy);
00129
00130
00131 void operator =(const FirstPersonCameraController& copy);
00132
00133
00134 Camera* camera_;
00135
00136 Vector3 cameraPosition_;
00137
00138 Vector3 cameraRotation_;
00139
00140 float fovY_;
00141
00142 String informationString_;
00143
00144
00145 float cameraPositionSensibility_;
00146
00147 float cameraRotationSensibility_;
00148
00149 float keyboardSensibility_;
00150
00151 int mouseXPosition_;
00152
00153 int mouseYPosition_;
00154
00155 };
00156
00157
00158 }
00159 #endif // End of FIRST_PERSON_CAMERA_CONTROLLER_H_
00160