void FilterSettingsChanged() { var filter = new SearchFilter(); if (m_IsShowingAssets) { filter.searchArea = SearchFilter.SearchArea.AllAssets; } filter.SearchFieldStringToFilter(m_SearchFilter); if (!string.IsNullOrEmpty(m_RequiredType) && filter.classNames.Length == 0) { filter.classNames = new[] { m_RequiredType }; } var hierarchyType = m_IsShowingAssets ? HierarchyType.Assets : HierarchyType.GameObjects; if (hierarchyType == HierarchyType.GameObjects) { if (m_ObjectBeingEdited != null) { var scene = GetSceneFromObject(m_ObjectBeingEdited); if (scene.IsValid()) { // We do not support cross scene references so ensure we only show game objects // from the same scene as the object being edited is part of. // Also don't allow references to other scenes if object being edited // is in a preview scene. if (EditorSceneManager.IsPreviewScene(scene) || EditorSceneManager.preventCrossSceneReferences) { filter.sceneHandles = new[] { scene.handle } } ; } } else { // If we don't know which object is being edited, assume it's one in current stage. PreviewSceneStage previewSceneStage = StageUtility.GetCurrentStage() as PreviewSceneStage; if (previewSceneStage != null) { filter.sceneHandles = new[] { previewSceneStage.scene.handle }; } } } if (hierarchyType == HierarchyType.Assets) { // When AssemblyDefinitionAsset is the required type, don't skip hidden packages if (!string.IsNullOrEmpty(m_RequiredType) && m_RequiredType == typeof(AssemblyDefinitionAsset).Name) { m_SkipHiddenPackages = false; } filter.skipHidden = m_SkipHiddenPackages; } m_ListArea.Init(listPosition, hierarchyType, filter, true); }
public void EnableAllPicking() { Undo.RecordObject(SceneVisibilityState.GetInstance(), "Enable All Picking"); PreviewSceneStage previewSceneStage = StageNavigationManager.instance.currentStage as PreviewSceneStage; if (previewSceneStage != null) { SceneVisibilityState.EnablePicking(previewSceneStage.scene); } else { for (int i = 0; i < SceneManager.sceneCount; i++) { EnablePickingNoUndo(SceneManager.GetSceneAt(i)); } } }
private void DisableAllPickingNoUndo() { PreviewSceneStage previewSceneStage = StageNavigationManager.instance.currentStage as PreviewSceneStage; if (previewSceneStage != null) { var scene = previewSceneStage.scene; SceneVisibilityState.EnablePicking(previewSceneStage.scene); SceneVisibilityState.DisablePicking(scene); } else { for (int i = 0; i < SceneManager.sceneCount; i++) { DisablePicking(SceneManager.GetSceneAt(i)); } } }
private static void Initialize() { Undo.undoRedoPerformed += UndoRedoPerformed; EditorSceneManager.newSceneCreated += EditorSceneManagerOnNewSceneCreated; EditorSceneManager.sceneSaving += EditorSceneManagerOnSceneSaving; EditorSceneManager.sceneSaved += EditorSceneManagerOnSceneSaved; EditorSceneManager.sceneOpening += EditorSceneManagerOnSceneOpening; EditorSceneManager.sceneOpened += EditorSceneManagerOnSceneOpened; EditorSceneManager.sceneClosing += EditorSceneManagerOnSceneClosing; EditorApplication.playModeStateChanged += EditorApplicationPlayModeStateChanged; StageNavigationManager.instance.afterSuccessfullySwitchedToStage += StageNavigationManagerAfterSuccessfullySwitchedToStage; SceneVisibilityState.internalStructureChanged += InternalStructureChanged; PreviewSceneStage stage = StageNavigationManager.instance.currentStage as PreviewSceneStage; SceneVisibilityState.ForceDataUpdate(); s_ShortcutContext = new ShortcutContext(); EditorApplication.delayCall += () => ShortcutIntegration.instance.contextManager.RegisterToolContext(s_ShortcutContext); }
void FilterSettingsChanged() { var filter = new SearchFilter(); if (m_IsShowingAssets) { filter.searchArea = SearchFilter.SearchArea.AllAssets; } filter.SearchFieldStringToFilter(m_SearchFilter); if (filter.classNames.Length == 0 && m_RequiredTypes.All(type => !string.IsNullOrEmpty(type))) { filter.classNames = m_RequiredTypes; } var hierarchyType = m_IsShowingAssets ? HierarchyType.Assets : HierarchyType.GameObjects; if (hierarchyType == HierarchyType.GameObjects) { if (m_ObjectBeingEdited != null) { var scene = GetSceneFromObject(m_ObjectBeingEdited); if (scene.IsValid()) { // We do not support cross scene references so ensure we only show game objects // from the same scene as the object being edited is part of. // Also don't allow references to other scenes if object being edited // is in a preview scene. if (EditorSceneManager.IsPreviewScene(scene) || EditorSceneManager.preventCrossSceneReferences) { filter.sceneHandles = new[] { scene.handle } } ; } } else { // If we don't know which object is being edited, assume it's one in current stage. PreviewSceneStage previewSceneStage = StageUtility.GetCurrentStage() as PreviewSceneStage; if (previewSceneStage != null) { filter.sceneHandles = new[] { previewSceneStage.scene.handle }; } } } if (hierarchyType == HierarchyType.Assets) { // When AssemblyDefinitionAsset is the required type, don't skip hidden packages foreach (var type in m_RequiredTypes) { if (!string.IsNullOrEmpty(type) && type == typeof(AssemblyDefinitionAsset).Name) { m_SkipHiddenPackages = false; break; } } filter.skipHidden = m_SkipHiddenPackages; } bool hasObject = false; var requiredTypes = new List <Type>(); var objectTypes = TypeCache.GetTypesDerivedFrom <UnityEngine.Object>(); foreach (var type in m_RequiredTypes) { foreach (var objectType in objectTypes) { if (objectType.Name == type) { requiredTypes.Add(objectType); } else if (!hasObject) { requiredTypes.Add(typeof(UnityObject)); hasObject = true; } } } m_ListArea.InitForSearch(listPosition, hierarchyType, filter, true, s => { foreach (var type in requiredTypes) { var asset = AssetDatabase.LoadAssetAtPath(s, type); if (asset != null && asset.GetInstanceID() != 0) { return(asset.GetInstanceID()); } } return(0); }, m_LegacySearchSessionOptions); }