1
1
use bevy:: prelude:: * ;
2
2
use bevy:: render:: camera:: ScalingMode ;
3
+ #[ cfg( not( target_arch = "wasm32" ) ) ]
4
+ use bevy:: render:: view:: screenshot:: ScreenshotManager ;
3
5
use bevy:: window:: { PrimaryWindow , WindowMode } ;
4
6
use bevy_kira_audio:: prelude:: AudioReceiver ;
5
7
use bevy_rapier2d:: dynamics:: Velocity ;
@@ -100,6 +102,25 @@ fn toggle_full_screen(
100
102
}
101
103
}
102
104
105
+ #[ cfg( not( target_arch = "wasm32" ) ) ]
106
+ fn take_screenshot (
107
+ keys : Res < Input < KeyCode > > ,
108
+ main_window : Query < Entity , With < PrimaryWindow > > ,
109
+ mut screenshot_manager : ResMut < ScreenshotManager > ,
110
+ mut counter : Local < u32 > ,
111
+ ) {
112
+ if !keys. just_pressed ( KeyCode :: F12 ) {
113
+ return ;
114
+ }
115
+
116
+ let path = format ! ( "./screenshot-{}.png" , * counter) ;
117
+ * counter += 1 ;
118
+ match screenshot_manager. save_screenshot_to_disk ( main_window. single ( ) , path) {
119
+ Ok ( ( ) ) => { }
120
+ Err ( err) => error ! ( "failed to take screenshot, {}" , err) ,
121
+ }
122
+ }
123
+
103
124
pub struct CameraPlugin ;
104
125
105
126
impl Plugin for CameraPlugin {
@@ -109,6 +130,8 @@ impl Plugin for CameraPlugin {
109
130
(
110
131
#[ cfg( not( target_arch = "wasm32" ) ) ]
111
132
toggle_full_screen,
133
+ #[ cfg ( not ( target_arch = "wasm32" ) ) ]
134
+ take_screenshot,
112
135
apply_y_sort,
113
136
zoom_camera,
114
137
) ,
0 commit comments