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

namespace OVR
{

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

OSPPropsPropertyDrawer

-----------------------
*/
[CustomPropertyDrawer(typeof(OSPProps))]
public class OSPPropsPropertyDrawer : PropertyDrawer {

	static float lineHeight = EditorGUIUtility.singleLineHeight + 2.0f;
	static float indent = 32.0f;
	// TODO - some day just enumerate these
	static string[] props = new string[] { "useFastOverride", "gain", "enableInvSquare", "volumetric" , "invSquareFalloff" };
	static string[] names = new string[] { "Reflections Enabled", "Gain", "Enable Oculus Atten.", "Volumetric", "Range" };
	static int[] lines = new int[] { 1, 1, 1, 1, 2, 2 };
	/*
	-----------------------
	OnGUI()
	-----------------------
	*/
	public override void OnGUI( Rect position, SerializedProperty prop, GUIContent label ) {
        SerializedProperty playSpatializedProp = prop.FindPropertyRelative("enableSpatialization");
		position.height = lineHeight;
		EditorGUI.PropertyField( position, playSpatializedProp );
		if ( playSpatializedProp.boolValue ) {
			position.y += lineHeight + 4.0f;
			Rect posLine = position;
			posLine.x += indent;
			posLine.width -= indent;
			posLine.height = 1f;
			GUI.Box( posLine, "" );
			position.y -= 10.0f;
			for ( int i = 0; i < props.Length; i++ ) {
				position.y += lineHeight;
				position.height = ( lineHeight * lines[i] );
				SerializedProperty sibling = prop.FindPropertyRelative( props[i] );
				EditorGUI.PropertyField( position, sibling, new GUIContent( names[i] ) );
			}
		}
	}

	/*
	-----------------------
	GetPropertyHeight()
	-----------------------
	*/
	public override float GetPropertyHeight (SerializedProperty prop, GUIContent label) {
        SerializedProperty playSpatializedProp = prop.FindPropertyRelative("enableSpatialization");
		if ( !playSpatializedProp.boolValue ) {
			return base.GetPropertyHeight( prop, label );
		} else {
			return base.GetPropertyHeight( prop, label ) + ( lineHeight * ( props.Length + 1 ) ) + 16.0f;
		}
	}

}

} // namespace OVR