29 lines
990 B
C#
29 lines
990 B
C#
using UnityEditor;
|
|
using UnityEngine;
|
|
public class CharacterShaderEditor : ShaderGUI
|
|
{
|
|
private bool init;
|
|
private Vector3 lastEular;
|
|
public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties)
|
|
{
|
|
base.OnGUI(materialEditor, properties);
|
|
var targetMat = (Material)materialEditor.target;
|
|
if (init)
|
|
{
|
|
var eular = EditorGUILayout.Vector3Field("Eular", lastEular);
|
|
if (eular != lastEular)
|
|
{
|
|
lastEular = eular;
|
|
var direction = Quaternion.Euler(eular) * Vector3.forward;
|
|
targetMat.SetVector("_LightDir", direction);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
init = true;
|
|
var direction = (Vector3)targetMat.GetVector("_LightDir");
|
|
lastEular = Quaternion.FromToRotation(Vector3.forward, direction).eulerAngles;
|
|
EditorGUILayout.Vector3Field("Light Eular", lastEular);
|
|
}
|
|
}
|
|
} |