#pragma once

//! @file Mix/Scene/IEffectPackage.h
//! @brief エフェクトパッケージインターフェースインクルードファイル

#include "Mix/Reference.h"
#include "Mix/Scene/IRenderer.h"
#include "Mix/Scene/IMaterial.h"

namespace Mix{ namespace Scene{

	//! @class IEffectPackage
	//! @brief エフェクトパッケージインターフェース
	class IEffectPackage : public Mix::Reference
	{
	protected:
		//! @brief デストラクタ
		virtual ~IEffectPackage( void ) {}

	public:
		//! @brief ディレクトリパスを取得します
		//! @return ディレクトリパスを返します
		virtual const wchar_t* GetDirectoryPath( void ) const = 0;
		//! @brief 名前を取得します
		//! @return 名前を返します
		virtual const wchar_t* GetName( void ) const = 0;
		//! @brief ファイルパスを取得します
		//! @return ファイルパスを返します
		virtual const wchar_t* GetFilePath( void ) const = 0;

		//! @brief レンダラータイプを取得します
		//! @return タイプを表す Mix::Scene::IRenderer::TYPE 列挙定数を返します
		virtual Mix::Scene::IRenderer::TYPE GetRendererType( void ) const = 0;
		//! @brief マテリアルタイプを取得します
		//! @return マテリアルタイプを表す Mix::Scene::IMaterial::TYPE 列挙定数を返します
		virtual Mix::Scene::IMaterial::TYPE GetMaterialType( void ) const = 0;
	};

}}