removed some code and made it move properly

Objects
Milk.H 2023-03-31 09:13:38 +02:00
parent 37b38694c5
commit 9161af2b83
No known key found for this signature in database
GPG Key ID: 3D9DAE46AAC37BD8
2 changed files with 65 additions and 27 deletions

View File

@ -40,6 +40,7 @@ pub struct Scene {
shaders: Vec<Rc<shader>>,
time: std::time::Instant,
DebugMode: bool,
input: objects::Input
}
impl Scene{
@ -65,7 +66,8 @@ impl Scene{
debug,
shaders: vec![shader],
time,
DebugMode: false
DebugMode: false,
input: objects::Input::default()
}
}
@ -77,24 +79,6 @@ impl Scene{
self.gl.enable(glow::DEPTH_TEST);
self.gl.clear(glow::COLOR_BUFFER_BIT | glow::DEPTH_BUFFER_BIT);
}
/*
unsafe {
self.shaders[0].Use();
self.tempData.projection = perspective(Deg(self.camera.Zoom), SCR_WIDTH as f32 /SCR_HEIGHT as f32, 0.1, 100.0);
let view = self.camera.GetViewMatrix();
self.shaders[0].setMat4("projection", &self.tempData.projection);
self.shaders[0].setMat4("view", &view);
let mut model: Matrix4<f32> = Matrix4::from_axis_angle(vec3(0.0, -1.0, 0.0).normalize(),
cgmath::Rad(1.0));
model = model * Matrix4::from_scale(0.2);
self.shaders[0].setMat4("model", &model);
}
*/
self.Car.update();
self.Car.Draw(&self.shaders[0], &self.camera);
if self.DebugMode{
@ -105,6 +89,7 @@ impl Scene{
if self.DebugMode {
self.debug.handle(&event);
}
match event {
Event::Quit {..} |
Event::KeyDown { keycode: Some(Keycode::Escape), .. } => {
@ -115,12 +100,31 @@ impl Scene{
Event::KeyDown {keycode: Some(Keycode::Q), ..} => {
self.DebugMode = !self.DebugMode
},
Event::KeyDown {keycode: Some(Keycode::W), ..} => {
self.Car.forward();
Event::KeyDown {keycode: Some(Keycode::W), repeat: false, ..} => {
self.input.Accel = true;
},
Event::KeyUp {keycode: Some(Keycode::W), ..} => {
self.input.Accel = false;
},
Event::KeyDown {keycode: Some(Keycode::S), repeat: false, ..} => {
self.input.Decel = true;
},
Event::KeyUp {keycode: Some(Keycode::S), ..} => {
self.input.Decel = false;
},
Event::KeyDown {keycode: Some(Keycode::D), repeat: false, ..} => {
self.input.Right = true;
},
Event::KeyUp {keycode: Some(Keycode::D), ..} => {
self.input.Right = false;
},
Event::KeyDown {keycode: Some(Keycode::A), repeat: false, ..} => {
self.input.Left = true;
},
Event::KeyUp {keycode: Some(Keycode::A), ..} => {
self.input.Left = false;
},
Event::KeyDown {keycode: Some(Keycode::A), .. }=> {
self.Car.turn(2.5);
}
Event::KeyDown {keycode: Some(Keycode::M), ..} => {
self.debug.addWindow(debug::OpenWindows::ModelInfo)
},
@ -129,6 +133,8 @@ impl Scene{
}
self.Car.update(&self.input);
self.Car.Draw(&self.shaders[0], &self.camera);
ret
}

View File

@ -7,6 +7,23 @@ use cgmath::prelude::*;
use crate::model::Model;
use crate::camera::Camera;
pub struct Input {
pub Accel: bool,
pub Decel: bool,
pub Left: bool,
pub Right: bool
}
impl Default for Input {
fn default() -> Input {
Input {
Accel: false,
Decel: false,
Left: false,
Right: false
}
}
}
pub struct Transform {
pub Position: Vector3<f32>,
pub Rotation: Quaternion<f32>,
@ -27,6 +44,7 @@ impl Default for Transform {
}
}
impl Transform {
pub fn setPos(&mut self, input: Vector3<f32>)
{
@ -47,15 +65,29 @@ impl Player {
}
}
pub fn update(&mut self)
pub fn update(&mut self, input: &Input)
{
if input.Accel {
self.forward(0.01);
}
if input.Decel {
self.forward(-0.01)
}
if input.Left {
self.turn(1.5)
}
if input.Right {
self.turn(-1.5)
}
self.Transform.Position += self.Transform.Velocity;
self.Transform.Rotation = self.Transform.Rotation.normalize();
}
pub fn forward(&mut self)
pub fn forward(&mut self, amount: f32)
{
let forward = self.Transform.Rotation.rotate_vector(cgmath::Vector3::unit_z());
let distance = forward * 0.01;
let distance = forward * amount;
self.Transform.Position += distance;
}