diff -r ff397798e812 -r e2adb40c7988 rust/lib-hedgewars-engine/src/world.rs --- a/rust/lib-hedgewars-engine/src/world.rs Fri Jun 21 20:27:37 2019 +0200 +++ b/rust/lib-hedgewars-engine/src/world.rs Sat Jun 22 00:18:24 2019 +0300 @@ -8,7 +8,7 @@ }; use lfprng::LaggedFibonacciPRNG; -use crate::render::{camera::Camera, MapRenderer}; +use crate::render::{camera::Camera, GearRenderer, MapRenderer}; struct GameState { land: Land2D, @@ -25,7 +25,8 @@ random_numbers_gen: LaggedFibonacciPRNG, preview: Option>, game_state: Option, - renderer: Option, + map_renderer: Option, + gear_renderer: Option, camera: Camera, last_gear_id: GearId, } @@ -36,7 +37,8 @@ random_numbers_gen: LaggedFibonacciPRNG::new(&[]), preview: None, game_state: None, - renderer: None, + map_renderer: None, + gear_renderer: None, camera: Camera::new(), last_gear_id: GearId::default(), } @@ -44,7 +46,8 @@ pub fn create_renderer(&mut self, width: u16, height: u16) { let land_tile_size = Size::square(512); - self.renderer = Some(MapRenderer::new(land_tile_size)); + self.map_renderer = Some(MapRenderer::new(land_tile_size)); + self.gear_renderer = Some(GearRenderer::new()); self.camera = Camera::with_size(Size::new(width as usize, height as usize)); use mapgen::{theme::Theme, MapGenerator}; @@ -56,7 +59,7 @@ let theme = Theme::load(Path::new("../../share/hedgewars/Data/Themes/Cheese/")).unwrap(); let texture = MapGenerator::new().make_texture(&state.land, &theme); - if let Some(ref mut renderer) = self.renderer { + if let Some(ref mut renderer) = self.map_renderer { renderer.init(&texture); } } @@ -112,7 +115,7 @@ } pub fn render(&mut self) { - if let Some(ref mut renderer) = self.renderer { + if let Some(ref mut renderer) = self.map_renderer { unsafe { gl::ClearColor(0.4f32, 0f32, 0.2f32, 1f32); gl::Clear(gl::COLOR_BUFFER_BIT); @@ -120,6 +123,9 @@ renderer.render(&self.camera); } + if let Some(ref mut renderer) = self.gear_renderer { + renderer.render(&self.camera) + } } fn get_unused_gear_id(&mut self) -> GearId {