Exemplo n.º 1
0
        private void OnItemEndEdit(object sender, ItemDataBindingArgs e)
        {
            InputField inputField = e.EditorPresenter.GetComponentInChildren <InputField>(true);
            Text       text       = e.ItemPresenter.GetComponentInChildren <Text>(true);

            ProjectItemObjectPair itemObjectPair = (ProjectItemObjectPair)e.Item;
            string oldName = itemObjectPair.ProjectItem.Name;

            if (itemObjectPair.ProjectItem.Parent != null)
            {
                ProjectItem parentItem = itemObjectPair.ProjectItem.Parent;
                string      newNameExt = inputField.text.Trim() + "." + itemObjectPair.ProjectItem.Ext;
                if (!string.IsNullOrEmpty(inputField.text.Trim()) && ProjectItem.IsValidName(inputField.text.Trim()) && !parentItem.Children.Any(p => p.NameExt == newNameExt))
                {
                    string newName = inputField.text.Trim();
                    itemObjectPair.ProjectItem.Name = newName;
                    itemObjectPair.Object.name      = newName;
                    text.text = newName;
                }
            }

            if (Renamed != null)
            {
                Renamed(this, new ProjectResourcesRenamedEventArgs(new[] { itemObjectPair }, new[] { oldName }));
            }

            //Following code is required to unfocus inputfield if focused and release InputManager
            if (EventSystem.current != null && !EventSystem.current.alreadySelecting)
            {
                EventSystem.current.SetSelectedGameObject(null);
            }
        }
Exemplo n.º 2
0
        private void OnItemsRemoving(object sender, ItemsCancelArgs e)
        {
            if (e.Items == null)
            {
                return;
            }

            //if (!RuntimeEditorApplication.IsActiveWindow(this) && !Ru)
            //{
            //    e.Items.Clear();
            //    return;
            //}

            for (int i = e.Items.Count - 1; i >= 0; i--)
            {
                ProjectItemObjectPair item = (ProjectItemObjectPair)e.Items[i];
                if (item.ProjectItem.IsExposedFromEditor)
                {
                    e.Items.Remove(item);
                }
            }

            if (e.Items.Count == 0)
            {
                PopupWindow.Show("Can't remove item", "Unable to remove folders & resources exposed from editor", "OK");
            }
        }
Exemplo n.º 3
0
        private void OnSelectionChanged(object sender, SelectionChangedArgs e)
        {
            if (m_lockSelection)
            {
                return;
            }

            m_lockSelection = true;

            object[] newItems = e.NewItems;
            object[] oldItems = e.OldItems;

            if (newItems == null)
            {
                newItems = new ProjectItemObjectPair[0];
            }

            if (oldItems == null)
            {
                oldItems = new ProjectItemObjectPair[0];
            }

            ProjectItemObjectPair[] oldSelection = oldItems.OfType <ProjectItemObjectPair>().ToArray();
            ProjectItemObjectPair[] selection    = newItems.OfType <ProjectItemObjectPair>().ToArray();
            if (SelectionChanged != null)
            {
                SelectionChanged(this, new SelectionChangedArgs <ProjectItemObjectPair>(oldSelection, selection, true));
            }

            m_selectedItems = selection.Select(s => s.Object).ToArray();
            m_lockSelection = false;
        }
Exemplo n.º 4
0
        public ProjectItemObjectPair[] SelectionToProjectItemObjectPair(UnityObject[] selectedObjects)
        {
            if (selectedObjects == null)
            {
                return(null);
            }


            ProjectItemObjectPair[]      itemObjectPairs     = m_listBox.Items.OfType <ProjectItemObjectPair>().ToArray();
            HashSet <ID>                 selectedIdentifiers = new HashSet <ID>(selectedObjects.Where(o => !(o is ProjectItemWrapper)).Select(o => m_projectManager.GetID(o)));
            HashSet <string>             selectedPaths       = new HashSet <string>(selectedObjects.OfType <ProjectItemWrapper>().Select(p => p.ProjectItem.ToString()));
            List <ProjectItemObjectPair> selection           = new List <ProjectItemObjectPair>();

            for (int i = 0; i < itemObjectPairs.Length; ++i)
            {
                ProjectItemObjectPair itemObjectPair = itemObjectPairs[i];
                if (selectedIdentifiers.Contains(m_projectManager.GetID(itemObjectPair.Object)))
                {
                    selection.Add(itemObjectPair);
                }
                else if (itemObjectPair.IsFolder || itemObjectPair.IsScene)
                {
                    if (selectedPaths.Contains(itemObjectPair.ProjectItem.ToString()))
                    {
                        selection.Add(itemObjectPair);
                    }
                }
            }

            return(selection.ToArray());
        }
Exemplo n.º 5
0
        public void RemoveProjectItem(ProjectItem item)
        {
            ProjectItemObjectPair foundItemObjectPair = m_listBox.Items.OfType <ProjectItemObjectPair>().Where(itemObjectPair => itemObjectPair.ProjectItem.ToString() == item.ToString()).FirstOrDefault();

            if (foundItemObjectPair != null)
            {
                m_listBox.Remove(foundItemObjectPair);
            }
        }
Exemplo n.º 6
0
        private void OnItemEndDrag(object sender, ItemArgs e)
        {
            CursorHelper.ResetCursor(this);

            ProjectItemObjectPair objectItemPair = (ProjectItemObjectPair)e.Items[0];

            CompleteSpawn(objectItemPair);

            if (objectItemPair.IsResource)
            {
                DragDrop.RaiseDrop();
            }
        }
