using System;
using UnityEngine;

public class WindowPartsSpotLight : MonoBehaviour
{
	public void Awake()
	{
		this.partsTransForm.onChangeAxisVisibleType.Add(new Action(this.OnChangeAxisVisibleType));
		this.spotAngleInput.onChangeValue.Add(delegate(WindowPartsInputSliderSet.SliderAndInputSet input_object, float val)
		{
			if (this.light == null)
			{
				return;
			}
			this.spotAngle = (int)val;
			this.light.spotAngle = val;
		});
		this.intensityInput.onChangeValue.Add(delegate(WindowPartsInputSliderSet.SliderAndInputSet input_object, float val)
		{
			if (this.light == null)
			{
				return;
			}
			this.light.intensity = val;
			this.intensity = val;
		});
		this.rangeInput.onChangeValue.Add(delegate(WindowPartsInputSliderSet.SliderAndInputSet input_object, float val)
		{
			if (this.light == null)
			{
				return;
			}
			this.light.range = val;
			this.range = val;
		});
		this.colorInput.onChangeValue.Add(delegate(WindowPartsInputColorrPalette input_object, Color color)
		{
			if (this.light == null)
			{
				return;
			}
			this.light.color = color;
			this.color = color;
			this.updateButtonFunction();
		});
	}

	public void Init(Light light, PhotoTransTargetObject targetObject, Action updateButtonFunction)
	{
		this.light = light;
		this.targetObject = targetObject;
		this.updateButtonFunction = updateButtonFunction;
		this.partsTransForm.SetObject(targetObject.obj, new Vector3(0f, 1f, 0f), Vector3.zero, Vector3.one);
		this.spotAngle = (int)light.spotAngle;
		this.intensity = light.intensity;
		this.range = light.range;
		this.color = light.color;
		this.UpdateGui();
	}

	public void UpdateGui()
	{
		this.OnChangeAxisVisibleType();
		PhotoSliderAndInput sliderAndInput = this.spotAngleInput.GetSliderAndInput("str");
		PhotoSliderAndInput sliderAndInput2 = this.intensityInput.GetSliderAndInput("str");
		PhotoSliderAndInput sliderAndInput3 = this.rangeInput.GetSliderAndInput("str");
		sliderAndInput.value = (float)this.spotAngle;
		sliderAndInput2.value = this.intensity;
		sliderAndInput3.value = this.range;
		this.colorInput.value = this.color;
	}

	protected void OnChangeAxisVisibleType()
	{
		if (this.targetObject == null)
		{
			return;
		}
		WindowPartsTransform.AxisVisibleType axis_visible_type = this.partsTransForm.axis_visible_type;
		PhotoTransTargetObject photoTransTargetObject = this.targetObject;
		if (axis_visible_type == WindowPartsTransform.AxisVisibleType.UnVisible || photoTransTargetObject == null || photoTransTargetObject.obj == null)
		{
			if (photoTransTargetObject.axis_obj != null)
			{
				photoTransTargetObject.axis_obj.Visible = false;
			}
			if (photoTransTargetObject.rotate_obj != null)
			{
				photoTransTargetObject.rotate_obj.Visible = false;
			}
		}
		else if (axis_visible_type == WindowPartsTransform.AxisVisibleType.Position)
		{
			if (photoTransTargetObject.axis_obj != null)
			{
				photoTransTargetObject.axis_obj.Visible = true;
			}
			if (photoTransTargetObject.rotate_obj != null)
			{
				photoTransTargetObject.rotate_obj.Visible = false;
			}
		}
		else if (axis_visible_type == WindowPartsTransform.AxisVisibleType.Rotate)
		{
			if (photoTransTargetObject.axis_obj != null)
			{
				photoTransTargetObject.axis_obj.Visible = false;
			}
			if (photoTransTargetObject.rotate_obj != null)
			{
				photoTransTargetObject.rotate_obj.Visible = true;
			}
		}
	}

	[SerializeField]
	private WindowPartsTransform partsTransForm;

	[SerializeField]
	private WindowPartsInputSliderSet spotAngleInput;

	[SerializeField]
	private WindowPartsInputSliderSet intensityInput;

	[SerializeField]
	private WindowPartsInputSliderSet rangeInput;

	[SerializeField]
	private WindowPartsInputColorrPalette colorInput;

	private Light light;

	private PhotoTransTargetObject targetObject;

	private Action updateButtonFunction;

	private int spotAngle;

	private float intensity;

	private float range;

	private Color color;
}