r5361 - trunk/misc
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Tue Dec 30 09:02:12 EST 2008
Author: div0
Date: 2008-12-30 09:02:09 -0500 (Tue, 30 Dec 2008)
New Revision: 5361
Modified:
trunk/misc/entmerge.pl
Log:
support scale in entmerge
Modified: trunk/misc/entmerge.pl
===================================================================
--- trunk/misc/entmerge.pl 2008-12-30 13:48:33 UTC (rev 5360)
+++ trunk/misc/entmerge.pl 2008-12-30 14:02:09 UTC (rev 5361)
@@ -7,16 +7,16 @@
# usage:
#
# map -> ent:
-# perl entmerge.pl < mapname.map > mapname.ent
+# perl entmerge.pl $scalefactor < mapname.map > mapname.ent
#
# ent -> map:
-# perl entmerge.pl mapname.ent < mapname.map > mapname-merged.map
+# perl entmerge.pl $scalefactor mapname.ent < mapname.map > mapname-merged.map
#
# bsp -> ent:
-# perl bsptool.pl mapname.bsp -xentities > mapname.ent
-#
-# ent -> bsp:
-# perl bsptool.pl mapname.bsp -rentities < mapname.ent
+# perl bsptool.pl mapname.bsp -xentities > mapname.ent
+#
+# ent -> bsp:
+# perl bsptool.pl mapname.bsp -rentities < mapname.ent
sub ParseEntity($)
{
@@ -123,8 +123,11 @@
return $s;
}
-my ($in_ent) = @ARGV;
+my ($scale, $in_ent) = @ARGV;
+$scale = 1
+ if not defined $scale;
+
my @submodels = ();
my @entities = ();
my @entities_skipped = ();
@@ -176,6 +179,12 @@
$first = 0;
}
+if($first)
+{
+ push @entities, { classname => "worldspawn" };
+ @submodels = ([]);
+}
+
if(defined $in_ent)
{
# translate map using ent to map
@@ -185,24 +194,53 @@
# THIS part is always an .ent file now
my @entities_entfile = ();
$first = 1;
- while(<STDIN>)
+ for(;;)
{
my ($ent, $brushes) = ParseEntity $fh;
+
+ defined $ent
+ or last;
+
+ if($first && $ent->{classname} eq 'worldspawn')
+ {
+ }
+ else
+ {
+ if($first)
+ {
+ push @entities_entfile, { classname => "worldspawn" };
+ }
+
+ if($ent->{classname} eq 'worldspawn')
+ {
+ $ent->{classname} = "worldspawn_renamed";
+ }
+ }
+
push @entities_entfile, $ent;
$first = 0;
}
close $fh;
+ if($first)
+ {
+ push @entities_entfile, { classname => "worldspawn" };
+ }
+
$first = 1;
- for(@entities)
+ for(@entities_entfile)
{
my %e = %$_;
my $submodel = undef;
+
+ $e{lip} /= $scale if exists $e{lip};
+ $e{origin} = join ' ', map { $_ / $scale } split /\s+/, $e{origin} if exists $e{origin};
+
if($first)
{
$submodel = $submodels[0];
}
- elsif($e{model} =~ /^\*(\d+)$/)
+ elsif(defined $e{model} and $e{model} =~ /^\*(\d+)$/)
{
$submodel = $submodels[$1];
delete $e{model};
@@ -222,7 +260,12 @@
$first = 1;
for(@entities)
{
- print UnparseEntity $_, undef;
+ my %e = %$_;
+
+ $e{lip} *= $scale if exists $e{lip};
+ $e{origin} = join ' ', map { $_ * $scale } split /\s+/, $e{origin} if exists $e{origin};
+
+ print UnparseEntity \%e, undef;
$first = 0;
}
}
More information about the nexuiz-commits
mailing list