feat: space drag multiplier

This commit is contained in:
galister
2024-06-17 14:36:21 +09:00
parent abc132c553
commit c7aa88647c
5 changed files with 21 additions and 2 deletions

View File

@@ -114,7 +114,8 @@ impl PlayspaceMover {
let new_hand = data let new_hand = data
.pose .pose
.transform_point3a(state.input_state.pointers[data.hand].raw_pose.translation); .transform_point3a(state.input_state.pointers[data.hand].raw_pose.translation);
let relative_pos = new_hand - data.hand_pose; let relative_pos =
(new_hand - data.hand_pose) * state.session.config.space_drag_multiplier;
if relative_pos.length_squared() > 1000.0 { if relative_pos.length_squared() > 1000.0 {
log::warn!("Space drag too fast, ignoring"); log::warn!("Space drag too fast, ignoring");

View File

@@ -95,7 +95,8 @@ impl PlayspaceMover {
let new_hand = data let new_hand = data
.pose .pose
.transform_point3a(state.input_state.pointers[data.hand].pose.translation); .transform_point3a(state.input_state.pointers[data.hand].pose.translation);
let relative_pos = new_hand - data.hand_pose; let relative_pos =
(new_hand - data.hand_pose) * state.session.config.space_drag_multiplier;
if relative_pos.length_squared() > 1000.0 { if relative_pos.length_squared() > 1000.0 {
log::warn!("Space drag too fast, ignoring"); log::warn!("Space drag too fast, ignoring");

View File

@@ -240,6 +240,9 @@ pub struct GeneralConfig {
#[serde(default = "def_font")] #[serde(default = "def_font")]
pub primary_font: Arc<str>, pub primary_font: Arc<str>,
#[serde(default = "def_one")]
pub space_drag_multiplier: f32,
} }
impl GeneralConfig { impl GeneralConfig {
@@ -374,6 +377,7 @@ pub struct AutoSettings {
pub notifications_sound_enabled: bool, pub notifications_sound_enabled: bool,
pub realign_on_showhide: bool, pub realign_on_showhide: bool,
pub allow_sliding: bool, pub allow_sliding: bool,
pub space_drag_multiplier: f32,
} }
fn get_settings_path() -> PathBuf { fn get_settings_path() -> PathBuf {
@@ -392,6 +396,7 @@ pub fn save_settings(config: &GeneralConfig) -> anyhow::Result<()> {
notifications_sound_enabled: config.notifications_sound_enabled, notifications_sound_enabled: config.notifications_sound_enabled,
realign_on_showhide: config.realign_on_showhide, realign_on_showhide: config.realign_on_showhide,
allow_sliding: config.allow_sliding, allow_sliding: config.allow_sliding,
space_drag_multiplier: config.space_drag_multiplier,
}; };
let json = serde_json::to_string_pretty(&conf).unwrap(); // want panic let json = serde_json::to_string_pretty(&conf).unwrap(); // want panic

View File

@@ -134,6 +134,9 @@ pub enum ButtonAction {
channel: ColorChannel, channel: ColorChannel,
delta: f32, delta: f32,
}, },
DragMultiplier {
delta: f32,
},
System { System {
action: SystemAction, action: SystemAction,
}, },
@@ -330,6 +333,9 @@ fn handle_action(action: &ButtonAction, press: &mut PressData, app: &mut AppStat
.enqueue(TaskType::System(SystemTask::ColorGain(channel, delta))); .enqueue(TaskType::System(SystemTask::ColorGain(channel, delta)));
} }
ButtonAction::System { action } => run_system(action, app), ButtonAction::System { action } => run_system(action, app),
ButtonAction::DragMultiplier { delta } => {
app.session.config.space_drag_multiplier += delta;
}
} }
} }

View File

@@ -38,6 +38,7 @@ pub enum LabelContent {
low_color: Arc<str>, low_color: Arc<str>,
charging_color: Arc<str>, charging_color: Arc<str>,
}, },
DragMultiplier,
Ipd, Ipd,
} }
@@ -66,6 +67,7 @@ pub enum LabelData {
Ipd { Ipd {
last_ipd: f32, last_ipd: f32,
}, },
DragMultiplier,
} }
pub fn modular_label_init(label: &mut ModularControl, content: &LabelContent) { pub fn modular_label_init(label: &mut ModularControl, content: &LabelContent) {
@@ -111,6 +113,7 @@ pub fn modular_label_init(label: &mut ModularControl, content: &LabelContent) {
None None
} }
LabelContent::Ipd => Some(LabelData::Ipd { last_ipd: 0. }), LabelContent::Ipd => Some(LabelData::Ipd { last_ipd: 0. }),
LabelContent::DragMultiplier => Some(LabelData::DragMultiplier),
}; };
if let Some(state) = state { if let Some(state) = state {
@@ -249,5 +252,8 @@ pub(super) fn label_update(control: &mut ModularControl, _: &mut (), app: &mut A
control.set_text(&format!("{:.1}", app.input_state.ipd)); control.set_text(&format!("{:.1}", app.input_state.ipd));
} }
} }
LabelData::DragMultiplier => {
control.set_text(&format!("{:.1}", app.session.config.space_drag_multiplier));
}
} }
} }