private void OnProjectTreeSelectionChanged(object sender, SelectionChangedArgs <ProjectItem> e) { m_project.GetAssetItems(e.NewItems, (error, assets) => { if (error.HasError) { m_windowManager.MessageBox(m_localization.GetString("ID_RTEditor_ProjectView_CantGetAssets", "Can't get assets"), error.ToString()); return; } StartCoroutine(ProjectItemView.CoCreatePreviews(assets, m_project, m_resourcePreview)); StartCoroutine(CoSetItems(e, assets)); }); }
private void DataBind(ProjectItem[] projectItems, string searchPattern) { m_project.GetAssetItems(projectItems, searchPattern, (error, assets) => { if (error.HasError) { m_windowManager.MessageBox(m_localization.GetString("ID_RTEditor_ProjectView_CantGetAssets", "Can't get assets"), error.ToString()); return; } StartCoroutine(ProjectItemView.CoCreatePreviews(assets, m_project, m_resourcePreview)); StartCoroutine(CoSetItems(projectItems, assets)); }); }
private void Start() { m_editor = IOC.Resolve <IRTE>(); m_parentPopup = GetComponentInParent <PopupWindow>(); if (m_parentPopup != null) { m_parentPopup.OK.AddListener(OnOK); } m_treeView = GetComponentInChildren <VirtualizingTreeView>(); if (m_treeView == null) { m_treeView = Instantiate(TreeViewPrefab); m_treeView.transform.SetParent(transform, false); } m_treeView.ItemDataBinding += OnItemDataBinding; m_treeView.ItemDoubleClick += OnItemDoubleClick; m_treeView.ItemExpanding += OnItemExpanding; m_treeView.CanDrag = false; m_treeView.CanEdit = false; m_project = IOC.Resolve <IProject>(); m_editor.IsBusy = true; m_project.LoadAssetLibrary(Array.IndexOf(m_project.AssetLibraries, m_selectedAssetLibrary), (error, root) => { m_editor.IsBusy = false; if (error.HasError) { PopupWindow.Show("Unable to load AssetLibrary", error.ErrorText, "OK", arg => { m_parentPopup.Close(false); }); } else { m_treeView.Items = new[] { root }; m_treeView.SelectedItems = root.Flatten(false); ExpandAll(root); IResourcePreviewUtility resourcePreview = IOC.Resolve <IResourcePreviewUtility>(); StartCoroutine(ProjectItemView.CoCreatePreviews(root.Flatten(false), m_project, resourcePreview)); } }); }
private void OnProjectTreeSelectionChanged(object sender, SelectionChangedArgs <ProjectItem> e) { ShowProgress = true; m_project.GetAssetItems(e.NewItems, (error, assets) => { ShowProgress = false; if (error.HasError) { PopupWindow.Show("Can't GetAssets", error.ToString(), "OK"); return; } StartCoroutine(ProjectItemView.CoCreatePreviews(assets, m_project, m_resourcePreview)); m_projectResources.SetItems(e.NewItems.ToArray(), assets, true); }); }
private void OnProjectTreeSelectionChanged(object sender, SelectionChangedArgs <ProjectItem> e) { m_project.GetAssetItems(e.NewItems, (error, assets) => { if (error.HasError) { m_windowManager.MessageBox("Can't GetAssets", error.ToString()); return; } StartCoroutine(ProjectItemView.CoCreatePreviews(assets, m_project, m_resourcePreview)); bool wasEnabled = Editor.Selection.Enabled; Editor.Selection.Enabled = false; m_projectResources.SetItems(e.NewItems.ToArray(), assets, true); Editor.Selection.Enabled = true; }); }
//private bool CanDuplicate(ProjectItemObjectPair itemObjectPair) //{ // ProjectItem projectItem = itemObjectPair.ProjectItem; // if (projectItem.TypeCode == ProjectItemTypes.Texture) // { // return (itemObjectPair.Object as Texture2D).IsReadable(); // } // else if (projectItem.TypeCode == ProjectItemTypes.ProceduralMaterial) // { // return false; //unable to duplicate procedural materials // } // return projectItem != null && (!projectItem.IsExposedFromEditor || !projectItem.IsFolder); //} //private ProjectItemObjectPair[] GetSelection(bool checkIfCanDuplicate) //{ // ProjectItemObjectPair[] selection = m_projectResources.SelectionToProjectItemObjectPair(m_projectResources.SelectedItems); // if (selection == null) // { // return new ProjectItemObjectPair[0]; // } // selection = selection.Where(iop => iop.ProjectItem != null && (!checkIfCanDuplicate || CanDuplicate(iop))).ToArray(); // if (selection.Length == 0) // { // return new ProjectItemObjectPair[0]; // } // return selection; //} //private void DuplicateProjectResources() //{ // ProjectItemObjectPair[] selection = GetSelection(true); // if (selection.Length == 0) // { // return; // } // ShowProgress = true; // m_projectManager.SaveObjects(selection.Where(iop => iop.IsResource).ToArray(), () => // { // m_projectManager.Duplicate(selection.Select(p => p.ProjectItem).ToArray(), duplicatedItems => // { // ProjectItem parent = null; // for (int i = 0; i < selection.Length; ++i) // { // parent = selection[i].ProjectItem.Parent; // if (parent != null) // { // ProjectItem duplicatedItem = duplicatedItems[i]; // if (duplicatedItem.IsFolder) // { // m_projectTree.AddProjectItem(duplicatedItem, parent); // m_projectTree.DropProjectItem(duplicatedItem, parent); // } // else // { // parent.AddChild(duplicatedItem); // } // } // } // if (parent != null) // { // m_projectTree.SelectedFolder = parent; // } // m_projectManager.GetOrCreateObjects(m_projectTree.SelectedFolder, objects => // { // ShowProgress = false; // m_projectResources.SetSelectedItems(objects, duplicatedItems); // m_projectResources.SetObjects(objects, false); // if(m_projectResources.SelectedItems != null) // { // RuntimeSelection.objects = m_projectResources.SelectedItems.Where(o => o != null).ToArray(); // } // }); // }); // }); //} //private void OnBundledResourcesAdded(object sender, ProjectManagerEventArgs e) //{ // ShowProgress = true; // OnResourcesAdded(e); //} //private void OnDynamicResourcesAdded(object sender, ProjectManagerEventArgs e) //{ // ShowProgress = true; // OnResourcesAdded(e); //} //private void OnResourcesAdded(ProjectManagerEventArgs e) //{ // ProjectItemObjectPair[] selection = GetSelection(false); // m_projectManager.SaveObjects(selection.Where(iop => iop.IsResource).ToArray(), () => // { // m_projectManager.GetOrCreateObjects(m_projectTree.SelectedFolder, objects => // { // ShowProgress = false; // m_projectResources.SetSelectedItems(objects, e.ProjectItems.Take(1).ToArray()); // m_projectResources.SetObjects(objects, false); // if (m_projectResources.SelectedItems != null) // { // RuntimeSelection.activeObject = m_projectResources.SelectedItems.Where(o => o != null).FirstOrDefault(); // } // }); // }); //} //private void OnSceneCreated(object sender, ProjectManagerEventArgs e) //{ // ShowProgress = true; // m_projectManager.GetOrCreateObjects(m_projectTree.SelectedFolder, objects => // { // ShowProgress = false; // m_projectResources.SetObjects(objects, false); // }); //} //private void OnSceneSaved(object sender, ProjectManagerEventArgs e) //{ // ShowProgress = true; // m_projectManager.GetOrCreateObjects(m_projectTree.SelectedFolder, objects => // { // ShowProgress = false; // m_projectResources.SetObjects(objects, false); // }); //} //private void OnSceneLoaded(object sender, ProjectManagerEventArgs e) //{ // ShowProgress = true; // m_projectManager.GetOrCreateObjects(m_projectTree.SelectedFolder, objects => // { // ShowProgress = false; // m_projectResources.SetObjects(objects, false); // }); //} //private void OnProjectResourcesSelectionChanged(object sender, SelectionChangedArgs<ProjectItemObjectPair> e) //{ // if (e.IsUserAction) // { // RuntimeSelection.objects = e.NewItems.Where(p => p.Object != null).Select(p => p.Object).ToArray(); // } // ProjectItemObjectPair[] unselected = e.OldItems; // if (unselected != null) // { // unselected = unselected.Where( // p => p.IsResource && // // do not save mesh each time it unselected // p.ProjectItem.TypeCode != ProjectItemTypes.Mesh && // p.ProjectItem.TypeCode != ProjectItemTypes.Texture // ).ToArray(); // if (unselected.Length != 0) // { // ShowProgress = true; // m_projectManager.SaveObjects(unselected, () => // { // ShowProgress = false; // }); // } // } // UpdateCanDuplicateButtonState(e.NewItem); //} //private void UpdateCanDuplicateButtonState(ProjectItemObjectPair itemObjectPair) //{ // if (m_btnDuplicate != null) // { // if (itemObjectPair == null) // { // m_btnDuplicate.gameObject.SetActive(false); // } // else // { // m_btnDuplicate.gameObject.SetActive(CanDuplicate(itemObjectPair)); // } // } //} private void OnProjectTreeSelectionChanged(object sender, SelectionChangedArgs <ProjectItem> e) { if (m_btnAddFolder != null) { m_btnAddFolder.gameObject.SetActive(e.NewItem != null); } ShowProgress = true; m_project.GetAssetItems(e.NewItems, (error, assets) => { ShowProgress = false; if (error.HasError) { PopupWindow.Show("Can't GetAssets", error.ToString(), "OK"); return; } StartCoroutine(ProjectItemView.CoCreatePreviews(assets, m_project, m_resourcePreview)); m_projectResources.SetItems(e.NewItems.ToArray(), assets, true); }); // m_project.GetAssets() /* * m_projectManager.SaveObjects(GetSelection(false).Where( * iop => iop.IsResource && * // do not save mesh each time it unselected * //iop.ProjectItem.TypeCode != ProjectItemTypes.Texture && * iop.ProjectItem.TypeCode != ProjectItemTypes.Mesh * ).ToArray(), () => * { * m_projectManager.GetOrCreateObjects(e.NewItems, objects => * { * ShowProgress = false; * m_projectResources.SetObjects(objects, true); * * UpdateCanDuplicateButtonState(GetSelection(true).FirstOrDefault()); * * }); * }); */ }
private void Start() { m_parentDialog = GetComponentInParent <Dialog>(); m_parentDialog.IsOkVisible = true; m_parentDialog.IsCancelVisible = true; m_parentDialog.OkText = m_localization.GetString("ID_RTEditor_SelectObjectDialog_Select", "Select"); m_parentDialog.CancelText = m_localization.GetString("ID_RTEditor_SelectObjectDialog_Cancel", "Cancel"); m_parentDialog.Ok += OnOk; m_toggleAssets.onValueChanged.AddListener(OnAssetsTabSelectionChanged); m_project = IOC.Resolve <IProject>(); m_windowManager = IOC.Resolve <IWindowManager>(); IResourcePreviewUtility resourcePreview = IOC.Resolve <IResourcePreviewUtility>(); AssetItem[] assetItems = m_project.Root.Flatten(true, false).Where(item => { Type type = m_project.ToType((AssetItem)item); if (type == null) { return(false); } return(type == ObjectType || type.IsSubclassOf(ObjectType)); }).OfType <AssetItem>().ToArray(); m_treeView.SelectionChanged += OnSelectionChanged; m_treeView.ItemDataBinding += OnItemDataBinding; Editor.IsBusy = true; m_parentDialog.IsOkInteractable = false; m_project.GetAssetItems(assetItems, (error, assetItemsWithPreviews) => { if (error.HasError) { Editor.IsBusy = false; m_windowManager.MessageBox(m_localization.GetString("ID_RTEditor_SelectObjectDialog_CantGetAssets", "Can't GetAssets"), error.ToString()); return; } AssetItem none = new AssetItem(); none.Name = m_localization.GetString("ID_RTEditor_SelectObjectDialog_None", "None"); none.TypeGuid = m_noneGuid; assetItemsWithPreviews = new[] { none }.Union(assetItemsWithPreviews).ToArray(); m_previewsCreated = false; StartCoroutine(ProjectItemView.CoCreatePreviews(assetItemsWithPreviews, m_project, resourcePreview, () => { m_previewsCreated = true; HandleSelectionChanged((AssetItem)m_treeView.SelectedItem); m_treeView.ItemDoubleClick += OnItemDoubleClick; m_parentDialog.IsOkInteractable = m_previewsCreated && m_treeView.SelectedItem != null; Editor.IsBusy = false; if (m_filter != null) { if (!string.IsNullOrEmpty(m_filter.text)) { ApplyFilter(m_filter.text); } m_filter.onValueChanged.AddListener(OnFilterValueChanged); } })); m_assetsCache = assetItemsWithPreviews; m_treeView.Items = m_assetsCache; List <AssetItem> sceneCache = new List <AssetItem>(); sceneCache.Add(none); m_sceneObjects = new Dictionary <long, UnityObject>(); ExposeToEditor[] sceneObjects = Editor.Object.Get(false, true).ToArray(); for (int i = 0; i < sceneObjects.Length; ++i) { ExposeToEditor exposeToEditor = sceneObjects[i]; UnityObject obj = null; if (ObjectType == typeof(GameObject)) { obj = exposeToEditor.gameObject; } else if (ObjectType.IsSubclassOf(typeof(Component))) { obj = exposeToEditor.GetComponent(ObjectType); } if (obj != null) { AssetItem assetItem = new AssetItem() { ItemID = m_project.ToID(exposeToEditor), Name = exposeToEditor.name, }; assetItem.TypeGuid = m_project.ToGuid(typeof(GameObject)); assetItem.Preview = new Preview { ItemID = assetItem.ItemID, PreviewData = new byte[0] }; sceneCache.Add(assetItem); m_sceneObjects.Add(assetItem.ItemID, obj); } } m_sceneCache = sceneCache.ToArray(); }); }
private void Start() { m_parentDialog = GetComponentInParent <Dialog>(); m_parentDialog.IsOkVisible = true; m_parentDialog.OkText = "Import"; m_parentDialog.IsCancelVisible = true; m_parentDialog.CancelText = "Cancel"; m_parentDialog.Ok += OnOk; m_parentDialog.Cancel += OnCancel; m_windowManager = IOC.Resolve <IWindowManager>(); m_treeView = GetComponentInChildren <VirtualizingTreeView>(); if (m_treeView == null) { m_treeView = Instantiate(TreeViewPrefab, transform); m_treeView.name = "ImportAssetsTreeView"; } m_treeView.ItemDataBinding += OnItemDataBinding; m_treeView.ItemExpanding += OnItemExpanding; m_treeView.CanDrag = false; m_treeView.CanEdit = false; m_project = IOC.Resolve <IProject>(); Editor.IsBusy = true; m_project.LoadImportItems(m_selectedLibrary, m_isBuiltIn, (error, root) => { m_root = root; if (error.HasError) { Editor.IsBusy = false; m_windowManager.MessageBox("Unable to load AssetLibrary", error.ErrorText, (sender, arg) => { m_parentDialog.Close(false); }); } else { if (root.Children != null && root.Children.Count > 0) { if (m_txtNoItemsToImport != null) { m_txtNoItemsToImport.SetActive(false); } m_treeView.gameObject.SetActive(true); m_treeView.Items = new[] { root }; m_treeView.SelectedItems = root.Flatten(false); ExpandAll(root); Editor.IsBusy = true; IResourcePreviewUtility resourcePreview = IOC.Resolve <IResourcePreviewUtility>(); m_coCreatePreviews = ProjectItemView.CoCreatePreviews(root.Flatten(false), m_project, resourcePreview, () => { m_project.UnloadImportItems(root); Editor.IsBusy = false; m_coCreatePreviews = null; }); StartCoroutine(m_coCreatePreviews); } else { Editor.IsBusy = false; m_parentDialog.IsOkInteractable = false; if (m_txtNoItemsToImport != null) { m_txtNoItemsToImport.SetActive(true); } m_treeView.gameObject.SetActive(false); } } }); }