using System;
using UnityEngine;

namespace Xft
{
	public class RadialBlurTexAddEvent : CameraEffectEvent
	{
		public RadialBlurTexAddEvent(XftEventComponent owner) : base(CameraEffectEvent.EType.RadialBlurMask, owner)
		{
			this.RadialBlurShader = owner.RadialBlurTexAddShader;
			this.Mask = owner.RadialBlurMask;
		}

		public Material MyMaterial
		{
			get
			{
				if (this.m_material == null)
				{
					this.m_material = new Material(this.RadialBlurShader);
					this.m_material.hideFlags = HideFlags.HideAndDontSave;
				}
				return this.m_material;
			}
		}

		public override bool CheckSupport()
		{
			bool result = true;
			if (!SystemInfo.supportsImageEffects)
			{
				result = false;
			}
			if (!this.MyMaterial.shader.isSupported)
			{
				result = false;
			}
			return result;
		}

		public override void OnRenderImage(RenderTexture source, RenderTexture destination)
		{
			if (this.m_material == null)
			{
				return;
			}
			this.MyMaterial.SetTexture("_Mask", this.Mask);
			this.MyMaterial.SetFloat("_SampleDist", this.m_owner.RBMaskSampleDist);
			this.MyMaterial.SetFloat("_SampleStrength", this.m_strength);
			Graphics.Blit(source, destination, this.m_material);
		}

		public override void Update(float deltaTime)
		{
			this.m_elapsedTime += deltaTime;
			if (this.m_owner.RBMaskStrengthType == MAGTYPE.Fixed)
			{
				this.m_strength = this.m_owner.RBMaskSampleStrength;
			}
			else if (this.m_owner.RBMaskStrengthType == MAGTYPE.Curve_OBSOLETE)
			{
				this.m_strength = this.m_owner.RBMaskSampleStrengthCurve.Evaluate(this.m_elapsedTime);
			}
			else
			{
				this.m_strength = this.m_owner.RBMaskSampleStrengthCurveX.Evaluate(this.m_elapsedTime);
			}
		}

		protected float m_strength;

		protected Material m_material;

		public Shader RadialBlurShader;

		public Texture2D Mask;
	}
}