#pragma once

#include "fbxsdk.h"

#include <string>
#include <list>
#include <vector>
#include <map>

#include "Mix/Tool/Win32/Core/Graphics/OctreeModel.h"
#include "Mix/Tool/Win32/Core/Graphics/FBX.h"

namespace Mix{ namespace Tool{ namespace Win32{ namespace Dynamics{ namespace Design{
	class Terrain;
}}}}}

namespace Mix{ namespace Tool{ namespace Win32{ namespace Graphics{

	//! @class MapModel
	//! @brief マップモデルクラス
	class MapModel : public Mix::Tool::Win32::Graphics::OctreeModel
	{
	private:
		Mix::Tool::Win32::Dynamics::Design::Terrain* m_pDynamicsDesigner;

	public:
		//! @brief コンストラクタ
		MapModel( void );
		//! @brief デストラクタ
		virtual ~MapModel( void );

		//! @brief ダイナミクスデザイナーの取得
		//! @return ダイナミクスデザイナーのポインタを返します
		Mix::Tool::Win32::Dynamics::Design::Terrain* GetDynamicsDesignerPtr( void );

	protected:
		//! @brief ダイナミクスデザイナーの八分木モデルを設定
		//! @param[in] cfg インポート設定
		virtual void OnPreImport( const OctreeModel::IMPORT_CONFIG& cfg );

	public:
		//! @brief 保存します
		//! @return 成功した場合は true を返します
		virtual bool SaveModel( void );

	private:
		virtual void OnDraw( DrawObject::DRAW_EVENT_ARGS& args );

	public:
		MIX_OBJECT_TYPE( Mix::Tool::Win32::Object::GRAPHICS__MAP_MODEL, Mix::Tool::Win32::Graphics::OctreeModel );

		friend class Manager;
	};

}}}}

