Files
wayvr/wlx-overlay-s/src/windowing/mod.rs
T
2025-11-11 11:44:57 +09:00

46 lines
1.1 KiB
Rust

use glam::{Affine3A, Vec3A};
use slotmap::new_key_type;
use std::sync::Arc;
pub mod backend;
pub mod manager;
pub mod set;
pub mod window;
new_key_type! {
pub struct OverlayID;
}
#[derive(Clone, Debug)]
pub enum OverlaySelector {
Id(OverlayID),
Name(Arc<str>),
}
pub const Z_ORDER_TOAST: u32 = 70;
pub const Z_ORDER_LINES: u32 = 69;
pub const Z_ORDER_WATCH: u32 = 68;
pub const Z_ORDER_ANCHOR: u32 = 67;
pub const Z_ORDER_DEFAULT: u32 = 0;
pub const Z_ORDER_DASHBOARD: u32 = Z_ORDER_DEFAULT;
pub fn snap_upright(transform: Affine3A, up_dir: Vec3A) -> Affine3A {
if transform.x_axis.dot(up_dir).abs() < 0.2 {
let scale = transform.x_axis.length();
let col_z = transform.z_axis.normalize();
let col_y = up_dir;
let col_x = col_y.cross(col_z);
let col_y = col_z.cross(col_x).normalize();
let col_x = col_x.normalize();
Affine3A::from_cols(
col_x * scale,
col_y * scale,
col_z * scale,
transform.translation,
)
} else {
transform
}
}