#pragma once

//! @file Mix/Scene/IMotionListener.h
//! @brief モーションリスナーインターフェースインクルードファイル

#include "Mix/Reference.h"

namespace Mix{ namespace Scene{

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

	public:
		//! @brief 再生を開始、もしくわ終了した際に呼び出されます
		//! @param[in] pMotion 再生を開始した、もしくわ終了したモーションを表す Mix::Scene::IMotion インターフェースのポインタ
		//! @param[in] handle 再生を開始した、もしくわ終了したモーションのハンドル
		//! @param[in] bActive 再生を開始した場合は、True<br>
		//! 再生を終了した場合は False
		virtual void OnActivate(	const Mix::Scene::IMotion* pMotion,
									const Mix::Scene::MOTION_HANDLE& handle,
									Boolean bActive ) = 0;

		//! @brief ユーザーが指定した範囲に入った際に呼び出されます
		//! @param[in] pMotion 再生を開始したモーションを表す Mix::Scene::IMotion インターフェースのポインタ
		//! @param[in] handle 範囲に入ったモーションのハンドル
		//! @param[in] desc エントリーを表す Mix::Scene::MOTION_ENTRY_DESC 構造体
		//! @param[in] frame 範囲に入った際のフレーム
		virtual void OnEntry(	const Mix::Scene::IMotion* pMotion,
								const Mix::Scene::MOTION_HANDLE& handle,
								const Mix::Scene::MOTION_ENTRY_DESC& desc,
								Float32 frame ) = 0;
	};

}}
