/**
 * @file
 * @brief SpriteMesh実装クラス関連の定義を行う.
 * 
 * 
 * @author S.F.
 * @version $Id:
 *
 * Copyright (C) 2000-2002 Satoshi Fujiwara. All Rights Reserved.
 */
 
/// 重複インクルード防止マクロ
#if !defined(AFX_SPRITEMESH_H__572D6B9D_63CF_41E9_8D17_4A37518A0CA2__INCLUDED_)
#define AFX_SPRITEMESH_H__572D6B9D_63CF_41E9_8D17_4A37518A0CA2__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "sf.h" 
#include "AbstractSprite.h"
extern "C" {
namespace sf {
	namespace system {
		namespace console {
			namespace sprite {
/** 3Dメッシュスプライト.
 * ポリゴンで構成された3Dオブジェクトのデータを保持します */
class SpriteMesh : public AbstractSprite  
{
public:
	// LIFECYCLE //
	/** コンストラクタ 
	 * @param pD3DDevice Direct3D デバイスのポインタ */
	SpriteMesh(LPDIRECT3DDEVICE9	pD3DDevice);
	/// デストラクタ
	virtual ~SpriteMesh();
	
	// OPERATIONS //
	void initialize(void);///< 初期化
	/** 初期化２.
	 @param pD3DDevice LPPDIRECT3DDEVICE8 */
	void initialize(LPDIRECT3DDEVICE9	pD3DDevice);
	void uninitialize(void);///< 終了処理
	// 描画用レンダリングステートの設定
	void load(const sprite::Info *pInfo,const D3DFORMAT textureFormat,const COLOR color);
	
	void draw(const ObjRectangle * const pObj){return;};
	void draw(const ObjQuadrangle * const pObj){return;};
	void draw(const Obj3DL * const pObj);

private:

	LPD3DXMESH              mpMesh         ;  ///< Our mesh object in sysmem
	D3DMATERIAL8*           mpMeshMaterials;  ///< Materials for our mesh
	LPDIRECT3DTEXTURE8*     mpMeshTextures;  ///< Textures for our mesh
	DWORD                   mNumMaterials;    ///< Number of mesh materials

};// SpriteMesh				
			}
		}
	}
}
}
#endif // !defined(AFX_SPRITEMESH_H__572D6B9D_63CF_41E9_8D17_4A37518A0CA2__INCLUDED_)
