Skip to content

Commit 50fd6e9

Browse files
committed
Rename cam::Mode to Transform which is more descriptive
1 parent 414b8d1 commit 50fd6e9

File tree

6 files changed

+32
-23
lines changed

6 files changed

+32
-23
lines changed

core/src/render/cam.rs

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,17 @@ use super::{
1919
VertexShader, View, ViewToProj, World, WorldToView,
2020
};
2121

22-
/// Camera movement mode.
23-
///
24-
/// TODO Rename to something more specific (e.g. `Motion`?)
25-
pub trait Mode {
22+
/// Trait for different camera motion transforms.
23+
pub trait Transform {
2624
/// Returns the current world-to-view matrix of this camera mode.
2725
fn world_to_view(&self) -> Mat4x4<WorldToView>;
2826
}
2927

3028
/// Type to manage the world-to-viewport transformation.
3129
#[derive(Copy, Clone, Debug, Default)]
32-
pub struct Camera<M> {
30+
pub struct Camera<Tf> {
3331
/// The movement mode of the camera.
34-
pub mode: M,
32+
pub transform: Tf,
3533
/// Viewport width and height.
3634
pub dims: Dims,
3735
/// Projection matrix.
@@ -85,9 +83,14 @@ impl Camera<()> {
8583
}
8684
}
8785

88-
pub fn mode<M: Mode>(self, mode: M) -> Camera<M> {
86+
pub fn transform<M: Transform>(self, mode: M) -> Camera<M> {
8987
let Self { dims, project, viewport, .. } = self;
90-
Camera { mode, dims, project, viewport }
88+
Camera {
89+
transform: mode,
90+
dims,
91+
project,
92+
viewport,
93+
}
9194
}
9295
}
9396

@@ -131,10 +134,10 @@ impl<M> Camera<M> {
131134
}
132135
}
133136

134-
impl<M: Mode> Camera<M> {
137+
impl<M: Transform> Camera<M> {
135138
/// Returns the composed camera and projection matrix.
136139
pub fn world_to_project(&self) -> Mat4x4<RealToProj<World>> {
137-
self.mode.world_to_view().then(&self.project)
140+
self.transform.world_to_view().then(&self.project)
138141
}
139142

140143
/// Renders the given geometry from the viewpoint of this camera.
@@ -262,7 +265,7 @@ impl Orbit {
262265
//
263266

264267
#[cfg(feature = "fp")]
265-
impl Mode for FirstPerson {
268+
impl Transform for FirstPerson {
266269
fn world_to_view(&self) -> Mat4x4<WorldToView> {
267270
let &Self { pos, heading, .. } = self;
268271
let fwd_move = az_alt(heading.az(), turns(0.0)).to_cart();
@@ -278,7 +281,7 @@ impl Mode for FirstPerson {
278281
}
279282

280283
#[cfg(feature = "fp")]
281-
impl Mode for Orbit {
284+
impl Transform for Orbit {
282285
fn world_to_view(&self) -> Mat4x4<WorldToView> {
283286
// TODO Figure out how to do this with orient
284287
//let fwd = self.dir.to_cart().normalize();
@@ -294,7 +297,7 @@ impl Mode for Orbit {
294297
}
295298
}
296299

297-
impl Mode for Mat4x4<WorldToView> {
300+
impl Transform for Mat4x4<WorldToView> {
298301
fn world_to_view(&self) -> Mat4x4<WorldToView> {
299302
*self
300303
}

demos/src/bin/bezier.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
use re::geom::Ray;
21
use std::{mem::swap, ops::ControlFlow::Continue};
32

43
use re::prelude::*;
54

5+
use re::geom::Ray;
66
use re::math::rand::{Distrib, Uniform, VectorsOnUnitDisk, Xorshift64};
77

88
use re_front::{dims::SVGA_800_600, minifb::Window, Frame};

demos/src/bin/crates.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ use core::ops::ControlFlow::*;
33
use re::prelude::*;
44

55
use re::math::color::gray;
6-
use re::render::{cam::FirstPerson, Batch, Camera, ModelToProj};
6+
use re::render::{
7+
cam::FirstPerson, shader::Shader, Batch, Camera, ModelToProj,
8+
};
79

810
use re_front::sdl2::Window;
911
use re_geom::solids::Box;
@@ -32,7 +34,7 @@ fn main() {
3234

3335
let (w, h) = win.dims;
3436
let mut cam = Camera::new(win.dims)
35-
.mode(FirstPerson::default())
37+
.transform(FirstPerson::default())
3638
.viewport((10..w - 10, 10..h - 10))
3739
.perspective(1.0, 0.1..1000.0);
3840

@@ -61,8 +63,8 @@ fn main() {
6163
let d_az = turns(ms.x() as f32) * -0.001;
6264
let d_alt = turns(ms.y() as f32) * 0.001;
6365

64-
cam.mode.rotate(d_az, d_alt);
65-
cam.mode
66+
cam.transform.rotate(d_az, d_alt);
67+
cam.transform
6668
.translate(cam_vel.mul(frame.dt.as_secs_f32()));
6769

6870
let flip = scale3(1.0, -1.0, -1.0).to();

demos/src/bin/solids.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ fn main() {
6060

6161
let (w, h) = win.dims;
6262
let cam = Camera::new(win.dims)
63-
.mode(scale3(1.0, -1.0, -1.0).to())
63+
.transform(scale3(1.0, -1.0, -1.0).to())
6464
.perspective(1.5, 0.1..1000.0)
6565
.viewport(vec2(10, 10)..vec2(w - 10, h - 10));
6666

demos/src/bin/sprites.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ use core::{array::from_fn, ops::ControlFlow::Continue};
33
use re::prelude::*;
44

55
use re::math::rand::{Distrib, PointsInUnitBall, Xorshift64};
6-
use re::render::{cam::Mode, render, Model, ModelToView, ViewToProj};
6+
use re::render::{
7+
cam::Transform, render, shader::Shader, Model, ModelToView, ViewToProj,
8+
};
79
use re_front::minifb::Window;
810

911
fn main() {
@@ -51,7 +53,7 @@ fn main() {
5153

5254
let (w, h) = win.dims;
5355
let cam = Camera::new(win.dims)
54-
.mode(translate(0.5 * Vec3::Z).to())
56+
.transform(translate(0.5 * Vec3::Z).to())
5557
.perspective(1.0, 1e-2..1e3)
5658
.viewport(vec2(10, 10)..vec2(w - 10, h - 10));
5759

@@ -61,7 +63,7 @@ fn main() {
6163
let modelview = rotate_x(theta * 0.2)
6264
.then(&rotate_z(theta * 0.14))
6365
.to()
64-
.then(&cam.mode.world_to_view());
66+
.then(&cam.transform.world_to_view());
6567

6668
render(
6769
&tris,

demos/src/bin/square.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ use std::ops::ControlFlow::*;
33
use re::prelude::*;
44

55
use re::math::{pt2, pt3};
6-
use re::render::{render, tex::SamplerClamp, Context, ModelToProj};
6+
use re::render::{
7+
render, shader::Shader, tex::SamplerClamp, Context, ModelToProj,
8+
};
79

810
use re_front::minifb::Window;
911

0 commit comments

Comments
 (0)