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*-nexcompat*.pk3*';
# 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 -randomsamples -samples 4 -lightmapsize 512 -fast -fastbounce -dirty -bouncegrid -fill';
# Default flags for the -minimap stage
our $MINIMAPFLAGS = '';
# Default order of commands
- our $ORDER = 'light,vis,minimap';
+ our $ORDER = 'vis,light';
# end of user changable part
scale => [], # can't have defaults atm
order => [split /\s*,\s*/, $ORDER],
maps => [],
- scale => 1,
+ scalefactor => 1,
bsp_timeout => 0,
vis_timeout => 0,
light_timeout => 0,
}
elsif($_ eq '-scale')
{
- $options->{scale} = (shift @ARGV) || 1;
+ $options->{scalefactor} = @ARGV ? shift(@ARGV) : 1;
$enterflags = 'scale';
}
elsif($_ eq '-novis')
}
elsif($_ eq '-scale_timeout')
{
- $options->{minimap_timeout} = shift @ARGV;
+ $options->{scale_timeout} = shift @ARGV;
}
elsif($_ eq '-order')
{
$options->{order} = [split /\s*,\s*/, shift @ARGV];
}
+ elsif($_ eq '-sRGB')
+ {
+ push @{$options->{bsp}}, "-sRGBtex", "-sRGBcolor";
+ push @{$options->{light}}, "-sRGBtex", "-sRGBcolor", "-sRGBlight"
+ if defined $options->{light};
+ }
+ elsif($_ eq '-nosRGB')
+ {
+ push @{$options->{bsp}}, "-nosRGBtex", "-nosRGBcolor";
+ push @{$options->{light}}, "-nosRGBtex", "-nosRGBcolor", "-nosRGBlight"
+ if defined $options->{light};
+ }
+ 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')
or die "fork: $!";
if($pid) # parent
{
- local $SIG{ALRM} = sub { warn "SIGALRM caught\n"; kill $pid; };
+ local $SIG{ALRM} = sub { warn "SIGALRM caught\n"; kill TERM => $pid; };
alarm $timeout
if $timeout;
if(waitpid($pid, 0) != $pid)
$mapdir = "/" if $mapdir eq "";
symlink "$mapdir", "$linkdir/data";
-my ($prescale, $postscale) = ($options->{scale} =~ /^([0-9.]+)(?::([0-9.]+))?$/);
+my ($prescale, $postscale) = ($options->{scalefactor} =~ /^([0-9.]+)(?::([0-9.]+))?$/);
+$prescale = 1 if not defined $prescale;
$postscale = 1 if not defined $postscale;
for my $m(@{$options->{maps}})
{
$m =~ s/\.(?:map|bsp)$//;
+
if($prescale != 1)
{
- open my $checkfh, "<", "$m.map"
- or die "open $m.map: $!";
- my $keeplights = 0;
- while(<$checkfh>)
- {
- /^\s*"_keeplights"\s+"1"\s*$/
- or next;
- $keeplights = 1;
- }
- close $checkfh;
- die "$m does not define _keeplights to 1"
- unless $keeplights;
+ unshift @{$options->{bsp}}, "-keeplights";
}
my %shaders = map { m!/([^/.]*)\.shader(?:$)! ? ($1 => 1) : () } glob "../scripts/*.shader";
or die "rename ${m}_s.bsp $m.bsp: $!";
}
my @o = @{$options->{order}};
- push @o, qw/light vis minimap/;
+ push @o, qw/light vis/;
my %o = ();
for(@o)
or die "-vis: $?";
}
}
- if($_ eq 'minimap')
- {
- if(defined $options->{minimap})
- {
- q3map2 '-minimap', @{$options->{minimap}}, "$m.map"
- or die "-minimap: $?";
- }
- }
}
if($postscale != 1)
or die "rename ${m}_s.bsp $m.bsp: $!";
}
+ if(defined $options->{minimap})
+ {
+ q3map2 '-minimap', @{$options->{minimap}}, "$m.map"
+ or die "-minimap: $?";
+ }
+
unlink "$m.srf";
unlink "$m.prt";