wip: Changes of the week
- Move engine to a different crate - Add engine trait - Refactor the rest of the codebase to work with these changes - Add debug ui buffer, use it to finish imgui support
This commit is contained in:
parent
3fd5b09a94
commit
15122b8ebd
20 changed files with 344 additions and 117 deletions
|
|
@ -12,25 +12,26 @@ use glium::Surface;
|
|||
use crate::system::{RenderingSystemManager, RenderingSystem, RenderingContext, SystemID};
|
||||
use winit::event::{Event, WindowEvent};
|
||||
use raidillon_assets::{ModelManager, ModelManagerRef};
|
||||
use raidillon_core::Engine;
|
||||
use raidillon_core::engine::EngineTrait;
|
||||
use raidillon_engine::Engine;
|
||||
use crate::{GliumAssetManager};
|
||||
use crate::render::debug_ui::ImguiBridge;
|
||||
use crate::render::BasicMeshRenderingSystem;
|
||||
|
||||
pub const MESH_RENDERER: &str = "mesh_renderer";
|
||||
pub const DEBUG_UI_RENDERER: &str = "debug_ui_renderer";
|
||||
|
||||
pub struct GliumPlatform {
|
||||
pub struct GliumPlatform<E: EngineTrait> {
|
||||
event_loop: EventLoop<()>,
|
||||
window: Window,
|
||||
display: Display<WindowSurface>,
|
||||
rendering_system_manager: RenderingSystemManager,
|
||||
asset_manager: ModelManagerRef,
|
||||
engine: Engine,
|
||||
imgui_bridge: ImguiBridge,
|
||||
engine: E,
|
||||
}
|
||||
|
||||
impl Platform for GliumPlatform {
|
||||
fn initialize(mut engine: Engine, title: String, width: u32, height: u32) -> Self {
|
||||
impl<E: EngineTrait> Platform<E> for GliumPlatform<E> {
|
||||
fn initialize(mut engine: E, title: String, width: u32, height: u32) -> Self {
|
||||
let event_loop = glium::winit::event_loop::EventLoop::builder()
|
||||
.build()
|
||||
.expect("create event-loop");
|
||||
|
|
@ -46,10 +47,13 @@ impl Platform for GliumPlatform {
|
|||
// Install rendering systems
|
||||
rendering_system_manager.add_system(
|
||||
MESH_RENDERER,
|
||||
Box::new(BasicMeshRenderingSystem::initialize(&display))
|
||||
Box::new(BasicMeshRenderingSystem::initialize(&display, &window))
|
||||
);
|
||||
|
||||
let imgui_bridge = ImguiBridge::new(&display, &window).unwrap();
|
||||
rendering_system_manager.add_system(
|
||||
DEBUG_UI_RENDERER,
|
||||
Box::new(ImguiBridge::initialize(&display, &window)),
|
||||
);
|
||||
|
||||
Self {
|
||||
event_loop,
|
||||
|
|
@ -58,7 +62,6 @@ impl Platform for GliumPlatform {
|
|||
rendering_system_manager,
|
||||
asset_manager,
|
||||
engine,
|
||||
imgui_bridge,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -81,11 +84,13 @@ impl Platform for GliumPlatform {
|
|||
WindowEvent::RedrawRequested => {
|
||||
let mut target = self.display.draw();
|
||||
target.clear_color_and_depth((0.1, 0.1, 0.15, 1.0), 1.0);
|
||||
// TODO: let mut context;
|
||||
let (scene_mut, debug_ui_buffer) = self.engine.scene_and_debug_ui_buffer_mut();
|
||||
let mut context = RenderingContext {
|
||||
scene: self.engine.scene_manager.current_mut(),
|
||||
scene: scene_mut,
|
||||
target: &mut target,
|
||||
asset_manager: self.asset_manager.clone(),
|
||||
window: &mut self.window,
|
||||
debug_ui_buffer,
|
||||
};
|
||||
|
||||
for (system_id, system) in self.rendering_system_manager.systems.iter_mut() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue