// Cristian Pop - https://boxophobic.com/ using UnityEngine; using UnityEditor; using System; namespace Boxophobic.StyledGUI { public class StyledVector3Drawer : MaterialPropertyDrawer { public float space = 0; public float top = 0; public float down = 0; public StyledVector3Drawer() { this.space = 0; } public StyledVector3Drawer(float space) { this.space = space; } public StyledVector3Drawer(float space, float top, float down) { this.space = space; this.top = top; this.down = down; } public override void OnGUI(Rect position, MaterialProperty prop, String label, MaterialEditor materialEditor) { GUILayout.Space(top); if (EditorGUIUtility.currentViewWidth > 330) { DrawVectorProperty(prop, label); GUILayout.Space(-space); } else { DrawVectorPropertyNextLine(prop, label); GUILayout.Space(2); } GUILayout.Space(down); } public override float GetPropertyHeight(MaterialProperty prop, string label, MaterialEditor editor) { return -2; } void DrawVectorProperty(MaterialProperty prop, string label) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = prop.hasMixedValue; GUILayout.BeginHorizontal(); GUILayout.Space(-1); GUILayout.Label(label, GUILayout.Width(EditorGUIUtility.labelWidth - 1)); Vector4 vec = EditorGUILayout.Vector3Field("", prop.vectorValue); GUILayout.EndHorizontal(); if (EditorGUI.EndChangeCheck()) { prop.vectorValue = vec; } } void DrawVectorPropertyNextLine(MaterialProperty prop, string label) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = prop.hasMixedValue; GUILayout.BeginHorizontal(); GUILayout.Space(-1); GUILayout.Label(label, GUILayout.Width(EditorGUIUtility.labelWidth)); GUILayout.EndHorizontal(); Vector4 vec = EditorGUILayout.Vector3Field("", prop.vectorValue); if (EditorGUI.EndChangeCheck()) { prop.vectorValue = vec; } } } }