internal void RefreshStatus() { if (m_TreeView != null) { m_TreeView.Reload(); m_TreeView.CullNonExistingItemsFromSelection(); } if (m_SelectedGameObjects.Length == 1) { UpdateTextSingle(PrefabUtility.GetCorrespondingObjectFromSource(m_SelectedGameObjects[0])); } else { UpdateTextMultiple(); } m_AnyOverrides = false; m_Disconnected = false; m_InvalidComponentOnInstance = false; m_ModelPrefab = false; m_Immutable = false; m_InvalidComponentOnAsset = false; for (int i = 0; i < m_SelectedGameObjects.Length; i++) { UpdateStatusChecks(m_SelectedGameObjects[i]); } }
internal void RefreshStatus(bool reloadTreeView = true) { if (m_TreeView != null && reloadTreeView) { if (!m_TreeView.IsValidTargetPrefabInstance()) { editorWindow.Close(); return; } m_TreeView.Reload(); m_TreeView.CullNonExistingItemsFromSelection(); } m_AnyOverrides = false; m_InvalidComponentOnInstance = false; m_ModelPrefab = false; m_Immutable = false; m_InvalidComponentOnAsset = false; m_HasManagedReferencesWithMissingTypesOnAsset = false; for (int i = 0; i < m_SelectedGameObjects.Length; i++) { UpdateStatusChecks(m_SelectedGameObjects[i]); } if (m_SelectedGameObjects.Length == 1) { UpdateTextSingle(PrefabUtility.GetCorrespondingObjectFromSource(m_SelectedGameObjects[0])); } else { UpdateTextMultiple(); } // There are a few cases where the Tree View reports no overrides even though // PrefabUtility.HasPrefabInstanceAnyOverrides says there are; for example if // a component has been removed on an instance, but also removed on the Asset. // In these cases we want to make the UI not show apply/revert buttons, // since it's confusing and inconsistent to have those when the view says // "No overrides". Case 1197800. if (m_TreeView != null && !m_TreeView.hasModifications) { m_AnyOverrides = false; } m_UnusedOverridesExist = PrefabUtility.HavePrefabInstancesUnusedOverrides(m_SelectedGameObjects); }