﻿/*
 * File:			GAFComplexObjectImpl_Pro.cs
 * Version:			1.0
 * Last changed:	2014/12/3 12:32
 * Author:			Alexey_Nikitin
 * Copyright:		© GAF Media
 * Project:			UnityVS.UnityProject.CSharp
 */

using UnityEngine;

using GAF.Data;
using System.Linq;

namespace GAF.Objects
{
	public class GAFComplexObjectImpl_Pro : GAFObjectImpl
	{
		#region Members

		private GAFFilteredObjectImpl_Pro	m_FilteredImpl	= null;
		private GAFMaskedObjectImpl			m_MaskedImpl	= null;

		#endregion // Members

		#region Interface

		public GAFComplexObjectImpl_Pro(
			  GameObject	_ThisObject
			, GAFObjectData _Data
			, Renderer		_Renderer
			, MeshFilter	_Filter)
			: base(_ThisObject, _Data, _Renderer, _Filter)
		{
			m_FilteredImpl	= new GAFFilteredObjectImpl_Pro(_ThisObject, _Data, _Renderer, _Filter);
			m_MaskedImpl	= new GAFMaskedObjectImpl(m_FilteredImpl.filteredMaterial, _ThisObject, _Data, _Renderer, _Filter);
		}

		public override void updateToState(GAFObjectStateData _State, bool _Refresh)
		{
			m_MaskedImpl.updateMasking(_State, _Refresh);
			m_FilteredImpl.updateToState(_State, _Refresh);
		}

		public override void cleanUp()
		{
			m_MaskedImpl.cleanUp();
			m_FilteredImpl.cleanUp();

			m_MaskedImpl	= null;
			m_FilteredImpl	= null;
		}

		#endregion // Interface
	}
}