#pragma once
#include "Vertex.h"
#include "Matrix.h"
#include "SharedTools.h"

using namespace SharedTools;

class Camera
{
public:
	Camera() : _xRot(0), _yRot(0), _zRot(0) {};
	Camera(float xRot, float yRot, float zRot, const Vertex& pos);
	Camera(const Camera& other);

	~Camera();

	Matrix UpdateCameraPosition(const Vertex& newPos);
	Matrix RotateCamera(float xRot, float yRot, float zRot);

	void SetXRot(const float value);
	float GetXRot() const;
	void SetYRot(const float value);
	float GetYRot() const;
	void SetZRot(const float value);
	float GetZRot() const;

	Matrix GetCurrentCameraTransformMatrix();
	Vertex GetCameraPosition() const;

	Camera& operator= (const Camera& rhs);
		
private:
	float _xRot;
	float _yRot;
	float _zRot;		
	Vertex _cameraPosition;

	void Copy(const Camera& other);
};

