@@ -8,7 +8,7 @@ use crate::{stage::render_context::RenderContext, utils::kdl::KdlPos2};
88pub trait EntityTrait {
99 fn id ( & self ) -> & str ;
1010 fn position ( & self ) -> Pos2 ;
11- fn render ( & self , rc : & mut RenderContext ) ;
11+ fn ui ( & self , ui : & mut egui :: Ui , rc : & mut RenderContext ) ;
1212}
1313
1414#[ derive( knus:: Decode , Debug , Clone ) ]
@@ -39,12 +39,12 @@ impl EntityTrait for Text {
3939 fn position ( & self ) -> Pos2 {
4040 self . pos . into ( )
4141 }
42- fn render ( & self , rc : & mut RenderContext ) {
42+ fn ui ( & self , ui : & mut egui :: Ui , rc : & mut RenderContext ) {
4343 let padding = 8.0 ;
4444
4545 let text_width = * self . text_width . get_or_init ( || {
4646 // 这里调用你的 get_text_width 或者直接计算
47- rc . painter
47+ ui . painter ( )
4848 . layout_no_wrap (
4949 self . val . clone ( ) ,
5050 FontId :: proportional ( 14.0 ) ,
@@ -54,17 +54,10 @@ impl EntityTrait for Text {
5454 . x
5555 } ) ;
5656
57- rc. rect (
58- Rect {
59- min : Pos2 :: ZERO ,
60- max : Pos2 {
61- x : text_width + padding * 2.0 ,
62- y : 14.0 + padding * 2.0 ,
63- } ,
64- } ,
65- Color32 :: WHITE ,
57+ ui. add (
58+ egui:: Label :: new ( egui:: RichText :: new ( & self . val ) . size ( 14.0 * rc. zoom ) )
59+ . wrap_mode ( egui:: TextWrapMode :: Extend ) ,
6660 ) ;
67- rc. text ( pos2 ( padding, padding) , & self . val ) ;
6861 }
6962}
7063
0 commit comments