static void BreadCrumbItemClicked(BreadcrumbBar.Item item) { var stageClicked = (StageNavigationItem)item.userdata; if (!stageClicked.valid) { return; } if (StageNavigationManager.instance.currentItem == stageClicked) { EditorGUIUtility.PingObject(AssetDatabase.LoadMainAssetAtPath(stageClicked.prefabAssetPath)); } else { StageNavigationManager.instance.SwitchToStage(stageClicked, false, true, StageNavigationManager.Analytics.ChangeType.NavigateViaBreadcrumb); } }
void BreadCrumbItemClicked(BreadcrumbBar.Item item) { var stageClicked = (Stage)item.userdata; if (!stageClicked.isValid) { return; } if (StageNavigationManager.instance.currentStage == stageClicked) { EditorGUIUtility.PingObject(AssetDatabase.LoadMainAssetAtPath(stageClicked.assetPath)); } else { // The BreadCrumbItemClicked event is called during the SceneView's OnGUI and if we switch stage directly we might delete the // target of the SceneView's activeEditors which the rest of the SceneView's OnGUI is not expecting. // E.g it will cause null ref exceptions in OnSceneGUI(). Instead we delay switching until the next Update. m_StageClickedFromBreadcrumb = stageClicked; EditorApplication.update += SwitchStageOnNextUpdate; } }
internal override BreadcrumbBar.Item CreateBreadcrumbItem() { BreadcrumbBar.Item item = base.CreateBreadcrumbItem(); item.separatorstyle = BreadcrumbBar.SeparatorStyle.None; return(item); }