@@ -31,6 +31,13 @@ pub struct RenderContext<'w, 's> {
3131 state : Local < ' s , RenderState > ,
3232}
3333
34+ impl < ' w , ' s > RenderContext < ' w , ' s > {
35+ pub fn reset ( & mut self , graphics_entity : Entity , render_layers : RenderLayers ) {
36+ self . batch . reset ( graphics_entity, render_layers) ;
37+ self . state . transform . clear ( ) ;
38+ }
39+ }
40+
3441struct BatchState {
3542 current_mesh : Option < Mesh > ,
3643 material_key : Option < MaterialKey > ,
@@ -53,6 +60,17 @@ impl Default for BatchState {
5360 }
5461}
5562
63+ impl BatchState {
64+ fn reset ( & mut self , graphics_entity : Entity , render_layers : RenderLayers ) {
65+ self . current_mesh = None ;
66+ self . material_key = None ;
67+ self . transform = Affine3A :: IDENTITY ;
68+ self . draw_index = 0 ;
69+ self . render_layers = render_layers;
70+ self . graphics_entity = Some ( graphics_entity) ;
71+ }
72+ }
73+
5674#[ derive( Debug ) ]
5775pub struct RenderState {
5876 // drawing state
@@ -105,9 +123,7 @@ pub fn flush_draw_commands(
105123 graphics. iter_mut ( )
106124 {
107125 let draw_commands = std:: mem:: take ( & mut cmd_buffer. commands ) ;
108- ctx. batch . render_layers = render_layers. clone ( ) ;
109- ctx. batch . graphics_entity = Some ( graphics_entity) ;
110- ctx. batch . draw_index = 0 ; // Reset draw index for each flush
126+ ctx. reset ( graphics_entity, render_layers. clone ( ) ) ;
111127
112128 for cmd in draw_commands {
113129 match cmd {
0 commit comments