2019-02-11 18:21:04 -08:00
|
|
|
//
|
|
|
|
|
// Controller.h
|
|
|
|
|
// Moonlight
|
|
|
|
|
//
|
|
|
|
|
// Created by Cameron Gutman on 2/11/19.
|
|
|
|
|
// Copyright © 2019 Moonlight Game Streaming Project. All rights reserved.
|
|
|
|
|
//
|
|
|
|
|
|
2020-09-17 20:32:41 -05:00
|
|
|
#import "HapticContext.h"
|
|
|
|
|
|
2019-02-11 18:21:04 -08:00
|
|
|
@import GameController;
|
2020-09-17 20:32:41 -05:00
|
|
|
@import CoreHaptics;
|
2019-02-11 18:21:04 -08:00
|
|
|
|
|
|
|
|
@interface Controller : NSObject
|
|
|
|
|
|
2023-09-27 07:12:36 -05:00
|
|
|
typedef struct {
|
|
|
|
|
float lastX;
|
|
|
|
|
float lastY;
|
|
|
|
|
} controller_touch_context_t;
|
|
|
|
|
|
2019-02-11 18:21:04 -08:00
|
|
|
@property (nullable, nonatomic, retain) GCController* gamepad;
|
|
|
|
|
@property (nonatomic) int playerIndex;
|
|
|
|
|
@property (nonatomic) int lastButtonFlags;
|
|
|
|
|
@property (nonatomic) int emulatingButtonFlags;
|
2019-11-09 17:47:47 -08:00
|
|
|
@property (nonatomic) int supportedEmulationFlags;
|
2019-02-11 18:21:04 -08:00
|
|
|
@property (nonatomic) unsigned char lastLeftTrigger;
|
|
|
|
|
@property (nonatomic) unsigned char lastRightTrigger;
|
|
|
|
|
@property (nonatomic) short lastLeftStickX;
|
|
|
|
|
@property (nonatomic) short lastLeftStickY;
|
|
|
|
|
@property (nonatomic) short lastRightStickX;
|
|
|
|
|
@property (nonatomic) short lastRightStickY;
|
2020-09-17 20:32:41 -05:00
|
|
|
|
2023-09-27 07:12:36 -05:00
|
|
|
@property (nonatomic) controller_touch_context_t primaryTouch;
|
|
|
|
|
@property (nonatomic) controller_touch_context_t secondaryTouch;
|
2023-06-29 00:17:43 -05:00
|
|
|
|
2020-09-17 20:32:41 -05:00
|
|
|
@property (nonatomic) HapticContext* _Nullable lowFreqMotor;
|
|
|
|
|
@property (nonatomic) HapticContext* _Nullable highFreqMotor;
|
2023-06-28 21:27:46 -05:00
|
|
|
@property (nonatomic) HapticContext* _Nullable leftTriggerMotor;
|
|
|
|
|
@property (nonatomic) HapticContext* _Nullable rightTriggerMotor;
|
2019-02-11 18:21:04 -08:00
|
|
|
|
2023-06-29 00:35:35 -05:00
|
|
|
@property (nonatomic) NSTimer* _Nullable accelTimer;
|
|
|
|
|
@property (nonatomic) GCAcceleration lastAccelSample;
|
|
|
|
|
@property (nonatomic) NSTimer* _Nullable gyroTimer;
|
|
|
|
|
@property (nonatomic) GCRotationRate lastGyroSample;
|
|
|
|
|
|
2023-12-06 19:12:04 -06:00
|
|
|
@property (nonatomic) NSTimer* _Nullable batteryTimer;
|
|
|
|
|
@property (nonatomic) GCDeviceBatteryState lastBatteryState;
|
|
|
|
|
@property (nonatomic) float lastBatteryLevel;
|
|
|
|
|
|
2023-06-28 23:46:39 -05:00
|
|
|
@property (nonatomic) BOOL reportedArrival;
|
2023-12-06 19:42:51 -06:00
|
|
|
@property (nonatomic) Controller* _Nullable mergedWithController;
|
2023-06-28 23:46:39 -05:00
|
|
|
|
2019-02-11 18:21:04 -08:00
|
|
|
@end
|