Ejemplo n.º 1
0
        public static void SetTargetAnimationClipIndex(int value)
        {
            TargetAnimationClipIndex = value;

            CanvasItemToEdit = null;

            _queueCanvasItemToEdit        = null;
            _queueCanvasItemToEditChanged = false;
        }
Ejemplo n.º 2
0
        private static void UpdateDrag(InternalUiAnimationEditorCanvasItem item)
        {
            float originalTime = GetTimeByLocalPosition(item.CachedX - InternalUiAnimationEditor.MousePositionPress.x);
            float cursorTime   = GetTimeByMousePosition(InternalUiAnimationEditor.MousePosition.x);

            int cursorLayer = GetLayerByMousePosition(InternalUiAnimationEditor.MousePosition.y);

            item.SetDelay(originalTime + cursorTime + 0.1f);
            item.SetLayer(cursorLayer);
        }
Ejemplo n.º 3
0
        public static InternalUiAnimationEditorCanvasItem GetItemAt(float x, float y)
        {
            InternalUiAnimationEditorCanvasItem output = null;

            for (int i = 0; i < Items.Count; i++)
            {
                if (Items[i].HitTest(x, y))
                {
                    output = Items[i];
                }
            }

            return(output);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Updates selection.
        /// </summary>
        /// <returns>True if selection is changed.</returns>
        public static bool Update()
        {
            if (_queueCanvasItemToEditChanged)
            {
                CanvasItemToEdit              = _queueCanvasItemToEdit;
                _queueCanvasItemToEdit        = null;
                _queueCanvasItemToEditChanged = false;
            }

            if (_queueCanvasItemToResizeChanged)
            {
                CanvasItemToResize              = _queueCanvasItemToResize;
                _queueCanvasItemToResize        = null;
                _queueCanvasItemToResizeChanged = false;
            }

            if (_queueCanvasItemToDragChanged)
            {
                CanvasItemToDrag              = _queueCanvasItemToDrag;
                _queueCanvasItemToDrag        = null;
                _queueCanvasItemToDragChanged = false;
            }

            if (Selection.activeGameObject != TargetGameObject)
            {
                TargetGameObject         = Selection.activeGameObject;
                TargetAnimationClipIndex = 0;

                CanvasItemToEdit   = null;
                CanvasItemToResize = null;
                CanvasItemToDrag   = null;

                return(true);
            }

            return(false);
        }
Ejemplo n.º 5
0
        public static void Update()
        {
            if (DragAndDropQueue != null)
            {
                for (int i = 0; i < DragAndDropQueue.Count; i++)
                {
                    UiAnimationClipSegment tween = new UiAnimationClipSegment();
                    tween.GameObject = DragAndDropQueue[i] as GameObject;
                    tween.Delay      = GetTimeByMousePosition(InternalUiAnimationEditor.MousePosition.x);
                    tween.Layer      = GetLayerByMousePosition(InternalUiAnimationEditor.MousePosition.y);

                    RectTransform rectTransform = tween.GameObject.GetComponent <RectTransform>();

                    if (rectTransform != null)
                    {
                        tween.PositionFrom = new Vector2(rectTransform.anchoredPosition.x, rectTransform.anchoredPosition.y);
                        tween.PositionTo   = new Vector2(rectTransform.anchoredPosition.x, rectTransform.anchoredPosition.y);

                        tween.RotationFrom = rectTransform.localRotation.eulerAngles.z;
                        tween.RotationTo   = rectTransform.localRotation.eulerAngles.z;

                        tween.ScaleFrom = new Vector2(rectTransform.localScale.x, rectTransform.localScale.y);
                        tween.ScaleTo   = new Vector2(rectTransform.localScale.x, rectTransform.localScale.y);
                    }

                    if (InternalUiAnimationEditorSelection.TargetAnimationClip != null)
                    {
                        InternalUiAnimationEditorSelection.TargetAnimationClip.Items.Add(tween);
                        InternalUiAnimationEditorSelection.TargetAnimationClip.Items.Sort((a, b) => (a.Delay.CompareTo(b.Delay)));

                        justAddedTween = tween;
                    }
                }

                DragAndDropQueue = null;
            }

            if (InternalUiAnimationEditorSelection.CanvasItemToEdit == null)
            {
                Items = new List <InternalUiAnimationEditorCanvasItem>();

                for (int i = 0; i < InternalUiAnimationEditorSelection.TargetAnimationClip.Items.Count; i++)
                {
                    InternalUiAnimationEditorCanvasItem canvasItem = new InternalUiAnimationEditorCanvasItem
                                                                     (
                        InternalUiAnimationEditorSelection.TargetAnimationClip.Items[i]
                                                                     );

                    Items.Add(canvasItem);

                    if (canvasItem.Target == justAddedTween)
                    {
                        InternalUiAnimationEditorSelection.SetCanvasItemToEdit(canvasItem);
                        justAddedTween = null;
                    }
                }
            }

            if (InternalUiAnimationEditorSelection.CanvasItemToEdit != null)
            {
                Items.Remove(InternalUiAnimationEditorSelection.CanvasItemToEdit);
                Items.Add(InternalUiAnimationEditorSelection.CanvasItemToEdit);
            }

            if (InternalUiAnimationEditorSelection.CanvasItemToDrag != null)
            {
                UpdateDrag(InternalUiAnimationEditorSelection.CanvasItemToDrag);
            }

            if (InternalUiAnimationEditorSelection.CanvasItemToResize != null)
            {
                UpdateResize(InternalUiAnimationEditorSelection.CanvasItemToResize);
            }

            for (int i = 0; i < Items.Count; i++)
            {
                Items[i].IsCollided = false;

                for (int j = 0; j < Items.Count; j++)
                {
                    if (i == j)
                    {
                        continue;
                    }

                    if (Items[i].Target.GameObject != Items[j].Target.GameObject)
                    {
                        continue;
                    }

                    if (Items[i].Target.ItemType != Items[j].Target.ItemType)
                    {
                        continue;
                    }

                    if (Items[i].HitTest(Items[j].X, Items[i].Y) || Items[j].HitTest(Items[i].X, Items[j].Y))
                    {
                        Items[i].IsCollided = true;
                        break;
                    }
                }
            }
        }
Ejemplo n.º 6
0
        public static void OnEvent()
        {
            if (Event.current.type == EventType.DragUpdated)
            {
                if (InternalUiAnimationEditor.MousePosition.x > InternalUiAnimationEditorInspector.Width)
                {
                    InternalUiAnimationEditorSelection.SetCanvasItemToEdit(null);
                }
            }

            // Drag and drop game objects
            if (Event.current.type == EventType.DragExited)
            {
                if (InternalUiAnimationEditor.MousePosition.x > InternalUiAnimationEditorInspector.Width && InternalUiAnimationEditor.MousePosition.y > InternalUiAnimationEditorTimeline.Height)
                {
                    object[] objects = DragAndDrop.objectReferences;
                    DragAndDropQueue = new List <GameObject>();

                    for (int i = 0; i < objects.Length; i++)
                    {
                        if (objects[i] is GameObject)
                        {
                            DragAndDropQueue.Add(objects[i] as GameObject);
                        }
                    }

                    Event.current.Use();
                }
            }

            if (Event.current.type == EventType.MouseDown)
            {
                InternalUiAnimationEditorCanvasItem item = GetItemAt(InternalUiAnimationEditor.MousePosition.x, InternalUiAnimationEditor.MousePosition.y);

                if (item != null)
                {
                    if (InternalUiAnimationEditor.MousePosition.x > item.X + item.Width - 10 && InternalUiAnimationEditor.MousePosition.x < item.X + item.Width)
                    {
                        InternalUiAnimationEditorSelection.SetCanvasItemToEdit(item);
                        InternalUiAnimationEditorSelection.SetCanvasItemToResize(item);
                    }

                    else
                    {
                        InternalUiAnimationEditorSelection.SetCanvasItemToEdit(item);
                        InternalUiAnimationEditorSelection.SetCanvasItemToDrag(item);

                        item.CachedX = item.X;
                        item.CachedY = item.Y;
                    }
                }
            }

            if (Event.current.type == EventType.MouseUp)
            {
                InternalUiAnimationEditorSelection.SetCanvasItemToDrag(null);
                InternalUiAnimationEditorSelection.SetCanvasItemToResize(null);

                if (InternalUiAnimationEditor.MousePosition.x > InternalUiAnimationEditorInspector.Width)
                {
                    InternalUiAnimationEditorCanvasItem item = GetItemAt(InternalUiAnimationEditor.MousePosition.x, InternalUiAnimationEditor.MousePosition.y);

                    if (item != null)
                    {
                        if (InternalUiAnimationEditorSelection.CanvasItemToEdit == null)
                        {
                            InternalUiAnimationEditorSelection.SetCanvasItemToEdit(item);
                        }
                    }
                    else
                    {
                        InternalUiAnimationEditorSelection.SetCanvasItemToEdit(null);
                    }
                }
            }
        }
Ejemplo n.º 7
0
        private static void UpdateResize(InternalUiAnimationEditorCanvasItem item)
        {
            float cursorTime = GetTimeByMousePosition(InternalUiAnimationEditor.MousePosition.x);

            item.SetDuration(cursorTime - item.Delay + 0.1f);
        }
Ejemplo n.º 8
0
 public static void SetCanvasItemToDrag(InternalUiAnimationEditorCanvasItem item)
 {
     _queueCanvasItemToDrag        = item;
     _queueCanvasItemToDragChanged = true;
 }
Ejemplo n.º 9
0
 public static void SetCanvasItemToResize(InternalUiAnimationEditorCanvasItem item)
 {
     _queueCanvasItemToResize        = item;
     _queueCanvasItemToResizeChanged = true;
 }