#pragma once

//! @file Mix/Scene/IContactListener.h
//! @brief コンタクトリスナーインターフェースインクルードファイル

#include "Mix/Reference.h"

namespace Mix{ namespace Scene{

	//! @class IContactListener
	//! @brief コンタクトリスナーインターフェース
	class IContactListener : public Mix::Reference
	{
	protected:
		//! @brief デストラクタ
		virtual ~IContactListener( void ) {}

	public:
		//! @brief オブジェクトが接触した際に呼び出されます
		//! @param[in] pDynamicsObjectA 接触ダイナミクスオブジェクトAを表す Mix::Scene::IDynamicsObject インターフェースのポインタ
		//! @param[in] pDynamicsObjectB 接触ダイナミクスオブジェクトBを表す Mix::Scene::IDynamicsObject インターフェースのポインタ
		//! @param[in] pointNum 接触位置の数
		//! @param[in] points 接触位置を表す Mix::Scene::DYNAMICS_CONTACT_POINT 構造体の配列
		//! @note
		//! Aはこのリスナーを所持するオブジェクトを表し、<br>
		//! Bは接触してきた相手のオブジェクトを表します。
		virtual void OnContact( Mix::Scene::IDynamicsObject* pDynamicsObjectA,
								Mix::Scene::IDynamicsObject* pDynamicsObjectB,
								UInt32 pointNum,
								const Mix::Scene::DYNAMICS_CONTACT_POINT* points ) = 0;

	};

}}