Exemplo n.º 7
0
 private void UpdateCanDuplicateButtonState(ProjectItemObjectPair itemObjectPair)
 {
     if (m_btnDuplicate != null)
     {
         if (itemObjectPair == null)
         {
             m_btnDuplicate.gameObject.SetActive(false);
         }
         else
         {
             m_btnDuplicate.gameObject.SetActive(CanDuplicate(itemObjectPair));
         }
     }
 }
Exemplo n.º 8
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));
        }
Exemplo n.º 9
0
 private void OnItemsRemoved(object sender, ItemsRemovedArgs e)
 {
     ProjectItemObjectPair[] itemObjectPairs = e.Items.OfType <ProjectItemObjectPair>().ToArray();
     if (Deleted != null)
     {
         Deleted(this, new ProjectResourcesEventArgs(itemObjectPairs));
     }
     for (int i = 0; i < itemObjectPairs.Length; ++i)
     {
         ProjectItemObjectPair itemObjectPair = itemObjectPairs[i];
         if (itemObjectPair.ProjectItem.Parent != null)
         {
             itemObjectPair.ProjectItem.Parent.RemoveChild(itemObjectPair.ProjectItem);
         }
     }
 }
Exemplo n.º 10
0
        private void OnItemDrop(object sender, ItemDropArgs e)
        {
            if (e.IsExternal)
            {
                return;
            }
            CursorHelper.ResetCursor(this);

            ProjectItemObjectPair objectItemPair = (ProjectItemObjectPair)e.DragItems[0];

            CompleteSpawn(objectItemPair);

            if (objectItemPair.IsResource)
            {
                DragDrop.RaiseDrop();
            }
        }
Exemplo n.º 11
0
        private void OnItemBeginDrag(object sender, ItemArgs e)
        {
            CursorHelper.SetCursor(this, DragIcon, new Vector2(DragIcon.width / 2, DragIcon.height / 2), CursorMode.Auto);

            ItemContainer itemContainer = m_listBox.GetItemContainer(e.Items[0]);

            if (itemContainer != null)
            {
                ResourcePreview runtimeResource = itemContainer.GetComponentInChildren <ResourcePreview>();
                runtimeResource.BeginSpawn();
            }

            ProjectItemObjectPair objectItemPair = (ProjectItemObjectPair)e.Items[0];

            if (BeginDrag != null)
            {
                BeginDrag(this, new ProjectResourcesEventArgs(new[] { objectItemPair }));
            }

            if (objectItemPair.IsResource)
            {
                DragDrop.RaiseBeginDrag(new[] { objectItemPair.Object });
            }
        }
Exemplo n.º 12
0
        private void OnItemDataBinding(object sender, ItemDataBindingArgs e)
        {
            ProjectItemObjectPair pair = e.Item as ProjectItemObjectPair;

            if (pair != null)
            {
                Text            text       = e.ItemPresenter.GetComponentInChildren <Text>(true);
                ResourcePreview rtResource = e.ItemPresenter.GetComponentInChildren <ResourcePreview>(true);

                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;
                }
            }
        }
Exemplo n.º 13
0
 public void RemoveProjectItem(ProjectItemObjectPair item)
 {
     m_listBox.Remove(item);
 }
Exemplo n.º 14
0
        private void DataBind(bool clearItems)
        {
            if (m_objects == null)
            {
                m_listBox.SelectedItems = null;
                m_listBox.Items         = null;
            }
            else
            {
                if (clearItems)
                {
                    if (m_listBox == null)
                    {
                        Debug.LogError("ListBox is null");
                    }
                    m_listBox.Items = null;
                }

                m_listBox.SelectedItems = null;

                List <ProjectItemObjectPair> objectsList = m_objects.ToList();
                if (TypeFilter != null)
                {
                    for (int i = objectsList.Count - 1; i >= 0; i--)
                    {
                        UnityObject obj = objectsList[i].Object;
                        if (!TypeFilter.IsAssignableFrom(obj.GetType()))
                        {
                            objectsList.RemoveAt(i);
                        }
                    }

                    m_sceneObjectDictionary.Clear();

                    if (typeof(GameObject) == TypeFilter)
                    {
                        IEnumerable <GameObject> sceneObjects = RuntimeEditorApplication.IsPlaying ?
                                                                ExposeToEditor.FindAll(ExposeToEditorObjectType.PlayMode) :
                                                                ExposeToEditor.FindAll(ExposeToEditorObjectType.EditorMode);

                        foreach (GameObject go in sceneObjects)
                        {
                            m_sceneObjectDictionary.Add(m_projectManager.GetID(go), go);
                            objectsList.Add(new ProjectItemObjectPair(null, go));
                        }
                    }
                    else if (typeof(Component).IsAssignableFrom(TypeFilter))
                    {
                        IEnumerable <GameObject> sceneObjects = RuntimeEditorApplication.IsPlaying ?
                                                                ExposeToEditor.FindAll(ExposeToEditorObjectType.PlayMode) :
                                                                ExposeToEditor.FindAll(ExposeToEditorObjectType.EditorMode);

                        foreach (GameObject go in sceneObjects)
                        {
                            Component component = go.GetComponent(TypeFilter);
                            if (component != null)
                            {
                                m_sceneObjectDictionary.Add(m_projectManager.GetID(component), component);
                                objectsList.Add(new ProjectItemObjectPair(null, component));
                            }
                        }
                    }

                    ProjectItemObjectPair none = new ProjectItemObjectPair(null, ScriptableObject.CreateInstance <NoneItem>());
                    objectsList.Insert(0, none);
                    m_listBox.Items = objectsList;
                }
                else
                {
                    m_listBox.Items = objectsList;
                }


                if (m_selectedItems != null)
                {
                    m_listBox.SelectedItems = SelectionToProjectItemObjectPair(m_selectedItems);
                }
            }
        }