1- use std:: rc:: Rc ;
2-
31use lambda:: {
42 core:: {
5- component:: {
6- Component ,
7- RenderableComponent ,
8- } ,
3+ component:: Component ,
94 events:: {
105 ComponentEvent ,
116 Events ,
127 KeyEvent ,
13- RuntimeEvent ,
148 WindowEvent ,
159 } ,
1610 render:: {
@@ -24,6 +18,7 @@ use lambda::{
2418 VirtualShader ,
2519 } ,
2620 viewport,
21+ RenderContext ,
2722 } ,
2823 runtime:: start_runtime,
2924 } ,
@@ -39,14 +34,29 @@ pub struct DemoComponent {
3934 height : u32 ,
4035}
4136
42- impl Component < Events > for DemoComponent {
43- fn on_attach ( & mut self ) {
37+ impl Component for DemoComponent {
38+ fn on_attach ( & mut self , render_context : & mut RenderContext ) {
39+ println ! ( "Attached the demo component to the renderer" ) ;
40+ let render_pass =
41+ render_pass:: RenderPassBuilder :: new ( ) . build ( & render_context) ;
42+
43+ let pipeline = pipeline:: RenderPipelineBuilder :: new ( ) . build (
44+ render_context,
45+ & render_pass,
46+ & self . vertex_shader ,
47+ & self . triangle_vertex ,
48+ ) ;
49+
50+ // Attach the render pass and pipeline to the render context
51+ self . render_pass_id = Some ( render_context. attach_render_pass ( render_pass) ) ;
52+ self . render_pipeline_id = Some ( render_context. attach_pipeline ( pipeline) ) ;
53+
4454 println ! ( "Attached the DemoComponent." ) ;
4555 }
4656
47- fn on_detach ( self : & mut DemoComponent ) { }
57+ fn on_detach ( self : & mut DemoComponent , render_context : & mut RenderContext ) { }
4858
49- fn on_event ( self : & mut DemoComponent , event : & lambda :: core :: events :: Events ) {
59+ fn on_event ( self : & mut DemoComponent , event : Events ) {
5060 match event {
5161 Events :: Runtime { event, issued_at } => match event {
5262 lambda:: core:: events:: RuntimeEvent :: Shutdown => {
@@ -57,8 +67,8 @@ impl Component<Events> for DemoComponent {
5767 Events :: Window { event, issued_at } => match event {
5868 WindowEvent :: Resize { width, height } => {
5969 println ! ( "Window resized to {}x{}" , width, height) ;
60- self . width = * width;
61- self . height = * height;
70+ self . width = width;
71+ self . height = height;
6272 }
6373 WindowEvent :: Close => {
6474 println ! ( "Window closed" ) ;
@@ -103,30 +113,6 @@ impl Component<Events> for DemoComponent {
103113 false => { }
104114 }
105115 }
106- }
107-
108- /// Implement rendering for the component.
109- impl RenderableComponent < Events > for DemoComponent {
110- fn on_renderer_attached (
111- & mut self ,
112- render_context : & mut lambda:: core:: render:: RenderContext ,
113- ) {
114- println ! ( "Attached the demo component to the renderer" ) ;
115- let render_pass =
116- render_pass:: RenderPassBuilder :: new ( ) . build ( & render_context) ;
117-
118- let pipeline = pipeline:: RenderPipelineBuilder :: new ( ) . build (
119- render_context,
120- & render_pass,
121- & self . vertex_shader ,
122- & self . triangle_vertex ,
123- ) ;
124-
125- // Attach the render pass and pipeline to the render context
126- self . render_pass_id = Some ( render_context. attach_render_pass ( render_pass) ) ;
127- self . render_pipeline_id = Some ( render_context. attach_pipeline ( pipeline) ) ;
128- }
129-
130116 fn on_render (
131117 self : & mut DemoComponent ,
132118 _render_context : & mut lambda:: core:: render:: RenderContext ,
@@ -159,13 +145,6 @@ impl RenderableComponent<Events> for DemoComponent {
159145 RenderCommand :: EndRenderPass ,
160146 ] ;
161147 }
162-
163- fn on_renderer_detached (
164- self : & mut DemoComponent ,
165- _render_context : & mut lambda:: core:: render:: RenderContext ,
166- ) {
167- println ! ( "Detached the demo component from the renderer" ) ;
168- }
169148}
170149
171150impl DemoComponent { }
0 commit comments