summaryrefslogtreecommitdiffstats
path: root/platform/ios/ios.mm
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-05-02 19:06:03 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-05-02 19:06:03 +0200
commit5ea3f0bd75d7f6320b79ab791afb967c72a303a0 (patch)
tree9a3e429a54fee6bed2cd405f3ed4ad5d4bdfd8ca /platform/ios/ios.mm
parent4e9543d8494f175bc0e772541a15c059bf6d6835 (diff)
parent789c6ebdfd72ec9141e04ef162471983e7fdee94 (diff)
downloadredot-engine-5ea3f0bd75d7f6320b79ab791afb967c72a303a0.tar.gz
Merge pull request #91143 from RadiantUwU/add-input-amplitude
Add `amplitude` argument to `Input.vibrate_handheld`
Diffstat (limited to 'platform/ios/ios.mm')
-rw-r--r--platform/ios/ios.mm42
1 files changed, 31 insertions, 11 deletions
diff --git a/platform/ios/ios.mm b/platform/ios/ios.mm
index 0a2e1fd5cd..6943de5ac8 100644
--- a/platform/ios/ios.mm
+++ b/platform/ios/ios.mm
@@ -69,21 +69,41 @@ CHHapticEngine *iOS::get_haptic_engine_instance() API_AVAILABLE(ios(13)) {
return haptic_engine;
}
-void iOS::vibrate_haptic_engine(float p_duration_seconds) API_AVAILABLE(ios(13)) {
+void iOS::vibrate_haptic_engine(float p_duration_seconds, float p_amplitude) API_AVAILABLE(ios(13)) {
if (@available(iOS 13, *)) { // We need the @available check every time to make the compiler happy...
if (supports_haptic_engine()) {
CHHapticEngine *cur_haptic_engine = get_haptic_engine_instance();
if (cur_haptic_engine) {
- NSDictionary *hapticDict = @{
- CHHapticPatternKeyPattern : @[
- @{CHHapticPatternKeyEvent : @{
- CHHapticPatternKeyEventType : CHHapticEventTypeHapticContinuous,
- CHHapticPatternKeyTime : @(CHHapticTimeImmediate),
- CHHapticPatternKeyEventDuration : @(p_duration_seconds)
- },
- },
- ],
- };
+ NSDictionary *hapticDict;
+ if (p_amplitude < 0) {
+ hapticDict = @{
+ CHHapticPatternKeyPattern : @[
+ @{CHHapticPatternKeyEvent : @{
+ CHHapticPatternKeyEventType : CHHapticEventTypeHapticContinuous,
+ CHHapticPatternKeyTime : @(CHHapticTimeImmediate),
+ CHHapticPatternKeyEventDuration : @(p_duration_seconds),
+ },
+ },
+ ],
+ };
+ } else {
+ hapticDict = @{
+ CHHapticPatternKeyPattern : @[
+ @{CHHapticPatternKeyEvent : @{
+ CHHapticPatternKeyEventType : CHHapticEventTypeHapticContinuous,
+ CHHapticPatternKeyTime : @(CHHapticTimeImmediate),
+ CHHapticPatternKeyEventDuration : @(p_duration_seconds),
+ CHHapticPatternKeyEventParameters : @[
+ @{
+ CHHapticPatternKeyParameterID : @("HapticIntensity"),
+ CHHapticPatternKeyParameterValue : @(p_amplitude)
+ },
+ ],
+ },
+ },
+ ],
+ };
+ }
NSError *error;
CHHapticPattern *pattern = [[CHHapticPattern alloc] initWithDictionary:hapticDict error:&error];