Toggle lines
This commit is contained in:
45
.vscode/launch.json
vendored
Normal file
45
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug executable 'rust-engine'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"build",
|
||||||
|
"--bin=rust-engine",
|
||||||
|
"--package=rust-engine"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "rust-engine",
|
||||||
|
"kind": "bin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug unit tests in executable 'rust-engine'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"test",
|
||||||
|
"--no-run",
|
||||||
|
"--bin=rust-engine",
|
||||||
|
"--package=rust-engine"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "rust-engine",
|
||||||
|
"kind": "bin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
30
src/main.rs
30
src/main.rs
@@ -24,6 +24,23 @@ struct TestGame {
|
|||||||
texture_index_counter: usize,
|
texture_index_counter: usize,
|
||||||
last_time: f32,
|
last_time: f32,
|
||||||
components: Vec<Box<dyn Updatable>>,
|
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 {
|
impl Game for TestGame {
|
||||||
@@ -50,7 +67,7 @@ impl Game for TestGame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if self.input.button_just_released("test") {
|
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") {
|
if self.input.button_just_pressed("reload_shaders") {
|
||||||
@@ -138,16 +155,7 @@ impl TestGame {
|
|||||||
fn main() {
|
fn main() {
|
||||||
let log_config = LogConfig::from_file("config/log.toml");
|
let log_config = LogConfig::from_file("config/log.toml");
|
||||||
|
|
||||||
let mut game = TestGame {
|
let mut game = TestGame::new("config/input.toml", log_config);
|
||||||
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 line_count = 30;
|
let line_count = 30;
|
||||||
let (mut renderer, event_loop) = VulkanRenderer::init(
|
let (mut renderer, event_loop) = VulkanRenderer::init(
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ pub struct GameData {
|
|||||||
pub game_objects: Vec<GameObject>,
|
pub game_objects: Vec<GameObject>,
|
||||||
pub meshes: Vec<Mesh>,
|
pub meshes: Vec<Mesh>,
|
||||||
pub textures: Vec<Arc<ImmutableImage<Format>>>,
|
pub textures: Vec<Arc<ImmutableImage<Format>>>,
|
||||||
|
pub use_line_pipeline: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
type RendererDescriptorSets = dyn DescriptorSet + Send + Sync;
|
type RendererDescriptorSets = dyn DescriptorSet + Send + Sync;
|
||||||
@@ -121,6 +122,7 @@ impl VulkanRenderer {
|
|||||||
meshes: vec![],
|
meshes: vec![],
|
||||||
game_objects: vec![],
|
game_objects: vec![],
|
||||||
textures: vec![],
|
textures: vec![],
|
||||||
|
use_line_pipeline: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
if enable_validation_layers {
|
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> {
|
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();
|
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.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();
|
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() {
|
for i in 0..self.game_data.game_objects.len() {
|
||||||
let game_object = &self.game_data.game_objects[i];
|
let game_object = &self.game_data.game_objects[i];
|
||||||
let mesh = &self.game_data.meshes[game_object.mesh_index];
|
let mesh = &self.game_data.meshes[game_object.mesh_index];
|
||||||
@@ -343,9 +347,13 @@ impl VulkanRenderer {
|
|||||||
self.game_data.push_constants.clone()).unwrap();
|
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()
|
// Draw line grid
|
||||||
.end_render_pass().unwrap();
|
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())
|
Arc::new(builder.build().unwrap())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user