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); } }
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"); } }
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; }
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()); }
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); } }
private void OnItemEndDrag(object sender, ItemArgs e) { CursorHelper.ResetCursor(this); ProjectItemObjectPair objectItemPair = (ProjectItemObjectPair)e.Items[0]; CompleteSpawn(objectItemPair); if (objectItemPair.IsResource) { DragDrop.RaiseDrop(); } }
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 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 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); } } }
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(); } }
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 }); } }
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; } } }
public void RemoveProjectItem(ProjectItemObjectPair item) { m_listBox.Remove(item); }
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); } } }