/***************************************************************/
//
//
//		DirectX	[ light.h ]
//
//											Author	kazuki tanaka
//											Date	2017 1/25
/*---------------------------------------------------------------
■Update : 2017/1/25
			light.hの作成


■Update : 2016/1/25



/*-------------------------------------------------------------*/
#ifndef _LIGHT_H_

#define _LIGHT_H_


#include "rendererdx9.h"

/*---------------------------------------------------------------
	マクロ定義
---------------------------------------------------------------*/

#define LIGHT_MAX     (4)
#define MAX_LIGHTNAME (16)

/*---------------------------------------------------------------
	class
---------------------------------------------------------------*/

// 光源を設定するクラス
class CLight
{
public:
		
	CLight( );												// コンストラクタ
	~CLight( );												// デストラクタ
	
	static CLight* Create( const char* LIGHT_NAME );		// クラス作成


	static CLight* Create( 									// クラス作成
		const char*         LIGHT_NAME,
		const D3DLIGHTTYPE  lightType,
	    const D3DCOLORVALUE Diffuse,
	    const D3DCOLORVALUE Specular,
	    const D3DCOLORVALUE Ambient,
		const D3DVECTOR     Position,
	    const D3DVECTOR     Direction,
	    const float         Range,
	    const float         Falloff,
	    const float         Attenuation0,
	    const float         Attenuation1,
	    const float         Attenuation2,
	    const float         Theta,
	    const float         Phi );
	
	static void ReleaseAll( void );							// メモリ解放
	
	
	static inline void LightOn( 
		const D3DRENDERSTATETYPE type );					// ライティング設定ON
	static inline void LightOff( 
		const D3DRENDERSTATETYPE type );					// ライティング設定OFF
	
	
	static CLight* GetLight( const char* LIGHT_NAME );		// Lightのポインタ取得
	static CLight* GetLight( const int index );				// Lightのポインタ取得

	void SetLight(											// Light設定
		const D3DLIGHTTYPE  lightType,
	    const D3DCOLORVALUE Diffuse,
	    const D3DCOLORVALUE Specular,
	    const D3DCOLORVALUE Ambient,
		const D3DVECTOR     Position,
	    const D3DVECTOR     Direction,
	    const float         Range,
	    const float         Falloff,
	    const float         Attenuation0,
	    const float         Attenuation1,
	    const float         Attenuation2,
	    const float         Theta,
	    const float         Phi );
	/*
	void SetPosition( const LPD3DXVECTOR3 pos );			// ポジション設定
	*/
	
	
private:
	
	char      name[MAX_LIGHTNAME];
	int       lightIndex;

	static CLight* light[ LIGHT_MAX ];
	static LPDIRECT3DDEVICE9 pDevice;
	
};



#endif	//	_LIGHT_H_


