#pragma once

//! @file Mix/Scene/IUniversalCamera.h
//! @brief ユニバーサルカメラインターフェースインクルードファイル

#include "Mix/Scene/ICamera.h"

namespace Mix{ namespace Scene{

	//! @class IUniversalCamera
	//! @brief ユニバーサルカメラインターフェース
	class IUniversalCamera : public Mix::Scene::ICamera
	{
	protected:
		//! @brief デストラクタ
		virtual ~IUniversalCamera( void ) {}

	public:
		//! @brief ワールド空間における上方向を取得します
		//! @return ワールド空間における上方向を表す Mix::Vector3 クラスを返します
		virtual const Mix::Vector3& GetUp( void ) const = 0;

		//! @brief ビューを設定します
		//! @param[in] eye 視点を表す Mix::Vector3 クラス
		//! @param[in] at 注視点を表す Mix::Vector3 クラス
		//! @param[in] up ワールド座標における上方向のベクトル( 通常は x=0 y=1 z=0 )を表す Mix::Vector3 クラス
		virtual void SetView( const Mix::Vector3& eye, const Mix::Vector3& at, const Mix::Vector3& up ) = 0;
	};

}}
