Mercurial > LightClone
view LightClone/Source/CameraController.cpp @ 65:41980ff0607d
Added shader and textures for bot
author | koryspansel <koryspansel@bendbroadband.com> |
---|---|
date | Wed, 05 Oct 2011 12:55:46 -0700 |
parents | 91e927584f92 |
children |
line wrap: on
line source
/* * CameraController */ #include "CameraController.h" /* * CameraController */ CameraController::CameraController(float fInitialDistance, float fInitialYaw, float fInitialPitch) { nMode = CameraMode_3D; fCameraDistance = fInitialDistance; fCameraYaw = fInitialYaw; fCameraPitch = fInitialPitch; fViewAngle = D3DX_PI / 4.0f; fMinimumZ = 1.0f; fMaximumZ = 1024.0f; } /* * SetMode */ void CameraController::SetMode(uint32 nCameraMode) { nMode = nCameraMode; } /* * Render */ void CameraController::Update(float fElapsed) { } /* * Yaw */ void CameraController::Yaw(float fAmount) { fCameraYaw += fAmount; } /* * Pitch */ void CameraController::Pitch(float fAmount) { fCameraPitch += fAmount; } /* * Move */ void CameraController::Move(float fAmount) { fCameraDistance += fAmount; } /* * GetLocation */ const D3DXVECTOR3 CameraController::GetLocation() const { const float fOffsetX = fCameraDistance * sinf(0.5f * D3DX_PI - fCameraPitch) * cosf(fCameraYaw); const float fOffsetY = fCameraDistance * cosf(0.5f * D3DX_PI - fCameraPitch); const float fOffsetZ = fCameraDistance * sinf(0.5f * D3DX_PI - fCameraPitch) * sinf(fCameraYaw); return D3DXVECTOR3(fOffsetX, fOffsetY, fOffsetZ); } /* * GetProjection */ const D3DXMATRIX CameraController::GetProjection(const D3DVIEWPORT9& kViewport) const { D3DXMATRIX kProjection; if(nMode == CameraMode_2D) { D3DXMatrixOrthoLH(&kProjection, (float)kViewport.Width, (float)kViewport.Height, fMinimumZ, fMaximumZ); } else if(nMode == CameraMode_3D) { D3DXMatrixPerspectiveFovLH(&kProjection, fViewAngle, (float)kViewport.Width / (float)kViewport.Height, fMinimumZ, fMaximumZ); } return kProjection; } /* * GetView */ const D3DXMATRIX CameraController::GetView() const { D3DXMATRIX kView; if(nMode == CameraMode_2D) { D3DXMatrixIdentity(&kView); } else if(nMode == CameraMode_3D) { D3DXMatrixLookAtLH(&kView, &GetLocation(), &D3DXVECTOR3(0.0f, 0.0f, 0.0f), &D3DXVECTOR3(0.0f, 1.0f, 0.0f)); } return kView; }