//===========================================================================//
// File:    btdirect.hh                                                      //
// Project: Red Planet                                                 		  //
// Contents: Chooses from a Selection of Camerea's and provides information  //
//	to any number of cameraship's as to which player to follow					  //
//---------------------------------------------------------------------------//
//   Date    Who  Modification                                               //
// --------  ---  ---------------------------------------------------------- //
// 01/15/95  JM  Initial coding.                                             //
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc.                     //
// All Rights reserved worldwide                                             //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL               //
//===========================================================================//

#if !defined (BTDIRECT_HPP)
#	define BTDIRECT_HPP

#	if !defined (DIRECTOR_HPP)
#		include <director.hpp>
#	endif

#	if !defined (BTPLAYER_HPP) && 0
#		include <btplayer.hpp>
#	endif


class BTCameraDirector :
	public CameraDirector
{
	//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	// Shared Data support
	//
	public:

		static Derivation ClassDerivations;
		static SharedData DefaultData;

	//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	// Simulation Support
	//
	public:

		typedef void
			(BTCameraDirector::*Performance)(Scalar time_slice);

		void
			SetPerformance(Performance performance)
				{
					Check(this);
					activePerformance = (Simulation::Performance)performance;
				}

		void
			CreateBTCameraShip(Scalar);

		void
			BeABTDirector(Scalar);

	//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	// Construction and Destruction Support
	//
		BTCameraDirector(
			MakeMessage	*creation_message,
			SharedData &virtual_data = DefaultData
		);

		static BTCameraDirector*
			BTCameraDirector::Make(CameraDirector::MakeMessage *creation_message);

		~BTCameraDirector();

		Logical
			TestInstance() const;
};
#endif
