///////////////////////////////////////////////////////////////////////////////
//  CCamera.h

#pragma once

#include "S3D.h"
#include "SMatrix.h"
#include "SQuaternion.h"

namespace math3d {

class CCamera {
	S3D				m_Pos;
	SQuaternion		m_Quaternion;

public:
	CCamera(void);
	virtual ~CCamera();

	void	SetPos(float fX, float fY, float fZ);
	void	SetPos(const S3D& Pos);

	// 回転
	void	ResetRotate();

	void	AddAngle(float fAngle);
	void	AddAngleP(float fAngleP);

	void	SetRotate(const SQuaternion& Q);
	const SQuaternion&	GetQuaternion() const;

	// 移動
	void	AddForward(float fMove);
	void	AddY(float fY);

	// 取得
	float	GetX() const;
	float	GetY() const;
	float	GetZ() const;

	const S3D&	GetPos() const;

	SMatrix	GetMatrix(void) const;
	SMatrix	GetInvMatrix(void) const;
	SMatrix	GetRotMatrix(void) const;
	SMatrix	GetRotInvMatrix(void) const;

	S3D		GetViewVec(void) const;
	S3D		GetViewUpVec(void) const;
	S3D		GetViewRightVec(void) const;
};

}

