using UnityEngine;
using UnityEditor;

public class GradientSkyboxEditor : UnityEditor.MaterialEditor {

    public override void OnInspectorGUI() {
        serializedObject.Update();

		var theShader = serializedObject.FindProperty ("m_Shader"); 

		if (isVisible && !theShader.hasMultipleDifferentValues && theShader.objectReferenceValue != null) {
            EditorGUI.BeginChangeCheck();

			base.OnInspectorGUI();

            if (EditorGUI.EndChangeCheck()) {
				var dirPitch = GetMaterialProperty(targets, "_DirectionPitch");
				var dirYaw = GetMaterialProperty(targets, "_DirectionYaw");

                var dirPitchRad = dirPitch.floatValue * Mathf.Deg2Rad;
                var dirYawRad = dirYaw.floatValue * Mathf.Deg2Rad;
                
                var direction = new Vector4(Mathf.Sin(dirPitchRad) * Mathf.Sin(dirYawRad), Mathf.Cos(dirPitchRad), 
				                            Mathf.Sin(dirPitchRad) * Mathf.Cos(dirYawRad), 0.0f);
                GetMaterialProperty(targets, "_Direction").vectorValue = direction;

                PropertiesChanged();
            }
        }
    }

}