improvements

This commit is contained in:
2021-10-21 10:43:13 +02:00
parent deaed7b456
commit c63f7fc556
6 changed files with 36 additions and 24 deletions

View File

@@ -7,11 +7,11 @@ vk_code = "VK_ESCAPE"
[[button]] [[button]]
name = "toggle_edit" name = "toggle_edit"
scan_code = 59 vk_code = "VK_F1"
[[button]] [[button]]
name = "reload_shaders" name = "reload_shaders"
scan_code = 63 vk_code = "VK_F5"
[[button]] [[button]]
name = "print_framerate" name = "print_framerate"
@@ -19,31 +19,31 @@ scan_code = 33
[[button]] [[button]]
name = "button_forward" name = "button_forward"
scan_code = 17 vk_code = "VK_W"
[[button]] [[button]]
name = "button_backward" name = "button_backward"
scan_code = 31 vk_code = "VK_S"
[[button]] [[button]]
name = "button_left" name = "button_left"
scan_code = 30 vk_code = "VK_A"
[[button]] [[button]]
name = "button_right" name = "button_right"
scan_code = 32 vk_code = "VK_D"
[[button]] [[button]]
name = "test" name = "test"
scan_code = 20 vk_code = "VK_T"
[[button]] [[button]]
name = "quicksave" name = "quicksave"
scan_code = 63 vk_code = "VK_F6"
[[button]] [[button]]
name = "quickload" name = "quickload"
scan_code = 64 vk_code = "VK_F7"
[[button]] [[button]]
name = "select" name = "select"

View File

@@ -50,15 +50,15 @@
"player": { "player": {
"mesh_index": null, "mesh_index": null,
"position": [ "position": [
8.637261, 2.5716693,
1.304583, 1.304583,
-7.3298244 -8.255934
], ],
"rotation": [ "rotation": [
0.22436175, -0.23996419,
-0.6880533, -0.011724341,
-0.21394368, 0.9695545,
0.6561041 0.047371186
], ],
"scale": [ "scale": [
1.0, 1.0,

View File

@@ -1,11 +1,18 @@
use crate::{input::InputState, text::update_text, vulkan::{PERF_COUNTER_SIZE, VulkanRenderer, gameobject::{GameObject, GameObjectHandle, Updatable}}}; use crate::{input::InputState, text::{create_text_object, update_text}, vulkan::{PERF_COUNTER_SIZE, VulkanRenderer, gameobject::{GameObject, GameObjectHandle, Updatable}}};
use super::GameState; use super::{GameState, TestGame};
pub struct FpsCounter { pub struct FpsCounter {
pub game_object: GameObjectHandle pub game_object: GameObjectHandle
} }
impl FpsCounter {
pub fn new(game: &mut TestGame, renderer: &mut VulkanRenderer) -> Box<FpsCounter> {
let text_mesh = create_text_object(&mut game.game_state.brush, renderer, "", 30.);
Box::new(FpsCounter { game_object: game.add_game_object(renderer, text_mesh) })
}
}
impl Updatable for FpsCounter { impl Updatable for FpsCounter {
fn update(&mut self, _delta_time: f32, _input: &InputState, game_state: &mut GameState, game_objects: &mut Vec<GameObject>, renderer: &mut VulkanRenderer) { fn update(&mut self, _delta_time: f32, _input: &InputState, game_state: &mut GameState, game_objects: &mut Vec<GameObject>, renderer: &mut VulkanRenderer) {
let update_duration = renderer.game_data.update_perf_counters.iter().sum::<u128>() / PERF_COUNTER_SIZE as u128; let update_duration = renderer.game_data.update_perf_counters.iter().sum::<u128>() / PERF_COUNTER_SIZE as u128;

View File

@@ -7,7 +7,7 @@ use level::{load_level, save_level};
use player::Player; use player::Player;
use crate::game::components::FpsCounter; use crate::game::components::FpsCounter;
use crate::text::{create_brush, create_text_object}; use crate::text::create_brush;
use crate::{config::LogConfig, vulkan}; use crate::{config::LogConfig, vulkan};
use crate::input::InputState; use crate::input::InputState;
use crate::vulkan::{Game, MeshHandle, TextVertex, Vertex, VulkanRenderer}; use crate::vulkan::{Game, MeshHandle, TextVertex, Vertex, VulkanRenderer};
@@ -151,11 +151,11 @@ impl TestGame {
pub fn game_start(self: &mut Self, renderer: &mut VulkanRenderer) { pub fn game_start(self: &mut Self, renderer: &mut VulkanRenderer) {
load_level("levels/test.lvl", self, renderer).unwrap(); load_level("levels/test.lvl", self, renderer).unwrap();
println!("Game loaded!");
let text_mesh = create_text_object(&mut self.game_state.brush, renderer, "aaxx", 30.); let fps = FpsCounter::new(self, renderer);
let fps = Box::new(FpsCounter { game_object: self.add_game_object(renderer, text_mesh) });
self.components.push(fps); self.components.push(fps);
println!("Game loaded!");
} }
pub fn offset_texture_id(&mut self, local_tex_id: Option<usize>) -> usize { pub fn offset_texture_id(&mut self, local_tex_id: Option<usize>) -> usize {

View File

@@ -213,8 +213,7 @@ impl Updatable for Player {
if self.movement_mode == FirstPerson { if self.movement_mode == FirstPerson {
let mut world_input = self.camera.local_to_world(local_input); let mut world_input = self.camera.local_to_world(local_input);
world_input.y = 0.0; world_input.y = 0.0;
self.camera.position += world_input.normalize(); self.camera.position += world_input;
self.camera.position.y = self.height;
} else if self.movement_mode == Flying { } else if self.movement_mode == Flying {
self.camera.position += self.camera.local_to_world(local_input); self.camera.position += self.camera.local_to_world(local_input);
} }

View File

@@ -44,7 +44,13 @@ pub fn create_text_object(brush: &mut GlyphBrush<Vec<TextVertex>>, renderer: &mu
uploaded_texture = update_text_texture(None, renderer, rect, text_data); uploaded_texture = update_text_texture(None, renderer, rect, text_data);
}, convert_vertices) { }, convert_vertices) {
Ok(BrushAction::Draw(quads)) => { Ok(BrushAction::Draw(quads)) => {
uploaded_mesh = update_text_quads(quads, uploaded_texture.unwrap(), None, renderer); let t = if let Some(tex) = uploaded_texture {
tex
} else {
let brush_size = brush.texture_dimensions();
update_text_texture(None, renderer, Rectangle { min: [0, 0], max: [brush_size.0, brush_size.1] }, &[]).unwrap()
};
uploaded_mesh = update_text_quads(quads, t, None, renderer);
}, },
Ok(BrushAction::ReDraw) => {}, Ok(BrushAction::ReDraw) => {},
Err(BrushError::TextureTooSmall { suggested }) => { Err(BrushError::TextureTooSmall { suggested }) => {