@@ -351,6 +351,11 @@ impl EditorScene {
351351 . with_clear_color ( CLEAR_COLOR )
352352 . with_load_op ( sdl3:: gpu:: LoadOp :: CLEAR ) ;
353353
354+ let render_pass = self
355+ . device
356+ . begin_render_pass ( command_buffer, & [ target] , None )
357+ . expect ( "begin_render_pass" ) ;
358+
354359 if let Some ( map) = self . maps . get_mut ( self . map_current ) {
355360 if let Some ( hist) = map. state . hist ( ) {
356361 let map_renderer = & mut self . map_renderer ;
@@ -384,6 +389,8 @@ impl EditorScene {
384389 }
385390 }
386391 }
392+
393+ self . device . end_render_pass ( render_pass) ;
387394 }
388395
389396 fn run_ui ( & mut self , ui : & Ui , renderer : & mut ImRenderer ) -> bool {
@@ -735,7 +742,7 @@ impl EditorScene {
735742 ui. same_line ( ) ;
736743 }
737744
738- if ui. tool_icon ( i == self . tool_current , & tool. icon , & tool. name ) {
745+ if ui. tool_icon ( i == self . tool_current , & tool. icon , & tool. name , renderer ) {
739746 self . tool_current = i;
740747 }
741748 if ui. is_item_hovered ( ) {
@@ -1660,12 +1667,11 @@ fn detect_environment(path: &Path) -> Option<PathBuf> {
16601667}
16611668
16621669fn prepare_tool_icon (
1663- _renderer : & mut ImRenderer ,
1664- _environment : Option < & Environment > ,
1665- _map_renderer : & mut map_renderer:: MapRenderer ,
1670+ renderer : & mut ImRenderer ,
1671+ environment : Option < & Environment > ,
1672+ map_renderer : & mut map_renderer:: MapRenderer ,
16661673 icon : tools:: ToolIcon ,
16671674) -> tools:: ToolIcon {
1668- /*
16691675 use tools:: ToolIcon ;
16701676 match icon {
16711677 ToolIcon :: Dmi {
@@ -1674,7 +1680,7 @@ fn prepare_tool_icon(
16741680 tint,
16751681 dir,
16761682 } => {
1677- if let Some(env) = environment {
1683+ /* if let Some(env) = environment {
16781684 if let Some(id) = env.icons.get_index(icon.as_ref()) {
16791685 let icon = env.icons.get_icon(id);
16801686 if let Some([u1, v1, u2, v2]) = icon.uv_of(&icon_state, dir) {
@@ -1695,7 +1701,8 @@ fn prepare_tool_icon(
16951701 } else {
16961702 ToolIcon::None
16971703 }
1698- } else {
1704+ } else*/
1705+ {
16991706 ToolIcon :: Dmi {
17001707 icon,
17011708 icon_state,
@@ -1705,10 +1712,10 @@ fn prepare_tool_icon(
17051712 }
17061713 } ,
17071714 ToolIcon :: EmbeddedPng { data } => {
1708- if let Ok(tex) = dmi::texture_from_bytes(&mut map_renderer.factory, data) {
1709- let samp = map_renderer.sampler.clone();
1715+ if let Ok ( texture) = dmi:: texture_from_bytes ( & map_renderer. device , data) {
17101716 ToolIcon :: Loaded {
1711- tex: renderer.textures().insert((tex, samp)),
1717+ texture,
1718+ sampler : map_renderer. sampler . clone ( ) ,
17121719 uv0 : [ 0.0 , 0.0 ] ,
17131720 uv1 : [ 1.0 , 1.0 ] ,
17141721 tint : None ,
@@ -1719,8 +1726,6 @@ fn prepare_tool_icon(
17191726 } ,
17201727 other => other,
17211728 }
1722- */
1723- icon
17241729}
17251730
17261731// ---------------------------------------------------------------------------
@@ -1729,7 +1734,13 @@ fn prepare_tool_icon(
17291734trait UiExt {
17301735 fn fits_width ( & self , width : f32 ) -> usize ;
17311736 fn objtree_menu < ' e > ( & self , env : & ' e Environment , selection : & mut Option < TypeRef < ' e > > ) ;
1732- fn tool_icon ( & self , active : bool , icon : & tools:: ToolIcon , fallback : & str ) -> bool ;
1737+ fn tool_icon (
1738+ & self ,
1739+ active : bool ,
1740+ icon : & tools:: ToolIcon ,
1741+ fallback : & str ,
1742+ renderer : & mut ImRenderer ,
1743+ ) -> bool ;
17331744 fn frame_color ( & self , active : bool ) -> [ f32 ; 4 ] ;
17341745}
17351746
@@ -1747,14 +1758,22 @@ impl UiExt for Ui {
17471758 objtree_menu_root ( self , root, "mob" , selection) ;
17481759 }
17491760
1750- fn tool_icon ( & self , active : bool , icon : & tools:: ToolIcon , fallback : & str ) -> bool {
1761+ fn tool_icon (
1762+ & self ,
1763+ active : bool ,
1764+ icon : & tools:: ToolIcon ,
1765+ fallback : & str ,
1766+ renderer : & mut ImRenderer ,
1767+ ) -> bool {
17511768 if let & tools:: ToolIcon :: Loaded {
1752- tex,
1769+ ref texture,
1770+ ref sampler,
17531771 uv0,
17541772 uv1,
17551773 tint,
17561774 } = icon
17571775 {
1776+ let tex = renderer. push_texture ( texture. clone ( ) , sampler. clone ( ) ) ;
17581777 Image :: new ( tex, [ 32.0 , 32.0 ] )
17591778 . uv0 ( uv0)
17601779 . uv1 ( uv1)
0 commit comments