Toggle lines

This commit is contained in:
2020-10-25 02:08:15 +02:00
parent 8b8bf64e55
commit d6f2b5d385
3 changed files with 74 additions and 13 deletions

View File

@@ -24,6 +24,23 @@ struct TestGame {
texture_index_counter: usize,
last_time: f32,
components: Vec<Box<dyn Updatable>>,
show_grid: bool,
}
impl TestGame {
fn new(toml_path: &str, log_config: LogConfig) -> TestGame {
TestGame {
input: InputState::new(toml_path, log_config),
player: Player::new(),
meshes: vec![],
game_objects: vec![],
log_config,
texture_index_counter: 1,
last_time: 0.0,
components: vec![],
show_grid: false,
}
}
}
impl Game for TestGame {
@@ -50,7 +67,7 @@ impl Game for TestGame {
}
if self.input.button_just_released("test") {
println!("{:?}", self.game_objects[0].get_game_object(renderer).unwrap().position);
renderer.game_data.use_line_pipeline = !renderer.game_data.use_line_pipeline;
}
if self.input.button_just_pressed("reload_shaders") {
@@ -138,16 +155,7 @@ impl TestGame {
fn main() {
let log_config = LogConfig::from_file("config/log.toml");
let mut game = TestGame {
input: InputState::new("config/input.toml", log_config),
player: Player::new(),
meshes: vec![],
game_objects: vec![],
log_config,
texture_index_counter: 1,
last_time: 0.0,
components: vec![],
};
let mut game = TestGame::new("config/input.toml", log_config);
let line_count = 30;
let (mut renderer, event_loop) = VulkanRenderer::init(

View File

@@ -78,6 +78,7 @@ pub struct GameData {
pub game_objects: Vec<GameObject>,
pub meshes: Vec<Mesh>,
pub textures: Vec<Arc<ImmutableImage<Format>>>,
pub use_line_pipeline: bool,
}
type RendererDescriptorSets = dyn DescriptorSet + Send + Sync;
@@ -121,6 +122,7 @@ impl VulkanRenderer {
meshes: vec![],
game_objects: vec![],
textures: vec![],
use_line_pipeline: true,
};
if enable_validation_layers {
@@ -325,10 +327,12 @@ impl VulkanRenderer {
}
fn create_command_buffer(self: &mut Self, fb_index: usize, uniform_buffer_data: vs::ty::ObjectUniformData) -> Arc<AutoCommandBuffer> {
// General setup
let mut builder = AutoCommandBufferBuilder::primary_simultaneous_use(self.device.clone(), self.queue.family()).unwrap();
builder.update_buffer(self.uniform_buffers[fb_index].clone(), uniform_buffer_data).unwrap();
builder.begin_render_pass(self.framebuffers[fb_index].clone(), false, vec![ClearValue::Float([0.0, 0.0, 0.0, 1.0]), ClearValue::Depth(1.0)]).unwrap();
// Load and draw meshes etc.
for i in 0..self.game_data.game_objects.len() {
let game_object = &self.game_data.game_objects[i];
let mesh = &self.game_data.meshes[game_object.mesh_index];
@@ -343,9 +347,13 @@ impl VulkanRenderer {
self.game_data.push_constants.clone()).unwrap();
}
builder.draw(self.line_pipeline.clone(), &self.dynamic_state, vec![self.line_vertex_buffer.clone()], (), self.game_data.line_push_constants.clone()).unwrap()
.end_render_pass().unwrap();
// Draw line grid
if self.game_data.use_line_pipeline {
builder.draw(self.line_pipeline.clone(), &self.dynamic_state, vec![self.line_vertex_buffer.clone()], (), self.game_data.line_push_constants.clone()).unwrap();
}
// General cleanup
builder.end_render_pass().unwrap();
Arc::new(builder.build().unwrap())
}