#pragma once

//! @file Mix/Scene/ISensor.h"
//! @brief センサーインターフェースインクルードファイル

#include "Mix/Scene/IDynamicsObject.h"

namespace Mix{ namespace Scene{

	//! @class ISensor
	//! @brief センサーインターフェース
	class ISensor : public Mix::Scene::IDynamicsObject
	{
	protected:
		//! @brief デストラクタ
		virtual ~ISensor( void ) {}

	public:
		//! @brief フィルターグループを取得します
		//! @return フィルターグループを返します
		virtual UInt16 GetFilterGroup( void ) const = 0;
		//! @brief フィルターグループを設定します
		//! @param[in] filterGroup フィルターグループ
		//! @note 初期値は ( Mix::Dynamics::OF_SENSOR ) になります
		virtual void SetFilterGroup( UInt16 filterGroup ) = 0;

		//! @brief フィルターマスクを取得します
		//! @return フィルターマスクを返します
		virtual UInt16 GetFilterMask( void ) const = 0;
		//! @brief フィルターマスクを設定します
		//! @param[in] filterMask フィルターマスク
		//! @note 初期値は ( Mix::Dynamics::OF_DEFAULT | Mix::Dynamics::OF_STATIC | Mix::Dynamics::OF_KINEMATIC ) になります
		virtual void SetFilterMask( UInt16 filterMask ) = 0;

		//! @brief マテリアルを取得します
		//! @return マテリアルを表す Mix::Dynamics::MATERIAL 構造体を返します
		virtual const Mix::Dynamics::MATERIAL& GetMaterial( void ) const = 0;
		//! @brief マテリアルを設定します
		//! @param[in] material 設定するマテリアルを表す Mix::Dynamics::MATERIAL 構造体
		virtual void SetMaterial( const Mix::Dynamics::MATERIAL& material ) = 0;
	};

}}
