MCPcopy Create free account
hub / github.com/Redot-Engine/redot-engine / _mouse_wheel_callback

Method _mouse_wheel_callback

platform/web/display_server_web.cpp:650–722  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

648}
649
650int DisplayServerWeb::_mouse_wheel_callback(int p_delta_mode, double p_delta_x, double p_delta_y) {
651 if (!godot_js_display_canvas_is_focused() && !godot_js_is_ime_focused()) {
652 if (get_singleton()->cursor_inside_canvas) {
653 godot_js_display_canvas_focus();
654 } else {
655 return false;
656 }
657 }
658
659 Input *input = Input::get_singleton();
660 Ref<InputEventMouseButton> ev;
661 ev.instantiate();
662 ev->set_position(input->get_mouse_position());
663 ev->set_global_position(ev->get_position());
664
665 ev->set_shift_pressed(input->is_key_pressed(Key::SHIFT));
666 ev->set_alt_pressed(input->is_key_pressed(Key::ALT));
667 ev->set_ctrl_pressed(input->is_key_pressed(Key::CTRL));
668 ev->set_meta_pressed(input->is_key_pressed(Key::META));
669
670 enum DeltaMode {
671 DELTA_MODE_PIXEL = 0,
672 DELTA_MODE_LINE = 1,
673 DELTA_MODE_PAGE = 2,
674 };
675 const float MOUSE_WHEEL_PIXEL_FACTOR = 0.03f;
676 const float MOUSE_WHEEL_LINE_FACTOR = 0.3f;
677 const float MOUSE_WHEEL_PAGE_FACTOR = 1.0f;
678 float mouse_wheel_factor;
679
680 switch (p_delta_mode) {
681 case DELTA_MODE_PIXEL: {
682 mouse_wheel_factor = MOUSE_WHEEL_PIXEL_FACTOR;
683 } break;
684 case DELTA_MODE_LINE: {
685 mouse_wheel_factor = MOUSE_WHEEL_LINE_FACTOR;
686 } break;
687 case DELTA_MODE_PAGE: {
688 mouse_wheel_factor = MOUSE_WHEEL_PAGE_FACTOR;
689 } break;
690 }
691
692 if (p_delta_y < 0) {
693 ev->set_button_index(MouseButton::WHEEL_UP);
694 ev->set_factor(-p_delta_y * mouse_wheel_factor);
695 } else if (p_delta_y > 0) {
696 ev->set_button_index(MouseButton::WHEEL_DOWN);
697 ev->set_factor(p_delta_y * mouse_wheel_factor);
698 } else if (p_delta_x > 0) {
699 ev->set_button_index(MouseButton::WHEEL_LEFT);
700 ev->set_factor(p_delta_x * mouse_wheel_factor);
701 } else if (p_delta_x < 0) {
702 ev->set_button_index(MouseButton::WHEEL_RIGHT);
703 ev->set_factor(-p_delta_x * mouse_wheel_factor);
704 } else {
705 return false;
706 }
707

Callers

nothing calls this directly

Calls 15

mouse_button_to_maskFunction · 0.85
set_shift_pressedMethod · 0.80
is_key_pressedMethod · 0.80
set_alt_pressedMethod · 0.80
set_meta_pressedMethod · 0.80
set_button_indexMethod · 0.80
set_factorMethod · 0.80
get_button_indexMethod · 0.80
get_mouse_button_maskMethod · 0.80
parse_input_eventMethod · 0.80
instantiateMethod · 0.45
set_positionMethod · 0.45

Tested by

no test coverage detected