diff options
| -rw-r--r-- | engine/src/renderer/opengl.rs | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/engine/src/renderer/opengl.rs b/engine/src/renderer/opengl.rs index 745a471..7524775 100644 --- a/engine/src/renderer/opengl.rs +++ b/engine/src/renderer/opengl.rs @@ -73,7 +73,6 @@ use crate::asset::{Assets, Handle as AssetHandle}; use crate::data_types::dimens::Dimens; use crate::image::{ColorType as ImageColorType, Image}; use crate::matrix::Matrix; -use crate::model::Model; use crate::renderer::blending::{Equation as BlendingEquation, Factor as BlendingFactor}; use crate::renderer::object::{ Id as RendererObjectId, @@ -185,130 +184,12 @@ impl ecs::extension::Extension for Extension collector.add_system(*POST_RENDER_PHASE, prepare_windows); collector.add_system(*POST_RENDER_PHASE, init_window_graphics); - collector.add_observer(handle_model_removed); - collector.add_observer(handle_window_changed); collector.add_observer(handle_window_removed); } } #[tracing::instrument(skip_all)] -fn handle_model_removed( - observe: Observe<Pair<Removed, Model>>, - renderer_ctx_query: Query<( - &mut GraphicsContext, - &RendererObjectStore, - Pair<RendererCtxUsedByWindow, Wildcard>, - )>, - assets: Single<Assets>, -) -{ - for evt_match in &observe { - let model_ent_id = evt_match.id(); - - for ( - renderer_ctx_ent_id, - (mut graphics_ctx, renderer_object_store, renderer_ctx_used_by_window), - ) in renderer_ctx_query.iter_with_euids() - { - let GraphicsContext { - ref gl_context, - ref surfaces, - objects: ref mut graphics_ctx_objects, - .. - } = *graphics_ctx; - - let model = evt_match.get_removed_comp(); - - let Some(model_spec) = assets.get(&model.spec_asset) else { - continue; - }; - - let Some(mesh_asset) = &model_spec.mesh_asset else { - continue; - }; - - let Some(graphics_ctx_object_id) = renderer_object_store - .get_obj(&RendererObjectId::Asset(mesh_asset.id())) - .map(|obj| obj.as_raw()) - else { - continue; - }; - - if !graphics_ctx_objects.contains_key(&graphics_ctx_object_id) { - continue; - } - - let Some(window_ent) = renderer_ctx_used_by_window.get_target_ent() else { - tracing::error!( - window_entity_id = %renderer_ctx_used_by_window.id().target_entity(), - "Window entity does not exist" - ); - continue; - }; - - let Some(surface_spec) = window_ent.get::<SurfaceSpec>() else { - tracing::error!( - window_entity_id = %window_ent.uid(), - "Window entity does not have a {} component", - type_name::<SurfaceSpec>() - ); - continue; - }; - - let Some(surface) = surfaces.get(&surface_spec.id) else { - tracing::error!( - window_entity_id = %window_ent.uid(), - "Surface specified by window entity's {} component does not exist", - type_name::<SurfaceSpec>() - ); - continue; - }; - - let curr_gl_ctx = match gl_context.make_current(surface) { - Ok(curr_gl_ctx) => curr_gl_ctx, - Err(err) => { - tracing::error!("{err}"); - continue; - } - }; - - tracing::debug!( - model_entity_id=%model_ent_id, - renderer_ctx_entity_id=%renderer_ctx_ent_id, - "Cleaning up after model in renderer context" - ); - - let Some(removed_graphics_ctx_obj) = - graphics_ctx_objects.remove(&graphics_ctx_object_id) - else { - tracing::warn!( - model_entity_id=%model_ent_id, - "No graphics context object exists for model" - ); - continue; - }; - - #[allow(irrefutable_let_patterns)] - let GraphicsContextObject::Mesh { - mesh: mut graphics_mesh, - compatible_shader_program_obj_id: _, - } = removed_graphics_ctx_obj - else { - tracing::error!( - model_entity_id=%model_ent_id, - "Graphics context object for model is not a mesh" - ); - - continue; - }; - - graphics_mesh.destroy(&curr_gl_ctx); - } - } -} - -#[tracing::instrument(skip_all)] fn handle_window_changed( observe: Observe<Pair<Changed, Window>>, entity_obtainer: EntityObtainer, |
