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

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

		Author:	Julien
		Date:	2/28/2002

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

#ifndef __I3DShInvisibleTree__
#define __I3DShInvisibleTree__

#if CP_PRAGMA_ONCE
#pragma once
#endif

#include "MCCompObj.h"

struct I3DShTreeElement;

struct I3DExGenericData;

MCDEFINE_GUID(IID_I3DShInvisibleTree, 0xca94efc, 0x94cd, 0x40d3, 0x84, 0xaf, 0xdd, 0x9, 0x72, 0x9d, 0x22, 0x53);


struct I3DShInvisibleTree;
template<class T> class TMCPtrArray;


/// \addtogroup ShellInterface
/// \{

/// <P>Defines an object without geometry, transform or shading that appears
/// in the object hierarchy.</P>
///
/// <P>The corresponding external interface is I3DExGenericData.</P>
///
struct I3DShInvisibleTree: public IMCUnknown
{
	// ****************************************************************************
	//								GetTreeElement
	// 
	/// Returns a pointer to the I3DShTreeElement interface.
	/// 
	/// 
	virtual	I3DShTreeElement*	MCCOMAPI GetTreeElement() = 0;

	// ****************************************************************************
	//								Attach
	// 
	/// Attach an external generic data.
	/// 
	/// \param genericData  A pointer to the external object.
	/// 
	virtual void				MCCOMAPI Attach(I3DExGenericData* genericData) = 0;
	
	// ****************************************************************************
	//								GetGenericData
	// 
	/// Returns a pointer to the external data.
	/// 
	virtual I3DExGenericData*	MCCOMAPI GetGenericData() = 0;
};

/// \}







#endif
