www.pudn.com > ATimeToKill.rar > camera.h


#ifndef __CAMERA_H 
#define __CAMERA_H 
 
#define WIN32_LEAN_AND_MEAN 
#define WIN32_EXTRA_LEAN 
 
/* 
	CAMERA.H 
 
	The interface for CCamera - the camera system 
 
	Author: Kevin Hawkins 
	Date: 3/29/2001 
	Description: The CCamera class is the camera system 
 
*/ 
 
#include  
#include  
#include  
 
#include "vector.h" 
 
class CObject; 
 
class CCamera 
{ 
private: 
	// these are used for moving and changing camera orientation 
	// through the MoveTo/LookTo methods 
	CVector initPosition, finalPosition; 
	CVector initLookAt, finalLookAt; 
 
	CVector lookAtVel;			// velocity for looking at objects 
	CVector lookAtAccel;		// acceleration for looking at objects 
 
	void UpdateLookAt(); 
	void UpdateMoveTo(); 
 
public: 
	CVector position;			// position of camera 
	CVector velocity;			// velocity of camera 
	CVector acceleration;		// acceleration of camera 
	CVector lookAt;			// lookat vector 
 
	// up, forward, right vectors 
	CVector up; 
	CVector forward; 
	CVector right; 
 
	// yaw and pitch angles 
	float yaw; 
	float pitch; 
 
	int screenWidth, screenHeight; 
	int centerX, centerY; 
 
	CCamera(); 
	CCamera(int width, int height) {} 
	CCamera(CVector *look); 
	CCamera(CVector *pos, CVector *look); 
	~CCamera(); 
 
	void LookAt(CObject *object); 
	void LookAtNow(CObject *object); 
	void MoveTo(CObject *object); 
	void MoveToNow(CObject *object); 
	void MoveToNow(scalar_t x, scalar_t y, scalar_t z); 
 
	// right rotation along y-axis (yaw) 
	void RotateYaw(scalar_t radians); 
	void RotatePitch(scalar_t radians); 
	void RotateRoll(scalar_t radians); 
 
	// do physics calculations 
	void Animate(scalar_t deltaTime); 
}; 
 
#endif