//===========================================================================//
// File:	rpl4vid.hh																			  //
// Project: MUNGA           Brick: Video Renderer Manager	                 //
// Contents: Wrapper class for including rp scripts into video renderer		  //
//---------------------------------------------------------------------------//
//   Date    Who  Modification                                               //
// --------  ---  ---------------------------------------------------------- //
// 02/12/95  GAC  Initial coding.                                            //
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc.                     //
// All Rights reserved worldwide                                             //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL               //
//===========================================================================//

#if !defined(RPL4VID_HPP)
#	define RPL4VID_HPP

#	if !defined(L4VIDEO_HPP)
#		include <l4video.hpp>
#	endif

#	include <dpl.h>
#	include <dplutils.h>

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

	class RPL4VideoRenderer:
		public DPLRenderer
	{
	public:
		RPL4VideoRenderer(
			RendererRate calibration_rate,
			RendererComplexity calibration_complexity,
			RendererPriority calibration_priority,
			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.)

		dpl_DCS*
			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,
				dpl_DCS			*parentDCS,
				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
			);

	};

#endif
