diff --git a/src/player.cpp b/src/player.cpp
index dcc7763..40c487f 100644
--- a/src/player.cpp
+++ b/src/player.cpp
@@ -68,6 +68,16 @@ void Player::PollControls(void) {
   SetAngThrusterState(0, 0.0f);
   SetAngThrusterState(1, 0.0f);
   SetAngThrusterState(2, 0.0f);
+  
+  if(L3D::GetCamType() == L3D::CAM_EXTERNAL) {
+    if(L3D::KeyState(SDLK_UP))     m_external_view_rotx -= 1;
+    if(L3D::KeyState(SDLK_DOWN))   m_external_view_rotx += 1;
+    if(L3D::KeyState(SDLK_LEFT))   m_external_view_roty -= 1;
+    if(L3D::KeyState(SDLK_RIGHT))  m_external_view_roty += 1;
+    if(L3D::KeyState(SDLK_EQUALS)) m_external_view_dist -= 10;
+    if(L3D::KeyState(SDLK_MINUS))  m_external_view_dist += 10;
+    m_external_view_dist = MAX(50, m_external_view_dist);
+  }
 
   if((time_accel == 0) || GetDockedWith()) {
     return;
@@ -130,15 +140,6 @@ void Player::PollControls(void) {
   if(time_accel > 10) {
     dBodySetAngularVel(m_body, 0, 0, 0);
   }
-  if(L3D::GetCamType() == L3D::CAM_EXTERNAL) {
-    if(L3D::KeyState(SDLK_UP))     m_external_view_rotx -= 1;
-    if(L3D::KeyState(SDLK_DOWN))   m_external_view_rotx += 1;
-    if(L3D::KeyState(SDLK_LEFT))   m_external_view_roty -= 1;
-    if(L3D::KeyState(SDLK_RIGHT))  m_external_view_roty += 1;
-    if(L3D::KeyState(SDLK_EQUALS)) m_external_view_dist -= 10;
-    if(L3D::KeyState(SDLK_MINUS))  m_external_view_dist += 10;
-    m_external_view_dist = MAX(50, m_external_view_dist);
-  }
 
   if(GetNavTarget() && L3D::KeyState(SDLK_END)) {
     /* Temp test: Kill ("end") the target. */