#pragma once

#include "ElementProxies.hpp"
#include <Proxies\Process.hpp>

namespace ElementProxies {

	class ElementGroupProxy;
	class ElementPolygonMeshProxy;
	class ElementSceneProxy;

	class SetExplicitLightingModeProcess:
		public Proxies::Process
	{
	public:
		SetExplicitLightingModeProcess()
			{}
		SetExplicitLightingModeProcess(Stuff::NotationFile *data_file):
			Process(data_file)
				{}

		virtual void
			SetExplicitLightingModeCallback(Proxies::GenericProxy* proxy)
				{}

		bool
			SetExplicitLightingMode(Proxies::ChildProxy* child, MidLevelRenderer::MLRState::LightingMode newLightingMode);
		bool
			SetExplicitLightingMode(ElementGroupProxy* group, MidLevelRenderer::MLRState::LightingMode newLightingMode);
		bool
			SetExplicitLightingMode(ElementPolygonMeshProxy* mesh, MidLevelRenderer::MLRState::LightingMode newLightingMode);
		void
			SetExplicitLightingMode(ElementSceneProxy* scene, MidLevelRenderer::MLRState::LightingMode newLightingMode);
	};

}
