浏览代码

add support for better drag&drop functionality in Editor

/dev_k12
xingwei.zhu 4 年前
当前提交
2fa8b1a3
共有 3 个文件被更改,包括 24 次插入3 次删除
  1. 3
      com.unity.uiwidgets/Runtime/editor/editor_window.cs
  2. 20
      com.unity.uiwidgets/Runtime/editor/widgets/unity_object_detector.cs
  3. 4
      com.unity.uiwidgets/Runtime/gestures/converter.cs

3
com.unity.uiwidgets/Runtime/editor/editor_window.cs


physicalY: evt.mousePosition.y * this._devicePixelRatio
);
}
else if (evt.type == EventType.MouseUp || evt.rawType == EventType.MouseUp) {
else if (evt.type == EventType.MouseUp || evt.rawType == EventType.MouseUp ||
evt.type == EventType.DragExited) {
pointerData = new PointerData(
timeStamp: Timer.timespanSinceStartup,
change: PointerChange.up,

20
com.unity.uiwidgets/Runtime/editor/widgets/unity_object_detector.cs


public delegate void DragFromEditorExitCallback();
public delegate void DragFromEditorStartCallback();
public delegate void DragFromEditorCancelCallback();
public delegate void DragFromEditorReleaseCallback(DragFromEditorDetails details);
public class DragFromEditorDetails {

DragFromEditorHoverCallback onHover = null,
DragFromEditorExitCallback onExit = null,
DragFromEditorReleaseCallback onRelease = null,
DragFromEditorStartCallback onStart = null,
DragFromEditorCancelCallback onCancel = null,
HitTestBehavior? behavior = null
) : base(key: key) {
this.child = child;

this.onDragFromEditorRelease = onRelease;
this.onDragFromEditorStart = onStart;
this.onDragFromEditorCancel = onCancel;
this.behavior = behavior;
}

public readonly DragFromEditorHoverCallback onDragFromEditorHover;
public readonly DragFromEditorExitCallback onDragFromEditorExit;
public readonly DragFromEditorReleaseCallback onDragFromEditorRelease;
public readonly DragFromEditorStartCallback onDragFromEditorStart;
public readonly DragFromEditorCancelCallback onDragFromEditorCancel;
public readonly HitTestBehavior? behavior;

public override Widget build(BuildContext context) {
Widget result = new Listener(
child: this.widget.child,
onPointerDown: (evt) => {
this.widget.onDragFromEditorStart?.Invoke();
},
onPointerUp: (evt) => {
this.widget.onDragFromEditorCancel?.Invoke();
},
onPointerCancel: (evt) => {
this.widget.onDragFromEditorCancel?.Invoke();
},
onPointerDragFromEditorEnter: this.widget.onDragFromEditorEnter == null
? ((PointerDragFromEditorEnterEventListener) null)
: (evt) => { this.widget.onDragFromEditorEnter.Invoke(); },

4
com.unity.uiwidgets/Runtime/gestures/converter.cs


#if UNITY_EDITOR
case PointerChange.dragFromEditorMove: {
_PointerState state = _ensureStateForPointer(datum, position);
state.startNewPointer();
//state.startNewPointer();
yield return new PointerDragFromEditorHoverEvent(
timeStamp: timeStamp,
pointer: state.pointer,

break;
case PointerChange.dragFromEditorRelease: {
_PointerState state = _ensureStateForPointer(datum, position);
state.startNewPointer();
//state.startNewPointer();
yield return new PointerDragFromEditorReleaseEvent(
timeStamp: timeStamp,
pointer: state.pointer,

正在加载...
取消
保存