summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <rverschelde@gmail.com>2020-10-01 12:16:01 +0200
committerGitHub <noreply@github.com>2020-10-01 12:16:01 +0200
commite46159ab4d0300ca514121f7844888bbfe4a8875 (patch)
tree431748534d482dad710d36296727852604c4160e
parent894b0a010bd3617ae09baa3b571d60154b9877e1 (diff)
parent1d9b6b01db4abbdd59651469f7917f97096cf771 (diff)
Merge pull request #42454 from naithar/feature/ios-delay-in-settings-master
[4.0] [iOS] Add touch delay value to project settings
-rw-r--r--doc/classes/ProjectSettings.xml3
-rw-r--r--main/main.cpp1
-rw-r--r--platform/iphone/SCsub2
-rw-r--r--platform/iphone/godot_view_gesture_recognizer.h2
-rw-r--r--platform/iphone/godot_view_gesture_recognizer.mm (renamed from platform/iphone/godot_view_gesture_recognizer.m)15
5 files changed, 18 insertions, 5 deletions
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index ed8eddda07..d040341100 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -555,6 +555,9 @@
<member name="input_devices/pointing/emulate_touch_from_mouse" type="bool" setter="" getter="" default="false">
If [code]true[/code], sends touch input events when clicking or dragging the mouse.
</member>
+ <member name="input_devices/pointing/ios/touch_delay" type="float" setter="" getter="" default="0.150">
+ Default delay for touch events. This only affects iOS devices.
+ </member>
<member name="layer_names/2d_physics/layer_1" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D physics layer 1.
</member>
diff --git a/main/main.cpp b/main/main.cpp
index a2ea085618..5ebd0138d3 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -1369,6 +1369,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
"0,33200,1,or_greater")); // No negative numbers
GLOBAL_DEF("display/window/ios/hide_home_indicator", true);
+ GLOBAL_DEF("input_devices/pointing/ios/touch_delay", 0.150);
Engine::get_singleton()->set_frame_delay(frame_delay);
diff --git a/platform/iphone/SCsub b/platform/iphone/SCsub
index 49c77468ed..848fd9713a 100644
--- a/platform/iphone/SCsub
+++ b/platform/iphone/SCsub
@@ -18,7 +18,7 @@ iphone_lib = [
"godot_view.mm",
"display_layer.mm",
"godot_view_renderer.mm",
- "godot_view_gesture_recognizer.m",
+ "godot_view_gesture_recognizer.mm",
]
env_ios = env.Clone()
diff --git a/platform/iphone/godot_view_gesture_recognizer.h b/platform/iphone/godot_view_gesture_recognizer.h
index 8d84914712..1431a9fb89 100644
--- a/platform/iphone/godot_view_gesture_recognizer.h
+++ b/platform/iphone/godot_view_gesture_recognizer.h
@@ -39,6 +39,8 @@
@interface GodotViewGestureRecognizer : UIGestureRecognizer
+@property(nonatomic, readonly, assign) NSTimeInterval delayTimeInterval;
+
- (instancetype)init;
@end
diff --git a/platform/iphone/godot_view_gesture_recognizer.m b/platform/iphone/godot_view_gesture_recognizer.mm
index 377ccd52a5..99ee42ecb3 100644
--- a/platform/iphone/godot_view_gesture_recognizer.m
+++ b/platform/iphone/godot_view_gesture_recognizer.mm
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* godot_view_gesture_recognizer.m */
+/* godot_view_gesture_recognizer.mm */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -30,8 +30,7 @@
#import "godot_view_gesture_recognizer.h"
-// Using same delay interval that is used for `UIScrollView`
-const NSTimeInterval kGLGestureDelayInterval = 0.150;
+#include "core/project_settings.h"
// Minimum distance for touches to move to fire
// a delay timer before scheduled time.
@@ -41,6 +40,12 @@ const CGFloat kGLGestureMovementDistance = 0.5;
@interface GodotViewGestureRecognizer ()
+@property(nonatomic, readwrite, assign) NSTimeInterval delayTimeInterval;
+
+@end
+
+@interface GodotViewGestureRecognizer ()
+
// Timer used to delay begin touch message.
// Should work as simple emulation of UIDelayedAction
@property(strong, nonatomic) NSTimer *delayTimer;
@@ -60,6 +65,8 @@ const CGFloat kGLGestureMovementDistance = 0.5;
self.delaysTouchesBegan = YES;
self.delaysTouchesEnded = YES;
+ self.delayTimeInterval = GLOBAL_GET("input_devices/pointing/ios/touch_delay");
+
return self;
}
@@ -87,7 +94,7 @@ const CGFloat kGLGestureMovementDistance = 0.5;
self.delayedEvent = event;
self.delayTimer = [NSTimer
- scheduledTimerWithTimeInterval:kGLGestureDelayInterval
+ scheduledTimerWithTimeInterval:self.delayTimeInterval
target:self
selector:@selector(fireDelayedTouches:)
userInfo:nil