diff options
Diffstat (limited to 'core')
| -rw-r--r-- | core/input_map.cpp | 2 | ||||
| -rw-r--r-- | core/io/marshalls.cpp | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/core/input_map.cpp b/core/input_map.cpp index 5a9b035771..17e98902a1 100644 --- a/core/input_map.cpp +++ b/core/input_map.cpp @@ -106,7 +106,7 @@ List<InputEvent>::Element *InputMap::_find_event(List<InputEvent> &p_list,const } break; case InputEvent::JOYSTICK_MOTION: { - same=(e.joy_motion.axis==p_event.joy_motion.axis); + same=(e.joy_motion.axis==p_event.joy_motion.axis && (e.joy_motion.axis_value < 0) == (p_event.joy_motion.axis_value < 0)); } break; } diff --git a/core/io/marshalls.cpp b/core/io/marshalls.cpp index 1733aecd46..60617e1237 100644 --- a/core/io/marshalls.cpp +++ b/core/io/marshalls.cpp @@ -438,8 +438,9 @@ Error decode_variant(Variant& r_variant,const uint8_t *p_buffer, int p_len,int * case InputEvent::JOYSTICK_MOTION: { ie.joy_motion.axis=decode_uint32(&buf[12]); + ie.joy_motion.axis_value=decode_float(&buf[16]); if (r_len) - (*r_len)+=4; + (*r_len)+=8; } break; } @@ -1154,8 +1155,9 @@ Error encode_variant(const Variant& p_variant, uint8_t *r_buffer, int &r_len) { int axis = ie.joy_motion.axis; encode_uint32(axis,&buf[llen]); + encode_float(ie.joy_motion.axis_value, &buf[llen+4]); } - llen+=4; + llen+=8; } break; } |