#ifndef _E3D_OBJECT_
#define _E3D_OBJECT_

#include <easy3d.h>

#include "E3DObjectGameInformation.h"
#include "E3DObjectMoveInformation.h"

#include "HPLCounter.h"

namespace HPL {
namespace E3D {
	
static const int MAX_MOTION = 30;
namespace TriggerType {
	enum {
		NONE				= 0x000000,
		ON_THE_GROUND		= 0x000001,
		HIT_WALL			= 0x000002,
	};
}

class E3DObject {
public:
	//! 移動関連の変数
	E3DObjectMoveInformation m_Move;

	//! ゲーム関連の変数
	E3DObjectGameInformation m_Game;

public:
	//////////////////////////
	// E3D関連データ
	//! MOAデータ格納
	MOAINFO m_moaMOAArray[MAX_MOTION];

	//! 丸影SID ID
	int m_nShadowSigID;
/*//	int m_nShadowQuatanionID;
	int m_nShadowUpQuatanionID;*/

	//! SIGID
	int m_nSigID;

	//! QUAID (MOA使用時は使用しないこと)
//	int m_nQuaID;

	//! モーションID
//	int m_nMotionID;
//	int m_nFrameNumber;
	
	//! MOAイベントナンバー
	int m_nEventNumber;
	int m_nOldEventNumber;

	//! MOA下半身イベントナンバー
	//! 普段は-1（使用しない）
	int m_nUnderEventNumber;

	//! 上半身ボーンNo
	int m_nUpperBoneNumber;
	int m_nUnderBoneNumber;

	int m_nBaseBoneNumber;

	//! 武器ボーンNo
	int m_nWeaponBoneNumber;
	int m_nWeaponBoneNumber2;

//	int m_nBaseBoneNumber;
private:
	//! 存在しうるか
	BOOL m_bValid;

public:
	E3DObject();
	~E3DObject();


public:// operations
	BOOL get_Valid();
	BOOL is_Valid() {
		return get_Valid();
	}
	void set_Valid( BOOL bValid );

	void reset();
};
}
}

#endif
