@@ -2,7 +2,7 @@ use sfml::{
2
2
graphics:: {
3
3
Color , PrimitiveType , RenderTarget , RenderWindow , Vertex , VertexBuffer , VertexBufferUsage ,
4
4
} ,
5
- window:: { Event , Style } ,
5
+ window:: { mouse :: Button , Event , Style } ,
6
6
SfResult ,
7
7
} ;
8
8
@@ -15,23 +15,37 @@ fn main() -> SfResult<()> {
15
15
) ?;
16
16
window. set_vertical_sync_enabled ( true ) ;
17
17
18
- let mut vertex_buffer =
19
- VertexBuffer :: new ( PrimitiveType :: LINE_STRIP , 6 , VertexBufferUsage :: STATIC ) ?;
20
-
21
- let vertices = [
18
+ let mut vertices = vec ! [
22
19
Vertex :: with_pos_color( ( 20.0 , 30.0 ) . into( ) , Color :: GREEN ) ,
23
20
Vertex :: with_pos_color( ( 30.0 , 30.0 ) . into( ) , Color :: GREEN ) ,
24
21
Vertex :: with_pos_color( ( 40.0 , 40.0 ) . into( ) , Color :: GREEN ) ,
25
22
Vertex :: with_pos_color( ( 50.0 , 50.0 ) . into( ) , Color :: GREEN ) ,
26
23
Vertex :: with_pos_color( ( 60.0 , 60.0 ) . into( ) , Color :: GREEN ) ,
27
24
Vertex :: with_pos_color( ( 50.0 , 80.0 ) . into( ) , Color :: GREEN ) ,
28
25
] ;
26
+ let mut vertex_buffer = VertexBuffer :: new (
27
+ PrimitiveType :: LINE_STRIP ,
28
+ vertices. len ( ) ,
29
+ VertexBufferUsage :: DYNAMIC ,
30
+ ) ?;
29
31
vertex_buffer. update ( & vertices, 0 ) ?;
30
32
31
33
' mainloop: loop {
32
34
while let Some ( e) = window. poll_event ( ) {
33
- if e == Event :: Closed {
34
- break ' mainloop;
35
+ match e {
36
+ Event :: Closed => break ' mainloop,
37
+ Event :: MouseButtonPressed {
38
+ button : Button :: Left ,
39
+ x,
40
+ y,
41
+ } => {
42
+ vertices. push ( Vertex :: with_pos_color (
43
+ ( x as f32 , y as f32 ) . into ( ) ,
44
+ Color :: GREEN ,
45
+ ) ) ;
46
+ vertex_buffer. update ( & vertices, 0 ) ?;
47
+ }
48
+ _ => { }
35
49
}
36
50
}
37
51
// Clear the window
0 commit comments