rendered paste body#include "dx_test.h"
// nts: remember! its the 40 things!
void CameraMove()
{
static BYTE keystate[256];
dinkeyboard->GetDeviceState(256, (LPVOID)keystate);
D3DXVECTOR3 direction;
D3DXVec3Normalize(&direction, &(camera.look - camera.pos));
if (keystate[DIK_W] & 0x80)
{
camera.look += direction;
camera.pos += direction;
}
if (keystate[DIK_S] & 0x80)
{
camera.look -= direction;
camera.pos -= direction;
}
if (keystate[DIK_A] & 0x80)
{
D3DXVec3Cross(&direction, &direction, &D3DXVECTOR3(0.0f, 1.0f, 0.0f));
D3DXVec3Normalize(&direction, &direction);
camera.pos += direction;
camera.look += direction;
}
if (keystate[DIK_D] & 0x80)
{
D3DXVec3Cross(&direction, &direction, &D3DXVECTOR3(0.0f, 1.0f, 0.0f));
D3DXVec3Normalize(&direction, &direction);
camera.pos -= direction;
camera.look -= direction;
}
}
void CameraRotate()
{
static BYTE keystate[256];
dinkeyboard->GetDeviceState(256, (LPVOID)keystate);
float x = 0.0f, y = 0.0f;
if (keystate[DIK_UP] & 0x80) x += 1.0f;
if (keystate[DIK_DOWN] & 0x80) x -= 1.0f;
if (keystate[DIK_LEFT] & 0x80) y += 1.0f;
if (keystate[DIK_RIGHT] & 0x80) y -= 1.0f;
printf("%f %f\n", x, y);
if (x != 0.0f || y != 0.0f){ printf("yeah!\n");
D3DXVECTOR3 direction, rotaxis;
D3DXMATRIX mrotaxis, mrotz;
D3DXVec3Normalize(&direction, &(camera.look - camera.pos));
D3DXVec3Cross(&rotaxis, &rotaxis, &D3DXVECTOR3(0.0f, 1.0f, 0.0f));
D3DXVec3Normalize(&rotaxis, &rotaxis);
D3DXMatrixRotationAxis(&mrotaxis, &rotaxis, x / -360);
D3DXMatrixRotationZ(&mrotz, y / -360);
D3DXVec3TransformCoord(&direction, &direction, &(mrotaxis * mrotz));
D3DXVec3TransformCoord(&D3DXVECTOR3(0.0f, 1.0f, 0.0f), &D3DXVECTOR3(0.0f, 1.0f, 0.0f), &(mrotaxis * mrotz));
camera.look = direction + camera.pos; }
return;
}