#pragma once

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

namespace ElementProxies {

	class ElementGroupProxy;
	class ElementPolygonMeshProxy;
	class ElementSceneProxy;

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

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

		bool
			SetExplicitAlphaMode(Proxies::ChildProxy* child, MidLevelRenderer::MLRState::AlphaMode newAlphaMode);
		bool
			SetExplicitAlphaMode(ElementGroupProxy* group, MidLevelRenderer::MLRState::AlphaMode newAlphaMode);
		bool
			SetExplicitAlphaMode(ElementPolygonMeshProxy* mesh, MidLevelRenderer::MLRState::AlphaMode newAlphaMode);
		void
			SetExplicitAlphaMode(ElementSceneProxy* scene, MidLevelRenderer::MLRState::AlphaMode newAlphaMode);
	};

}
