#pragma once

#include "Adept.hpp"
#include "VideoRenderer.hpp"
#include "VideoComponent.hpp"

namespace Adept {

	//#########################################################################
	//##########################  ConeComponent  ##############################
	//#########################################################################
	//

	class ConeComponent:
		public VideoComponent
	{
	public:
		static void
			InitializeClass();
		static void
			TerminateClass();
		static ClassData
			*DefaultData;

		typedef VideoComponent BaseClass;

	//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	// Constructor/Destructor
	//
	protected:
		ConeComponent(
			ClassData *class_data,
			MemoryStream *stream,
			VideoComponentWeb *owning_web
		);

		static Element*
			ReadShape(MemoryStream *stream);

		~ConeComponent();

	public:
		static ConeComponent*
			Create(
				MemoryStream *stream,
				VideoComponentWeb *owning_web
			);

	//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	// Accessors
	//
	public:
		void
			TestInstance();

	//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	// Tool-related Functions
	//
	public:
		static ClassData*
			CreateFactoryRequest(FactoryRequestParameters *parameters);
	};

}

