public Rect Draw(Rect position) { #if UNITY_EDITOR if (Platform.EditorMode) { bool headerHeightDetermined = true; var actualDrawnPosition = EditorGUIDrawer.AssetHeader(position, editor, ref headerHeightDetermined); #if UNITY_2018_3_OR_NEWER if (isPrefab) { const float padding = 3f; const float doublePadding = padding + padding; position.y += position.height - OpenInPrefabModeButtonHeight + padding; position.height = OpenInPrefabModeButtonHeight - doublePadding; DrawGUI.Active.ColorRect(position, InspectorUtility.Preferences.theme.AssetHeaderBackground); position.x += padding; position.width -= doublePadding; // UPDATE: even if prefab is being drawn in grayed out color // due to being inactive, draw the open prefab button without // being grayed out, to make it clear that it remains usable. var guiColorWas = GUI.color; var setColor = guiColorWas; setColor.a = 1f; GUI.color = setColor; if (GUI.Button(position, OpenPrefabButtonLabel)) { DrawGUI.UseEvent(); GameObjectDrawer.OpenPrefab(targets[0]); } GUI.color = guiColorWas; actualDrawnPosition.height += OpenInPrefabModeButtonHeight; } #endif return(actualDrawnPosition); } #endif DrawGUI.Runtime.GameObjectHeader(position, targets[0]); return(position); }