summaryrefslogtreecommitdiff
path: root/devtools/bin/limit_vtf_sizes.pl
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/bin/limit_vtf_sizes.pl')
-rw-r--r--devtools/bin/limit_vtf_sizes.pl94
1 files changed, 94 insertions, 0 deletions
diff --git a/devtools/bin/limit_vtf_sizes.pl b/devtools/bin/limit_vtf_sizes.pl
new file mode 100644
index 0000000..66df3c3
--- /dev/null
+++ b/devtools/bin/limit_vtf_sizes.pl
@@ -0,0 +1,94 @@
+#!perl
+
+use File::Find;
+use File::Basename;
+
+$dir_to_run_on = shift;
+$max_size = shift;
+
+if ( (! length( $dir_to_run_on ) || (! $max_size ) ) )
+ {
+ die "format is 'limit_vtf_sizes game_dir_to_run_on size'. maxisze -1 to unlimit";
+ }
+
+open(CMDOUT,">\runit.cmd");
+
+find(\&ProcessFile, $dir_to_run_on);
+
+close CMDOUT;
+
+sub ProcessFile
+ {
+ local($_) = $File::Find::name;
+ my $origname=$_;
+ my $srcname;
+ s@\\@/@g;
+ if (/\.vtf$/i) # is a vtf?
+ {
+ next if (m@/hud/@i); # don't shrink hud textures
+ next if (m@/vgui/@i); # don't shrink hud textures
+ my $vtex_it=0;
+ if ( s@game/(.*)/materials/@content/\1/materialsrc/@i )
+ {
+ $srcname=$_;
+ s/\.vtf$/\.txt/i;
+ if (-e $_ )
+ {
+ my $txtname=$_;
+ # decide whether or not to add the limits
+ open(TXTIN,$txtname) || die "can't open $_ for read something weird has happened";
+ my $txtout;
+ my $should_add_it=1;
+ while( <TXTIN>)
+ {
+ next if ( ( $max_size == -1) && (/maxwidth/i || /maxheight/i) ); # lose this line
+ $txtout.=$_;
+ $should_add_it = 0 if (/maxwidth/i || /maxheight/i || /nomip/i || /reduce/i );
+ }
+ close TXTIN;
+ if ($should_add_it )
+ {
+ print `p4 edit $txtname`;
+ open(TXTOUT,">$txtname");
+ print TXTOUT $txtout;
+ print TXTOUT "maxwidth $max_size\nmaxheight $max_size\n" if ($max_size != -1);
+ close TXTOUT;
+ $vtex_it = 1;
+ }
+ }
+ else
+ {
+ if (-d dirname($_) )
+ {
+ print "$_ not found. Creating it\n";
+ open(TXTOUT,">$_" ) || die "can't create $_?";
+ print TXTOUT "maxwidth $max_size\nmaxheight $max_size\n" if( $max_size != -1);
+ close TXTOUT;
+ print `p4 add $_`;
+ $vtex_it=1;
+ }
+ else
+ {
+ print "directory does not exist in content for $_\n";
+ }
+ }
+ }
+ else
+ {
+ die "I dont understand the file $_ : bad path?";
+ }
+ if ($vtex_it)
+ {
+ my $name=$srcname;
+ $name=~s@\..*$@@; # kill extension
+ $cmd="vtex -nopause $name";
+ $cmd=~s@/@\\@g;
+ print "execute:$cmd\n";
+ print CMDOUT "$cmd\n";
+# print `$cmd`."\n";
+
+ }
+
+ }
+ }
+