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

namespace Vortex.SceneFramework.Effects {
	
	/// <summary>
	/// Defines service interface for domain switching effects
	/// </summary>
	public interface ISceneSwitchEffect {
		/// <summary>
		/// Begins the switching effect. Usefull for storing effect contexts and initializing internal effect data.
		/// </summary>
		/// <param name="effectContext">The effect context.</param>
		void BeginEffect(SceneSwitchEffectPlayer effectContext);

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

		/// <summary>
		/// Updates the effect for with a specified time delta.
		/// </summary>
		/// <param name="timeDelta">The time delta in seconds.</param>
		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>
		void Draw(Vortex.Drawing.Canvas2D canvas);
	}
}
