public bool Update(EditorWindow window, EventModifiers modifiers)
        {
            float curtime = (float)EditorApplication.timeSinceStartup;

            if (curtime > nextEventTime)
            {
                // Dispatch fake drag and drop events
                float frac = Mathf.Clamp01((curtime - startTime) / (endTime - startTime));

                frac = Easing.Quadratic.InOut(frac);

                Vector2 mousePosition = Vector2.Lerp(mouseStart, mouseEnd, frac);

                EventUtility.UpdateDragAndDrop(window, mousePosition);

                bool shouldContinue = frac < 1.0f;
                if (!shouldContinue)
                {
                    EventUtility.EndDragAndDrop(window, mousePosition);
                }

                nextEventTime = curtime + (1 / numEventsPerSecond);
                window.Repaint();
                return(shouldContinue);
            }
            return(true);
        }
Example #2
0
        public void KeyDownAndUp(KeyCode key, EventModifiers modifiers = EventModifiers.None)
        {
            HandleLastEventPauseVisibility();

            if (EventUtility.KeyDownAndUp(window, key, modifiers))
            {
                window.RepaintImmediately();
            }
        }
Example #3
0
 public void EndDrop(Vector2 end, EventModifiers modifiers = EventModifiers.None)
 {
     end = EventUtility.ConvertEditorWindowCoordsToGuiViewCoords(end);
     HandleMouseAutomationVisibility(end, true);
     if (EventUtility.EndDragAndDrop(window, end, modifiers))
     {
         window.RepaintImmediately();
     }
 }
Example #4
0
 public void BeginDrag(Vector2 start, EventModifiers modifiers = EventModifiers.None)
 {
     start = EventUtility.ConvertEditorWindowCoordsToGuiViewCoords(start);
     HandleMouseAutomationVisibility(start);
     if (EventUtility.BeginDragAndDrop(window, start, modifiers))
     {
         window.RepaintImmediately();
     }
 }
Example #5
0
        public void Click(IAutomatedUIElement element, EventModifiers modifiers = EventModifiers.None)
        {
            if (!element.hasRect)
            {
                Debug.LogWarning("Cannot click on an element that has no rect");
                return;
            }

            Click(EventUtility.ConvertGuiViewCoordsToEditorWindowCoords(element.rect.center), modifiers);
        }
Example #6
0
        public void Click(Vector2 editorWindowPosition, EventModifiers modifiers = EventModifiers.None)
        {
            var GUIViewPosition = EventUtility.ConvertEditorWindowCoordsToGuiViewCoords(editorWindowPosition);

            HandleMouseAutomationVisibility(GUIViewPosition);
            if (EventUtility.Click(window, GUIViewPosition, modifiers))
            {
                window.RepaintImmediately();
            }
        }
Example #7
0
 public void UpdateDragAndDrop(Vector2 pos, EventModifiers modifiers = EventModifiers.None)
 {
     pos = EventUtility.ConvertEditorWindowCoordsToGuiViewCoords(pos);
     HandleMouseAutomationVisibility(pos, true);
     if (EventUtility.UpdateDragAndDrop(window, pos, modifiers))
     {
         window.RepaintImmediately();
     }
     window.RepaintImmediately();
 }
        public void Clicks(EditorWindow window, List <Vector2> clickPositions, float secondsBetweenClicks, EventModifiers modifiers)
        {
            this.clickPositions       = clickPositions;
            this.secondsBetweenClicks = secondsBetweenClicks;

            // First click immediately
            EventUtility.Click(window, clickPositions[0]);

            SetCurrentClickIndex(1);
        }
        public void DragAndDrop(EditorWindow window, Vector2 mousePositionStart, Vector2 mousePositionEnd, float seconds, EventModifiers modifiers)
        {
            mouseStart    = mousePositionStart;
            mouseEnd      = mousePositionEnd;
            mouseStart.y += 23f;
            mouseEnd.y   += 23f;
            startTime     = (float)EditorApplication.timeSinceStartup;
            endTime       = startTime + seconds;

            EventUtility.BeginDragAndDrop(window, mouseStart);
        }
Example #10
0
        public bool Update(EditorWindow window)
        {
            float curtime = (float)EditorApplication.timeSinceStartup;

            if (curtime > nextEventTime)
            {
                bool shouldContinue = caretPosition < keyCodes.Count;
                if (caretPosition < keyCodes.Count)
                {
                    EventUtility.KeyDownAndUp(window, keyCodes[caretPosition]);
                    caretPosition++;
                    nextEventTime = curtime + intervalBetweenKeyInput;
                    window.Repaint();
                }
                return(shouldContinue);
            }
            return(true);
        }
Example #11
0
        //TODO: this will lock up the Editor while 'moving the mouse'.
        //We need to decide if this is okay, or not.
        //This is responsible for showing the mouse moving between mouse events.
        private void HandleMouseAutomationVisibility(Vector2 desiredMousePosition, bool sendMouseDrag = false)
        {
            if (!isAutomationVisible)
            {
                return;
            }

            if (m_LastMousePosition != desiredMousePosition)
            {
                float startTime = (float)EditorApplication.timeSinceStartup;
                float endTime   = startTime + ((m_LastMousePosition - desiredMousePosition).magnitude / m_MouseMoveSpeed);

                var mouseStart = m_LastMousePosition;

                while (m_LastMousePosition != desiredMousePosition)
                {
                    float curtime = (float)EditorApplication.timeSinceStartup;
                    float frac    = Mathf.Clamp01((curtime - startTime) / (endTime - startTime));

                    frac = Easing.Quadratic.InOut(frac);
                    var mousePosition = Vector2.Lerp(mouseStart, desiredMousePosition, frac);

                    //We currently send mouse moves to the window when visualizing the interactions,
                    //But this might create different behaviour when visualizing or not.
                    //This is also true for the Repaint event from RepaintImmediately.
                    //TODO: Decide what to do about it.
                    EventUtility.UpdateMouseMove(window, mousePosition);

                    if (sendMouseDrag)
                    {
                        EventUtility.UpdateDragAndDrop(window, mousePosition);
                    }

                    m_LastMousePosition = mousePosition;

                    window.RepaintImmediately();

                    System.Threading.Thread.Sleep(16);
                }
            }

            HandleLastEventPauseVisibility();
        }
        public bool Update(EditorWindow window, EventModifiers modifiers)
        {
            if (currentClickIndex >= clickPositions.Count)
            {
                return(false);
            }

            float curtime = (float)EditorApplication.timeSinceStartup;

            if (curtime > nextEventTime)
            {
                // Dispatch fake drag and drop events
                float frac = Mathf.Clamp01((curtime - startTime) / (endTime - startTime));

                frac = Easing.Quadratic.InOut(frac);
                var mouseStart = clickPositions[currentClickIndex - 1];
                var mouseEnd   = clickPositions[currentClickIndex];

                Vector2 mousePosition = Vector2.Lerp(mouseStart, mouseEnd, frac);

                EventUtility.UpdateMouseMove(window, mousePosition);

                if (frac >= 1f)
                {
                    SetCurrentClickIndex(currentClickIndex + 1);
                    EventUtility.Click(window, mousePosition);
                }

                nextEventTime = curtime + (1 / numEventsPerSecond);
                window.Repaint();

                bool shouldContinue = currentClickIndex < clickPositions.Count - 1;
                return(shouldContinue);
            }
            return(true);
        }