#pragma once

#include "..\munga_l4\l4video.h"


// RB 1/14/07
//#include <dpl\dpl.h>
//#include <dpl\dplutils.h>

//##########################################################################
//##########################################################################

class RPL4VideoRenderer:
	public DPLRenderer
{
public:
	RPL4VideoRenderer(
		HWND hWnd,
		unsigned int screenWidth,
		unsigned int screenHeight,
		bool fullscreen,
		InterestType interest_type,
		InterestDepth depth_calibration
	);
	~RPL4VideoRenderer();
char
	SetupMaterialSubstitutionList(
		Entity*	entity,
		ViewFrom	view_type); 	// The entity we will be substituting for.
void
	TearDownMaterialSubstitutionList();

protected:
	int
		vtvsExpected,
		vtvCount;

	void
		LoadMissionImplementation(Mission *mission);

	void
		MakeEntityRenderables(
			Entity					*this_entity,		// The entity we are dealing with
			ResourceDescription	*model_resource,	// Pointer to the video resource
			ViewFrom					type);				// Type of reference (inside/outside...etc.)

	HierarchicalDrawComponent*
		ReadSKLFile(
			Entity					*entity,				// The entity we are dealing with
			ResourceDescription	*model_resource,	// Pointer to the video resource
			ViewFrom					type,					// type of reference to create
			char						skeleton_type		// TEMPORARY!!!! to handle color substitutions
		);

	void
		RecurseSKLFile(
			Entity			*entity,
			HierarchicalDrawComponent	*parent,
			NotationFile	*mech_skeleton,
			const char		*page_name,
			int				recursion_depth,
			ViewFrom			type,					// type of reference to create !!! should be enum
			int				*joint_counter,
			dpl_LOAD_MODE	cache_mode
		);

};
