private void OnItemDataBinding(object sender, VirtualizingTreeViewItemDataBindingArgs e)
        {
            ProjectItem item = e.Item as ProjectItem;

            if (item != null)
            {
                Text text = e.ItemPresenter.GetComponentInChildren <Text>(true);
                text.text = item.Name;

                ProjectItemView itemView = e.ItemPresenter.GetComponentInChildren <ProjectItemView>(true);
                itemView.ProjectItem = item;

                Toggle toogle = e.ItemPresenter.GetComponentInChildren <Toggle>(true);
                toogle.isOn = m_treeView.IsItemSelected(item);

                AssetLibraryImportStatus status = e.ItemPresenter.GetComponentInChildren <AssetLibraryImportStatus>(true);
                if (item is ImportItem)
                {
                    ImportItem importItem = (ImportItem)item;
                    status.Current = importItem.Status;
                }
                else
                {
                    status.Current = ImportStatus.None;
                }

                e.HasChildren = item.Children != null && item.Children.Count > 0;
            }
        }
예제 #2
0
        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));
            });
        }
예제 #3
0
        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));
            });
        }
예제 #4
0
        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));
                }
            });
        }
예제 #5
0
        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);
            });
        }
예제 #6
0
        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;
            });
        }
예제 #7
0
        private void OnItemDataBinding(object sender, VirtualizingTreeViewItemDataBindingArgs e)
        {
            ProjectItem item = e.Item as ProjectItem;

            if (item != null)
            {
                Text text = e.ItemPresenter.GetComponentInChildren <Text>(true);
                text.text = item.Name;

                ProjectItemView itemView = e.ItemPresenter.GetComponentInChildren <ProjectItemView>(true);
                itemView.ProjectItem = item;

                Toggle toogle = e.ItemPresenter.GetComponentInChildren <Toggle>();
                toogle.isOn = m_treeView.IsItemSelected(item);

                e.HasChildren = item.Children != null && item.Children.Count > 0;
            }
        }
        private void OnItemDataBinding(object sender, ItemDataBindingArgs e)
        {
            ProjectItem projectItem = e.Item as ProjectItem;

            if (projectItem == null)
            {
                Text text = e.ItemPresenter.GetComponentInChildren <Text>(true);
                text.text = null;
                ProjectItemView itemView = e.ItemPresenter.GetComponentInChildren <ProjectItemView>(true);
                itemView.ProjectItem = null;
            }
            else
            {
                Text text = e.ItemPresenter.GetComponentInChildren <Text>(true);
                text.text = projectItem.Name;
                ProjectItemView itemView = e.ItemPresenter.GetComponentInChildren <ProjectItemView>(true);
                itemView.ProjectItem = projectItem;
            }
        }
예제 #9
0
        //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());
             *
             *  });
             * });
             */
        }
예제 #10
0
        private void OnItemDataBinding(object sender, ItemDataBindingArgs e)
        {
            ProjectItem projectItem = e.Item as ProjectItem;

            if (projectItem != null)
            {
                Text text = e.ItemPresenter.GetComponentInChildren <Text>(true);
                text.text = projectItem.Name;
                ProjectItemView itemView = e.ItemPresenter.GetComponentInChildren <ProjectItemView>(true);
                itemView.ProjectItem = projectItem;



                //projectItemView.Set(ProjectItemType.Scene, null);
                //if (pair.IsFolder || pair.IsScene)
                //{
                //    UnityObject obj = pair.Object;
                //    ProjectItemType itemType = ProjectItemType.None;
                //    if (pair.IsFolder)
                //    {
                //        if (pair.ProjectItem.IsExposedFromEditor)
                //        {
                //            itemType = ProjectItemType.ExposedFolder;
                //        }
                //        else
                //        {
                //            itemType = ProjectItemType.Folder;
                //        }

                //    }
                //    else if (pair.IsScene)
                //    {
                //        itemType = ProjectItemType.Scene;
                //    }

                //    rtResource.Set(itemType, null);
                //    text.text = pair.ProjectItem.Name;
                //}
                //else
                //{
                //    if (pair.ProjectItem != null && pair.ProjectItem.IsExposedFromEditor)
                //    {
                //        rtResource.Set(ProjectItemType.ExposedResource, pair.Object);
                //    }
                //    else
                //    {
                //        if (pair.Object is NoneItem)
                //        {
                //            rtResource.Set(ProjectItemType.None, pair.Object);
                //        }
                //        else
                //        {
                //            rtResource.Set(ProjectItemType.Resource, pair.Object);
                //        }

                //    }

                //    if (pair.ProjectItem != null)
                //    {
                //        text.text = pair.ProjectItem.Name;
                //    }
                //    else
                //    {
                //        text.text = pair.Object.name;
                //    }
                //}

                //if (pair.ProjectItem != null)
                //{
                //    ProjectItem item = pair.ProjectItem;
                //    e.CanEdit = !item.IsExposedFromEditor;
                //    if (item.IsFolder && item.IsScene)
                //    {
                //        e.CanDrag = !item.IsExposedFromEditor;
                //    }
                //    else
                //    {
                //        e.CanDrag = true;
                //    }
                //}
                //else
                //{
                //    e.CanDrag = false;
                //    e.CanEdit = false;
                //}
            }
        }
예제 #11
0
        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();
            });
        }
예제 #12
0
        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);
                    }
                }
            });
        }