// 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 ) );
+CBspPortal::CBspPortal()
+{
+ memset(this, 0, sizeof(CBspPortal));
}
-CBspPortal::~CBspPortal(){
- delete[] point;
+CBspPortal::~CBspPortal()
+{
+ delete[] point;
}
-void ClampFloat( float* p ){
- double i;
- double frac = modf( *p, &i );
+void ClampFloat(float *p)
+{
+ double i;
+ double frac = modf(*p, &i);
- if ( !frac ) {
- return;
- }
+ if (!frac) {
+ return;
+ }
- if ( fabs( *p - ceil( *p ) ) < MAX_ROUND_ERROR ) {
- *p = static_cast<float>( ceil( *p ) );
- }
+ if (fabs(*p - ceil(*p)) < MAX_ROUND_ERROR) {
+ *p = static_cast<float>( ceil(*p));
+ }
- if ( fabs( *p - floor( *p ) ) < MAX_ROUND_ERROR ) {
- *p = static_cast<float>( floor( *p ) );
- }
+ if (fabs(*p - floor(*p)) < MAX_ROUND_ERROR) {
+ *p = static_cast<float>( floor(*p));
+ }
}
-bool CBspPortal::Build( char *def, unsigned int pointCnt, bool bInverse ){
- char *c = def;
- unsigned int n;
+bool CBspPortal::Build(char *def, unsigned int pointCnt, bool bInverse)
+{
+ 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 ) );
+CPortals::CPortals()
+{
+ memset(this, 0, sizeof(CPortals));
}
-CPortals::~CPortals(){
- Purge();
+CPortals::~CPortals()
+{
+ Purge();
}
-void CPortals::Purge(){
- if ( node ) {
- delete[] node;
- }
- node = NULL;
- node_count = 0;
+void CPortals::Purge()
+{
+ if (node) {
+ delete[] node;
+ }
+ node = NULL;
+ node_count = 0;
}
-void CPortals::Load(){
- char buf[LINE_BUF + 1];
+void CPortals::Load()
+{
+ char buf[LINE_BUF + 1];
- memset( buf, 0, LINE_BUF + 1 );
+ memset(buf, 0, LINE_BUF + 1);
- Purge();
+ Purge();
- globalOutputStream() << MSG_PREFIX << "Loading portal file " << fn << ".\n";
+ globalOutputStream() << MSG_PREFIX << "Loading portal file " << fn << ".\n";
- FILE *in;
+ FILE *in;
- in = fopen( fn, "rt" );
+ in = fopen(fn, "rt");
- if ( in == NULL ) {
- globalOutputStream() << " 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);
- globalOutputStream() << " 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);
- globalOutputStream() << " 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);
- globalOutputStream() << " 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;
- globalOutputStream() << " 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;
- globalOutputStream() << " 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;
- globalOutputStream() << " 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;
- globalOutputStream() << " 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;
- globalOutputStream() << " 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 );
+ fgets(buf, LINE_BUF, in);
+ fgets(buf, LINE_BUF, in);
+ fgets(buf, LINE_BUF, in);
+ 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();
- globalOutputStream() << " ERROR - Could not find information for portal number " << n + 1 << " of " << p_count << ".\n";
+ 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();
- globalOutputStream() << " ERROR - Information for portal number " << n + 1 << " of " << p_count << " is not formatted correctly.\n";
+ 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();
- globalOutputStream() << " ERROR - Information for portal number " << n + 1 << " of " << p_count << " is not formatted correctly.\n";
+ 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();
- globalOutputStream() << " ERROR - Could not find information for portal number " << n + 1 << " of " << p_count << ".\n";
+ 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();
- globalOutputStream() << " ERROR - Information for portal number " << n + 1 << " of " << p_count << " is not formatted correctly.\n";
+ 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;
+CBspNode::CBspNode()
+{
+ portal = NULL;
+ portal_count = 0;
+ portal_next = 0;
}
-CBspNode::~CBspNode(){
- if ( portal != NULL ) {
- delete[] portal;
- }
+CBspNode::~CBspNode()
+{
+ if (portal != NULL) {
+ delete[] portal;
+ }
}
-bool CBspNode::AddPortal( char *def, unsigned int pointCnt, bool bInverse ){
- return portal[portal_next++].Build( def, pointCnt, bInverse );
+bool CBspNode::AddPortal(char *def, unsigned int pointCnt, bool bInverse)
+{
+ return portal[portal_next++].Build(def, pointCnt, bInverse);
}