using System;
using System.Collections.Generic;
using System.Text;

namespace Vortex.SceneFramework.Effects {

	/// <summary>
	/// Base domain switch effect
	/// </summary>
	public abstract class BaseSceneSwitchEffect : ISceneSwitchEffect {
		/// <summary>
		/// Gets the context of effect.
		/// </summary>
		/// <value>The context of effect.</value>
		protected ISceneSwitchContext Context { get; private set; }


		#region ISceneSwitchEffect Members

		/// <summary>
		/// Begins the switching effect. Usefull for storing effect contexts and initializing internal effect data.
		/// </summary>
		/// <param name="effectContext">The effect context.</param>
		public void BeginEffect(SceneSwitchEffectPlayer effectContext) {
			Context = effectContext;
		}

		/// <summary>
		/// Ends the effect. It is proper place to free all of resource if some of them were acquired.
		/// </summary>
		public void EndEffect() {
			;
		}

		/// <summary>
		/// Updates the effect for with a specified time delta.
		/// </summary>
		/// <param name="timeDelta">The time delta in seconds.</param>
		public void Update(float timeDelta) {
			;
		}

		/// <summary>
		/// Draws the domain switching effect on the specified canvas.
		/// </summary>
		/// <param name="canvas">The canvas to use for effect drawing.</param>
		public abstract void Draw(Vortex.Drawing.Canvas2D canvas);

		#endregion
	}
}
