public override float GetHeight(SerializedProperty property, GUIContent label, float height) { if (!IsVisible()) { return(height); } if (property.propertyType != SerializedPropertyType.ObjectReference) { return(height); } var data = m_Data.Get(property.propertyPath); if (property.objectReferenceValue == null) { data.serializedObject = null; return(height); } if (!always && !property.isExpanded) { return(height); } Update(); data.height = height; data.maxHeight = maxHeight; data.serializedObject = new SerializedObject(property.objectReferenceValue); data.serializedObject.Update(); var result = InlineProperty.GetHeight(data.serializedObject, data.propertyHeights); data.inlineHeight = result; if (maxHeight >= 0) { result = Mathf.Min(result, maxHeight); } height += result + 2 + m_Top + m_Bottom; if (result <= 0) { height = data.height; } return(height); }
public override void AfterGUI(Rect position, SerializedProperty property, GUIContent label) { if (!m_Visible) { return; } if (property.propertyType != SerializedPropertyType.ObjectReference) { return; } var data = m_Data.Get(property.propertyPath); if (data.serializedObject == null) { return; } if (!always && !property.isExpanded) { return; } var indent = m_Position.indent(indented); indent.yMin += data.height + 2; indent.yMax -= 0; if (m_Left < 0) { indent.xMin += m_Left; } if (m_Right < 0) { indent.xMax -= m_Right; } if (data.inlineHeight > 0) { GUI.Label(indent, GUIContent.none, m_Style); } var text = label.text; var image = label.image; var tooltip = label.tooltip; int indentLevel = EditorGUI.indentLevel; if (indentChildren) { EditorGUI.indentLevel++; } var rect = m_Position.indent(indentChildren); rect.yMin += data.height + 2; rect.xMin += Mathf.Max(0, m_Left); rect.xMax -= Mathf.Max(0, m_Right); rect.yMin += m_Top; EditorGUI.indentLevel = indentLevel; var realHeight = data.inlineHeight; var view = new Rect(rect); view.height = realHeight; if (realHeight > rect.height) { view.width -= 16; } var realWidth = view.width; if (realHeight > rect.height) { data.scroll = GUI.BeginScrollView(rect, data.scroll, view); } rect.width = realWidth; InlineProperty.Draw(rect, data.serializedObject, false, data.propertyHeights); if (realHeight > rect.height) { GUI.EndScrollView(); } EditorGUI.indentLevel = indentLevel; label.text = text; label.image = image; label.tooltip = tooltip; }