void Start() { // ********************** Cache Avatar window image root _avatarWindow = MgsAvatarEditorWindow.Instance; //****************** Initialize images and rectTransforms // Get RectTransform _rectTransforms = transform .GetChilds() // get first childs .Select(child => child.GetChild(0).GetComponent <RectTransform>()) // get rectTransform of first child .ToList(); // Get images _images = transform .GetChilds() // get first childs .Select(child => child.GetChild(0).GetComponent <Image>()) // get rectTransform of first child .ToList(); // *************** check Sample validation if (_images.Count != _avatarWindow.FeatureCount) { Debug.LogError("Avatar sample " + name + " is Invalid !! (Initialization required)"); return; } // Get parent window _parentWindow = GetComponentInParent <MgsUIWindow>(); }
private int GetAdjustedInsertIndex(MgsUIWindow parent, MgsUIWindow machine, int insertIndex) { if (machine.transform.parent == parent.transform && machine.transform.GetSiblingIndex() < insertIndex) { return(--insertIndex); } return(insertIndex); }
protected override void DoubleClickedItem(int id) { MgsUIWindow window = (MgsUIWindow)EditorUtility.InstanceIDToObject(id); if (window) { Selection.activeGameObject = window.gameObject; } }
protected override TreeViewItem BuildRoot() { var root = new TreeViewItem(0, -1, "Root"); var canvases = Object.FindObjectsOfType <Canvas>().ToList(); if (canvases.Count == 0) { return(root); } var windows = canvases[0].GetComponentsInChildren <MgsUIWindow>(); var items = new List <TreeViewItem>(); foreach (var window in windows) { items.Add(new TreeViewItem { id = window.GetInstanceID(), displayName = window.name, }); } for (int i = 0; i < windows.Length; i++) { MgsUIWindow parentWindow = null; if (windows[i].transform.parent) { parentWindow = windows[i].transform.parent.GetComponentInParent <MgsUIWindow>(); } if (parentWindow == null) { root.AddChild(items[i]); } else { items.Find(item => item.id == parentWindow.GetInstanceID()).AddChild(items[i]); } } SetupDepthsFromParentsAndChildren(root); return(root); }
public static void SetCurrentWindow(MgsUIWindow window) { _currentWindow = window; }
protected override DragAndDropVisualMode HandleDragAndDrop(DragAndDropArgs args) { // First check if the dragged objects are GameObjects var draggedObjects = DragAndDrop.objectReferences; var windows = new List <MgsUIWindow>(draggedObjects.Length); foreach (var obj in draggedObjects) { var window = obj as MgsUIWindow; if (window == null) { return(DragAndDropVisualMode.None); } windows.Add(window); } if (args.performDrop) { switch (args.dragAndDropPosition) { case DragAndDropPosition.UponItem: case DragAndDropPosition.BetweenItems: MgsUIWindow parent = args.parentItem != null?GetWindow(args.parentItem.id) : null; foreach (var window in windows) { window.transform.SetParent(parent.transform); } if (args.dragAndDropPosition == DragAndDropPosition.BetweenItems) { int insertIndex = args.insertAtIndex; for (int i = windows.Count - 1; i >= 0; i--) { var window = windows[i]; insertIndex = GetAdjustedInsertIndex(parent, window, insertIndex); window.transform.SetSiblingIndex(insertIndex); } } break; case DragAndDropPosition.OutsideItems: var canvases = Object.FindObjectsOfType <Canvas>().ToList(); if (canvases.Count > 0) { foreach (var window in windows) { window.transform.SetParent(canvases[0].transform); // make root when dragged to empty space in treeview } } break; default: throw new ArgumentOutOfRangeException(); } Reload(); SetSelection(windows.Select(t => t.GetInstanceID()).ToList(), TreeViewSelectionOptions.RevealAndFrame); } return(DragAndDropVisualMode.Move); }