mirror of
https://github.com/CTCaer/RetroArch.git
synced 2024-12-27 21:27:12 +00:00
76 lines
2.5 KiB
Objective-C
76 lines
2.5 KiB
Objective-C
//
|
|
// GCExtendedGamepadSnapshot.h
|
|
// GameController
|
|
//
|
|
// Copyright (c) 2012 Apple Inc. All rights reserved.
|
|
//
|
|
|
|
#import "GameController.h"
|
|
|
|
/**
|
|
A GCExtendedGamepadSnapshot snapshot is a concrete GCExtendedGamepad implementation. It can be used directly in an
|
|
application to implement controller input replays. It is also returned as the result of polling a controller.
|
|
|
|
The current snapshotData is readily available to access as NSData. A developer can serialize this to any
|
|
destination necessary using the NSData API.
|
|
|
|
The data contains some version of a GCExtendedGamepadSnapShotData structure.
|
|
|
|
@see -[GCExtendedGamepad saveSnapshot]
|
|
*/
|
|
GAMECONTROLLER_EXPORT
|
|
@interface GCExtendedGamepadSnapshot : GCExtendedGamepad
|
|
@property (copy) NSData *snapshotData;
|
|
|
|
- (instancetype)initWithSnapshotData:(NSData *)data;
|
|
- (instancetype)initWithController:(GCController *)controller snapshotData:(NSData *)data;
|
|
|
|
@end
|
|
|
|
#pragma pack(push, 1)
|
|
typedef struct {
|
|
// Standard information
|
|
uint16_t version; //0x0100
|
|
uint16_t size; //sizeof(GCExtendedGamepadSnapShotDataV100) or larger
|
|
|
|
// Extended gamepad data
|
|
// Axes in the range [-1.0, 1.0]
|
|
float_t dpadX;
|
|
float_t dpadY;
|
|
|
|
// Buttons in the range [0.0, 1.0]
|
|
float_t buttonA;
|
|
float_t buttonB;
|
|
float_t buttonX;
|
|
float_t buttonY;
|
|
float_t leftShoulder;
|
|
float_t rightShoulder;
|
|
|
|
// Axes in the range [-1.0, 1.0]
|
|
float_t leftThumbstickX;
|
|
float_t leftThumbstickY;
|
|
float_t rightThumbstickX;
|
|
float_t rightThumbstickY;
|
|
|
|
// Buttons in the range [0.0, 1.0]
|
|
float_t leftTrigger;
|
|
float_t rightTrigger;
|
|
|
|
} GCExtendedGamepadSnapShotDataV100;
|
|
#pragma pack(pop)
|
|
|
|
/**Fills out a v100 snapshot from any compatible NSData source
|
|
|
|
@return NO if data is nil, snapshotData is nil or the contents of data does not contain a compatible snapshot. YES for all other cases.
|
|
*/
|
|
GAMECONTROLLER_EXPORT
|
|
BOOL GCExtendedGamepadSnapShotDataV100FromNSData(GCExtendedGamepadSnapShotDataV100 *snapshotData, NSData *data);
|
|
|
|
/**Creates an NSData object from a v100 snapshot.
|
|
If the version and size is not set in the snapshot the data will automatically have version 0x100 and sizeof(GCExtendedGamepadSnapShotDataV100) set as the values implicitly.
|
|
|
|
@return nil if the snapshot is NULL, otherwise an NSData instance compatible with GCExtendedGamepadSnapshot.snapshotData
|
|
*/
|
|
GAMECONTROLLER_EXPORT
|
|
NSData *NSDataFromGCExtendedGamepadSnapShotDataV100(GCExtendedGamepadSnapShotDataV100 *snapshotData);
|