Changeset 1308
- Timestamp:
- Apr 29, 2012, 8:41:43 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/orbital/orbital.cpp
r1304 r1308 92 92 vec3(0, 1, 0)); 93 93 94 m_angle = 0; 94 m_auto_cam_timer = 0.0f; 95 96 m_horizontal_angle = 0; 97 m_vertical_angle = 0; 98 m_roll_angle = 0; 99 100 m_horizontal_angle_speed = 0.0f; 101 m_vertical_angle_speed = 0.0f; 102 m_roll_angle_speed = 0.0f; 95 103 96 104 m_ready = false; … … 104 112 WorldEntity::TickGame(deltams); 105 113 106 m_angle += deltams / 50.0f; 107 108 mat4 anim = mat4::rotate(m_angle, vec3(0, 1, 0)); 114 //TEMP : Convert DT to seconds 115 deltams /= 1000.0f; 116 117 if (Input::GetButtonState(27 /*SDLK_ESCAPE*/)) 118 Ticker::Shutdown(); 119 120 if (m_auto_cam_timer > 0.0f) 121 m_auto_cam_timer -= deltams; 122 123 //Doing the query with actual values, cause I want to stay SDL-free for now. 124 int HMovement = Input::GetButtonState(276 /*SDLK_LEFT*/) - Input::GetButtonState(275 /*SDLK_RIGHT*/); 125 int VMovement = Input::GetButtonState(273 /*SDLK_UP*/) - Input::GetButtonState(274 /*SDLK_DOWN*/); 126 int RMovement = Input::GetButtonState(256 /*SDLK_KP0*/) - Input::GetButtonState(305 /*SDLK_RCTRL*/); 127 128 float new_horizontal_angle_speed = 0.0f; 129 float new_vertical_angle_speed = 0.0f; 130 float new_roll_angle_speed = 0.0f; 131 132 if (HMovement != 0 || VMovement != 0 || RMovement != 0) 133 { 134 new_horizontal_angle_speed = ((float)HMovement) * 50.0f; 135 new_vertical_angle_speed = ((float)VMovement) * 50.0f; 136 new_roll_angle_speed = ((float)RMovement) * 50.0f; 137 m_auto_cam_timer = 2.0f; 138 } 139 else if (m_auto_cam_timer <= 0.0f) 140 { 141 new_horizontal_angle_speed = 40.0f; 142 new_vertical_angle_speed = max<float>(min<float>(-m_vertical_angle, 20.0f), -20.0f); 143 new_roll_angle_speed = max<float>(min<float>(-m_roll_angle, 40.0f), -40.0f); 144 } 145 146 m_horizontal_angle_speed += (new_horizontal_angle_speed - m_horizontal_angle_speed) * (deltams / (deltams + 0.3f)); 147 m_vertical_angle_speed += (new_vertical_angle_speed - m_vertical_angle_speed) * (deltams / (deltams + 0.3f)); 148 m_roll_angle_speed += (new_roll_angle_speed - m_roll_angle_speed) * (deltams / (deltams + 0.3f)); 149 150 m_horizontal_angle += m_horizontal_angle_speed * deltams; 151 m_vertical_angle += new_vertical_angle_speed * deltams; 152 m_roll_angle += new_roll_angle_speed * deltams; 153 154 if (m_horizontal_angle > 180.0f) 155 m_horizontal_angle -= 360.0f; 156 else if (m_horizontal_angle < -180.0f) 157 m_horizontal_angle += 360.0f; 158 if (m_vertical_angle > 180.0f) 159 m_vertical_angle -= 360.0f; 160 else if (m_vertical_angle < -180.0f) 161 m_vertical_angle += 360.0f; 162 if (m_roll_angle > 180.0f) 163 m_roll_angle -= 360.0f; 164 else if (m_roll_angle < -180.0f) 165 m_roll_angle += 360.0f; 166 167 mat4 animH = mat4::rotate(m_horizontal_angle, vec3(0, 1, 0)); 168 mat4 animV = mat4::rotate(m_vertical_angle, vec3(1, 0, 0)); 169 mat4 animR = mat4::rotate(m_roll_angle, vec3(0, 0, 1)); 109 170 mat4 model = mat4::translate(vec3(0)); 110 171 111 m_modelview = m_camera->GetViewMatrix() * model * anim ;172 m_modelview = m_camera->GetViewMatrix() * model * animV * animR * animH; 112 173 m_proj = m_camera->GetProjMatrix(); 113 174 m_normalmat = transpose(inverse(mat3(m_modelview))); -
trunk/orbital/orbital.h
r1301 r1308 20 20 private: 21 21 Mesh m; 22 float m_angle; 23 mat4 m_modelview, m_proj; 22 float m_auto_cam_timer; 23 float m_horizontal_angle_speed; 24 float m_vertical_angle_speed; 25 float m_roll_angle_speed; 26 27 float m_horizontal_angle; 28 float m_vertical_angle; 29 float m_roll_angle; 30 31 mat4 m_modelview, m_proj; 24 32 mat3 m_normalmat; 25 33 -
trunk/src/input.cpp
r1300 r1308 92 92 } 93 93 94 //BH : Added this, is a v0.1 Alpha version. 95 int Input::GetButtonState(int button) 96 { 97 #if defined USE_SDL 98 #if SDL_MAJOR_VERSION == 1 && SDL_MINOR_VERSION >= 3 99 Uint8 *keystate = SDL_GetKeyboardState(NULL); 100 #else 101 Uint8 *keystate = SDL_GetKeyState(NULL); 102 #endif 103 return keystate[button]; 104 #else 105 return 0; 106 #endif 107 } 108 94 109 void Input::TrackMouse(WorldEntity *e) 95 110 { -
trunk/src/input.h
r1139 r1308 31 31 static ivec2 GetMousePos(); 32 32 static ivec3 GetMouseButtons(); 33 //BH : Added this, is a v0.1 Alpha version. 34 static int GetButtonState(int button); 33 35 34 36 /* Entities can subscribe to events */
Note: See TracChangeset
for help on using the changeset viewer.