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); }
public void KeyDownAndUp(KeyCode key, EventModifiers modifiers = EventModifiers.None) { HandleLastEventPauseVisibility(); if (EventUtility.KeyDownAndUp(window, key, modifiers)) { window.RepaintImmediately(); } }
public void EndDrop(Vector2 end, EventModifiers modifiers = EventModifiers.None) { end = EventUtility.ConvertEditorWindowCoordsToGuiViewCoords(end); HandleMouseAutomationVisibility(end, true); if (EventUtility.EndDragAndDrop(window, end, modifiers)) { window.RepaintImmediately(); } }
public void BeginDrag(Vector2 start, EventModifiers modifiers = EventModifiers.None) { start = EventUtility.ConvertEditorWindowCoordsToGuiViewCoords(start); HandleMouseAutomationVisibility(start); if (EventUtility.BeginDragAndDrop(window, start, modifiers)) { window.RepaintImmediately(); } }
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); }
public void Click(Vector2 editorWindowPosition, EventModifiers modifiers = EventModifiers.None) { var GUIViewPosition = EventUtility.ConvertEditorWindowCoordsToGuiViewCoords(editorWindowPosition); HandleMouseAutomationVisibility(GUIViewPosition); if (EventUtility.Click(window, GUIViewPosition, modifiers)) { window.RepaintImmediately(); } }
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); }
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); }
//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); }