tga & normals
[csRadar.git] / csRadar.c
index 11253739c13bab5f3b4ec1ea829f63120420e625..9f05c2b02aaafd6fc105a6182dd82e5b1e13230f 100644 (file)
--- 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 <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"
@@ -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";