Add TouchScreen Manager (#2333)

This commit is contained in:
emmauss 2021-06-14 06:42:55 +00:00 committed by GitHub
parent b898bc84ce
commit bfcc6a8ad6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 418 additions and 83 deletions

View 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() { }
}
}