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

		BasicFinalRenderer.h

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

		Author:	Ray Dream
		Date:	3/2/98

		Revision History

		when		who					what & why
		==========	=================	======================================================
		08/11/99	Guillaume&Christy	Added inheritance to all the Basic* classes

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

#ifndef __BasicFinalRenderer__
#define __BasicFinalRenderer__

#if CP_PRAGMA_ONCE
#pragma once
#endif

#include "BasicCOMImplementations.h"
#include "I3DExFinalRenderer.h"

/// \addtogroup BaseClass
/// \{

/***************************************************************************\
*                                                                           *
*          TBasicFinalRenderer                                              *
*                                                                           *
\***************************************************************************/
/// Basic Final Renderer class.  Derive from this for a default implementation of I3DExFinalRenderer.
/// \see I3DExFinalRenderer
class TBasicFinalRenderer : public I3DExFinalRenderer, public TBasicDataExchanger
{
	public:
		virtual MCCOMErr MCCOMAPI QueryInterface		(const MCIID& riid, void** ppvObj);
		virtual uint32 	 MCCOMAPI AddRef				()				{ return TBasicDataExchanger::AddRef(); }

		virtual MCCOMErr			MCCOMAPI SetTreeTop				(I3DShGroup* treeTop);
		virtual MCCOMErr			MCCOMAPI SetCamera				(I3DShCamera* camera);
		virtual MCCOMErr			MCCOMAPI SetEnvironment			(I3DShEnvironment* environment);
		virtual MCCOMErr			MCCOMAPI SetAmbientLight		(const TMCColorRGB &ambiantColor);
		virtual MCCOMErr			MCCOMAPI SetFieldRenderingData	(int32 fieldRenderingSettings,int16 firstFrame);
		virtual void				MCCOMAPI GetRenderStatistics	(I3DRenderStatistics** renderstats)=0;
		virtual MCCOMErr			MCCOMAPI FinishDraw				();
		virtual boolean				MCCOMAPI IsSMPAware				();
		virtual void				MCCOMAPI RenderVolumetrics		(boolean renderEffects);
		virtual void				MCCOMAPI RenderBackGround		(boolean enable);
		virtual void				MCCOMAPI SeparateShadow			(boolean enable);
		virtual void				MCCOMAPI OptimizeTileSize		(TMCPoint& inOutTileSize);
		virtual void				MCCOMAPI GetTileRenderer		(I3DExTileRenderer** tileRenderer);
		virtual void				MCCOMAPI BeginRendering();
		virtual void				MCCOMAPI EndRendering(boolean aborting);
		virtual	void				MCCOMAPI CreateRaytracer(I3DExRaytracer** raytracer);
		virtual void				MCCOMAPI SetLightingDetailOptions(boolean atmosphereDetails, boolean volumePrimitivesDetails, boolean volumetricEffectsDetails);
};

/// \}
#endif