From 12f7283b34b9504cafe9448ede110b1fc2a3ae41 Mon Sep 17 00:00:00 2001 From: HampusM Date: Tue, 1 Sep 2026 18:24:39 +0200 Subject: refactor(engine): replace MapVec with intmap crate --- engine/src/rendering/backend/opengl.rs | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'engine/src/rendering') diff --git a/engine/src/rendering/backend/opengl.rs b/engine/src/rendering/backend/opengl.rs index 381a609..2f373fc 100644 --- a/engine/src/rendering/backend/opengl.rs +++ b/engine/src/rendering/backend/opengl.rs @@ -16,6 +16,7 @@ use glutin::surface::{ Surface as GlutinSurface, WindowSurface as GlutinWindowSurface, }; +use intmap::IntMap; use opengl_bindings::blending::{ configure as gl_blending_configure, Configuration as GlBlendingConfig, @@ -138,7 +139,7 @@ use crate::texture::{ Properties as TextureProperties, Wrapping as TextureWrapping, }; -use crate::util::{MapVec, OptionExt}; +use crate::util::OptionExt; use crate::vector::{Vec2, Vec3}; use crate::windowing::dpi::PhysicalSize; use crate::windowing::window::{ @@ -171,7 +172,7 @@ struct GraphicsContext #[derive(Debug, Default)] struct BackendResourceStore { - inner: MapVec, + inner: IntMap, next_id: BackendResourceId, } @@ -237,7 +238,7 @@ impl BackendResourceStore let resource_id = BackendResourceId(object.as_raw()); - let Some(resource) = self.inner.get(&resource_id) else { + let Some(resource) = self.inner.get(resource_id) else { cold_path(); tracing::error!(?object_id, ?resource_id, "Backend resource does not exist"); return None; @@ -285,7 +286,7 @@ impl BackendResourceStore let resource_id = BackendResourceId(object.as_raw()); - let Some(resource) = self.inner.get_mut(&resource_id) else { + let Some(resource) = self.inner.get_mut(resource_id) else { cold_path(); tracing::error!(?object_id, ?resource_id, "Backend resource does not exist"); return None; @@ -348,6 +349,18 @@ impl BackendResourceStore #[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] struct BackendResourceId(ObjectRawValue); +impl intmap::IntKey for BackendResourceId +{ + type Int = ObjectRawValue; + + const PRIME: Self::Int = ::PRIME; + + fn into_int(self) -> Self::Int + { + self.0.into_int() + } +} + #[derive(Debug)] struct GraphicsContextSurface { -- cgit v1.2.3-18-g5258