internal bool DrawInspector(Rect contentRect)
{
int num6;
bool flag4;
if (s_styles == null)
{
s_styles = new Styles();
}
base.serializedObject.Update();
GameObject target = this.target as GameObject;
EditorGUIUtility.labelWidth = 52f;
bool enabled = GUI.enabled;
GUI.enabled = true;
GUI.Label(new Rect(contentRect.x, contentRect.y, contentRect.width, contentRect.height + 3f), GUIContent.none, EditorStyles.inspectorBig);
GUI.enabled = enabled;
float width = contentRect.width;
float y = contentRect.y;
GUIContent goIcon = null;
PrefabType none = PrefabType.None;
if (this.m_AllOfSamePrefabType)
{
none = PrefabUtility.GetPrefabType(target);
switch (none)
{
case PrefabType.None:
goIcon = s_styles.goIcon;
break;
case PrefabType.Prefab:
case PrefabType.PrefabInstance:
case PrefabType.DisconnectedPrefabInstance:
goIcon = s_styles.prefabIcon;
break;
case PrefabType.ModelPrefab:
case PrefabType.ModelPrefabInstance:
case PrefabType.DisconnectedModelPrefabInstance:
goIcon = s_styles.modelIcon;
break;
case PrefabType.MissingPrefabInstance:
goIcon = s_styles.prefabIcon;
break;
}
}
else
{
goIcon = s_styles.typelessIcon;
}
EditorGUI.ObjectIconDropDown(new Rect(3f, 4f + y, 24f, 24f), base.targets, true, goIcon.image as Texture2D, this.m_Icon);
EditorGUI.BeginDisabledGroup(none == PrefabType.ModelPrefab);
EditorGUI.PropertyField(new Rect(34f, 4f + y, 14f, 14f), this.m_IsActive, GUIContent.none);
float num3 = s_styles.staticFieldToggleWidth + 15f;
float num4 = ((width - 52f) - num3) - 5f;
EditorGUI.BeginChangeCheck();
EditorGUI.showMixedValue = this.m_Name.hasMultipleDifferentValues;
string name = EditorGUI.DelayedTextField(new Rect(52f, (4f + y) + 1f, num4, 16f), target.name, null, EditorStyles.textField);
EditorGUI.showMixedValue = false;
if (EditorGUI.EndChangeCheck())
{
foreach (UnityEngine.Object obj3 in base.targets)
{
ObjectNames.SetNameSmart(obj3 as GameObject, name);
}
}
Rect totalPosition = new Rect(width - num3, 4f + y, s_styles.staticFieldToggleWidth, 16f);
EditorGUI.BeginProperty(totalPosition, GUIContent.none, this.m_StaticEditorFlags);
EditorGUI.BeginChangeCheck();
Rect position = totalPosition;
EditorGUI.showMixedValue |= ShowMixedStaticEditorFlags((StaticEditorFlags)this.m_StaticEditorFlags.intValue);
Event current = Event.current;
EventType type = current.type;
bool flag2 = (current.type == EventType.MouseDown) && (current.button != 0);
if (flag2)
{
current.type = EventType.Ignore;
}
bool flagValue = EditorGUI.ToggleLeft(position, "Static", target.isStatic);
if (flag2)
{
current.type = type;
}
EditorGUI.showMixedValue = false;
if (EditorGUI.EndChangeCheck())
{
SceneModeUtility.SetStaticFlags(base.targets, -1, flagValue);
base.serializedObject.SetIsDifferentCacheDirty();
}
EditorGUI.EndProperty();
EditorGUI.BeginChangeCheck();
EditorGUI.showMixedValue = this.m_StaticEditorFlags.hasMultipleDifferentValues;
EditorGUI.EnumMaskField(new Rect(totalPosition.x + s_styles.staticFieldToggleWidth, totalPosition.y, 10f, 14f), GameObjectUtility.GetStaticEditorFlags(target), s_styles.staticDropdown, out num6, out flag4);
EditorGUI.showMixedValue = false;
if (EditorGUI.EndChangeCheck())
{
SceneModeUtility.SetStaticFlags(base.targets, num6, flag4);
base.serializedObject.SetIsDifferentCacheDirty();
}
float num7 = 4f;
float num8 = 4f;
EditorGUIUtility.fieldWidth = ((((width - num7) - 52f) - s_styles.layerFieldWidth) - num8) / 2f;
string tag = null;
try
{
tag = target.tag;
}
catch (Exception)
{
tag = "Undefined";
}
EditorGUIUtility.labelWidth = s_styles.tagFieldWidth;
Rect rect3 = new Rect(52f - EditorGUIUtility.labelWidth, 24f + y, EditorGUIUtility.labelWidth + EditorGUIUtility.fieldWidth, 16f);
EditorGUI.BeginProperty(rect3, GUIContent.none, this.m_Tag);
EditorGUI.BeginChangeCheck();
string str3 = EditorGUI.TagField(rect3, EditorGUIUtility.TempContent("Tag"), tag);
if (EditorGUI.EndChangeCheck())
{
this.m_Tag.stringValue = str3;
Undo.RecordObjects(base.targets, "Change Tag of " + this.targetTitle);
foreach (UnityEngine.Object obj4 in base.targets)
{
(obj4 as GameObject).tag = str3;
}
}
EditorGUI.EndProperty();
EditorGUIUtility.labelWidth = s_styles.layerFieldWidth;
rect3 = new Rect((52f + EditorGUIUtility.fieldWidth) + num7, 24f + y, EditorGUIUtility.labelWidth + EditorGUIUtility.fieldWidth, 16f);
EditorGUI.BeginProperty(rect3, GUIContent.none, this.m_Layer);
EditorGUI.BeginChangeCheck();
int layer = EditorGUI.LayerField(rect3, EditorGUIUtility.TempContent("Layer"), target.layer);
if (EditorGUI.EndChangeCheck())
{
GameObjectUtility.ShouldIncludeChildren children = GameObjectUtility.DisplayUpdateChildrenDialogIfNeeded(base.targets.OfType <GameObject>(), "Change Layer", "Do you want to set layer to " + InternalEditorUtility.GetLayerName(layer) + " for all child objects as well?");
if (children != GameObjectUtility.ShouldIncludeChildren.Cancel)
{
this.m_Layer.intValue = layer;
this.SetLayer(layer, children == GameObjectUtility.ShouldIncludeChildren.IncludeChildren);
}
}
EditorGUI.EndProperty();
if (!this.m_HasInstance || EditorApplication.isPlayingOrWillChangePlaymode)
{
goto Label_0992;
}
float num11 = ((width - 52f) - 5f) / 3f;
Rect rect4 = new Rect(52f + (num11 * 0f), 44f + y, num11, 15f);
Rect rect5 = new Rect(52f + (num11 * 1f), 44f + y, num11, 15f);
Rect rect6 = new Rect(52f + (num11 * 2f), 44f + y, num11, 15f);
Rect rect7 = new Rect(52f, 44f + y, num11 * 3f, 15f);
GUIContent content2 = (base.targets.Length <= 1) ? s_styles.goTypeLabel[(int)none] : s_styles.goTypeLabelMultiple;
if (content2 != null)
{
float x = GUI.skin.label.CalcSize(content2).x;
switch (none)
{
case PrefabType.DisconnectedModelPrefabInstance:
case PrefabType.MissingPrefabInstance:
case PrefabType.DisconnectedPrefabInstance:
GUI.contentColor = GUI.skin.GetStyle("CN StatusWarn").normal.textColor;
if (none == PrefabType.MissingPrefabInstance)
{
GUI.Label(new Rect(52f, 44f + y, (width - 52f) - 5f, 18f), content2, EditorStyles.whiteLabel);
}
else
{
GUI.Label(new Rect((52f - x) - 5f, 44f + y, (width - 52f) - 5f, 18f), content2, EditorStyles.whiteLabel);
}
GUI.contentColor = Color.white;
goto Label_078B;
}
Rect rect8 = new Rect((52f - x) - 5f, 44f + y, x, 18f);
GUI.Label(rect8, content2);
}
Label_078B:
if (base.targets.Length > 1)
{
GUI.Label(rect7, "Instance Management Disabled", s_styles.instanceManagementInfo);
}
else
{
if ((none != PrefabType.MissingPrefabInstance) && GUI.Button(rect4, "Select", "MiniButtonLeft"))
{
Selection.activeObject = PrefabUtility.GetPrefabParent(this.target);
EditorGUIUtility.PingObject(Selection.activeObject);
}
if (((none == PrefabType.DisconnectedModelPrefabInstance) || (none == PrefabType.DisconnectedPrefabInstance)) && GUI.Button(rect5, "Revert", "MiniButtonMid"))
{
Undo.RegisterFullObjectHierarchyUndo(target, "Revert to prefab");
PrefabUtility.ReconnectToLastPrefab(target);
PrefabUtility.RevertPrefabInstance(target);
this.CalculatePrefabStatus();
Undo.RegisterCreatedObjectUndo(target, "Reconnect prefab");
GUIUtility.ExitGUI();
}
bool flag5 = GUI.enabled;
GUI.enabled = GUI.enabled && !AnimationMode.InAnimationMode();
if (((none == PrefabType.ModelPrefabInstance) || (none == PrefabType.PrefabInstance)) && GUI.Button(rect5, "Revert", "MiniButtonMid"))
{
Undo.RegisterFullObjectHierarchyUndo(target, "Revert Prefab Instance");
PrefabUtility.RevertPrefabInstance(target);
this.CalculatePrefabStatus();
GUIUtility.ExitGUI();
}
if ((none == PrefabType.PrefabInstance) || (none == PrefabType.DisconnectedPrefabInstance))
{
GameObject source = PrefabUtility.FindValidUploadPrefabInstanceRoot(target);
GUI.enabled = (source != null) && !AnimationMode.InAnimationMode();
if (GUI.Button(rect6, "Apply", "MiniButtonRight"))
{
UnityEngine.Object prefabParent = PrefabUtility.GetPrefabParent(source);
string assetPath = AssetDatabase.GetAssetPath(prefabParent);
string[] assets = new string[] { assetPath };
if (Provider.PromptAndCheckoutIfNeeded(assets, "The version control requires you to check out the prefab before applying changes."))
{
PrefabUtility.ReplacePrefab(source, prefabParent, ReplacePrefabOptions.ConnectToPrefab);
this.CalculatePrefabStatus();
GUIUtility.ExitGUI();
}
}
}
GUI.enabled = flag5;
if (((none == PrefabType.DisconnectedModelPrefabInstance) || (none == PrefabType.ModelPrefabInstance)) && GUI.Button(rect6, "Open", "MiniButtonRight"))
{
AssetDatabase.OpenAsset(PrefabUtility.GetPrefabParent(this.target));
GUIUtility.ExitGUI();
}
}
Label_0992:
EditorGUI.EndDisabledGroup();
base.serializedObject.ApplyModifiedProperties();
return(true);
}