﻿/*
 * File:			GAFBakedComplexObjectImpl_Pro.cs
 * Version:			1.0
 * Last changed:	2014/12/5 9:52
 * Author:			Alexey_Nikitin
 * Copyright:		© GAF Media
 * Project:			UnityVS.UnityProject.CSharp
 */

using UnityEngine;

using GAF.Data;
using System.Linq;

namespace GAF.Objects
{
	public class GAFBakedComplexObjectImpl_Pro : GAFBakedObjectImpl
	{
		#region Members

		private GAFBakedFilteredObjectImpl_Pro	m_FilteredImpl	= null;
		private GAFBakedMaskedObjectImpl		m_MaskedImpl	= null;

		#endregion // Members

		#region Interface

		public GAFBakedComplexObjectImpl_Pro(
			  GAFObjectData				_Data
			, GAFRenderProcessor		_Processor
			, GAFBakedObjectController	_Controller)
			: base(_Data, _Processor, _Controller)
		{
			m_FilteredImpl	= new GAFBakedFilteredObjectImpl_Pro(_Data, _Processor, _Controller);
			m_MaskedImpl	= new GAFBakedMaskedObjectImpl(m_FilteredImpl.filteredMaterial, _Data, _Processor, _Controller);
		}

		public override Material material
		{
			get
			{
				return m_FilteredImpl.material;
			}
		}

		public override GAFObjectStateData currentState
		{
			get
			{
				return m_FilteredImpl.currentState;
			}
		}

		public override Color32[] colors
		{
			get
			{
				return m_FilteredImpl.colors;
			}
		}

		public override Vector4[] colorsShift
		{
			get
			{
				return m_FilteredImpl.colorsShift;
			}
		}

		public override Vector3[] currentVertices
		{
			get
			{
				return m_FilteredImpl.currentVertices;
			}
		}

		public override Vector2[] uvs
		{
			get
			{
				return m_FilteredImpl.uvs;
			}
		}

		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
	}
}