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

		IFigureDataComponent.h
		Copyright: (c) 2007 DAZ Productions. All rights reserved.

		Author:	Eric
		Date:	5/31/2007

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

#ifndef __IFigureDataComponent__
#define __IFigureDataComponent__

#if CP_PRAGMA_ONCE
#pragma once
#endif

#include "IActorDataComponent.h"
#include "MCCountedPtrArray.h"


MCDEFINE_GUID_H(IID_IFigureDataComponent);
MCDEFINE_GUID_H(IID_IFigureOperationComponent);


struct I3DExVertexPrimitive;

struct TFigureDataInit
{
	TMCDynamicString						fName;
	TMCCountedPtr<I3DShTreeElement>			fFigureGroup;
	TTreeId									fFigureInstanceTreeID;
	TMCCountedPtrArray<I3DShTreeElement>	fActorTrees;

	//this represents the actor for the figure
	TActorDataInit							fFigureActor;
};

struct IFigureDataComponent : public IMCUnknown
{
	virtual void Initialize(TActorDataInit& actorInit) = 0;
	virtual void Initialize(TFigureDataInit& FigureInit) = 0;
	virtual ICustomGroup* GetParametersRootGroup() = 0;
	virtual I3DShTreeElement*	GetFigurePrimitiveTree() = 0;
	virtual I3DExVertexPrimitive*	GetFigurePrimitive() = 0;
};


struct IFigureOperationComponent : public IMCUnknown
{
	virtual void		MCCOMAPI ImportPreset(IMCFile* file, boolean asClip) = 0;
	virtual void		MCCOMAPI ImportFigureAndProp(IMCFile* file, boolean forceConforming = true) = 0;
};

#endif
