Unlike Unity's old Input Manager, you can use the new Input System from within EditorWindow
code as well. For example, you can gain access to pen pressure information like this:
class MyEditorWindow : EditorWindow
{
public void OnGUI()
{
var pen = Pen.current;
if (pen != null)
{
var position = pen.position.ReadValue();
var pressure = pen.pressure.ReadValue();
//...
}
}
}
This encompasses all code called from OnGUI()
methods, which means that you can also use the Input System in property drawers, Inspectors, and other similar places.
Note: Unity doesn't support Actions in Edit mode.
The coordinate system differs between EditorWindow
code and UnityEngine.Screen
. EditorWindow
code has its origin in the upper-left corner, with Y down. UnityEngine.Screen
has it in the bottom-left corner, with Y up.
The Input System compensates for that by automatically converting coordinates depending on whether you call it from your application or from Editor code. In other words, calling Mouse.current.position.ReadValue()
from inside EditorWindow
code returns mouse coordinates in Editor UI coordinates (Y down), and reading the position elsewhere returns it in application screen coordinates (Y up).
Internally, an editor-specific Processor called AutoWindowSpace
handles this translation.