screw alpha, just move it out of the way... also tad faster scroll
This commit is contained in:
@@ -16,6 +16,9 @@ use crate::{
|
||||
vrplugin::{Headset, MainCamera, create_view_space},
|
||||
};
|
||||
|
||||
#[derive(Component)]
|
||||
pub struct LookedAt;
|
||||
|
||||
#[derive(Component)]
|
||||
pub struct Kneeboard;
|
||||
|
||||
@@ -88,23 +91,32 @@ fn scroll_handler(
|
||||
return;
|
||||
};
|
||||
|
||||
let delta = Vec2::new(thumbstick.current_state.x, thumbstick.current_state.y) * 8.0;
|
||||
let delta = Vec2::new(thumbstick.current_state.x, thumbstick.current_state.y) * 12.0;
|
||||
|
||||
for webview in webviews.iter() {
|
||||
browsers.send_mouse_wheel(&webview, Vec2::ZERO, delta);
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(clippy::type_complexity)]
|
||||
fn position_kneeboard(
|
||||
mut transform: Query<&mut Transform, With<Kneeboard>>,
|
||||
mut transform: Query<(&mut Transform, Option<&LookedAt>), (With<Kneeboard>, Without<Headset>)>,
|
||||
kneeboard: Res<KneeboardPosition>,
|
||||
head: Query<&Transform, (With<Headset>, Without<Kneeboard>)>,
|
||||
) {
|
||||
let Ok(mut transform) = transform.single_mut() else {
|
||||
let Ok((mut transform, looked_at)) = transform.single_mut() else {
|
||||
return;
|
||||
};
|
||||
|
||||
let head = head.single().expect("a head to exist");
|
||||
|
||||
transform.translation = kneeboard.position;
|
||||
transform.rotation = kneeboard.rotation;
|
||||
|
||||
if looked_at.is_some() {
|
||||
transform.translation = head.translation;
|
||||
transform.rotation = head.rotation;
|
||||
}
|
||||
}
|
||||
|
||||
fn move_keyboard(
|
||||
@@ -170,28 +182,21 @@ fn spawn_kneeboard(
|
||||
}
|
||||
|
||||
fn gaze(
|
||||
material_handles: Query<&MeshMaterial3d<WebviewExtendStandardMaterial>, With<Kneeboard>>,
|
||||
mut materials: ResMut<Assets<WebviewExtendStandardMaterial>>,
|
||||
mut commands: Commands,
|
||||
position: Res<KneeboardPosition>,
|
||||
head_query: Query<&Transform, With<Headset>>,
|
||||
kneeboard: Query<Entity, With<Kneeboard>>,
|
||||
head: Query<&Transform, With<Headset>>,
|
||||
) {
|
||||
let head = head_query.single().expect("a head to exist");
|
||||
let head = head.single().expect("a head to exist");
|
||||
let kneeboard = kneeboard.single().expect("a kneeboard to exist");
|
||||
|
||||
let facing = head.forward().normalize();
|
||||
let to_target = (position.position - head.translation).normalize();
|
||||
let dot = facing.dot(to_target);
|
||||
let cos_fov_angle: f32 = (35.0f32 / 2.0f32).to_radians().cos();
|
||||
|
||||
let mut alpha = 1.0;
|
||||
commands.entity(kneeboard).remove::<LookedAt>();
|
||||
if dot < cos_fov_angle {
|
||||
alpha = 0.0;
|
||||
}
|
||||
|
||||
for material_handle in material_handles.iter() {
|
||||
if let Some(material) = materials.get_mut(material_handle)
|
||||
&& let Color::LinearRgba(ref mut rgba) = material.base.base_color
|
||||
{
|
||||
rgba.alpha = alpha;
|
||||
}
|
||||
commands.entity(kneeboard).insert(LookedAt);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user