PixSpace/src/viewer.rs

56 lines
1.2 KiB
Rust
Raw Normal View History

use bevy::{prelude::*, render::camera::CameraProjectionPlugin, window::PresentMode};
use crate::screeninfo::ScreenInfo;
// use offaxis::{offaxis_camera_setup, OffAxisProjection};
2022-12-06 15:44:16 +01:00
#[derive(Component, Default)]
2022-12-06 15:44:16 +01:00
pub struct Viewer {
pub position: Vec3,
pub orientation: Quat,
2022-12-06 15:44:16 +01:00
pub alpha: f32,
}
2022-12-06 15:44:16 +01:00
impl Viewer {
pub fn new(position: Vec3) -> Self {
Self {
position,
orientation: Quat::IDENTITY,
alpha: 0.0,
}
}
pub fn default() -> Self {
2022-12-06 15:44:16 +01:00
Self {
position: Vec3::ZERO,
orientation: Quat::IDENTITY,
alpha: 0.0,
2022-12-06 15:44:16 +01:00
}
}
}
2022-12-11 13:58:18 +01:00
pub fn simulate_viewer(mut query: Query<&mut Viewer>) {
for mut v in query.iter_mut() {
//v.position += Vec3::Y * 0.005;
v.alpha += 0.01;
let radius = 1.5;
let z_distance = 8.0_f32;
v.position = Vec3::new(
v.alpha.sin() * radius,
v.alpha.cos() * radius + 1.0_f32,
z_distance,
);
let vm = Mat4::look_at_rh(v.position, Vec3::ZERO, Vec3::Y);
println!("{:?}", vm);
// view matrices should be orientation only
let dir = Quat::from_mat4(&vm);
v.orientation = dir;
}
}