Add more camera movement key bindings (#259)
Q/E and Page up/page down to move vertically. Arrow keys in addition to WASD to move normally.
This commit is contained in:
parent
fb49ccf83a
commit
ef3ea40f7a
@ -144,7 +144,7 @@ int main(int /*argc*/, char** /*argv*/)
|
|||||||
float camr = 1000;
|
float camr = 1000;
|
||||||
float origCameraEulers[] = {0, 0}; // Used to compute rotational changes across frames.
|
float origCameraEulers[] = {0, 0}; // Used to compute rotational changes across frames.
|
||||||
|
|
||||||
float moveW = 0, moveS = 0, moveA = 0, moveD = 0;
|
float moveFront = 0.0f, moveBack = 0.0f, moveLeft = 0.0f, moveRight = 0.0f, moveUp = 0.0f, moveDown = 0.0f;
|
||||||
|
|
||||||
float scrollZoom = 0;
|
float scrollZoom = 0;
|
||||||
bool rotate = false;
|
bool rotate = false;
|
||||||
@ -456,10 +456,12 @@ int main(int /*argc*/, char** /*argv*/)
|
|||||||
|
|
||||||
// Handle keyboard movement.
|
// Handle keyboard movement.
|
||||||
const Uint8* keystate = SDL_GetKeyboardState(NULL);
|
const Uint8* keystate = SDL_GetKeyboardState(NULL);
|
||||||
moveW = rcClamp(moveW + dt * 4 * (keystate[SDL_SCANCODE_W] ? 1 : -1), 0.0f, 1.0f);
|
moveFront = rcClamp(moveFront + dt * 4 * ((keystate[SDL_SCANCODE_W] || keystate[SDL_SCANCODE_UP ]) ? 1 : -1), 0.0f, 1.0f);
|
||||||
moveA = rcClamp(moveA + dt * 4 * (keystate[SDL_SCANCODE_A] ? 1 : -1), 0.0f, 1.0f);
|
moveLeft = rcClamp(moveLeft + dt * 4 * ((keystate[SDL_SCANCODE_A] || keystate[SDL_SCANCODE_LEFT ]) ? 1 : -1), 0.0f, 1.0f);
|
||||||
moveS = rcClamp(moveS + dt * 4 * (keystate[SDL_SCANCODE_S] ? 1 : -1), 0.0f, 1.0f);
|
moveBack = rcClamp(moveBack + dt * 4 * ((keystate[SDL_SCANCODE_S] || keystate[SDL_SCANCODE_DOWN ]) ? 1 : -1), 0.0f, 1.0f);
|
||||||
moveD = rcClamp(moveD + dt * 4 * (keystate[SDL_SCANCODE_D] ? 1 : -1), 0.0f, 1.0f);
|
moveRight = rcClamp(moveRight + dt * 4 * ((keystate[SDL_SCANCODE_D] || keystate[SDL_SCANCODE_RIGHT ]) ? 1 : -1), 0.0f, 1.0f);
|
||||||
|
moveUp = rcClamp(moveUp + dt * 4 * ((keystate[SDL_SCANCODE_Q] || keystate[SDL_SCANCODE_PAGEUP ]) ? 1 : -1), 0.0f, 1.0f);
|
||||||
|
moveDown = rcClamp(moveDown + dt * 4 * ((keystate[SDL_SCANCODE_E] || keystate[SDL_SCANCODE_PAGEDOWN ]) ? 1 : -1), 0.0f, 1.0f);
|
||||||
|
|
||||||
float keybSpeed = 22.0f;
|
float keybSpeed = 22.0f;
|
||||||
if (SDL_GetModState() & KMOD_SHIFT)
|
if (SDL_GetModState() & KMOD_SHIFT)
|
||||||
@ -467,8 +469,8 @@ int main(int /*argc*/, char** /*argv*/)
|
|||||||
keybSpeed *= 4.0f;
|
keybSpeed *= 4.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
float movex = (moveD - moveA) * keybSpeed * dt;
|
float movex = (moveRight - moveLeft) * keybSpeed * dt;
|
||||||
float movey = (moveS - moveW) * keybSpeed * dt + scrollZoom * 2.0f;
|
float movey = (moveBack - moveFront) * keybSpeed * dt + scrollZoom * 2.0f;
|
||||||
scrollZoom = 0;
|
scrollZoom = 0;
|
||||||
|
|
||||||
cameraPos[0] += movex * (float)modelviewMatrix[0];
|
cameraPos[0] += movex * (float)modelviewMatrix[0];
|
||||||
@ -479,6 +481,8 @@ int main(int /*argc*/, char** /*argv*/)
|
|||||||
cameraPos[1] += movey * (float)modelviewMatrix[6];
|
cameraPos[1] += movey * (float)modelviewMatrix[6];
|
||||||
cameraPos[2] += movey * (float)modelviewMatrix[10];
|
cameraPos[2] += movey * (float)modelviewMatrix[10];
|
||||||
|
|
||||||
|
cameraPos[1] += (moveUp - moveDown) * keybSpeed * dt;
|
||||||
|
|
||||||
glEnable(GL_FOG);
|
glEnable(GL_FOG);
|
||||||
|
|
||||||
if (sample)
|
if (sample)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user