#pragma once

#include "Proxies.hpp"
#include "Process.hpp"

namespace Proxies {

	class GenericProxy;

	class FindErrorsProcess:
		public Process
	{
	public:
		enum {
			StatusCheck = 0,
			ERROR_Bad_Normal,
			ERROR_Mismatched_Vertex_Colors,
			ERROR_Mismatched_UVs,
			ERROR_Mismatched_Normals,
			ERROR_Duplicate_Vertex,
			ERROR_Degenerate_Polygon,
			ERROR_Noncoplanar_Polygon,
			ERROR_Nonconvex_Polygon,
			ERROR_Bad_Texture_Size,
			ERROR_Nontextured_Polygon,
			ERROR_Too_Many_Vertices,
			ERROR_Empty_Mesh,
			ErrorsCount
		};

		FindErrorsProcess();
		FindErrorsProcess(
			Stuff::NotationFile *data_file, 
			bool bSuppress = true,
			void* fcn = NULL
		);

		bool
			enableDuplicateCheck,
			enableDegenerateCheck,
			enableCoplanarCheck,
			enableColinearCheck,
			enableConvexCheck;

		virtual void
			FindErrorsCallback(
				GenericProxy* proxy,
				int type
			)
				{}
	};

}
