Toggle lines
This commit is contained in:
30
src/main.rs
30
src/main.rs
@@ -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(
|
||||
|
||||
@@ -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())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user