/***************************************************************/
//
//
//		DirectX	[ particle.h ]
//
//											Author	kazuki tanaka
//											Date	2016 11/28
/*---------------------------------------------------------------
■Update : 2016/11/28
			particle.hの作成
			PARTICLEの初期化処理の追加
			PARTICLEの終了処理の追加
			PARTICLEの更新処理の追加
			PARTICLEの描画処理の追加

■Update : 2016/11/28



/*-------------------------------------------------------------*/
#ifndef _PARTICLE_H_

#define _PARTICLE_H_

/*---------------------------------------------------------------
	構造体定義
---------------------------------------------------------------*/

typedef struct{

	D3DXVECTOR3  scale;						// 粒子スケール
	D3DXVECTOR3  rotation;					// 粒子回転ベクトル
	
	D3DXVECTOR3  center;					// 粒子中心座標
	D3DXVECTOR3  speed;						// 粒子速度
	D3DXVECTOR3  ambientPower;				// 環境による風の影響
	D3DXVECTOR3  velocity;					// 粒子加速度
	D3DXCOLOR    color;						// 粒子色
	D3DXCOLOR    amountOfChangeInColor;		// 粒子色の変化量
	float        radius;					// 粒子半径
	float        amountOfChangeInRadius;	// 粒子半径の変化量
	float        theta;						// 粒子xy平面放出角度
	float        phy;						// 粒子xz平面放出角度
	float        radiusValue;				// 粒子の半径変化量
	int          life;						// 粒子の寿命
	int          age;						// 粒子の存在したフレーム数

	int          texIndex;					// 使用するテクスチャのインデックス番号

	static int   PARTICLE_MAX;				// 粒子最大数
	static int   LOAD_TEXTURE;				// 粒子テクスチャのロード数

}PARTICLE;

/*---------------------------------------------------------------
	サブルーチン
---------------------------------------------------------------*/

void InitParticle( void );					// PARTICLEの初期化
void UninitParticle( void );				// PARTICLEの終了処理
void UpdateParticle( void );				// PARTICLEの更新処理
void DrawParticle( void );					// PARTICLEの描画処理

char** GetTextureParticle( void );
char*  GetTextureParticleTestAlpha( void );

void SetAddCalcRender( const bool flag );
void SetSubCalcRender( const bool flag );
void TextureLoad( const LPTSTR TEXTURE_FILE_NAME );

void SetParticle( 
	const LPD3DXVECTOR3 center,
	const LPD3DXVECTOR3 velocity,
	const LPD3DXCOLOR color,
	const float radius,
	const unsigned int life );

void SetParticleEx( 
	const LPD3DXVECTOR3 center,
	const LPD3DXVECTOR3 speed,
	const LPD3DXVECTOR3 velocity,
	const LPD3DXCOLOR color,
	const float radius,
	const int theta,
	const int theta_offset,
	const int phy,
	const int phy_offset,
	const unsigned int life,
	const int texIndex );

void EmitExplosion( 
	D3DXVECTOR3 center,
	const float radius,
	D3DXVECTOR3 speed,
	const D3DXVECTOR3 velocity,
	const D3DXCOLOR color,
	const D3DXCOLOR colorValue,
	const int life,
	const int scale );



#endif	//	_PARTICLE_H_


