X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fxonotic.git;a=blobdiff_plain;f=misc%2Ftools%2Fxonotic-map-compiler;h=d70eb371b3529fdc72df8439862f7cc207951090;hp=bfc6593b5f8a665646a6ee9c0849b73c27f9efec;hb=8306d9d7a727f3b2718bd912342503d8c33b2c50;hpb=3a27e02f3a7ffcce4da1955646b9239109dff481 diff --git a/misc/tools/xonotic-map-compiler b/misc/tools/xonotic-map-compiler index bfc6593b..d70eb371 100755 --- a/misc/tools/xonotic-map-compiler +++ b/misc/tools/xonotic-map-compiler @@ -16,16 +16,16 @@ use File::Temp; our $Q3MAP2 = '/home/rpolzer/Games/Xonotic/netradiant/install/q3map2.x86'; # General flags for q3map2 (for example -threads 4) - our $Q3MAP2FLAGS = ''; + our $Q3MAP2FLAGS = '-fs_forbiddenpath xonotic-data.pk3 -fs_forbiddenpath xonotic-data.pk3dir -fs_forbiddenpath xonotic-nexcompat.pk3 -fs_forbiddenpath xonotic-nexcompat.pk3dir'; # Default flags for the -bsp stage - our $BSPFLAGS = '-meta -samplesize 8 -minsamplesize 4 -mv 1000000 -mi 6000000'; + our $BSPFLAGS = '-meta -maxarea -samplesize 8 -mv 1000000 -mi 6000000'; # Default flags for the -vis stage our $VISFLAGS = ''; # Default flags for the -light stage - our $LIGHTFLAGS = '-deluxe -patchshadows -samples 3 -lightmapsize 512'; + our $LIGHTFLAGS = '-lightmapsearchpower 3 -deluxe -patchshadows -samples 3 -lightmapsize 512 -fast -fastbounce -dirty -bouncegrid'; # Default flags for the -minimap stage our $MINIMAPFLAGS = ''; @@ -134,6 +134,16 @@ while(@ARGV) { $options->{order} = [split /\s*,\s*/, shift @ARGV]; } + elsif($_ =~ /^--no(-.*)/) + { + if($curmode eq 'maps') + { + $curmode = 'bsp'; + } + my $flag = $1; + @{$options->{$curmode}} = grep { (($_ eq $flag) ... /^-/) !~ /^[0-9]+$/ } @{$options->{$curmode}}; + # so, e.g. --no-samplesize removes "-samplesize" and a following "3" + } elsif($_ =~ /^-(-.*)/) { if($curmode eq 'maps') @@ -183,16 +193,15 @@ sub q3map2(@) or die "fork: $!"; if($pid) # parent { - if($timeout) - { - local $SIG{ALRM} = sub { kill $pid; }; - alarm $timeout; - } - if(waitpid $pid, 0 != $pid) + local $SIG{ALRM} = sub { warn "SIGALRM caught\n"; kill TERM => $pid; }; + alarm $timeout + if $timeout; + if(waitpid($pid, 0) != $pid) { die "waitpid: did not return our child process $pid: $!"; } - return !$?; + alarm 0; + return ($? == 0); } else # child {