extern crate kiss3d;
extern crate nalgebra as na;
use kiss3d::camera::{ArcBall, FirstPerson};
use kiss3d::event::{Action, Key, WindowEvent};
use kiss3d::light::Light;
use kiss3d::window::Window;
use na::Point3;
fn main() {
let eye = Point3::new(10.0f32, 10.0, 10.0);
let at = Point3::origin();
let mut first_person = FirstPerson::new(eye, at);
let mut arc_ball = ArcBall::new(eye, at);
let mut use_arc_ball = true;
let mut window = Window::new("Kiss3d: camera");
window.set_light(Light::StickToCamera);
while !window.should_close() {
let curr_yaw = arc_ball.yaw();
arc_ball.set_yaw(curr_yaw + 0.05);
for event in window.events().iter() {
match event.value {
WindowEvent::Key(key, Action::Release, _) => {
if key == Key::Numpad1 {
use_arc_ball = true
} else if key == Key::Numpad2 {
use_arc_ball = false
}
}
_ => {}
}
}
window.draw_line(
&Point3::origin(),
&Point3::new(1.0, 0.0, 0.0),
&Point3::new(1.0, 0.0, 0.0),
);
window.draw_line(
&Point3::origin(),
&Point3::new(0.0, 1.0, 0.0),
&Point3::new(0.0, 1.0, 0.0),
);
window.draw_line(
&Point3::origin(),
&Point3::new(0.0, 0.0, 1.0),
&Point3::new(0.0, 0.0, 1.0),
);
if use_arc_ball {
window.render_with_camera(&mut arc_ball);
} else {
window.render_with_camera(&mut first_person);
}
}
}