//-------------------------------------------------------------------------------------------------
// ファイル名 : Player.cpp
// コメント   : 自機情報
// Copyright  : T.Terasaki
// Version    : 3.00
//-------------------------------------------------------------------------------------------------
#include"CPlayer.h"

//自機の処理
CPlayer::CPlayer(){								//コンストラクタ

}


void CPlayer::Init(){							//初期化
	//座標の初期化
	m_WorldPos=D3DXVECTOR2(0,0);
	m_WorldPos=D3DXVECTOR2(0,0);
	//マトリックスの初期化
	D3DXMatrixIdentity(&m_WorldMatrix);
	D3DXMatrixIdentity(&m_MoveMatrix);
	D3DXMatrixIdentity(&m_RotMatrix);

	D3DXMatrixTranslation(&m_MoveMatrix, m_WorldPos.x, 0.0f, m_WorldPos.y);
	m_WorldMatrix = m_MoveMatrix;						//とりあえず配置(描画確認用)
	//メッシュの読み込み
	m_BodyMesh.Load(GetDevice(),"data\\Player.x");

	//キャラクター情報の読み込み(iniファイル)
	//m_Speed = IniFileRead("Player", "SPEED");
	m_Speed=0.5f;
	m_PowerLv=2;
	m_LastDir=2;	//LastDirの方向指定はKeyFlgのbit番号と一緒
}

InstructionStr CPlayer::ShotInstruction(){				//弾の生成『命令』を出すメソッド
	InstructionStr Temp;
	Temp.m_BulletLv = m_PowerLv;
	Temp.m_ShotPos = m_WorldPos;
	switch(m_LastDir){
		case 0:
			Temp.m_Direction = 0;
			break;
		case 1:
			Temp.m_Direction = PI/2;
			break;
		case 2:
			Temp.m_Direction = PI;
			break;
		case 3:
			Temp.m_Direction = -PI/2;
			break;
		case 4:
			Temp.m_Direction = PI/4;
			break;
		case 5:
			Temp.m_Direction = PI/4*3;
			break;
		case 6:
			Temp.m_Direction = -PI/4;
			break;
		case 7:
			Temp.m_Direction = -PI/4*3;
			break;
		default:
			break;
	}


	return Temp;
}

void CPlayer::Work(){								//座標等の計算の更新

	//自機の回転（見た目の方）
	static float VisualRot = 0;
	VisualRot += 0.1f;
	if(VisualRot >= (PI*2))VisualRot = 0;
	D3DXMatrixRotationZ(&m_RotMatrix, VisualRot);

	float Slow = 1;

	//移動時の座標更新
	if(BT(m_KeyFlg,6)){Slow = 0.5; m_KeyFlg ^= 0x40;}	//低速

	if(BT(m_KeyFlg, 0)){m_WorldPos.y += (m_Speed * Slow);  m_LastDir = 0;}	//↑移動（xorしているのはキーフラグをもとに戻すため）
	if(BT(m_KeyFlg, 1)){m_WorldPos.x += (m_Speed * Slow);  m_LastDir = 1;}	//→移動
	if(BT(m_KeyFlg, 2)){m_WorldPos.y -= (m_Speed * Slow);  m_LastDir = 2;}	//↓移動
	if(BT(m_KeyFlg, 3)){m_WorldPos.x -=(m_Speed * Slow);  m_LastDir = 3;}	//←移動
	if(BT(m_KeyFlg, 0) && BT(m_KeyFlg, 1))m_LastDir = 4;	//→↑
	if(BT(m_KeyFlg, 1) && BT(m_KeyFlg, 2))m_LastDir = 5;	//→↓
	if(BT(m_KeyFlg,3) && BT(m_KeyFlg, 0))m_LastDir = 6;	//←↑
	if(BT(m_KeyFlg,3) && BT(m_KeyFlg, 2))m_LastDir = 7;	//←↓
	D3DXMatrixTranslation(&m_MoveMatrix, m_WorldPos.x, 0.0f, m_WorldPos.y);
	m_WorldMatrix = m_RotMatrix * m_MoveMatrix;
	m_KeyFlg &= 0xf0;

}

void CPlayer::Update(){									//その他更新

}

void CPlayer::Draw(){									//描画

	m_BodyMesh.Draw(GetDevice(), m_WorldMatrix);

}

