コード例 #1
0
    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>();
    }
コード例 #2
0
 private int GetAdjustedInsertIndex(MgsUIWindow parent, MgsUIWindow machine, int insertIndex)
 {
     if (machine.transform.parent == parent.transform && machine.transform.GetSiblingIndex() < insertIndex)
     {
         return(--insertIndex);
     }
     return(insertIndex);
 }
コード例 #3
0
        protected override void DoubleClickedItem(int id)
        {
            MgsUIWindow window = (MgsUIWindow)EditorUtility.InstanceIDToObject(id);

            if (window)
            {
                Selection.activeGameObject = window.gameObject;
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
ファイル: AndroidBack.cs プロジェクト: HoseinNajafi/Charsoo
 public static void SetCurrentWindow(MgsUIWindow window)
 {
     _currentWindow = window;
 }
コード例 #6
0
        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);
        }