/* -----------------------------------------------------------------------------
	GSFramework
	Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */


#ifndef	__IITEMEVENT__
#define	__IITEMEVENT__


namespace GS {
	namespace S3D {
		class MItem;
		struct MTrigger;
		struct CollisionPair;

/*!
	@short	Item event interface.

	Implement this class if you wish to process item events.
	The default implementation forwards events to the item active script units.

	@author	Emmanuel Julien (ejulien@gsworks.fr)
*/
struct	IItemEvent
{
virtual	void	OnSetup(MItem *) {}
virtual	void	OnSetupDone(MItem *) {}
virtual	void	OnReset(MItem *) {}

virtual	void	OnActivate(MItem *, bool) {}

virtual	void	OnPhysicStep(MItem *, bool /*step_taken*/) {}

virtual	void	OnItemEnter(MTrigger *, MItem *) {}
virtual	void	OnItemExit(MTrigger *, MItem *) {}

virtual	void	OnEnterTrigger(MItem *, MTrigger *) {}
virtual	void	OnTrigger(MItem *, MTrigger *) {}
virtual	void	OnExitTrigger(MItem *, MTrigger *) {}

virtual	void	OnUpdate(MItem *) {}
virtual	void	OnDelete(MItem *) {}

virtual	void	OnRenderDone(MItem *) {}
virtual	void	OnRenderUser(MItem *) {}

virtual	void	OnCollision(MItem *, MItem * /*with*/, const CollisionPair &) {}

virtual	~IItemEvent() {}
};

	} // S3D
} // GS


#endif	// __IITEMEVENT__
