//=========================================================================
//	フィールドクラスヘッダー[ field.h ]
//	作成者：小暮大樹	
//	作成日：2017/04/28
//=========================================================================
#pragma once
//=========================================================================
//	インクルードファイル
//=========================================================================
#include	"scene3D.h"	

//=========================================================================
//	フィールドクラスヘッダー
//=========================================================================
//=========================================================================
//	CScene3Dクラス
//=========================================================================
class	KField
{
public:
	KField(){};
	~KField(){};			// デストラクタ
	void Init( void );		// 初期化処理
	void Uninit( void );	// 終了処理
	void Update( void );	// 更新処理
	void Draw( void );		// 描画処理

	//メッシュフィールドとの当たり判定を求めて、高さを返す
	float	Collision(	const D3DXVECTOR3& pos );

	//設定関数
	void	SetSheet		( const	float yoko , const float tate )	{ m_Sheet.x = yoko; m_Sheet.y = 0; m_Sheet.z = tate; };				//縦横枚数の設定
	void	SetNumPolygon	( const unsigned int& polygonNum )		{ m_nPolygonNum = polygonNum; };	//
	void	SetStartPos		( const D3DXVECTOR3& startPos )			{ m_StartPos = startPos; };
	void	SetNumVertex	( const unsigned int& numVertex  )		{ m_nNumVertex = numVertex; };
	void	SetNumIndex		( const	unsigned int& numIndex )		{ m_nNumIndex = numIndex; };

	//取得関数
	const	D3DXVECTOR3&	GetSheet( void )		const { return m_Sheet; };
	const	unsigned int&	GetNumPolygon( void )	const { return m_nPolygonNum; };
	const	D3DXVECTOR3&	GetStartPos( void )		const { return m_StartPos; };
	const	unsigned int&	GetNumVertex( void )	const { return m_nNumVertex; };
	const	unsigned int&	GetNumIndex( void )		const { return m_nNumIndex; };

	//fieldで完結させるためにコピペしてきたやつ
			//取得関数
	const	D3DXVECTOR3&	GetPosition	( void ) const { return m_Pos; };	//位置の取得
	const	D3DXVECTOR3&	GetSize		( void ) const { return m_Size; };		//サイズの取得
	const	float&			GetLength	( void ) const { return m_fLength; };
	const	float&			GetAngle	( void ) const { return m_fAngle; };

	const	LPDIRECT3DTEXTURE9		GetTexture( void ) const { return m_pTexture; };	//テクスチャの取得

	//譲渡関数
	void	SetPosition( const D3DXVECTOR3& pos ){ m_Pos = pos; };		//位置の設定
	void	SetSize( const D3DXVECTOR3& size ){ m_Size = size; };		//大きさの設定
	void	SetLength( const float& length ){ m_fLength = length; };	//半径の半分の長さの設定
	void	SetRotate( const D3DXVECTOR3& rot ){ m_fRot = rot; };		//回転量
	void	SetAngle( const float& angle ){ m_fAngle = angle; };		//対角線の角度の設定

private:
	HRESULT	MakeVertex( LPDIRECT3DDEVICE9 pDevice );

	LPDIRECT3DTEXTURE9		m_pTexture;	//テクスチャインターフェースのための変数
	LPDIRECT3DVERTEXBUFFER9	m_pVtxBuffer;	//テクスチャーバッファーのための変数
	D3DXVECTOR3		m_Sheet;		//ポリゴンの枚数
	D3DXVECTOR3		m_StartPos;		//中心座標から割り出した始点の場所
	unsigned int	m_nNumVertex;	//頂点数
	unsigned int	m_nPolygonNum;	//ポリゴン数
	unsigned int	m_nNumIndex;	//インデックス数

	D3DXVECTOR3	m_Pos;		// 位置
	D3DXVECTOR3	m_Size;		// サイズ
	float		m_fRadius;	// 半径
	D3DXVECTOR3	m_fRot;		// 回転
	float		m_fLength;	// 対角線の半分の長さ
	float		m_fAngle;	// 対角線の角度

	LPDIRECT3DINDEXBUFFER9	m_pIndexBuffer;
};
