You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-09 12:50:35 +00:00
[web] add support for pen pressure
This commit is contained in:
@@ -305,18 +305,18 @@ int DisplayServerWeb::_mouse_button_callback(int p_pressed, int p_button, double
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisplayServerWeb::mouse_move_callback(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers) {
|
void DisplayServerWeb::mouse_move_callback(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers, double p_pressure) {
|
||||||
#ifdef PROXY_TO_PTHREAD_ENABLED
|
#ifdef PROXY_TO_PTHREAD_ENABLED
|
||||||
if (!Thread::is_main_thread()) {
|
if (!Thread::is_main_thread()) {
|
||||||
callable_mp_static(DisplayServerWeb::_mouse_move_callback).call_deferred(p_x, p_y, p_rel_x, p_rel_y, p_modifiers);
|
callable_mp_static(DisplayServerWeb::_mouse_move_callback).call_deferred(p_x, p_y, p_rel_x, p_rel_y, p_modifiers, p_pressure);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_mouse_move_callback(p_x, p_y, p_rel_x, p_rel_y, p_modifiers);
|
_mouse_move_callback(p_x, p_y, p_rel_x, p_rel_y, p_modifiers, p_pressure);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DisplayServerWeb::_mouse_move_callback(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers) {
|
void DisplayServerWeb::_mouse_move_callback(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers, double p_pressure) {
|
||||||
BitField<MouseButtonMask> input_mask = Input::get_singleton()->get_mouse_button_mask();
|
BitField<MouseButtonMask> input_mask = Input::get_singleton()->get_mouse_button_mask();
|
||||||
// For motion outside the canvas, only read mouse movement if dragging
|
// For motion outside the canvas, only read mouse movement if dragging
|
||||||
// started inside the canvas; imitating desktop app behavior.
|
// started inside the canvas; imitating desktop app behavior.
|
||||||
@@ -332,6 +332,7 @@ void DisplayServerWeb::_mouse_move_callback(double p_x, double p_y, double p_rel
|
|||||||
|
|
||||||
ev->set_position(pos);
|
ev->set_position(pos);
|
||||||
ev->set_global_position(pos);
|
ev->set_global_position(pos);
|
||||||
|
ev->set_pressure((float)p_pressure);
|
||||||
|
|
||||||
ev->set_relative(Vector2(p_rel_x, p_rel_y));
|
ev->set_relative(Vector2(p_rel_x, p_rel_y));
|
||||||
ev->set_relative_screen_position(ev->get_relative());
|
ev->set_relative_screen_position(ev->get_relative());
|
||||||
|
|||||||
@@ -120,8 +120,8 @@ private:
|
|||||||
static void _fullscreen_change_callback(int p_fullscreen);
|
static void _fullscreen_change_callback(int p_fullscreen);
|
||||||
WASM_EXPORT static int mouse_button_callback(int p_pressed, int p_button, double p_x, double p_y, int p_modifiers);
|
WASM_EXPORT static int mouse_button_callback(int p_pressed, int p_button, double p_x, double p_y, int p_modifiers);
|
||||||
static int _mouse_button_callback(int p_pressed, int p_button, double p_x, double p_y, int p_modifiers);
|
static int _mouse_button_callback(int p_pressed, int p_button, double p_x, double p_y, int p_modifiers);
|
||||||
WASM_EXPORT static void mouse_move_callback(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers);
|
WASM_EXPORT static void mouse_move_callback(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers, double p_pressure);
|
||||||
static void _mouse_move_callback(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers);
|
static void _mouse_move_callback(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers, double p_pressure);
|
||||||
WASM_EXPORT static int mouse_wheel_callback(double p_delta_x, double p_delta_y);
|
WASM_EXPORT static int mouse_wheel_callback(double p_delta_x, double p_delta_y);
|
||||||
static int _mouse_wheel_callback(double p_delta_x, double p_delta_y);
|
static int _mouse_wheel_callback(double p_delta_x, double p_delta_y);
|
||||||
WASM_EXPORT static void touch_callback(int p_type, int p_count);
|
WASM_EXPORT static void touch_callback(int p_type, int p_count);
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ extern int godot_js_pwa_update();
|
|||||||
|
|
||||||
// Input
|
// Input
|
||||||
extern void godot_js_input_mouse_button_cb(int (*p_callback)(int p_pressed, int p_button, double p_x, double p_y, int p_modifiers));
|
extern void godot_js_input_mouse_button_cb(int (*p_callback)(int p_pressed, int p_button, double p_x, double p_y, int p_modifiers));
|
||||||
extern void godot_js_input_mouse_move_cb(void (*p_callback)(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers));
|
extern void godot_js_input_mouse_move_cb(void (*p_callback)(double p_x, double p_y, double p_rel_x, double p_rel_y, int p_modifiers, double p_pressure));
|
||||||
extern void godot_js_input_mouse_wheel_cb(int (*p_callback)(double p_delta_x, double p_delta_y));
|
extern void godot_js_input_mouse_wheel_cb(int (*p_callback)(double p_delta_x, double p_delta_y));
|
||||||
extern void godot_js_input_touch_cb(void (*p_callback)(int p_type, int p_count), uint32_t *r_identifiers, double *r_coords);
|
extern void godot_js_input_touch_cb(void (*p_callback)(int p_type, int p_count), uint32_t *r_identifiers, double *r_coords);
|
||||||
extern void godot_js_input_key_cb(void (*p_callback)(int p_type, int p_repeat, int p_modifiers), char r_code[32], char r_key[32]);
|
extern void godot_js_input_key_cb(void (*p_callback)(int p_type, int p_repeat, int p_modifiers), char r_code[32], char r_key[32]);
|
||||||
|
|||||||
@@ -515,9 +515,9 @@ const GodotInput = {
|
|||||||
const rel_pos_x = evt.movementX * rw;
|
const rel_pos_x = evt.movementX * rw;
|
||||||
const rel_pos_y = evt.movementY * rh;
|
const rel_pos_y = evt.movementY * rh;
|
||||||
const modifiers = GodotInput.getModifiers(evt);
|
const modifiers = GodotInput.getModifiers(evt);
|
||||||
func(pos[0], pos[1], rel_pos_x, rel_pos_y, modifiers);
|
func(pos[0], pos[1], rel_pos_x, rel_pos_y, modifiers, evt.pressure);
|
||||||
}
|
}
|
||||||
GodotEventListeners.add(window, 'mousemove', move_cb, false);
|
GodotEventListeners.add(window, 'pointermove', move_cb, false);
|
||||||
},
|
},
|
||||||
|
|
||||||
godot_js_input_mouse_wheel_cb__proxy: 'sync',
|
godot_js_input_mouse_wheel_cb__proxy: 'sync',
|
||||||
|
|||||||
Reference in New Issue
Block a user