33 lines
1.1 KiB
C#
33 lines
1.1 KiB
C#
![]() |
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();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|