feat: space drag multiplier
This commit is contained in:
@@ -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");
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user