D3DXVECTOR2 CPlayer::GetScreenPositon(){				//スクリーン座標取得
	return m_ScreenPos;
}

D3DXVECTOR2 CPlayer::GetWorldPosition(){				//ワールド座標取得
	return m_WorldPos;
}

CPlayer::~CPlayer(){		//デストラクタ

}


//自機の弾に関する処理---------------------------------------------------------------------------
void CPlayerBullet::Init(){								//完全な初期化

	D3DXMATRIX RotMx, ScaMx;

	D3DXMatrixIdentity(&RotMx);
	D3DXMatrixIdentity(&ScaMx);
	D3DXMatrixIdentity(&m_LocalMatrix);
	D3DXMatrixIdentity(&m_MoveMatrix);


	D3DXMatrixScaling(&ScaMx, 0.9f, 0.9f, 0.9f);
	D3DXMatrixRotationX(&RotMx, PI/2);
	m_LocalMatrix = RotMx * ScaMx;
	m_Bulletlag = 0;
	//弾の情報を初期化
	for(int i = 0;i < 30;i++){
		m_Lv1BulletData[i].m_Rot = 0;
		m_Lv1BulletData[i].m_DrawFlg = false;
		m_Lv1BulletData[i].m_NowFrame = 0;
		m_Lv1BulletData[i].m_WorldPos = D3DXVECTOR2(0, 0);
		m_Lv1BulletData[i].m_WorldPos = D3DXVECTOR2(0, 0);
		D3DXMatrixIdentity(&m_Lv1BulletData[i].m_WorldMatrix);
	}
	for(int i = 0;i < 40;i++){
		m_Lv2BulletData[i].m_Rot = 0;
		m_Lv2BulletData[i].m_DrawFlg = false;
		m_Lv2BulletData[i].m_NowFrame = 0;
		m_Lv2BulletData[i].m_WorldPos = D3DXVECTOR2(0, 0);
		m_Lv2BulletData[i].m_WorldPos = D3DXVECTOR2(0, 0);
		D3DXMatrixIdentity(&m_Lv2BulletData[i].m_WorldMatrix);
	}
	for(int i = 0;i < 40;i++){
		m_Lv3BulletData[i].m_Rot = 0;
		m_Lv3BulletData[i].m_DrawFlg = false;
		m_Lv3BulletData[i].m_NowFrame = 0;
		m_Lv3BulletData[i].m_WorldPos = D3DXVECTOR2(0, 0);
		m_Lv3BulletData[i].m_WorldPos = D3DXVECTOR2(0, 0);
		D3DXMatrixIdentity(&m_Lv3BulletData[i].m_WorldMatrix);
	}
}
																		//弾の初期化（発射瞬間時）
