ericw-tools/bspinfo/bspinfo.cc

86 lines
3.0 KiB
C++

/* Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
See file, 'COPYING', for details.
*/
#include <common/cmdlib.hh>
#include <common/bspfile.hh>
inline void PrintBSPInfo(const bspdata_t &bsp) {
printf("brushes:\n");
for (int32_t i = 0; i < bsp.data.q2bsp.numbrushes; i++) {
printf(" %i: contents: %i, num sides: %i, first side: %i\n", i, bsp.data.q2bsp.dbrushes[i].contents, bsp.data.q2bsp.dbrushes[i].numsides, bsp.data.q2bsp.dbrushes[i].firstside);
}
printf("brush sides:\n");
for (int32_t i = 0; i < bsp.data.q2bsp.numbrushsides; i++) {
auto &plane = bsp.data.q2bsp.dplanes[bsp.data.q2bsp.dbrushsides[i].planenum];
printf(" %i: { %i: %f %f %f -> %f }\n", i, plane.type, plane.normal[0], plane.normal[1], plane.normal[2], plane.dist);
}
printf("leaves:\n");
for (int32_t i = 0; i < bsp.data.q2bsp.numleafs; i++) {
auto &leaf = bsp.data.q2bsp.dleafs[i];
printf(" %i: contents %i, leafbrushes first %i -> count %i\n", i, leaf.contents, leaf.firstleafbrush, leaf.numleafbrushes);
}
printf("nodes:\n");
for (int32_t i = 0; i < bsp.data.q2bsp.numnodes; i++) {
auto &node = bsp.data.q2bsp.dnodes[i];
auto &plane = bsp.data.q2bsp.dplanes[node.planenum];
printf(" %i: { %i: %f %f %f -> %f }\n", i, plane.type, plane.normal[0], plane.normal[1], plane.normal[2], plane.dist);
}
printf("models:\n");
for (int32_t i = 0; i < bsp.data.q2bsp.nummodels; i++) {
auto &model = bsp.data.q2bsp.dmodels[i];
printf(" %i: headnode %i (%f %f %f -> %f %f %f)\n", i, model.headnode, model.mins[0], model.mins[1], model.mins[2], model.maxs[0], model.maxs[1], model.maxs[2]);
}
}
int
main(int argc, char **argv)
{
bspdata_t bsp;
char source[1024];
int i;
printf("---- bspinfo / ericw-tools " stringify(ERICWTOOLS_VERSION) " ----\n");
if (argc == 1) {
printf("usage: bspinfo bspfile [bspfiles]\n");
exit(1);
}
for (i = 1; i < argc; i++) {
printf("---------------------\n");
strcpy(source, argv[i]);
DefaultExtension(source, ".bsp");
printf("%s\n", source);
LoadBSPFile(source, &bsp);
PrintBSPFileSizes(&bsp);
PrintBSPInfo(bsp);
printf("---------------------\n");
}
return 0;
}