#pragma once

//! @file Mix/Dynamics/IStaticPlane.h
//! @brief スタティックプレーンインターフェースインクルードファイル

#include "Mix/Dynamics/IObject.h"

namespace Mix{ namespace Dynamics{

	//! @class IStaticPlane
	//! @brief スタティックプレーンインターフェース
	//! @note
	//! 以下のメソッドは機能しません。<br>
	//! <br>
	//! GetRotation<br>
	//! SetRotation<br>
	//! GetPosition<br>
	//! SetPosition<br>
	//! GetShape<br>
	class IStaticPlane : public Mix::Dynamics::IObject
	{
	protected:
		//! @brief デストラクタ
		virtual ~IStaticPlane( void ) {}

	public:
		//! @brief 法線を取得します
		//! @return 法線を表す Mix::Vector3 クラスを返します
		virtual const Mix::Vector3& GetNormal( void ) const = 0;
		//! @brief 定数を取得します
		//! @return 定数を返します
		virtual float GetConstant( void ) const = 0;

		//! @brief ワイヤーフレームのラインの間隔を取得します
		//! @return ラインの間隔を返します
		virtual Float32 Debug_GetDrawInterval( void ) const = 0;
		//! @brief ワイヤーフレームのラインの間隔を設定します
		//! @param[in] interval ラインの間隔
		virtual void Debug_SetDrawInterval( Float32 interval ) = 0;

		//! @brief ワイヤーフレームの広さを取得します
		//! @return 広さを返します
		virtual UInt32 Debug_GetDrawExtent( void ) const = 0;
		//! @brief ワイヤーフレームの広さを設定します
		//! @param[in] extent 広さ
		//! @note 実際の広さ( ラインの間隔 * ( 広さ + 1 ) )になります
		virtual void Debug_SetDrawExtent( UInt32 extent ) = 0;
	};

}}