void CPlayerBullet::BulletInit(const InstructionStr& InitData){			//引数（プレイヤーから吐き出された初期化用の専用弾情報）

	
	static int Lv1BulletNo = 0;
	static int Lv2BulletNo = 0;
	static int Lv3BulletNo = 0;


	D3DXVECTOR2 workVecA,workVecB;				//各処理用ベクトル
	float workRot = 0;

	workRot = - InitData.m_Direction + PI ;		//回転量を方向に変換
	if(m_Bulletlag > 0.5f){						//連続発射間隔
		switch(InitData.m_BulletLv){
				case 3:
					
				case 2:				//Lv３バレット初期化
//ここから直進弾(これのみ方向転換あり)-----------
					if(Lv3BulletNo+4 >= 40){Lv3BulletNo = 0;}
					m_Lv3BulletData[Lv3BulletNo].m_DrawFlg = true;
					m_Lv3BulletData[Lv3BulletNo].m_NowFrame = 0;
					//移動方向に合わせて回転した発射位置
					workVecA = D3DXVECTOR2(1.5f, 1);
					workVecB.x = workVecA.x * cos( workRot) - workVecA.y * sin(workRot);
					workVecB.y = workVecA.x * sin( workRot) + workVecA.y * cos(workRot);
					m_Lv3BulletData[Lv3BulletNo].m_WorldPos = InitData.m_ShotPos + workVecB;

					//回転に合わせた移動方向を生成
					workVecA.x = cos(PI/180 * 90); workVecA.y = sin(PI / 180.0f * (-10.0f + 90.0f)); 
					workVecB.x = workVecA.x * cos( workRot) - workVecA.y * sin(workRot);
					workVecB.y = workVecA.x * sin( workRot) + workVecA.y * cos(workRot);
					m_Lv3BulletData[Lv3BulletNo].m_Move = workVecB;
					m_Lv3BulletData[Lv3BulletNo].m_Rot = InitData.m_Direction;
					m_Lv3BulletData[Lv3BulletNo].m_WorldMatrix = m_LocalMatrix;


					m_Lv3BulletData[Lv3BulletNo+1].m_DrawFlg = true;
					m_Lv3BulletData[Lv3BulletNo+1].m_NowFrame = 0;
					//移動方向に合わせて回転した発射位置
					workVecA = D3DXVECTOR2(-1.5f, 1);
					workVecB.x = workVecA.x * cos(workRot) - workVecA.y * sin(workRot);
					workVecB.y = workVecA.x * sin(workRot) + workVecA.y * cos(workRot);
					m_Lv3BulletData[Lv3BulletNo+1].m_WorldPos = InitData.m_ShotPos + workVecB;

					//回転に合わせた移動方向を生成
					workVecA.x = cos(PI / 180 * 90); workVecA.y = sin(PI/180.0f*(-10.0f + 90.0f)); 
					workVecB.x = workVecA.x * cos(workRot) - workVecA.y * sin(workRot);
					workVecB.y = workVecA.x * sin(workRot) + workVecA.y * cos(workRot);
					m_Lv3BulletData[Lv3BulletNo+1].m_Move = workVecB;
					m_Lv3BulletData[Lv3BulletNo+1].m_Rot = InitData.m_Direction;
					m_Lv3BulletData[Lv3BulletNo+1].m_WorldMatrix = m_LocalMatrix;
//ここまで---------------
//以下角度付き-----------
					m_Lv3BulletData[Lv3BulletNo+2].m_DrawFlg = true;
					m_Lv3BulletData[Lv3BulletNo+2].m_NowFrame = 0;
					//移動方向に合わせて回転した発射位置
					workVecA = D3DXVECTOR2(-5, -4);
					workVecB.x = workVecA.x * cos(workRot) - workVecA.y * sin(workRot);
					workVecB.y = workVecA.x * sin(workRot) + workVecA.y * cos(workRot);
					m_Lv3BulletData[Lv3BulletNo+2].m_WorldPos = InitData.m_ShotPos + workVecB;

					//回転に合わせた移動方向を生成
					workVecA.x = cos(PI / 180 * (10 + 90)); workVecA.y = sin(PI / 180.0f * (-10.0f + 90.0f)); 
					workVecB.x = workVecA.x * cos(workRot) - workVecA.y * sin(workRot);
					workVecB.y = workVecA.x * sin(workRot) + workVecA.y * cos(workRot);
					m_Lv3BulletData[Lv3BulletNo+2].m_Move = workVecB;
					m_Lv3BulletData[Lv3BulletNo+2].m_Rot = InitData.m_Direction;
					m_Lv3BulletData[Lv3BulletNo+2].m_WorldMatrix = m_LocalMatrix;

//-----------------------
					m_Lv3BulletData[Lv3BulletNo+3].m_DrawFlg = true;
					m_Lv3BulletData[Lv3BulletNo+3].m_NowFrame = 0;
					//移動方向に合わせて回転した発射位置
					workVecA = D3DXVECTOR2(5, -4);
					workVecB.x = workVecA.x * cos(workRot) - workVecA.y * sin(workRot);
					workVecB.y = workVecA.x * sin(workRot) + workVecA.y * cos(workRot);
					m_Lv3BulletData[Lv3BulletNo+3].m_WorldPos = InitData.m_ShotPos + workVecB;

					//回転に合わせた移動方向を生成
					workVecA.x = cos(PI / 180 * (-10 + 90)); workVecA.y = sin(PI / 180.0f * (-10.0f + 90.0f)); 
					workVecB.x = workVecA.x * cos( workRot) - workVecA.y * sin(workRot);
					workVecB.y = workVecA.x * sin( workRot) + workVecA.y * cos(workRot);
					m_Lv3BulletData[Lv3BulletNo+3].m_Move = workVecB;
					m_Lv3BulletData[Lv3BulletNo+3].m_Rot = InitData.m_Direction;
					m_Lv3BulletData[Lv3BulletNo+3].m_WorldMatrix = m_LocalMatrix;
					Lv3BulletNo += 4;
//ここまで----------------
				case 1:				//Lv2バレット初期化
//ここから直進弾----------
					if(Lv2BulletNo+4 >= 40){Lv2BulletNo = 0;}
					m_Lv2BulletData[Lv2BulletNo].m_DrawFlg = true;
					m_Lv2BulletData[Lv2BulletNo].m_NowFrame = 0;
					m_Lv2BulletData[Lv2BulletNo].m_WorldPos = InitData.m_ShotPos + D3DXVECTOR2(1, 0);
					m_Lv2BulletData[Lv2BulletNo].m_Rot = InitData.m_Direction;
					m_Lv2BulletData[Lv2BulletNo].m_WorldMatrix = m_LocalMatrix;

					m_Lv2BulletData[Lv2BulletNo+1].m_DrawFlg = true;
					m_Lv2BulletData[Lv2BulletNo+1].m_NowFrame = 0;
					m_Lv2BulletData[Lv2BulletNo+1].m_WorldPos = InitData.m_ShotPos + D3DXVECTOR2(-1, 0);
					m_Lv2BulletData[Lv2BulletNo+1].m_Rot = InitData.m_Direction;
					m_Lv2BulletData[Lv2BulletNo+1].m_WorldMatrix = m_LocalMatrix;
//ここまで----------------
//以下角度付き------------
					m_Lv2BulletData[Lv2BulletNo+2].m_DrawFlg = true;
					m_Lv2BulletData[Lv2BulletNo+2].m_NowFrame = 0;
					//移動方向に合わせて回転した発射位置
					workVecA = D3DXVECTOR2(-4,-4);
					workVecB.x = workVecA.x * cos(workRot) - workVecA.y * sin(workRot);
					workVecB.y = workVecA.x * sin(workRot) + workVecA.y * cos(workRot);
					m_Lv2BulletData[Lv2BulletNo+2].m_WorldPos = InitData.m_ShotPos + workVecB;

					//回転に合わせた移動方向を生成
					workVecA.x = cos(PI / 180 * (10 + 90)); workVecA.y = sin(PI / 180.0f * (-10.0f + 90.0f)); 
					workVecB.x = workVecA.x * cos(workRot) - workVecA.y * sin(workRot);
					workVecB.y = workVecA.x * sin(workRot) + workVecA.y * cos(workRot);
					m_Lv2BulletData[Lv2BulletNo+2].m_Move = workVecB;
					m_Lv2BulletData[Lv2BulletNo+2].m_Rot = InitData.m_Direction;
					m_Lv2BulletData[Lv2BulletNo+2].m_WorldMatrix = m_LocalMatrix;


					m_Lv2BulletData[Lv2BulletNo+3].m_DrawFlg = true;
					m_Lv2BulletData[Lv2BulletNo+3].m_NowFrame = 0;
					//移動方向に合わせて回転した発射位置
					workVecA = D3DXVECTOR2(4, -4);
					workVecB.x = workVecA.x * cos(workRot) - workVecA.y * sin(workRot);
					workVecB.y = workVecA.x * sin(workRot) + workVecA.y * cos(workRot);
					m_Lv2BulletData[Lv2BulletNo+3].m_WorldPos = InitData.m_ShotPos + workVecB;

					//回転に合わせた移動方向を生成
					workVecA.x = cos(PI / 180 * (-10 + 90)); workVecA.y = sin(PI / 180.0f * (-10.0f + 90.0f) ); 
					workVecB.x = workVecA.x * cos(workRot) - workVecA.y* sin(workRot);
					workVecB.y = workVecA.x * sin(workRot) + workVecA.y* cos(workRot);
					m_Lv2BulletData[Lv2BulletNo+3].m_Move = workVecB;
					m_Lv2BulletData[Lv2BulletNo+3].m_Rot = InitData.m_Direction;
					m_Lv2BulletData[Lv2BulletNo+3].m_WorldMatrix = m_LocalMatrix;

					
					Lv2BulletNo += 4;
//ここまで-------------
				case 0:				//Lv1（初期）バレットの初期化
					if(Lv1BulletNo+3 >= 30){Lv1BulletNo=0;}
					m_Lv1BulletData[Lv1BulletNo].m_DrawFlg=true;
					m_Lv1BulletData[Lv1BulletNo].m_NowFrame=0;
					m_Lv1BulletData[Lv1BulletNo].m_WorldPos = InitData.m_ShotPos + D3DXVECTOR2(0,3);
					m_Lv1BulletData[Lv1BulletNo].m_Rot = InitData.m_Direction;
					m_Lv1BulletData[Lv1BulletNo].m_WorldMatrix = m_LocalMatrix;

//------1--------------
					//workRot = - InitData.m_Direction + PI ;//回転量を方向に変換

					m_Lv1BulletData[Lv1BulletNo+1].m_DrawFlg=true;
					m_Lv1BulletData[Lv1BulletNo+1].m_NowFrame=0;


					//移動方向に合わせて回転した発射位置
					workVecA = D3DXVECTOR2(2,-2);
					workVecB.x = workVecA.x * cos( workRot) - workVecA.y* sin(workRot);
					workVecB.y = workVecA.x * sin( workRot) + workVecA.y* cos(workRot);
					m_Lv1BulletData[Lv1BulletNo+1].m_WorldPos = InitData.m_ShotPos + workVecB;

					//回転に合わせた移動方向を生成
					workVecA.x = cos(PI/180 * (-10+90)); workVecA.y = sin(PI/180.0f*(-10.0f+90.0f) ); 
					workVecB.x = workVecA.x * cos( workRot) - workVecA.y* sin(workRot);
					workVecB.y = workVecA.x * sin( workRot) + workVecA.y* cos(workRot);
					m_Lv1BulletData[Lv1BulletNo+1].m_Move = workVecB;
					m_Lv1BulletData[Lv1BulletNo+1].m_Rot = InitData.m_Direction;
					m_Lv1BulletData[Lv1BulletNo+1].m_WorldMatrix = m_LocalMatrix;

//------2--------------
					m_Lv1BulletData[Lv1BulletNo+2].m_DrawFlg=true;
					m_Lv1BulletData[Lv1BulletNo+2].m_NowFrame=0;


					//移動方向に合わせて回転した発射位置
					workVecA = D3DXVECTOR2(-2,-2)  ;
					workVecB.x = workVecA.x * cos(workRot) - workVecA.y* sin(workRot);
					workVecB.y = workVecA.x * sin(workRot) + workVecA.y* cos(workRot);
					m_Lv1BulletData[Lv1BulletNo+2].m_WorldPos = InitData.m_ShotPos + workVecB;

					//回転に合わせた移動方向を生成
					workVecA.x = cos(PI/180 * (+10+90)); workVecA.y = sin(PI/180.0f*(10.0f+90.0f) ); 
					workVecB.x = workVecA.x * cos(workRot) - workVecA.y* sin(workRot);
					workVecB.y = workVecA.x * sin(workRot) + workVecA.y* cos(workRot);
					m_Lv1BulletData[Lv1BulletNo+2].m_Move = workVecB;
					m_Lv1BulletData[Lv1BulletNo+2].m_Rot = InitData.m_Direction;
					m_Lv1BulletData[Lv1BulletNo+2].m_WorldMatrix = m_LocalMatrix;


					Lv1BulletNo+=3;
					break;
//ここまで-------------
		}
		m_Bulletlag = 0;
	}
}

