[iOS] Add Apple Pencil pressure and tilt support.
This commit is contained in:
@ -1223,6 +1223,30 @@ int InputEventScreenDrag::get_index() const {
|
||||
return index;
|
||||
}
|
||||
|
||||
void InputEventScreenDrag::set_tilt(const Vector2 &p_tilt) {
|
||||
tilt = p_tilt;
|
||||
}
|
||||
|
||||
Vector2 InputEventScreenDrag::get_tilt() const {
|
||||
return tilt;
|
||||
}
|
||||
|
||||
void InputEventScreenDrag::set_pressure(float p_pressure) {
|
||||
pressure = p_pressure;
|
||||
}
|
||||
|
||||
float InputEventScreenDrag::get_pressure() const {
|
||||
return pressure;
|
||||
}
|
||||
|
||||
void InputEventScreenDrag::set_pen_inverted(bool p_inverted) {
|
||||
pen_inverted = p_inverted;
|
||||
}
|
||||
|
||||
bool InputEventScreenDrag::get_pen_inverted() const {
|
||||
return pen_inverted;
|
||||
}
|
||||
|
||||
void InputEventScreenDrag::set_position(const Vector2 &p_pos) {
|
||||
pos = p_pos;
|
||||
}
|
||||
@ -1256,6 +1280,9 @@ Ref<InputEvent> InputEventScreenDrag::xformed_by(const Transform2D &p_xform, con
|
||||
sd->set_window_id(get_window_id());
|
||||
|
||||
sd->set_index(index);
|
||||
sd->set_pressure(get_pressure());
|
||||
sd->set_pen_inverted(get_pen_inverted());
|
||||
sd->set_tilt(get_tilt());
|
||||
sd->set_position(p_xform.xform(pos + p_local_ofs));
|
||||
sd->set_relative(p_xform.basis_xform(relative));
|
||||
sd->set_velocity(p_xform.basis_xform(velocity));
|
||||
@ -1268,7 +1295,7 @@ String InputEventScreenDrag::as_text() const {
|
||||
}
|
||||
|
||||
String InputEventScreenDrag::to_string() {
|
||||
return vformat("InputEventScreenDrag: index=%d, position=(%s), relative=(%s), velocity=(%s)", index, String(get_position()), String(get_relative()), String(get_velocity()));
|
||||
return vformat("InputEventScreenDrag: index=%d, position=(%s), relative=(%s), velocity=(%s), pressure=%.2f, tilt=(%s), pen_inverted=(%s)", index, String(get_position()), String(get_relative()), String(get_velocity()), get_pressure(), String(get_tilt()), get_pen_inverted());
|
||||
}
|
||||
|
||||
bool InputEventScreenDrag::accumulate(const Ref<InputEvent> &p_event) {
|
||||
@ -1292,6 +1319,15 @@ void InputEventScreenDrag::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_index", "index"), &InputEventScreenDrag::set_index);
|
||||
ClassDB::bind_method(D_METHOD("get_index"), &InputEventScreenDrag::get_index);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_tilt", "tilt"), &InputEventScreenDrag::set_tilt);
|
||||
ClassDB::bind_method(D_METHOD("get_tilt"), &InputEventScreenDrag::get_tilt);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_pressure", "pressure"), &InputEventScreenDrag::set_pressure);
|
||||
ClassDB::bind_method(D_METHOD("get_pressure"), &InputEventScreenDrag::get_pressure);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_pen_inverted", "pen_inverted"), &InputEventScreenDrag::set_pen_inverted);
|
||||
ClassDB::bind_method(D_METHOD("get_pen_inverted"), &InputEventScreenDrag::get_pen_inverted);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_position", "position"), &InputEventScreenDrag::set_position);
|
||||
ClassDB::bind_method(D_METHOD("get_position"), &InputEventScreenDrag::get_position);
|
||||
|
||||
@ -1302,6 +1338,9 @@ void InputEventScreenDrag::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("get_velocity"), &InputEventScreenDrag::get_velocity);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "index"), "set_index", "get_index");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "tilt"), "set_tilt", "get_tilt");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "pressure"), "set_pressure", "get_pressure");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "pen_inverted"), "set_pen_inverted", "get_pen_inverted");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "position", PROPERTY_HINT_NONE, "suffix:px"), "set_position", "get_position");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "relative", PROPERTY_HINT_NONE, "suffix:px"), "set_relative", "get_relative");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "velocity", PROPERTY_HINT_NONE, "suffix:px/s"), "set_velocity", "get_velocity");
|
||||
|
||||
Reference in New Issue
Block a user