summaryrefslogtreecommitdiff
path: root/engine/src/renderer/opengl.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-04-17 17:04:41 +0200
committerHampusM <hampus@hampusmat.com>2026-04-17 17:04:41 +0200
commit6285d4e72141e714ee319cf616e888fc6868a993 (patch)
tree3f67546a67c1408dfc9be2d321feb9e4edf27c4a /engine/src/renderer/opengl.rs
parentef22fdcb1dbfc89aa524016637fe32597481e196 (diff)
feat(engine): make mesh in renderer::command::CreateMesh optional
Diffstat (limited to 'engine/src/renderer/opengl.rs')
-rw-r--r--engine/src/renderer/opengl.rs32
1 files changed, 31 insertions, 1 deletions
diff --git a/engine/src/renderer/opengl.rs b/engine/src/renderer/opengl.rs
index 1093292..2419f67 100644
--- a/engine/src/renderer/opengl.rs
+++ b/engine/src/renderer/opengl.rs
@@ -924,7 +924,7 @@ fn handle_commands(
tracing::error!("Failed to create texture object: {err}");
}
}
- RendererCommand::CreateMesh(mesh_object_id, mesh) => {
+ RendererCommand::CreateMesh { obj_id: mesh_object_id, mesh } => {
let Some(curr_gl_ctx) = &opt_curr_gl_ctx else {
tracing::error!("No GL context is current");
continue;
@@ -959,6 +959,36 @@ fn handle_commands(
let key = *next_graphics_ctx_object_key;
+ let mesh = match mesh_object_id {
+ RendererObjectId::Asset(mesh_asset_id) => match mesh.as_ref() {
+ Some(mesh) => mesh,
+ None => {
+ let Some(mesh) =
+ assets.get(&AssetHandle::from_id(mesh_asset_id))
+ else {
+ tracing::error!(
+ asset_id=?mesh_asset_id,
+ "Mesh asset does not exist"
+ );
+ continue;
+ };
+
+ mesh
+ }
+ },
+ RendererObjectId::Sequential(_) => {
+ let Some(mesh) = mesh.as_ref() else {
+ tracing::error!(
+ object_id=?mesh_object_id,
+ "Object ID is sequential but no mesh data is given"
+ );
+ continue;
+ };
+
+ mesh
+ }
+ };
+
let graphics_mesh =
match GraphicsMesh::new(&curr_gl_ctx, &mesh, &vertex_desc) {
Ok(graphics_mesh) => graphics_mesh,