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},
|
vrplugin::{Headset, MainCamera, create_view_space},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#[derive(Component)]
|
||||||
|
pub struct LookedAt;
|
||||||
|
|
||||||
#[derive(Component)]
|
#[derive(Component)]
|
||||||
pub struct Kneeboard;
|
pub struct Kneeboard;
|
||||||
|
|
||||||
@@ -88,23 +91,32 @@ fn scroll_handler(
|
|||||||
return;
|
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() {
|
for webview in webviews.iter() {
|
||||||
browsers.send_mouse_wheel(&webview, Vec2::ZERO, delta);
|
browsers.send_mouse_wheel(&webview, Vec2::ZERO, delta);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(clippy::type_complexity)]
|
||||||
fn position_kneeboard(
|
fn position_kneeboard(
|
||||||
mut transform: Query<&mut Transform, With<Kneeboard>>,
|
mut transform: Query<(&mut Transform, Option<&LookedAt>), (With<Kneeboard>, Without<Headset>)>,
|
||||||
kneeboard: Res<KneeboardPosition>,
|
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;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let head = head.single().expect("a head to exist");
|
||||||
|
|
||||||
transform.translation = kneeboard.position;
|
transform.translation = kneeboard.position;
|
||||||
transform.rotation = kneeboard.rotation;
|
transform.rotation = kneeboard.rotation;
|
||||||
|
|
||||||
|
if looked_at.is_some() {
|
||||||
|
transform.translation = head.translation;
|
||||||
|
transform.rotation = head.rotation;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn move_keyboard(
|
fn move_keyboard(
|
||||||
@@ -170,28 +182,21 @@ fn spawn_kneeboard(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn gaze(
|
fn gaze(
|
||||||
material_handles: Query<&MeshMaterial3d<WebviewExtendStandardMaterial>, With<Kneeboard>>,
|
mut commands: Commands,
|
||||||
mut materials: ResMut<Assets<WebviewExtendStandardMaterial>>,
|
|
||||||
position: Res<KneeboardPosition>,
|
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 facing = head.forward().normalize();
|
||||||
let to_target = (position.position - head.translation).normalize();
|
let to_target = (position.position - head.translation).normalize();
|
||||||
let dot = facing.dot(to_target);
|
let dot = facing.dot(to_target);
|
||||||
let cos_fov_angle: f32 = (35.0f32 / 2.0f32).to_radians().cos();
|
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 {
|
if dot < cos_fov_angle {
|
||||||
alpha = 0.0;
|
commands.entity(kneeboard).insert(LookedAt);
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user