@@ -162,8 +162,6 @@ mod tests {
162162}
163163
164164struct PpuSpritesWidget {
165- selected_id : usize ,
166- sprite_texture : TextureHandle ,
167165 sprite_thumbnails : Vec < TextureHandle > ,
168166}
169167
@@ -181,32 +179,13 @@ impl PpuSpritesWidget {
181179 )
182180 } )
183181 . collect ( ) ;
184- PpuSpritesWidget {
185- selected_id : 0 ,
186- sprite_texture : cc. egui_ctx . load_texture (
187- "Sprite" ,
188- ColorImage :: example ( ) ,
189- Default :: default ( ) ,
190- ) ,
191- sprite_thumbnails,
192- }
193- }
194-
195- pub fn update_textures ( & mut self , ppu : & PpuDebug < ' _ > ) {
196- self . sprite_texture . set (
197- ppu. render_sprite :: < EguiImageImpl > ( self . selected_id ) ,
198- TextureOptions :: NEAREST ,
199- ) ;
182+ PpuSpritesWidget { sprite_thumbnails }
200183 }
201184
202185 pub fn show ( & mut self , ui : & mut Ui , ppu : & PpuDebug < ' _ > ) {
203- self . update_textures ( ppu) ;
204-
205186 let sprites = ppu. sprites ( ) ;
206187
207- // Scrollable table of all sprites
208188 let row_height = SPRITE_THUMBNAIL_SIZE + 4.0 ;
209- let table_height = row_height * 8.0 + 20.0 ;
210189 TableBuilder :: new ( ui)
211190 . striped ( true )
212191 . resizable ( false )
@@ -221,8 +200,6 @@ impl PpuSpritesWidget {
221200 . column ( Column :: auto ( ) ) // Pri
222201 . column ( Column :: auto ( ) ) // H
223202 . column ( Column :: auto ( ) ) // V
224- . min_scrolled_height ( table_height)
225- . max_scroll_height ( table_height)
226203 . header ( 20.0 , |mut header| {
227204 for label in & [ "" , "#" , "X" , "Y" , "Size" , "Tile" , "Pal" , "Pri" , "H" , "V" ] {
228205 header. col ( |ui| {
@@ -236,38 +213,23 @@ impl PpuSpritesWidget {
236213 let row_index = row. index ( ) ;
237214 let sprite = & sprites[ row_index] ;
238215 let sprite_id = sprite. id as usize ;
239- let is_selected = sprite_id == self . selected_id ;
240216
241217 // Update only this row's thumbnail (lazy, visible rows only).
242218 self . sprite_thumbnails [ sprite_id] . set (
243219 ppu. render_sprite :: < EguiImageImpl > ( sprite_id) ,
244220 TextureOptions :: NEAREST ,
245221 ) ;
246222
247- row. set_selected ( is_selected) ;
248223 row. col ( |ui| {
249224 let tex = & self . sprite_thumbnails [ sprite_id] ;
250225 let tex_size = tex. size_vec2 ( ) ;
251226 let max_dim = tex_size. x . max ( tex_size. y ) . max ( 1.0 ) ;
252227 let scale = SPRITE_THUMBNAIL_SIZE / max_dim;
253228 let display_size = Vec2 :: new ( tex_size. x * scale, tex_size. y * scale) ;
254- if ui
255- . add (
256- egui:: Image :: new ( ( tex. id ( ) , display_size) )
257- . sense ( egui:: Sense :: click ( ) ) ,
258- )
259- . clicked ( )
260- {
261- self . selected_id = sprite_id;
262- }
229+ ui. add ( egui:: Image :: new ( ( tex. id ( ) , display_size) ) ) ;
263230 } ) ;
264231 row. col ( |ui| {
265- if ui
266- . selectable_label ( is_selected, format ! ( "{:3}" , sprite. id) )
267- . clicked ( )
268- {
269- self . selected_id = sprite_id;
270- }
232+ ui. label ( format ! ( "{:3}" , sprite. id) ) ;
271233 } ) ;
272234 row. col ( |ui| {
273235 ui. label ( format ! ( "{:3}" , sprite. x) ) ;
@@ -295,21 +257,6 @@ impl PpuSpritesWidget {
295257 } ) ;
296258 } ) ;
297259 } ) ;
298-
299- ui. separator ( ) ;
300-
301- // Detail panel for the selected sprite
302- ui. horizontal ( |ui| {
303- let tex_size = self . sprite_texture . size_vec2 ( ) ;
304- let scale = ( 64.0 / tex_size. x . max ( tex_size. y ) . max ( 1.0 ) ) . max ( 1.0 ) * 4.0 ;
305- ui. image ( (
306- self . sprite_texture . id ( ) ,
307- Vec2 :: new ( tex_size. x * scale, tex_size. y * scale) ,
308- ) ) ;
309- ui. vertical ( |ui| {
310- ui. label ( ppu. sprite_info ( self . selected_id ) ) ;
311- } ) ;
312- } ) ;
313260 }
314261}
315262
0 commit comments