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 EndDrop(Vector2 end, EventModifiers modifiers = EventModifiers.None) { end = EventUtility.ConvertEditorWindowCoordsToGuiViewCoords(end); HandleMouseAutomationVisibility(end, true); if (EventUtility.EndDragAndDrop(window, end, modifiers)) { window.RepaintImmediately(); } }