Add TouchScreen Manager (#2333)
This commit is contained in:
parent
b898bc84ce
commit
bfcc6a8ad6
8 changed files with 418 additions and 83 deletions
57
Ryujinx.Input/HLE/TouchScreenManager.cs
Normal file
57
Ryujinx.Input/HLE/TouchScreenManager.cs
Normal file
|
@ -0,0 +1,57 @@
|
|||
using Ryujinx.HLE;
|
||||
using Ryujinx.HLE.HOS.Services.Hid;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Input.HLE
|
||||
{
|
||||
public class TouchScreenManager : IDisposable
|
||||
{
|
||||
private readonly IMouse _mouse;
|
||||
private Switch _device;
|
||||
|
||||
public TouchScreenManager(IMouse mouse)
|
||||
{
|
||||
_mouse = mouse;
|
||||
}
|
||||
|
||||
public void Initialize(Switch device)
|
||||
{
|
||||
_device = device;
|
||||
}
|
||||
|
||||
public bool Update(bool isFocused, float aspectRatio = 0)
|
||||
{
|
||||
if (!isFocused)
|
||||
{
|
||||
_device.Hid.Touchscreen.Update();
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if (aspectRatio > 0)
|
||||
{
|
||||
var snapshot = IMouse.GetMouseStateSnapshot(_mouse);
|
||||
var touchPosition = IMouse.GetTouchPosition(snapshot.Position, _mouse.ClientSize, aspectRatio);
|
||||
|
||||
TouchPoint currentPoint = new TouchPoint
|
||||
{
|
||||
X = (uint)touchPosition.X,
|
||||
Y = (uint)touchPosition.Y,
|
||||
|
||||
// Placeholder values till more data is acquired
|
||||
DiameterX = 10,
|
||||
DiameterY = 10,
|
||||
Angle = 90
|
||||
};
|
||||
|
||||
_device.Hid.Touchscreen.Update(currentPoint);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public void Dispose() { }
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue