rts_old_Camera.h 1.84 KB
#include "rtsLinearAlgebra.h"

#ifndef _RTSMATH_H
#define _RTSMATH_H

#define	CAMERA_UP		-1
#define CAMERA_DOWN		 1
#define CAMERA_LEFT		-1
#define CAMERA_RIGHT	 1

struct rtsCameraState
{
	point3D<float> position;
	point3D<float> lookat;
	vector3D<float> up;
	float pers_view_angle;
	float ortho_width;
	float ortho_height;
	float near_plane;
	float far_plane;
};

class rtsCamera
{
	//members
	point3D<float> position;
	vector3D<float> view_vector;
	vector3D<float> up_vector;
	point3D<float> lookat_point;
	float pers_view_angle;
	float ortho_width;
	float ortho_height;
	float near_plane;
	float far_plane;

public:


	//constructors
	rtsCamera();
	~rtsCamera(){};
	
	//methods
	void LookAt(point3D<float> pos, point3D<float> lookat, vector3D<float> up);
	/*
	void RotateUpDown(double degrees);		
	void RotateLeftRight(double degrees);	
	void Pan(double x, double y);
	void Yaw(double degrees);
	void Pitch(double degrees);
	void Forward(double distance);
	void ScaleForward(double factor, double min = 0, double max = 999999);
	void DollyLeftRight(double distance);
	void DollyUpDown(double distance);
	void Zoom(double angle);
	void LookAt(point3D<float> point);
	void Position(point3D<float> point);
	void Up(vector3D<float> up);
	void DollyPosition(point3D<float> point);		//moves the camera but keeps the current orientation
	*/

	//get methods
	rtsCameraState getState();
	vector3D<float> getView(){return view_vector;}
	vector3D<float> getUp(){return up_vector;}
	point3D<float> getPosition(){return position;}
	point3D<float> getLookAt(){return lookat_point;}
	double getViewAngle(){return pers_view_angle;}
	double getNearPlane(){return near_plane;}
	double getFarPlane(){return far_plane;}
	double getOrthoWidth(){return ortho_width;}
	double getOrthoHeight(){return ortho_height;}

	
};

#endif