mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-20 22:16:49 +01:00
iOS: Added support for force-touch on capable devices.
This commit is contained in:
parent
6a32ca7a39
commit
82c8825cb5
@ -123,9 +123,22 @@
|
|||||||
return point;
|
return point;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (float)pressureForTouch:(UITouch *)touch
|
||||||
|
{
|
||||||
|
#ifdef __IPHONE_9_0
|
||||||
|
if ([touch respondsToSelector:@selector(force)]) {
|
||||||
|
return (float) touch.force;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 1.0f;
|
||||||
|
}
|
||||||
|
|
||||||
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
|
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
|
||||||
{
|
{
|
||||||
for (UITouch *touch in touches) {
|
for (UITouch *touch in touches) {
|
||||||
|
float pressure = [self pressureForTouch:touch];
|
||||||
|
|
||||||
if (!firstFingerDown) {
|
if (!firstFingerDown) {
|
||||||
CGPoint locationInView = [self touchLocation:touch shouldNormalize:NO];
|
CGPoint locationInView = [self touchLocation:touch shouldNormalize:NO];
|
||||||
|
|
||||||
@ -140,13 +153,15 @@
|
|||||||
|
|
||||||
CGPoint locationInView = [self touchLocation:touch shouldNormalize:YES];
|
CGPoint locationInView = [self touchLocation:touch shouldNormalize:YES];
|
||||||
SDL_SendTouch(touchId, (SDL_FingerID)((size_t)touch),
|
SDL_SendTouch(touchId, (SDL_FingerID)((size_t)touch),
|
||||||
SDL_TRUE, locationInView.x, locationInView.y, 1.0f);
|
SDL_TRUE, locationInView.x, locationInView.y, pressure);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
|
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
|
||||||
{
|
{
|
||||||
for (UITouch *touch in touches) {
|
for (UITouch *touch in touches) {
|
||||||
|
float pressure = [self pressureForTouch:touch];
|
||||||
|
|
||||||
if (touch == firstFingerDown) {
|
if (touch == firstFingerDown) {
|
||||||
/* send mouse up */
|
/* send mouse up */
|
||||||
SDL_SendMouseButton(sdlwindow, SDL_TOUCH_MOUSEID, SDL_RELEASED, SDL_BUTTON_LEFT);
|
SDL_SendMouseButton(sdlwindow, SDL_TOUCH_MOUSEID, SDL_RELEASED, SDL_BUTTON_LEFT);
|
||||||
@ -155,7 +170,7 @@
|
|||||||
|
|
||||||
CGPoint locationInView = [self touchLocation:touch shouldNormalize:YES];
|
CGPoint locationInView = [self touchLocation:touch shouldNormalize:YES];
|
||||||
SDL_SendTouch(touchId, (SDL_FingerID)((size_t)touch),
|
SDL_SendTouch(touchId, (SDL_FingerID)((size_t)touch),
|
||||||
SDL_FALSE, locationInView.x, locationInView.y, 1.0f);
|
SDL_FALSE, locationInView.x, locationInView.y, pressure);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,6 +182,8 @@
|
|||||||
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
|
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
|
||||||
{
|
{
|
||||||
for (UITouch *touch in touches) {
|
for (UITouch *touch in touches) {
|
||||||
|
float pressure = [self pressureForTouch:touch];
|
||||||
|
|
||||||
if (touch == firstFingerDown) {
|
if (touch == firstFingerDown) {
|
||||||
CGPoint locationInView = [self touchLocation:touch shouldNormalize:NO];
|
CGPoint locationInView = [self touchLocation:touch shouldNormalize:NO];
|
||||||
|
|
||||||
@ -176,7 +193,7 @@
|
|||||||
|
|
||||||
CGPoint locationInView = [self touchLocation:touch shouldNormalize:YES];
|
CGPoint locationInView = [self touchLocation:touch shouldNormalize:YES];
|
||||||
SDL_SendTouchMotion(touchId, (SDL_FingerID)((size_t)touch),
|
SDL_SendTouchMotion(touchId, (SDL_FingerID)((size_t)touch),
|
||||||
locationInView.x, locationInView.y, 1.0f);
|
locationInView.x, locationInView.y, pressure);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user