use bevy::{prelude::*, window::PresentMode, render::camera::CameraProjectionPlugin}; // use offaxis::{offaxis_camera_setup, OffAxisProjection}; #[derive(Component,Default)] pub struct Viewer { pub position: Vec3, pub orientation: Quat, pub alpha: f32, } impl Viewer { pub fn new(position: Vec3) ->Self { Self { position, orientation: Quat::IDENTITY, alpha: 0.0, } } pub fn default() -> Self { Self { position: Vec3::ZERO, orientation: Quat::IDENTITY, alpha: 0.0 } } } 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; v.position = Vec3::new(v.alpha.sin()*radius,v.alpha.cos()*radius + 1.0_f32,15.0); 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; } }