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

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

		Author:	Charles
		Date:	11/26/2003

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

#ifndef __I3DShShadableTree__
#define __I3DShShadableTree__

#if CP_PRAGMA_ONCE
#pragma once
#endif


MCDEFINE_GUID(IID_I3DShShadableTree, 0x57206a8b, 0x67e9, 0x45f4, 0x83, 0x8f, 0x1f, 0x2b, 0x28, 0xdb, 0x7c, 0x7e);

/// \addtogroup ShellInterface
/// \{

// ****************************************************************************
//								I3DShShadableTree
// 
/// 
/// 
/// Interface that allows accessing the shader applied to a group or an instance
/// 
struct I3DShShadableTree: public IMCUnknown
{
	///returns the I3DShTreeElementinterface
	virtual	I3DShTreeElement*	MCCOMAPI GetThisTree() = 0;

	// ****************************************************************************
	//								SetShader
	// 
	/// Sets a Master shader on a tree (either a group or an instance)
	/// 
	/// \param masterShader  the master shader
	/// 
	virtual MCCOMErr MCCOMAPI	SetShader(I3DShMasterShader * masterShader)=0;

	// ****************************************************************************
	//								GetShader
	// 
	/// Gets the master shader applied to the tree (either a group or an instance)
	/// 
	/// \param masterShader  the master shader
	/// 
	virtual	MCCOMErr MCCOMAPI	GetShader(I3DShMasterShader ** masterShader)=0;
};


/// \}

#endif
