#pragma once

#include "共通\refCActivity.h"
#include "共通\refCCounter.h"
#include "Direct3D9\refCTexture.h"

namespace FDK
{
	// 粒子を360度にばらまく点フラッシュ。
	// 軽く下方向への重力がかかる。
	public ref class CMAct点フラッシュ・拡散粒子 : CActivity
	{
	public:
		void t2D発火( Point pt中央px );
		void t2D発火( Vector2 v2中央px );
		void t2D発火( int n中央Xpx, int n中央Ypx );
		void t3D発火( float f中央X, float f中央Y, float f中央Z );
		void t3D発火( Vector3 v3中央 );

		CMAct点フラッシュ・拡散粒子( int nフラッシュの最大同時発火数, int n1回の発火でばらまく粒子数 );

		virtual void On活性化() override;
		virtual void On非活性化() override;
		virtual int On進行() override;
		
		// 使用する描画範囲は tx粒子.list描画範囲[0] とする。このリストが空なら画像全体とする。
		void On描画( IntPtr hDevice, CTexture^ tx粒子 );

	protected:
		value class ST粒子
		{
		public:
			bool b使用中;
			Vector3 v3中央;
			float f加速度X;
			float f加速度Y;
			float f加速度の加速度X;
			float f加速度の加速度Y;
			float f重力加速度;
			float f半径;
			int n前回の進行カウント値;
			CCounter^ ct進行;
		};
		array<ST粒子>^ st粒子;
		int n粒子の最大数;
		int n1回の発火でばらまく粒子数;
		Random^ Random;
	};
}
