diff -r 5e2c892b0222 -r 29dbe9ce8b7d rust/lib-hedgewars-engine/src/instance.rs --- a/rust/lib-hedgewars-engine/src/instance.rs Thu Mar 21 01:23:05 2019 +0300 +++ b/rust/lib-hedgewars-engine/src/instance.rs Fri Mar 22 18:01:08 2019 +0200 @@ -3,45 +3,43 @@ UnorderedEngineMessage::*, UnsyncedEngineMessage::*, *, }; -use self::gfx_gl::{CommandBuffer, Resources}; -use gfx::format::{Unorm, D24, R8_G8_B8_A8}; -use gfx_device_gl as gfx_gl; +use landgen::outline_template::OutlineTemplate; +use integral_geometry::{Point, Rect, Size}; use super::{ipc::IPC, world::World}; -pub struct EngineGlContext { - pub device: gfx_gl::Device, - pub factory: gfx_gl::Factory, - pub render_target: gfx::handle::RenderTargetView, - pub depth_buffer: gfx::handle::DepthStencilView, - pub command_buffer: gfx::Encoder, -} - pub struct EngineInstance { pub world: World, pub ipc: IPC, - pub gl_context: Option, } impl EngineInstance { pub fn new() -> Self { - let world = World::new(); + let mut world = World::new(); + + fn template() -> OutlineTemplate { + let mut template = OutlineTemplate::new(Size::new(4096*1, 2048*1)); + template.islands = vec![vec![ + Rect::from_size_coords(100, 2050, 1, 1), + Rect::from_size_coords(100, 500, 400, 1200), + Rect::from_size_coords(3600, 500, 400, 1200), + Rect::from_size_coords(3900, 2050, 1, 1), + ]]; + template.fill_points = vec![Point::new(1, 0)]; + + template + } + + world.init(template()); + Self { world, ipc: IPC::new(), - gl_context: None, } } - pub fn render( - &self, - command_buffer: &mut gfx::Encoder, - render_target: &gfx::handle::RenderTargetView, - ) where - R: gfx::Resources, - C: gfx::CommandBuffer, - { - command_buffer.clear(render_target, [0.0, 0.5, 0.0, 1.0]); + pub fn render(&mut self, x: f32, y: f32, w: f32, h: f32) { + self.world.render(x, y, w, h); } fn process_unordered_message(&mut self, message: &UnorderedEngineMessage) {