42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			V
		
	
	
| module gg
 | |
| 
 | |
| import sokol.sapp
 | |
| import os
 | |
| 
 | |
| [if gg_record ?]
 | |
| pub fn (mut ctx Context) record_frame() {
 | |
| 	if ctx.frame in gg.recorder_settings.screenshot_frames {
 | |
| 		screenshot_file_path := '$gg.recorder_settings.screenshot_prefix${ctx.frame}.png'
 | |
| 		$if gg_record_trace ? {
 | |
| 			eprintln('>>> screenshoting $screenshot_file_path')
 | |
| 		}
 | |
| 
 | |
| 		sapp.screenshot_png(screenshot_file_path) or { panic(err) }
 | |
| 	}
 | |
| 	if ctx.frame == gg.recorder_settings.stop_at_frame {
 | |
| 		$if gg_record_trace ? {
 | |
| 			eprintln('>>> exiting at frame $ctx.frame')
 | |
| 		}
 | |
| 		exit(0)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| fn new_gg_recorder_settings() &SSRecorderSettings {
 | |
| 	$if gg_record ? {
 | |
| 		stop_frame := os.getenv_opt('VGG_STOP_AT_FRAME') or { '-1' }.i64()
 | |
| 		frames := os.getenv('VGG_SCREENSHOT_FRAMES').split_any(',').map(it.u64())
 | |
| 		folder := os.getenv('VGG_SCREENSHOT_FOLDER')
 | |
| 		prefix := os.join_path_single(folder, os.file_name(os.executable()).all_before('.') + '_')
 | |
| 		return &SSRecorderSettings{
 | |
| 			stop_at_frame: stop_frame
 | |
| 			screenshot_frames: frames
 | |
| 			screenshot_folder: folder
 | |
| 			screenshot_prefix: prefix
 | |
| 		}
 | |
| 	} $else {
 | |
| 		return &SSRecorderSettings{}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| const recorder_settings = new_gg_recorder_settings()
 |