void CPlayerBullet::Update(){								//更新
	if(m_Bulletlag<1.5)m_Bulletlag += 0.1f;					//連続発射間隔用変数の増加
	//Lv1の弾の挙動計算
	for(int i = 0;i < 30;i++){
		if(m_Lv1BulletData[i].m_DrawFlg){
			if(m_Lv1BulletData[i].m_NowFrame > 12){
				m_Lv1BulletData[i].m_DrawFlg = false;
				m_Lv1BulletData[i].m_NowFrame = 0;
			}
			else{
				D3DXVECTOR2 BoxMov = m_Lv1BulletData[i].m_WorldPos;
				switch(i%3){
					case 0:
						m_Lv1BulletData[i].m_WorldPos.y += P_BULLET_SPEED;
						D3DXMatrixTranslation(&m_MoveMatrix, m_Lv1BulletData[i].m_WorldPos.x, 0, m_Lv1BulletData[i].m_WorldPos.y);
						m_Lv1BulletData[i].m_WorldMatrix = m_LocalMatrix * m_MoveMatrix;
						break;
					case 1:
					case 2:
						m_Lv1BulletData[i].m_WorldPos += m_Lv1BulletData[i].m_Move *  P_BULLET_SPEED;

						D3DXMatrixTranslation(&m_MoveMatrix, m_Lv1BulletData[i].m_WorldPos.x, 0, m_Lv1BulletData[i].m_WorldPos.y);
						m_Lv1BulletData[i].m_WorldMatrix = m_LocalMatrix * m_MoveMatrix;
						break;
				}
			}
			m_Lv1BulletData[i].m_NowFrame += 0.1f;
		}
	}

	//Lv2の弾の挙動計算
	for(int i = 0;i< 40;i++){
		if(m_Lv2BulletData[i].m_DrawFlg){
			if(m_Lv2BulletData[i].m_NowFrame > 12){
				m_Lv2BulletData[i].m_DrawFlg = false;
				m_Lv2BulletData[i].m_NowFrame = 0;
			}
			else{
				switch(i % 4){
					case 0:
						m_Lv2BulletData[i].m_WorldPos.y += P_BULLET_SPEED;
						D3DXMatrixTranslation(&m_MoveMatrix, m_Lv2BulletData[i].m_WorldPos.x, 0, m_Lv2BulletData[i].m_WorldPos.y);
						m_Lv2BulletData[i].m_WorldMatrix = m_LocalMatrix * m_MoveMatrix;
						break;
					case 1:
						m_Lv2BulletData[i].m_WorldPos.y += P_BULLET_SPEED;
						D3DXMatrixTranslation(&m_MoveMatrix,m_Lv2BulletData[i].m_WorldPos.x,0,m_Lv2BulletData[i].m_WorldPos.y);
						m_Lv2BulletData[i].m_WorldMatrix =  m_LocalMatrix * m_MoveMatrix;
						break;

					case 2:
					case 3:
						m_Lv2BulletData[i].m_WorldPos += m_Lv2BulletData[i].m_Move *  P_BULLET_SPEED;

						D3DXMatrixTranslation(&m_MoveMatrix, m_Lv2BulletData[i].m_WorldPos.x, 0, m_Lv2BulletData[i].m_WorldPos.y);
						m_Lv2BulletData[i].m_WorldMatrix = m_LocalMatrix * m_MoveMatrix;
						break;
				}
			}
			m_Lv2BulletData[i].m_NowFrame += 0.1f;
		}
	}

	//Lv3の弾の挙動計算
	for(int i = 0;i < 40;i++){
		if(m_Lv3BulletData[i].m_DrawFlg){
			if(m_Lv3BulletData[i].m_NowFrame > 12){
				m_Lv3BulletData[i].m_DrawFlg = false;
				m_Lv3BulletData[i].m_NowFrame = 0;
			}
			else{
				m_Lv3BulletData[i].m_WorldPos += m_Lv3BulletData[i].m_Move *  P_BULLET_SPEED;
				D3DXMatrixTranslation(&m_MoveMatrix, m_Lv3BulletData[i].m_WorldPos.x, 0, m_Lv3BulletData[i].m_WorldPos.y);
				m_Lv3BulletData[i].m_WorldMatrix = m_LocalMatrix * m_MoveMatrix;
			}
			m_Lv3BulletData[i].m_NowFrame += 0.1f;
		}
	}



}

void CPlayerBullet::Draw(){							//描画
	for(int i = 0;i < 30;i++){
		if(m_Lv1BulletData[i].m_DrawFlg){//描画フラグがオンなら
			m_Lv1BulletData[i].m_LVertex.Draw(GetDevice(), m_Lv1BulletData[i].m_WorldMatrix);
		}
	}
	for(int i = 0;i < 40;i++){
		if(m_Lv2BulletData[i].m_DrawFlg){//描画フラグがオンなら
			m_Lv2BulletData[i].m_LVertex.Draw(GetDevice(), m_Lv2BulletData[i].m_WorldMatrix);
		}
	}
	for(int i = 0;i < 40;i++){
		if(m_Lv3BulletData[i].m_DrawFlg){//描画フラグがオンなら
			m_Lv3BulletData[i].m_LVertex.Draw(GetDevice(), m_Lv3BulletData[i].m_WorldMatrix);
		}
	}

}