#pragma once

//! @file Mix/Scene/IParticleGenerator.h
//! @brief パーティクルジェネレーターインターフェースインクルードファイル

#include "Mix/Reference.h"

namespace Mix{ namespace Scene{

	//! @class IParticleGenerator
	//! @brief パーティクルジェネレータータインターフェース
	class IParticleGenerator : public Mix::Reference
	{
	protected:
		//! @brief デストラクタ
		virtual ~IParticleGenerator( void ){}

	public:
		//! @brief データを取得します
		//! @param[in] dataSize データのサイズ
		//! @param[out] pData 取得したデータを渡すポインタ
		//! @note
		//! このメソッドは Mix::Scene::IParticleProcessor::Add で処理するデータを取得する際に使用します。<br>
		//! プロセッサー( Mix::Scene::IParticleProcessor )は、このデータを使用してフェイス( Mix::Scene::IParticleProcessor::FACE )を生成するかたちになります。
		virtual void Internal_GetData( UInt32 dataSize, void* pData ) = 0;

#ifdef _DEBUG
		//! @brief デバッグ描画をします
		//! @param[in] worldMat ワールド行列を表す Mix::Matrix4x4 クラス
		//! @param[in] pPerspectiveRenderer 描画に使用するパースペクティブレンダラーを表す Mix::Graphics::Utility::IPerspectiveRenderer インターフェースのポインタ
		virtual void Debug_Draw( const Mix::Matrix4x4& worldMat, Mix::Graphics::Utility::IPerspectiveRenderer* pPerspectiveRenderer ) = 0;
#endif //_DEBUG
	};

}}
