view LightClone/Source/CameraController.cpp @ 42:91e927584f92

Code cleanup
author koryspansel
date Thu, 22 Sep 2011 10:38:54 -0700
parents 292e534f00c2
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;
}