@@ -6,8 +6,6 @@ use bevy_animation_graph::core::{
66} ;
77use egui:: Sense ;
88
9- use crate :: { icons, ui:: utils:: collapsing:: Collapser } ;
10-
119pub struct Tree < I , L > ( pub Vec < TreeInternal < I , L > > ) ;
1210impl < I , T > Default for Tree < I , T > {
1311 fn default ( ) -> Self {
@@ -355,83 +353,3 @@ impl Tree<RagdollNode, RagdollNode> {
355353 TreeInternal :: Leaf ( format ! ( "{:?}" , joint. id) , RagdollNode :: Joint ( joint_id) )
356354 }
357355}
358-
359- #[ derive( Clone , Copy ) ]
360- pub struct RagdollTreeRenderer { }
361-
362- impl RagdollTreeRenderer { }
363-
364- pub struct RagdollResponse {
365- pub hovered : Option < RagdollNode > ,
366- pub clicked : Option < RagdollNode > ,
367- }
368-
369- impl TreeResponse for RagdollResponse {
370- fn combine ( & self , other : & Self ) -> Self {
371- RagdollResponse {
372- hovered : self . hovered . or ( other. hovered ) ,
373- clicked : self . clicked . or ( other. clicked ) ,
374- }
375- }
376- }
377-
378- impl TreeRenderer < RagdollNode , RagdollNode , RagdollResponse > for RagdollTreeRenderer {
379- fn render_inner (
380- & self ,
381- label : & str ,
382- data : & RagdollNode ,
383- children : & [ TreeInternal < RagdollNode , RagdollNode > ] ,
384- ui : & mut egui:: Ui ,
385- render_child : impl Fn (
386- & TreeInternal < RagdollNode , RagdollNode > ,
387- & mut egui:: Ui ,
388- ) -> TreeResult < RagdollNode , RagdollNode , RagdollResponse > ,
389- ) -> TreeResult < RagdollNode , RagdollNode , RagdollResponse > {
390- let collapsing_response = Collapser :: new ( )
391- . with_default_open ( true )
392- . with_id_salt ( data)
393- . show (
394- ui,
395- |ui| self . render_leaf ( label, data, ui) ,
396- |ui| {
397- children
398- . iter ( )
399- . map ( |c| render_child ( c, ui) )
400- . reduce ( |l, r| l. or ( r) )
401- . unwrap_or_default ( )
402- } ,
403- ) ;
404-
405- collapsing_response
406- . head
407- . or ( collapsing_response. body . unwrap_or_default ( ) )
408- }
409-
410- fn render_leaf (
411- & self ,
412- label : & str ,
413- data : & RagdollNode ,
414- ui : & mut egui:: Ui ,
415- ) -> TreeResult < RagdollNode , RagdollNode , RagdollResponse > {
416- let response = ui
417- . horizontal ( |ui| {
418- let image = match data {
419- RagdollNode :: Body ( _) => icons:: BONE ,
420- RagdollNode :: Collider ( _) => icons:: BOX ,
421- RagdollNode :: Joint ( _) => icons:: JOINT ,
422- } ;
423- let color = ui. visuals ( ) . text_color ( ) ;
424- ui. add ( egui:: Image :: new ( image) . tint ( color) . sense ( Sense :: click ( ) ) )
425- | ui. add ( egui:: Label :: new ( label) . sense ( Sense :: click ( ) ) )
426- } )
427- . inner ;
428-
429- TreeResult :: Leaf (
430- data. clone ( ) ,
431- RagdollResponse {
432- hovered : response. hovered ( ) . then_some ( * data) ,
433- clicked : response. clicked ( ) . then_some ( * data) ,
434- } ,
435- )
436- }
437- }
0 commit comments