Compare commits

...

2 Commits

Author SHA1 Message Date
c31e7cb1ec Tripod! 2024-09-22 16:13:43 +03:00
0e32467b24 Less asserts 2024-09-22 16:08:19 +03:00
2 changed files with 22 additions and 10 deletions

View File

@ -30,11 +30,11 @@ impl<S: Copy> DragCtl<S> {
pub fn on_button(&mut self, pos: Vec2, state: ElementState) { pub fn on_button(&mut self, pos: Vec2, state: ElementState) {
match state { match state {
ElementState::Pressed => { ElementState::Pressed => {
assert!(self.ctl.is_none()); if self.ctl.is_none() {
self.ctl = Some((pos, self.state)); self.ctl = Some((pos, self.state));
} }
}
ElementState::Released => { ElementState::Released => {
assert!(self.ctl.is_some());
self.ctl = None; self.ctl = None;
} }
} }
@ -60,23 +60,35 @@ fn main() {
let indices = glium::index::NoIndices(glium::index::PrimitiveType::LineLoop); let indices = glium::index::NoIndices(glium::index::PrimitiveType::LineLoop);
let shape = vec![ let shape = vec![
Vertex { Vertex {
position: [-1., 0., 4.], position: [0., 0., 0.],
}, },
Vertex { Vertex {
position: [0., -1., 4.], position: [1., 0., 0.],
}, },
Vertex { Vertex {
position: [1., 0., 4.], position: [0., 0., 0.],
}, },
Vertex { Vertex {
position: [0., 1., 4.], position: [0., 1., 0.],
},
Vertex {
position: [0., 0., 0.],
},
Vertex {
position: [0., 0., 1.],
}, },
]; ];
let vertex_buffer = VertexBuffer::new(&display, &shape).unwrap(); let vertex_buffer = VertexBuffer::new(&display, &shape).unwrap();
let rot = Quat::from_euler(
glam::EulerRot::YXZ,
std::f32::consts::FRAC_PI_4,
std::f32::consts::FRAC_PI_6,
0.,
);
let mut cur_pos = vec2(0., 0.); let mut cur_pos = vec2(0., 0.);
let mut cam_pos = DragCtl::new(Vec3::ZERO); let mut cam_pos = DragCtl::new(rot * vec3(0., 0., 4.));
let mut cam_rot = DragCtl::new(Quat::IDENTITY); let mut cam_rot = DragCtl::new(rot.inverse());
#[allow(deprecated)] #[allow(deprecated)]
event_loop event_loop

View File

@ -8,6 +8,6 @@ in vec3 position;
out vec3 vertex_color; out vec3 vertex_color;
void main() { void main() {
vertex_color = color; vertex_color = position;
gl_Position = mvp * vec4(position, 1.0); gl_Position = mvp * vec4(position, 1.0);
} }