X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=contrib%2Fbobtoolz%2Fcportals.cpp;h=3fd39202f4bfa6660dfb9f7164b7a788261dfe38;hb=37787ff58d17054395ece7e19db0bd07dde08fc6;hp=d05591c3caee30b0c58af88bee9ee8e5944cf8d6;hpb=b1bfb19ecd5ec8355065b2028a6de0c850197b2d;p=xonotic%2Fnetradiant.git diff --git a/contrib/bobtoolz/cportals.cpp b/contrib/bobtoolz/cportals.cpp index d05591c3..3fd39202 100644 --- a/contrib/bobtoolz/cportals.cpp +++ b/contrib/bobtoolz/cportals.cpp @@ -1,340 +1,339 @@ /* -BobToolz plugin for GtkRadiant -Copyright (C) 2001 Gordon Biggans + BobToolz plugin for GtkRadiant + Copyright (C) 2001 Gordon Biggans -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. -This library 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 -Lesser General Public License for more details. + This library 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 + Lesser General Public License for more details. -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ -#include "StdAfx.h" #include "CPortals.h" + +#include +#include +#include + #include "misc.h" -#define LINE_BUF 1000 -#define MSG_PREFIX "bobToolz plugin: " +const int LINE_BUF = 1000; +const char *MSG_PREFIX = "bobToolz plugin: "; -// these classes are far less of a mess than my code was, +// these classes are far less of a mess than my code was, // thanq to G.DeWan 4 the prtview source on which it was based CBspPortal::CBspPortal() { - memset(this, 0, sizeof(CBspPortal)); + memset(this, 0, sizeof(CBspPortal)); } CBspPortal::~CBspPortal() { - delete[] point; + delete[] point; } -void ClampFloat(float* p) +void ClampFloat(float *p) { - double i; - double frac = modf(*p, &i); + double i; + double frac = modf(*p, &i); - if(!frac) - return; + if (!frac) { + return; + } - if(fabs(*p - ceil(*p)) < MAX_ROUND_ERROR) - *p = ceilf(*p); + if (fabs(*p - ceil(*p)) < MAX_ROUND_ERROR) { + *p = static_cast( ceil(*p)); + } - if(fabs(*p - floor(*p)) < MAX_ROUND_ERROR) - *p = floorf(*p); + if (fabs(*p - floor(*p)) < MAX_ROUND_ERROR) { + *p = static_cast( floor(*p)); + } } bool CBspPortal::Build(char *def, unsigned int pointCnt, bool bInverse) { - char *c = def; - unsigned int n; + char *c = def; + unsigned int n; - point_count = pointCnt; + point_count = pointCnt; - if(point_count < 3) - return FALSE; + if (point_count < 3) { + return false; + } - point = new CBspPoint[point_count]; + point = new CBspPoint[point_count]; - for(n = 0; n < point_count; n++) - { - for(; *c != 0 && *c != '('; c++); + for (n = 0; n < point_count; n++) { + for (; *c != 0 && *c != '('; c++) {} - if(*c == 0) - return FALSE; + if (*c == 0) { + return false; + } - c++; + c++; - int x; - if(bInverse) - x = point_count - n - 1; - else - x = n; + int x; + if (bInverse) { + x = point_count - n - 1; + } else { + x = n; + } - sscanf(c, "%f %f %f", &point[x].p[0], &point[x].p[1], &point[x].p[2]); + sscanf(c, "%f %f %f", &point[x].p[0], &point[x].p[1], &point[x].p[2]); - ClampFloat(&point[x].p[0]); - ClampFloat(&point[x].p[1]); - ClampFloat(&point[x].p[2]); - } + ClampFloat(&point[x].p[0]); + ClampFloat(&point[x].p[1]); + ClampFloat(&point[x].p[2]); + } - return TRUE; + return true; } CPortals::CPortals() { - memset(this, 0, sizeof(CPortals)); + memset(this, 0, sizeof(CPortals)); } CPortals::~CPortals() { - Purge(); + Purge(); } void CPortals::Purge() { - if(node) - delete[] node; - node = NULL; - node_count = 0; + if (node) { + delete[] node; + } + node = NULL; + node_count = 0; } void CPortals::Load() { - char buf[LINE_BUF+1]; + char buf[LINE_BUF + 1]; + + memset(buf, 0, LINE_BUF + 1); - memset(buf, 0, LINE_BUF + 1); - - Purge(); + Purge(); - Sys_Printf(MSG_PREFIX "Loading portal file %s.\n", fn); + globalOutputStream() << MSG_PREFIX << "Loading portal file " << fn << ".\n"; - FILE *in; + FILE *in; - in = fopen(fn, "rt"); + in = fopen(fn, "rt"); - if(in == NULL) - { - Sys_Printf(" ERROR - could not open file.\n"); + if (in == NULL) { + globalOutputStream() << " ERROR - could not open file.\n"; - return; - } + return; + } - if(!fgets(buf, LINE_BUF, in)) - { - fclose(in); + if (!fgets(buf, LINE_BUF, in)) { + fclose(in); - Sys_Printf(" ERROR - File ended prematurely.\n"); + globalOutputStream() << " ERROR - File ended prematurely.\n"; - return; - } + return; + } - if(strncmp("PRT1", buf, 4) != 0) - { - fclose(in); + if (strncmp("PRT1", buf, 4) != 0) { + fclose(in); - Sys_Printf(" ERROR - File header indicates wrong file type (should be \"PRT1\").\n"); + globalOutputStream() << " ERROR - File header indicates wrong file type (should be \"PRT1\").\n"; - return; - } + return; + } - if(!fgets(buf, LINE_BUF, in)) - { - fclose(in); + if (!fgets(buf, LINE_BUF, in)) { + fclose(in); - Sys_Printf(" ERROR - File ended prematurely.\n"); + globalOutputStream() << " ERROR - File ended prematurely.\n"; - return; - } + return; + } - sscanf(buf, "%u", &node_count); + sscanf(buf, "%u", &node_count); - if(node_count > 0xFFFF) - { - fclose(in); + if (node_count > 0xFFFF) { + fclose(in); - node_count = 0; + node_count = 0; - Sys_Printf(" ERROR - Extreme number of nodes, aborting.\n"); + globalOutputStream() << " ERROR - Extreme number of nodes, aborting.\n"; - return; - } + return; + } - if(!fgets(buf, LINE_BUF, in)) - { - fclose(in); + if (!fgets(buf, LINE_BUF, in)) { + fclose(in); - node_count = 0; + node_count = 0; - Sys_Printf(" ERROR - File ended prematurely.\n"); + globalOutputStream() << " ERROR - File ended prematurely.\n"; - return; - } + return; + } - unsigned int p_count; - sscanf(buf, "%u", &p_count); + unsigned int p_count; + sscanf(buf, "%u", &p_count); - if(!fgets(buf, LINE_BUF, in)) - { - fclose(in); + if (!fgets(buf, LINE_BUF, in)) { + fclose(in); - node_count = 0; + node_count = 0; - Sys_Printf(" ERROR - File ended prematurely.\n"); + globalOutputStream() << " ERROR - File ended prematurely.\n"; - return; - } + return; + } - unsigned int p_count2; - sscanf(buf, "%u", &p_count2); + unsigned int p_count2; + sscanf(buf, "%u", &p_count2); - node = new CBspNode[node_count]; + node = new CBspNode[node_count]; - unsigned int i; - for(i = 0; i < p_count; i++) - { - if(!fgets(buf, LINE_BUF, in)) - { - fclose(in); + unsigned int i; + for (i = 0; i < p_count; i++) { + if (!fgets(buf, LINE_BUF, in)) { + fclose(in); - node_count = 0; + node_count = 0; - Sys_Printf(" ERROR - File ended prematurely.\n"); + globalOutputStream() << " ERROR - File ended prematurely.\n"; - return; - } + return; + } - unsigned int dummy, node1, node2; - sscanf(buf, "%u %u %u", &dummy, &node1, &node2); + unsigned int dummy, node1, node2; + sscanf(buf, "%u %u %u", &dummy, &node1, &node2); - node[node1].portal_count++; - node[node2].portal_count++; - } + node[node1].portal_count++; + node[node2].portal_count++; + } - for(i = 0; i < p_count2; i++) - { - if(!fgets(buf, LINE_BUF, in)) - { - fclose(in); + for (i = 0; i < p_count2; i++) { + if (!fgets(buf, LINE_BUF, in)) { + fclose(in); - node_count = 0; + node_count = 0; - Sys_Printf(" ERROR - File ended prematurely.\n"); + globalOutputStream() << " ERROR - File ended prematurely.\n"; - return; - } + return; + } - unsigned int dummy, node1; - sscanf(buf, "%u %u", &dummy, &node1); + unsigned int dummy, node1; + sscanf(buf, "%u %u", &dummy, &node1); - node[node1].portal_count++; - } + node[node1].portal_count++; + } - for(i = 0; i < node_count; i++) - node[i].portal = new CBspPortal[node[i].portal_count]; + for (i = 0; i < node_count; i++) { + node[i].portal = new CBspPortal[node[i].portal_count]; + } - fclose(in); + fclose(in); - in = fopen(fn, "rt"); + in = fopen(fn, "rt"); - fgets(buf, LINE_BUF, in); - fgets(buf, LINE_BUF, in); - fgets(buf, LINE_BUF, in); - fgets(buf, LINE_BUF, in); + assert(fgets(buf, LINE_BUF, in)); + assert(fgets(buf, LINE_BUF, in)); + assert(fgets(buf, LINE_BUF, in)); + assert(fgets(buf, LINE_BUF, in)); - unsigned int n; - for(n = 0; n < p_count; n++) - { - if(!fgets(buf, LINE_BUF, in)) - { - fclose(in); + unsigned int n; + for (n = 0; n < p_count; n++) { + if (!fgets(buf, LINE_BUF, in)) { + fclose(in); - Purge(); + Purge(); - Sys_Printf(" ERROR - Could not find information for portal number %d of %d.\n", n + 1, p_count); + globalOutputStream() << " ERROR - Could not find information for portal number " << n + 1 << " of " + << p_count << ".\n"; - return; - } + return; + } - unsigned int pCount, node1, node2; - sscanf(buf, "%u %u %u", &pCount, &node1, &node2); + unsigned int pCount, node1, node2; + sscanf(buf, "%u %u %u", &pCount, &node1, &node2); - if(!node[node1].AddPortal(buf, pCount, FALSE)) - { - fclose(in); + if (!node[node1].AddPortal(buf, pCount, false)) { + fclose(in); - Purge(); + Purge(); - Sys_Printf(" ERROR - Information for portal number %d of %d is not formatted correctly.\n", n + 1, p_count); + globalOutputStream() << " ERROR - Information for portal number " << n + 1 << " of " << p_count + << " is not formatted correctly.\n"; - return; - } + return; + } - if(!node[node2].AddPortal(buf, pCount, TRUE)) - { - fclose(in); + if (!node[node2].AddPortal(buf, pCount, true)) { + fclose(in); - Purge(); + Purge(); - Sys_Printf(" ERROR - Information for portal number %d of %d is not formatted correctly.\n", n + 1, p_count); + globalOutputStream() << " ERROR - Information for portal number " << n + 1 << " of " << p_count + << " is not formatted correctly.\n"; - return; - } - } + return; + } + } - for(n = 0; n < p_count2; n++) - { - if(!fgets(buf, LINE_BUF, in)) - { - fclose(in); + for (n = 0; n < p_count2; n++) { + if (!fgets(buf, LINE_BUF, in)) { + fclose(in); - Purge(); + Purge(); - Sys_Printf(" ERROR - Could not find information for portal number %d of %d.\n", n + 1, p_count); + globalOutputStream() << " ERROR - Could not find information for portal number " << n + 1 << " of " + << p_count << ".\n"; - return; - } + return; + } - unsigned int pCount, node1; - sscanf(buf, "%u %u", &pCount, &node1); + unsigned int pCount, node1; + sscanf(buf, "%u %u", &pCount, &node1); - if(!node[node1].AddPortal(buf, pCount, FALSE)) - { - fclose(in); + if (!node[node1].AddPortal(buf, pCount, false)) { + fclose(in); - Purge(); + Purge(); - Sys_Printf(" ERROR - Information for portal number %d of %d is not formatted correctly.\n", n + 1, p_count); + globalOutputStream() << " ERROR - Information for portal number " << n + 1 << " of " << p_count + << " is not formatted correctly.\n"; - return; - } - } + return; + } + } - fclose(in); + fclose(in); } CBspNode::CBspNode() { - portal = NULL; - portal_count = 0; - portal_next = 0; + portal = NULL; + portal_count = 0; + portal_next = 0; } CBspNode::~CBspNode() { - if(portal != NULL) - delete[] portal; + if (portal != NULL) { + delete[] portal; + } } bool CBspNode::AddPortal(char *def, unsigned int pointCnt, bool bInverse) { - return portal[portal_next++].Build(def, pointCnt, bInverse); + return portal[portal_next++].Build(def, pointCnt, bInverse); }