/****************************************************************************************************

		IMorphTargetGroup.h
		Copyright: (c) 2001 Eovia Corp. All rights reserved.

		Author:	Pierre-Sylvain
		Date:	7/20/2005

****************************************************************************************************/

#ifndef __IMorphTargetGroup__
#define __IMorphTargetGroup__

#if CP_PRAGMA_ONCE
#pragma once
#endif



/// \addtogroup ExternalInterface
/// \{

/// Interface for managing morph target groups. For creation, see
/// CreateMorphTargetGroup() on the interface IMorphArea
/// This group can contains sub morph targets as well as sub
/// group.
struct IMorphTargetGroup : public IMCUnknown 
{
	// ****************************************************************************
	//								GetMorphTargetGroupName
	// 
	///
	///	\return the name of the area
	virtual const TMCString&	MCCOMAPI GetMorphTargetGroupName() const =0;

	// ****************************************************************************
	//								SetMorphTargetGroupName
	// 
	// -Description:
	///			sets the name of a group
	virtual void		MCCOMAPI SetMorphTargetGroupName( const TMCString& name ) =0;

	// ****************************************************************************
	//								GetMorphTargetCount
	// 
	///
	/// \return the number of target countained in this group
	virtual int32		MCCOMAPI GetMorphTargetCount() =0;

	// ****************************************************************************
	//								GetMorphTargetIndex
	//
	/// \param index	The index of the morph target in this group
	///
	/// \return the index of the target (the one used in the morph area).
	virtual int32		MCCOMAPI GetMorphTargetIndex(int32 index) =0;

	// ****************************************************************************
	//								GetMorphTargetGroupCount
	// 
	///
	/// \return the number of group countained in this group
	virtual int32		MCCOMAPI GetMorphTargetGroupCount() =0;

	// ****************************************************************************
	//								GetMorphTargetGroup
	//
	/// \param index	The index of the group in this group
	///
	/// \return the morph target group.
	virtual IMorphTargetGroup*	MCCOMAPI GetMorphTargetGroup(int32 index) =0;
};

/// \}


#endif
