Skip to content

Commit

Permalink
Client: improved trigers power logic for Windows client
Browse files Browse the repository at this point in the history
  • Loading branch information
DvaMishkiLapa committed Dec 9, 2024
1 parent 734db75 commit d97b9d0
Showing 1 changed file with 16 additions and 13 deletions.
29 changes: 16 additions & 13 deletions client/packages/vita_virtual_device/src/windows.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ use windows::Win32::UI::Input::KeyboardAndMouse::{
};

use crate::virtual_button::{Button, DpadDirection};
use crate::virtual_config::{Config, ConfigBuilder, TouchConfig, TriggerConfig};
use crate::virtual_config::{Config, ConfigBuilder, TouchConfig};
use crate::virtual_touch::{Point, TouchAction};
use crate::virtual_utils::{compute_dpad_direction, get_pressed_buttons};
use crate::{f32_to_i16, VitaVirtualDevice, FRONT_TOUCHPAD_RECT, REAR_TOUCHPAD_RECT};
Expand Down Expand Up @@ -270,24 +270,12 @@ impl VitaVirtualDevice<&ConfigBuilder> for VitaDevice {
&self.config.front_touch_config,
&mut buttons,
);

process_touch_reports(
&report.back_touch.reports,
&self.config.rear_touch_config,
&mut buttons,
);

// Trigger processing for Trigger configuration
let (mut pwr_trigger_l, mut pwr_trigger_r) = (0u8, 0u8);
if let TriggerConfig::Trigger = self.config.trigger_config {
if report.buttons.lt {
pwr_trigger_l = 255;
}
if report.buttons.rt {
pwr_trigger_r = 255;
}
}

// Handling special touchpad buttons
let is_touching = match (
&self.config.front_touch_config,
Expand All @@ -300,6 +288,7 @@ impl VitaVirtualDevice<&ConfigBuilder> for VitaDevice {

let mut special_buttons = DS4SpecialButtons::new();

// Touch click emulation
if is_touching && !self.touch_state {
self.touch_start_time = Some(Instant::now());
} else if !is_touching && self.touch_state {
Expand Down Expand Up @@ -327,6 +316,20 @@ impl VitaVirtualDevice<&ConfigBuilder> for VitaDevice {
let gyro_y_i16 = f32_to_i16(-report.motion.gyro.y, -35.0, 35.0); //inverted
let gyro_z_i16 = f32_to_i16(report.motion.gyro.z, -35.0, 35.0);

// Trigger processing for Trigger configuration
let (pwr_trigger_l, pwr_trigger_r) = (
if buttons | DS4Buttons::TRIGGER_LEFT == buttons {
255
} else {
0
},
if buttons | DS4Buttons::TRIGGER_RIGHT == buttons {
255
} else {
0
},
);

let report = DS4ReportExBuilder::new()
.thumb_lx(report.lx)
.thumb_ly(report.ly)
Expand Down

0 comments on commit d97b9d0

Please sign in to comment.