// 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 );
}