X-Git-Url: https://harrygodden.com/git/?p=csRadar.git;a=blobdiff_plain;f=csRadar.c;fp=csRadar.c;h=9f05c2b02aaafd6fc105a6182dd82e5b1e13230f;hp=11253739c13bab5f3b4ec1ea829f63120420e625;hb=dee56773cecd3a165331732008b7c0acf6f13393;hpb=abfc6360542cb480122313a36f6ed02c08074ed5 diff --git a/csRadar.c b/csRadar.c index 1125373..9f05c2b 100644 --- a/csRadar.c +++ b/csRadar.c @@ -1,9 +1,15 @@ +// Copyright (C) 2021 Harry Godden (hgn) + +// Building: +// gcc -rdynamic csRadar.c -o csRadar -lm -ldl +// +// Plugins: +// gcc -fpic -shared -o ext/my_plugin.so my_plugin.c -lm + #define VALVE_IMPLEMENTATION #define CSR_EXECUTABLE #include "csRadar.h" -// gcc -Wall -fsanitize=address csRadar.c -o csRadar -lm - int main( int argc, char *argv[] ) { csr_api api = @@ -17,6 +23,7 @@ int main( int argc, char *argv[] ) int output_set = 0; char *extension = NULL; + char *gameinfo = NULL; char *arg; while( csr_argp( argc, argv ) ) @@ -29,7 +36,7 @@ int main( int argc, char *argv[] ) goto IL_CSR_EXIT; } - api.strings[ api.num_strings ++ ] = arg; + api.strings[ api.num_strings ++ ].str = arg; } if( (arg = csr_opt_arg( 'o' )) ) @@ -42,7 +49,7 @@ int main( int argc, char *argv[] ) if( (arg = csr_opt_arg( 'g' )) ) { - fs_set_gameinfo( arg ); + gameinfo = arg; } if( (arg = csr_opt_arg( 'r' )) ) @@ -108,10 +115,9 @@ int main( int argc, char *argv[] ) " -r 1024 Output resolution\n" " -o Specify output name/path\n" " -e Same as default arg, but instead filters for entity class\n" + //" -s Add a vertical split at this height\n" " --padding=128 When cropping radar, add padding units to border\n" //" --standard-layers Use standard TAR layers/groups\n" - " --write-normals Enable normals as an output stream\n" - " --write-origins Enable entity origins as an output stream\n" " --no-txt Don't create matching radar txt\n" " --multi-sample=RGSS [ none, 2x, rgss, 8r ]\n" " --extension=TAR Use an extension binary instead\n" @@ -126,10 +132,15 @@ int main( int argc, char *argv[] ) if( api.num_strings ) { + if( gameinfo ) + { + fs_set_gameinfo( gameinfo ); + } + // Path handling if( !output_set ) { - strcpy( api.output_path, api.strings[0] ); + strcpy( api.output_path, api.strings[0].str ); csr_stripext( api.output_path ); } @@ -144,9 +155,19 @@ int main( int argc, char *argv[] ) log_info( "output_path: '%s'\n", api.output_path ); log_info( "vmf_name: '%s'\n", api.vmf_name ); - api.map = vmf_init( api.strings[0] ); + api.map = vmf_init( api.strings[0].str ); if( api.map ) { + // Update arg inferred types + api.strings[0].type = k_iftype_vmf; + for( int i = 1; i < api.num_strings; i ++ ) + { + if( vmf_visgroup_id( api.map->root, api.strings[i].str ) != -1 ) + api.strings[i].type = k_iftype_visgroup; + else + api.strings[i].type = k_iftype_classname; + } + if( !extension ) extension = "csRadarFree";