diff options
| author | Sakarias Johansson <sakarias.johansson@goodbyekansas.com> | 2023-04-14 20:58:23 +0200 |
|---|---|---|
| committer | Sakarias Johansson <sakariasjohansson@hotmail.com> | 2023-04-14 21:17:20 +0200 |
| commit | 8201c8e2a7ff85383ff7606513778253aae7e666 (patch) | |
| tree | ad0175360dc19554c6f11b1a66af210d60418f99 /racer-tracer/src/main.rs | |
| parent | 0ae6ca062f5936ae6f595f45ca0a78ed049452bc (diff) | |
| download | racer-tracer-main.tar.gz racer-tracer-main.tar.xz racer-tracer-main.zip | |
Before you could only move the position of the camera.
- Add support for turning camera by holding down left mouse.
- Add support for turning camera with arrow keys.
- Add Mouse move callback for key_inputs.
Diffstat (limited to 'racer-tracer/src/main.rs')
| -rw-r--r-- | racer-tracer/src/main.rs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/racer-tracer/src/main.rs b/racer-tracer/src/main.rs index c31f09b..afdc919 100644 --- a/racer-tracer/src/main.rs +++ b/racer-tracer/src/main.rs @@ -53,6 +53,9 @@ fn run(config: Config, log: Logger, term: Terminal) -> Result<(), TracerError> { let image = image::Image::new(config.screen.width, config.screen.height); let look_from = Vec3::new(13.0, 2.0, 3.0); let look_at = Vec3::new(0.0, 0.0, 0.0); + // TODO: Make camera configurable. + // pos, look_at, fov, aperture, focus distance. + // Also ensure those can be changed during runtime. let camera = Camera::new( look_from, look_at, @@ -71,6 +74,7 @@ fn run(config: Config, log: Logger, term: Terminal) -> Result<(), TracerError> { match &config.scene_controller { config::ConfigSceneController::Interactive => { let camera_speed = 0.000002; + let camera_sensitivity = 0.001; InteractiveScene::new( SceneData { log: log.new(o!("scope" => "scene-controller")), @@ -81,13 +85,17 @@ fn run(config: Config, log: Logger, term: Terminal) -> Result<(), TracerError> { image: image.clone(), }, camera_speed, + camera_sensitivity, ) } } }; let mut inputs = KeyInputs::new(log.new(o!("scope" => "key-inputs"))); - inputs.register_inputs(scene_controller.get_inputs()); + inputs.register_inputs(scene_controller.key_inputs()); + if let Some(mouse_cb) = scene_controller.mouse_input() { + inputs.mouse_move(mouse_cb); + } rayon::scope(|s| { // Render @@ -126,7 +134,7 @@ fn run(config: Config, log: Logger, term: Terminal) -> Result<(), TracerError> { { let dt = t.elapsed().as_micros() as f64; t = Instant::now(); - inputs.update(&window, dt); + inputs.update(&mut window, dt); window_res = scene_controller |
