File: polycount.pl

package info (click to toggle)
nexuiz-data 2.5.2-13
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,294,288 kB
  • sloc: ansic: 10,523; perl: 6,845; sh: 2,188; java: 1,417; xml: 969; lisp: 519; ruby: 136; makefile: 125
file content (45 lines) | stat: -rwxr-xr-x 995 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/perl

for(@ARGV)
{
	my $data = do {
		open my $fh, "<", $_;
		undef local $/;
		<$fh>;
	};

	my $vertex = undef;
	my $poly = undef;
	my $type = undef;

	if("IDP3" eq substr $data, 0, 4)
	{
		# MD3 model
		my $num_meshes = unpack "V", substr $data, 4+4+64+4+4+4, 4;
		my $ofs_meshes = unpack "V", substr $data, 4+4+64+4+4+4+4+4+4+4, 4;
		$vertex = $poly = 0;
		for(1..$num_meshes)
		{
			$vertex     += unpack "V", substr $data, $ofs_meshes+4+64+4+4+4, 4;
			$poly       += unpack "V", substr $data, $ofs_meshes+4+64+4+4+4+4, 4;
			$ofs_meshes += unpack "V", substr $data, $ofs_meshes+4+64+4+4+4+4+4+4+4+4+4, 4;
		}
		$type = "md3";
	}
	elsif("ZYMOTICMODEL" eq substr $data, 0, 12)
	{
		# ZYM model
		$vertex = unpack "N", substr $data, 12+4+4+4*3+4*3+4, 4;
		$poly   = unpack "N", substr $data, 12+4+4+4*3+4*3+4+4, 4;
		$type = "zym";
	}

	if(defined $type)
	{
		printf "%8d %8d %-3s %s\n", $vertex, $poly, $type, $_;
	}
	else
	{
		printf "%8s %8s %-3s %s\n", "-", "-", "-", $_;
	}
}