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()
 |