+// 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 =
int output_set = 0;
char *extension = NULL;
+ char *gameinfo = NULL;
char *arg;
while( csr_argp( argc, argv ) )
goto IL_CSR_EXIT;
}
- api.strings[ api.num_strings ++ ] = arg;
+ api.strings[ api.num_strings ++ ].str = arg;
}
if( (arg = csr_opt_arg( 'o' )) )
if( (arg = csr_opt_arg( 'g' )) )
{
- fs_set_gameinfo( arg );
+ gameinfo = arg;
}
if( (arg = csr_opt_arg( 'r' )) )
" -r 1024 Output resolution\n"
" -o <output> Specify output name/path\n"
" -e <classname> Same as default arg, but instead filters for entity class\n"
+ //" -s <height> 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"
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 );
}
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";