Newer
Older
CGTrack / Assets / Oculus / AudioManager / Scripts / Audio / Editor / MixerSnapshotPropertyDrawer.cs
using UnityEditor;
using UnityEngine;

namespace OVR
{

/*
-----------------------

 MixerSnapshotPropertyDrawer

-----------------------
*/
[CustomPropertyDrawer( typeof( MixerSnapshot ) )]
public class MixerSnapshotPropertyDrawer : PropertyDrawer {

	// Draw the property inside the given rect
	public override void OnGUI( Rect position, SerializedProperty property, GUIContent label ) {
		// Using BeginProperty / EndProperty on the parent property means that
		// prefab override logic works on the entire property.
		EditorGUI.BeginProperty( position, label, property );

		// Draw label
		position = EditorGUI.PrefixLabel( position, GUIUtility.GetControlID( FocusType.Passive ), label );

		// Don't make child fields be indented
		var indent = EditorGUI.indentLevel;
		EditorGUI.indentLevel = 0;
		EditorGUIUtility.labelWidth = 65;

		float width = ( position.width - 15.0f ) / 2.0f;

		// Calculate rects
		var srcRect = new Rect( position.x, position.y, width + 20, position.height ); position.x += width + 25.0f;
		var destRect = new Rect( position.x, position.y, width - 60, position.height ); position.x += width - 60.0f;
		var secsRect = new Rect( position.x, position.y, 40, position.height );

		// Draw fields - pass GUIContent.none to each so they are drawn without labels
		EditorGUI.PropertyField( srcRect, property.FindPropertyRelative( "snapshot" ), GUIContent.none );
		EditorGUI.PropertyField( destRect, property.FindPropertyRelative( "transitionTime" ), new GUIContent( "Transition" ) );
		EditorGUI.LabelField( secsRect, new GUIContent( "sec(s)" ) );

		// Set indent back to what it was
		EditorGUI.indentLevel = indent;

		EditorGUI.EndProperty();
	}
}

} // namespace OVR