Author Topic: Code cleanup  (Read 4954 times)

0 Members and 1 Guest are viewing this topic.

Offline jg18

  • A very happy zod
  • 210
  • can do more than spellcheck
I guess another way to write it might be

Code: [Select]
for (size_t j = 0, size = Cutscenes.size(); j < size; j++) {
since that way, you avoid making multiple calls to Cutscenes.size() while minimizing the scope of size. Not that I actually advocate making such a change in this case, mind you.

 

Offline Valathil

  • ...And I would have had a custom title if it wasn't for you meddling kids!
  • 29
  • Custom Title? Wizards need no Custom Title!

Code: [Select]
Index: code/fireball/fireballs.cpp
===================================================================
--- code/fireball/fireballs.cpp (Revision 7362)
+++ code/fireball/fireballs.cpp (Arbeitskopie)
@@ -239,7 +239,7 @@
 
 void fireball_parse_tbl()
 {
- int i, j;
+ int i = 0 , j;
 
  memset( &Fireball_info, 0, sizeof(fireball_info) * MAX_FIREBALL_TYPES );
 
@@ -251,10 +251,10 @@
 
  // we've got our list so pass it off for final checking and loading.
  // we assume that entries in fireball.tbl are in the correct order
- for (i = 0; i < (int)LOD_checker.size(); i++) {
- if ( (i < MAX_FIREBALL_TYPES) && (LOD_checker[i].override < 0) ) {
- strcpy_s( Fireball_info[i].lod[0].filename, LOD_checker[i].filename );
- Fireball_info[i].lod_count = LOD_checker[i].num_lods;
+ for (SCP_vector<lod_checker>::iterator lod = LOD_checker.begin(); lod != LOD_checker.end(); lod++) {
+ if ( (i < MAX_FIREBALL_TYPES) && (lod->override < 0) ) {
+ strcpy_s( Fireball_info[i].lod[0].filename, lod->filename );
+ Fireball_info[i].lod_count = lod->num_lods;
  Num_fireball_types++;
 
  if (LOD_color[i].alpha == 255) {
@@ -265,22 +265,24 @@
  fireball_set_default_color(i);
  }
  }
+ i++;
  }
 
  // having to do this twice is less than optimal, but less error prone too.
  // this handles (and should only have to handle) TBM related entries
- for (i = 0; i < (int)LOD_checker.size(); i++) {
+ i = 0;
+ for (SCP_vector<lod_checker>::iterator lod = LOD_checker.begin(); lod != LOD_checker.end(); lod++) {
  // try entry replacement
- if ( (LOD_checker[i].override >= 0) && (LOD_checker[i].override < Num_fireball_types) ) {
- strcpy_s( Fireball_info[LOD_checker[i].override].lod[0].filename, LOD_checker[i].filename );
- Fireball_info[LOD_checker[i].override].lod_count = LOD_checker[i].num_lods;
+ if ( (lod->override >= 0) && (lod->override < Num_fireball_types) ) {
+ strcpy_s( Fireball_info[lod->override].lod[0].filename, lod->filename );
+ Fireball_info[lod->override].lod_count = lod->num_lods;
 
  if (LOD_color[i].alpha == 255) {
- Fireball_info[LOD_checker[i].override].exp_color[0] = (LOD_color[i].red / 255.0f);
- Fireball_info[LOD_checker[i].override].exp_color[1] = (LOD_color[i].green / 255.0f);
- Fireball_info[LOD_checker[i].override].exp_color[2] = (LOD_color[i].blue / 255.0f);
+ Fireball_info[lod->override].exp_color[0] = (LOD_color[i].red / 255.0f);
+ Fireball_info[lod->override].exp_color[1] = (LOD_color[i].green / 255.0f);
+ Fireball_info[lod->override].exp_color[2] = (LOD_color[i].blue / 255.0f);
  } else {
- fireball_set_default_color(LOD_checker[i].override);
+ fireball_set_default_color(lod->override);
  }
  }
  }
Index: code/cfile/cfilesystem.cpp
===================================================================
--- code/cfile/cfilesystem.cpp (Revision 7362)
+++ code/cfile/cfilesystem.cpp (Arbeitskopie)
@@ -1213,17 +1213,10 @@
  file_list_index.push_back( f );
  }
 
- size_t file_list_size = file_list_index.size();
-
- // quick exit test
- if (file_list_size < 1)
- goto Bail;
-
-
  // now try and find our preferred match
  for (cur_ext = 0; cur_ext < ext_num; cur_ext++) {
- for (size_t i = 0; i < file_list_size; i++) {
- cf_file *f = file_list_index[i];
+ for (SCP_vector<cf_file*>::iterator fli = file_list_index.begin(); fli != file_list_index.end(); fli++) {
+ cf_file *f = *fli;
 
  strcat_s( filespec, ext_list[cur_ext] );
 
@@ -1302,10 +1295,6 @@
  }
  }
 
-Bail:
- // didn't find anything, bail...
- file_list_index.clear();
-
  return -1;
 }
 
Index: code/fs2netd/fs2netd_client.cpp
===================================================================
--- code/fs2netd/fs2netd_client.cpp (Revision 7362)
+++ code/fs2netd/fs2netd_client.cpp (Arbeitskopie)
@@ -1183,8 +1183,8 @@
  CFILE *banlist_cfg = cfopen("banlist.cfg", "wt", CFILE_NORMAL, CF_TYPE_DATA);
 
  if (banlist_cfg != NULL) {
- for (uint i = 0; i < FS2NetD_ban_list.size(); i++) {
- cfputs( const_cast<char*>(FS2NetD_ban_list[i].c_str()), banlist_cfg );
+ for (SCP_vector<std::string>::iterator bl = FS2NetD_ban_list.begin(); bl != FS2NetD_ban_list.end(); bl++) {
+ cfputs( const_cast<char*>(bl->c_str()), banlist_cfg );
  }
 
  cfclose(banlist_cfg);
@@ -1267,7 +1267,6 @@
  char valid_status = MVALID_STATUS_UNKNOWN;
  char full_name[MAX_FILENAME_LEN], wild_card[10];
  char val_text[MAX_FILENAME_LEN+15];
- int i;
  uint checksum = 0;
 
  if (file_names == NULL) {
@@ -1332,9 +1331,9 @@
  found = false;
 
  if (file_index >= 0) {
- for (i = 0; (i < (int)FS2NetD_file_list.size()) && (!found); i++) {
- if ( !stricmp(full_name, FS2NetD_file_list[i].name) ) {
- if (FS2NetD_file_list[i].crc32 == checksum) {
+ for (SCP_vector<file_record>::iterator fr = FS2NetD_file_list.begin(); fr != FS2NetD_file_list.end() && !found; fr++) {
+ if ( !stricmp(full_name, fr->name) ) {
+ if (fr->crc32 == checksum) {
  found = true;
  valid_status = MVALID_STATUS_VALID;
  } else {
@@ -1512,11 +1511,11 @@
  }
 
  // output the status of table validity to multi.log
- for (uint i = 0; i < Table_valid_status.size(); i++) {
- if (Table_valid_status[i].valid) {
- ml_printf("FS2NetD Table Check: '%s' -- Valid!", Table_valid_status[i].name);
+ for (SCP_vector<crc_valid_status>::iterator tvs = Table_valid_status.begin(); tvs != Table_valid_status.end(); tvs++) {
+ if (tvs->valid) {
+ ml_printf("FS2NetD Table Check: '%s' -- Valid!", tvs->name);
  } else {
- ml_printf("FS2NetD Table Check: '%s' -- INVALID (0x%x)!", Table_valid_status[i].name, Table_valid_status[i].crc32);
+ ml_printf("FS2NetD Table Check: '%s' -- INVALID (0x%x)!", tvs->name, tvs->crc32);
  hacked = 1;
  }
  }
@@ -1645,7 +1644,7 @@
 void fs2netd_spew_table_checksums(char *outfile)
 {
  char full_name[MAX_PATH_LEN];
- int count, idx;
+ int count;
  FILE *out = NULL;
  char description[512] = { 0 };
  char filename[65] = { 0 };
@@ -1684,9 +1683,9 @@
  count = (int)Table_valid_status.size();
 
  // do all the checksums
- for (idx = 0; idx < count; idx++) {
+ for (SCP_vector<crc_valid_status>::iterator tvs = Table_valid_status.begin(); tvs != Table_valid_status.end(); tvs++) {
  offset = 0;
- p = Table_valid_status[idx].name;
+ p = tvs->name;
 
  while (*p && (offset < sizeof(filename))) {
  if (*p == '"') {
@@ -1701,7 +1700,7 @@
 
  filename[offset] = '\0';
 
- fprintf(out, "\"%s\",%u,\"%s\"\r\n", filename, Table_valid_status[idx].crc32, description);
+ fprintf(out, "\"%s\",%u,\"%s\"\r\n", filename, tvs->crc32, description);
  }
 
  fflush(out);
Index: code/fs2netd/tcp_client.cpp
===================================================================
--- code/fs2netd/tcp_client.cpp (Revision 7362)
+++ code/fs2netd/tcp_client.cpp (Arbeitskopie)
@@ -686,7 +686,6 @@
  int buffer_size, buffer_offset;
  bool my_packet = false;
  char buffer[4096];
- uint i;
  ushort num_tables = 0;
 
  if (do_send) {
@@ -697,9 +696,9 @@
 
  PXO_ADD_USHORT( num_tables );
 
- for (i = 0; i < Table_valid_status.size(); i++) {
- PXO_ADD_STRING( Table_valid_status[i].name );
- PXO_ADD_UINT( Table_valid_status[i].crc32 );
+ for (SCP_vector<crc_valid_status>::iterator tvs = Table_valid_status.begin(); tvs != Table_valid_status.end(); tvs++) {
+ PXO_ADD_STRING(tvs->name );
+ PXO_ADD_UINT( tvs->crc32 );
  }
 
  DONE_PACKET();
@@ -761,11 +760,11 @@
  return -1;
  }
 
- for (i = 0; i < Table_valid_status.size(); i++) {
+ for (SCP_vector<crc_valid_status>::iterator tvs = Table_valid_status.begin(); tvs != Table_valid_status.end(); tvs++) {
  PXO_GET_DATA( tbl_valid_status );
  Assert( (tbl_valid_status == 0) || (tbl_valid_status == 1) );
 
- Table_valid_status[i].valid = tbl_valid_status;
+ tvs->valid = tbl_valid_status;
  }
 
  return 2;
Index: code/asteroid/asteroid.cpp
===================================================================
--- code/asteroid/asteroid.cpp (Revision 7362)
+++ code/asteroid/asteroid.cpp (Arbeitskopie)
@@ -607,8 +607,9 @@
  Num_asteroids = 0;
  Next_asteroid_throw = timestamp(1);
  asteroid_obj_list_init();
- for (size_t t=0; t<Asteroid_info.size(); t++)
- Asteroid_info[t].damage_type_idx = Asteroid_info[t].damage_type_idx_sav;
+ SCP_vector<asteroid_info>::iterator ast;
+ for (ast = Asteroid_info.begin(); ast != Asteroid_info.end(); ++ast)
+ ast->damage_type_idx = ast->damage_type_idx_sav;
 }
 
 // return !0 if asteroid should be wrapped, 0 otherwise.  Multiplayer clients will always return
Index: code/gamesnd/gamesnd.cpp
===================================================================
--- code/gamesnd/gamesnd.cpp (Revision 7362)
+++ code/gamesnd/gamesnd.cpp (Arbeitskopie)
@@ -39,20 +39,22 @@
 int gamesnd_get_by_name(char* name)
 {
  Assert( Snds.size() <= INT_MAX );
- for(int i = 0; i < (int)Snds.size(); i++)
+ int i = 0;
+ for(SCP_vector<game_snd>::iterator snd = Snds.begin(); snd != Snds.end(); snd++)
  {
- char *p = strrchr( Snds[i].filename, '.' );
+ char *p = strrchr( snd->filename, '.' );
  if(p == NULL)
  {
- if(!stricmp(Snds[i].filename, name))
+ if(!stricmp(snd->filename, name))
  {
  return i;
  }
  }
- else if(!strnicmp(Snds[i].filename, name, p-Snds[i].filename))
+ else if(!strnicmp(snd->filename, name, p-snd->filename))
  {
  return i;
  }
+ i++;
  }
  return -1;
 }
@@ -63,11 +65,13 @@
  if (index == -1)
  return -1;
  Assert( Snds.size() <= INT_MAX );
- for(int i = 0; i < (int)Snds.size(); i++) {
- if ( Snds[i].sig == index )
+ int i = 0;
+ for(SCP_vector<game_snd>::iterator snd = Snds.begin(); snd != Snds.end(); snd++) {
+ if ( snd->sig == index )
  {
  return i;
  }
+ i++;
  }
  return -1;
 }
@@ -76,11 +80,13 @@
 {
  Assert( Snds_iface.size() <= INT_MAX );
  Assert( Snds_iface.size() == Snds_iface_handle.size() );
- for(int i = 0; i < (int)Snds_iface.size(); i++) {
- if ( Snds_iface[i].sig == index )
+ int i = 0;
+ for(SCP_vector<game_snd>::iterator snd = Snds.begin(); snd != Snds.end(); snd++) {
+ if ( snd->sig == index )
  {
  return i;
  }
+ i++;
  }
  return -1;
 }
@@ -125,19 +131,15 @@
 // fly (too slow).
 void gamesnd_preload_common_sounds()
 {
- int i;
- game_snd *gs;
-
  if ( !Sound_enabled )
  return;
 
  Assert( Snds.size() <= INT_MAX );
- for ( i = 0; i < (int)Snds.size(); i++ ) {
- gs = &Snds[i];
+ for (SCP_vector<game_snd>::iterator gs = Snds.begin(); gs != Snds.end(); gs++) {
  if ( gs->filename[0] != 0 && strnicmp(gs->filename, NOX("none.wav"), 4) ) {
  if ( gs->preload ) {
  game_busy( NOX("** preloading common game sounds **") ); // Animate loading cursor... does nothing if loading screen not active.
- gs->id = snd_load(gs);
+ gs->id = snd_load(&(*gs));
  }
  }
  }
@@ -150,19 +152,15 @@
 //
 void gamesnd_load_gameplay_sounds()
 {
- int i;
- game_snd *gs;
-
  if ( !Sound_enabled )
  return;
 
  Assert( Snds.size() <= INT_MAX );
- for ( i = 0; i < (int)Snds.size(); i++ ) {
- gs = &Snds[i];
+ for (SCP_vector<game_snd>::iterator gs = Snds.begin(); gs != Snds.end(); gs++) {
  if ( gs->filename[0] != 0 && strnicmp(gs->filename, NOX("none.wav"), 4) ) {
  if ( !gs->preload ) { // don't try to load anything that's already preloaded
  game_busy( NOX("** preloading gameplay sounds **") ); // Animate loading cursor... does nothing if loading screen not active.
- gs->id = snd_load(gs);
+ gs->id = snd_load(&(*gs));
  }
  }
  }
@@ -175,12 +173,8 @@
 //
 void gamesnd_unload_gameplay_sounds()
 {
- int i;
- game_snd *gs;
-
  Assert( Snds.size() <= INT_MAX );
- for ( i = 0; i < (int)Snds.size(); i++ ) {
- gs = &Snds[i];
+ for (SCP_vector<game_snd>::iterator gs = Snds.begin(); gs != Snds.end(); gs++) {
  if ( gs->id != -1 ) {
  snd_unload( gs->id );
  gs->id = -1;
@@ -195,17 +189,13 @@
 //
 void gamesnd_load_interface_sounds()
 {
- int i;
- game_snd *gs;
-
  if ( !Sound_enabled )
  return;
 
  Assert( Snds_iface.size() < INT_MAX );
- for ( i = 0; i < (int)Snds_iface.size(); i++ ) {
- gs = &Snds_iface[i];
- if ( gs->filename[0] != 0 && strnicmp(gs->filename, NOX("none.wav"), 4) ) {
- gs->id = snd_load(gs);
+ for (SCP_vector<game_snd>::iterator si = Snds_iface.begin(); si != Snds_iface.end(); si++) {
+ if ( si->filename[0] != 0 && strnicmp(si->filename, NOX("none.wav"), 4) ) {
+ si->id = snd_load(&(*si));
  }
  }
 }
@@ -217,16 +207,12 @@
 //
 void gamesnd_unload_interface_sounds()
 {
- int i;
- game_snd *gs;
-
  Assert( Snds_iface.size() < INT_MAX );
- for ( i = 0; i < (int)Snds_iface.size(); i++ ) {
- gs = &Snds_iface[i];
- if ( gs->id != -1 ) {
- snd_unload( gs->id );
- gs->id = -1;
- gs->id_sig = -1;
+ for (SCP_vector<game_snd>::iterator si = Snds_iface.begin(); si != Snds_iface.end(); si++) {
+ if ( si->id != -1 ) {
+ snd_unload( si->id );
+ si->id = -1;
+ si->id_sig = -1;
  }
  }
 }
@@ -522,7 +508,7 @@
 //
 void gamesnd_init_sounds()
 {
- int i;
+ int i = 0;
 
  Snds.clear();
  Snds.resize(MIN_GAME_SOUNDS);
@@ -531,8 +517,8 @@
 
  Assert( Snds.size() <= INT_MAX );
  // init the gameplay sounds
- for ( i = 0; i < (int)Snds.size(); i++ ) {
- gamesnd_init_struct(&Snds[i]);
+ for (SCP_vector<game_snd>::iterator gs = Snds.begin(); gs != Snds.end(); gs++) {
+ gamesnd_init_struct(&(*gs));
  }
 
  Snds_iface.clear();
@@ -543,9 +529,11 @@
 
  Assert( Snds_iface.size() < INT_MAX );
  // init the interface sounds
- for ( i = 0; i < (int)Snds_iface.size(); i++ ) {
- gamesnd_init_struct(&Snds_iface[i]);
+
+ for (SCP_vector<game_snd>::iterator si = Snds_iface.begin(); si != Snds_iface.end(); si++) {
+ gamesnd_init_struct(&(*si));
  Snds_iface_handle[i] = -1;
+ i++;
  }
 }
 
Index: code/camera/camera.cpp
===================================================================
--- code/camera/camera.cpp (Revision 7362)
+++ code/camera/camera.cpp (Arbeitskopie)
@@ -791,9 +791,10 @@
  int x = text_pos.x;
  int y = text_pos.y;
 
- for(unsigned int i = 0; i < text_lines.size(); i++)
+
+ for(SCP_vector<std::string>::iterator line = text_lines.begin(); line != text_lines.end(); line++)
  {
- gr_string(x, y, (char*)text_lines[i].c_str(), false);
+ gr_string(x, y, (char*)line->c_str(), false);
  y += font_height;
  }
 
@@ -843,11 +844,8 @@
 
 void subtitle::clone(const subtitle &sub)
 {
- uint i = 0;
 
- for (i = 0; i < sub.text_lines.size(); i++) {
- text_lines.push_back(sub.text_lines[i]);
- }
+ text_lines = sub.text_lines;
  text_fontnum = sub.text_fontnum;
 
  // copy the structs
@@ -944,14 +942,6 @@
 {
  //Set Current_camera to nothing
  Current_camera = camid();
- for(unsigned int i = 0; i < Cameras.size(); i++)
- {
- if(Cameras[i] != NULL)
- {
- delete Cameras[i];
- Cameras[i] = NULL;
- }
- }
  Cameras.clear();
 }
 
@@ -984,29 +974,9 @@
  strncpy(buf, n_name, NAME_LENGTH-1);
 
  //Find a free slot
- for(uint i = 0; i < Cameras.size(); i++)
- {
- if(Cameras[i] == NULL)
- {
- cam = new camera(buf, sig);
- cid = camid(i, sig);
- Cameras[i] = cam;
- break;
- }
- else if(Cameras[i]->is_empty())
- {
- delete Cameras[i];
- cam = new camera(buf, sig);
- cid = camid(i, sig);
- Cameras[i] = cam;
- }
- }
- if(cam == NULL)
- {
- cam = new camera(buf, sig);
- cid = camid(Cameras.size(), sig);
- Cameras.push_back(cam);
- }
+ cam = new camera(buf, sig);
+ cid = camid(Cameras.size(), sig);
+ Cameras.push_back(cam);
 
  //Set attributes
  if(n_pos != NULL)
@@ -1134,20 +1104,20 @@
 
 void subtitles_do_frame(float frametime)
 {
- unsigned int i,size=Subtitles.size();
- for(i = 0; i < size; i++)
+ SCP_vector<subtitle>::iterator sub;
+ for(sub = Subtitles.begin(); sub != Subtitles.end(); sub++)
  {
- if ( !Subtitles[i].is_post_shaded( ) )
- Subtitles[i].do_frame(frametime);
+ if ( !sub->is_post_shaded( ) )
+ sub->do_frame(frametime);
  }
 }
 
 void subtitles_do_frame_post_shaded(float frametime)
 {
- unsigned int i,size=Subtitles.size();
- for(i = 0; i < size; i++)
+ SCP_vector<subtitle>::iterator sub;
+ for(sub = Subtitles.begin(); sub != Subtitles.end(); sub++)
  {
- if ( Subtitles[i].is_post_shaded( ) )
- Subtitles[i].do_frame(frametime);
+ if ( sub->is_post_shaded( ) )
+ sub->do_frame(frametime);
  }
 }
\ No newline at end of file
Index: code/object/collideshipship.cpp
===================================================================
--- code/object/collideshipship.cpp (Revision 7362)
+++ code/object/collideshipship.cpp (Arbeitskopie)
@@ -271,34 +271,34 @@
  pmi = model_get_instance(heavy_shipp->model_instance_num);
 
  // turn off all rotating submodels and test for collision
- for (size_t j=0; j<submodel_vector.size(); j++) {
- pmi->submodel[submodel_vector[j]].collision_checked = true;
+ for (SCP_vector<int>::iterator smv = submodel_vector.begin(); smv != submodel_vector.end(); smv++) {
+ pmi->submodel[*smv].collision_checked = true;
  }
 
  // reset flags to check MC_CHECK_MODEL | MC_CHECK_SPHERELINE and maybe MC_CHECK_INVISIBLE_FACES and MC_SUBMODEL_INSTANCE
  mc.flags = copy_flags | MC_SUBMODEL_INSTANCE;
 
  // check each submodel in turn
- for (size_t i=0; i<submodel_vector.size(); i++) {
+ for (SCP_vector<int>::iterator smv = submodel_vector.begin(); smv != submodel_vector.end(); smv++) {
  // turn on submodel for collision test
- pmi->submodel[submodel_vector[i]].collision_checked = false;
+ pmi->submodel[*smv].collision_checked = false;
 
  // set angles for last frame
- angles copy_angles = pmi->submodel[submodel_vector[i]].angs;
+ angles copy_angles = pmi->submodel[*smv].angs;
 
  // find the start and end positions of the sphere in submodel RF
- pmi->submodel[submodel_vector[i]].angs = pmi->submodel[submodel_vector[i]].prev_angs;
- world_find_model_instance_point(&p0, &light_obj->last_pos, pm, pmi, submodel_vector[i], &heavy_obj->last_orient, &heavy_obj->last_pos);
+ pmi->submodel[*smv].angs = pmi->submodel[*smv].prev_angs;
+ world_find_model_instance_point(&p0, &light_obj->last_pos, pm, pmi, *smv, &heavy_obj->last_orient, &heavy_obj->last_pos);
 
- pmi->submodel[submodel_vector[i]].angs = copy_angles;
- world_find_model_instance_point(&p1, &light_obj->pos, pm, pmi, submodel_vector[i], &heavy_obj->orient, &heavy_obj->pos);
+ pmi->submodel[*smv].angs = copy_angles;
+ world_find_model_instance_point(&p1, &light_obj->pos, pm, pmi, *smv, &heavy_obj->orient, &heavy_obj->pos);
 
  mc.p0 = &p0;
  mc.p1 = &p1;
  // mc.pos = zero // in submodel RF
 
  mc.orient = &vmd_identity_matrix;
- mc.submodel_num = submodel_vector[i];
+ mc.submodel_num = *smv;
 
  if ( model_collide(&mc) ) {
  if (mc.hit_dist < ship_ship_hit_info->hit_time ) {
@@ -342,17 +342,17 @@
  // set submodel angle at time of collision
  // TODO: generalize... what happens when angle passes 0 or 2PI
  angles temp_angs;
- vm_vec_sub(&diff, (vec3d*)&pm->submodel[submodel_vector[i]].angs, (vec3d*)&pm->submodel[submodel_vector[i]].sii->prev_angs);
- vm_vec_scale_add((vec3d*)&temp_angs, (vec3d *)&pm->submodel[submodel_vector[i]].sii->prev_angs, &diff, mc.hit_dist);
- pm->submodel[submodel_vector[i]].angs = temp_angs;
+ vm_vec_sub(&diff, (vec3d*)&pm->submodel[*smv].angs, (vec3d*)&pm->submodel[*smv].sii->prev_angs);
+ vm_vec_scale_add((vec3d*)&temp_angs, (vec3d *)&pm->submodel[*smv].sii->prev_angs, &diff, mc.hit_dist);
+ pm->submodel[*smv].angs = temp_angs;
 
  // find intersection point in submodel RF - THEN advance to end of frametime.
  vec3d temp = int_light_pos;
- world_find_model_point(&int_submodel_pos, &int_light_pos, pm, submodel_vector[i], &int_heavy_orient, &int_heavy_pos);
+ world_find_model_point(&int_submodel_pos, &int_light_pos, pm, *smv, &int_heavy_orient, &int_heavy_pos);
  vec3d temp2;
 
  // Advance to end of frametime
- pm->submodel[submodel_vector[i]].angs = copy_angles;
+ pm->submodel[*smv].angs = copy_angles;
  model_find_world_point(&ship_ship_hit_info->light_collision_cm_pos, &int_submodel_pos, mc.model_num, mc.hit_submodel, mc.orient, &zero);
  vm_vec_sub(&temp2, &ship_ship_hit_info->light_collision_cm_pos, &ship_ship_hit_info->hit_pos);
  */
@@ -362,7 +362,7 @@
  }
  }
  // Don't look at this submodel again
- pmi->submodel[submodel_vector[i]].collision_checked = true;
+ pmi->submodel[*smv].collision_checked = true;
  }
 
  }
Index: code/sound/sound.cpp
===================================================================
--- code/sound/sound.cpp (Revision 7362)
+++ code/sound/sound.cpp (Arbeitskopie)
@@ -197,7 +197,6 @@
  int message_sounds = 0;
  int interface_sounds = 0;
  int done = 0;
- size_t s_idx;
 
  if(!Sound_spew){
  return;
@@ -212,16 +211,16 @@
  done = 0;
 
  // what kind of sound is this
- for(s_idx=0; s_idx < Snds.size(); s_idx++){
- if(!stricmp(Snds[s_idx].filename, Sounds[idx].filename)){
+ for(SCP_vector<game_snd>::iterator gs = Snds.begin(); gs != Snds.end(); gs++){
+ if(!stricmp(gs->filename, Sounds[idx].filename)){
  game_sounds++;
  done = 1;
  }
  }
 
  if(!done){
- for(s_idx=0; s_idx < Snds.size(); s_idx++){
- if(!stricmp(Snds_iface[s_idx].filename, Sounds[idx].filename)){
+ for(SCP_vector<game_snd>::iterator gs = Snds.begin(); gs != Snds.end(); gs++){
+ if(!stricmp(gs->filename, Sounds[idx].filename)){
  interface_sounds++;
  done = 1;
  }
Index: code/math/vecmat.cpp
===================================================================
--- code/math/vecmat.cpp (Revision 7362)
+++ code/math/vecmat.cpp (Arbeitskopie)
@@ -14,9 +14,9 @@
 
 #include "math/vecmat.h"
 #include "math/floating.h"
+#include <xmmintrin.h>
 
 
-
 #define SMALL_NUM 1e-7
 #define SMALLER_NUM 1e-20
 #define CONVERT_RADIANS 0.017453 // conversion factor from degrees to radians
@@ -341,12 +341,7 @@
 
  mag1 = x+y+z;
 
- if ( mag1 < 0.0 )
- return 0;
-
  mag2 = fl_sqrt(mag1);
- if ( mag2 < 0.0 )
- Int3();
  return mag2;
 }
 
@@ -510,8 +505,16 @@
 //returns approximation of 1/magnitude of a vector
 float vm_vec_imag(vec3d *v)
 {
-// return 1.0f / sqrt( (v->xyz.x*v->xyz.x)+(v->xyz.y*v->xyz.y)+(v->xyz.z*v->xyz.z) );
- return fl_isqrt( (v->xyz.x*v->xyz.x)+(v->xyz.y*v->xyz.y)+(v->xyz.z*v->xyz.z) );
+#if _M_IX86_FP < 1
+ return 1.0f / sqrt( (v->xyz.x*v->xyz.x)+(v->xyz.y*v->xyz.y)+(v->xyz.z*v->xyz.z) );
+#else
+ float x = (v->xyz.x*v->xyz.x)+(v->xyz.y*v->xyz.y)+(v->xyz.z*v->xyz.z);
+ __m128  xx = _mm_load_ss( & x );
+ xx = _mm_rsqrt_ss( xx );
+ _mm_store_ss( & x, xx );
+
+ return x;
+#endif
 }
 
 //normalize a vector. returns 1/mag of source vec. uses approx 1/mag
@@ -809,7 +812,32 @@
  return t;
 }
 
+//generate the vectors for the vm_vector_2_matrix() an vm_vector_2_matrix_norm() functions so we can avoid goto
+void vm_vector_2_matrix_gen_vectors(matrix *m)
+{
+ vec3d *xvec=&m->vec.rvec;
+ vec3d *yvec=&m->vec.uvec;
+ vec3d *zvec=&m->vec.fvec;
+
+ if ((zvec->xyz.x==0.0f) && (zvec->xyz.z==0.0f)) { //forward vec is straight up or down
+ m->vec.rvec.xyz.x = 1.0f;
+ m->vec.uvec.xyz.z = (zvec->xyz.y<0.0f)?1.0f:-1.0f;
 
+ m->vec.rvec.xyz.y = m->vec.rvec.xyz.z = m->vec.uvec.xyz.x = m->vec.uvec.xyz.y = 0.0f;
+ }
+ else { //not straight up or down
+
+ xvec->xyz.x = zvec->xyz.z;
+ xvec->xyz.y = 0.0f;
+ xvec->xyz.z = -zvec->xyz.x;
+
+ vm_vec_normalize(xvec);
+
+ vm_vec_crossprod(yvec,zvec,xvec);
+
+ }
+}
+
 //computes a matrix from one or more vectors. The forward vector is required,
 //with the other two being optional.  If both up & right vectors are passed,
 //the up vector is used.  If only the forward vector is passed, a bank of
@@ -819,72 +847,44 @@
 {
  vec3d *xvec=&m->vec.rvec,*yvec=&m->vec.uvec,*zvec=&m->vec.fvec;
 
-
  Assert(fvec != NULL);
 
- // This had been commented out, but that's bogus.  Code below relies on a valid zvec.
+ //  This had been commented out, but that's bogus.  Code below relies on a valid zvec.
  if (vm_vec_copy_normalize(zvec,fvec) == 0.0f) {
  Assert(0);
  return m;
  }
 
  if (uvec == NULL) {
-
- if (rvec == NULL) { //just forward vec
-
-bad_vector2:
- ;
-
- if ((zvec->xyz.x==0.0f) && (zvec->xyz.z==0.0f)) { //forward vec is straight up or down
-
- m->vec.rvec.xyz.x = 1.0f;
- m->vec.uvec.xyz.z = (zvec->xyz.y<0.0)?1.0f:-1.0f;
-
- m->vec.rvec.xyz.y = m->vec.rvec.xyz.z = m->vec.uvec.xyz.x = m->vec.uvec.xyz.y = 0.0f;
- }
- else { //not straight up or down
-
- xvec->xyz.x = zvec->xyz.z;
- xvec->xyz.y = 0.0f;
- xvec->xyz.z = -zvec->xyz.x;
-
- vm_vec_normalize(xvec);
-
- vm_vec_crossprod(yvec,zvec,xvec);
-
- }
-
+ if (rvec == NULL) {     //just forward vec
+ vm_vector_2_matrix_gen_vectors(m);
  }
- else { //use right vec
-
+ else {                      //use right vec
  if (vm_vec_copy_normalize(xvec,rvec) == 0.0f)
- goto bad_vector2;
+ vm_vector_2_matrix_gen_vectors(m);
 
  vm_vec_crossprod(yvec,zvec,xvec);
 
  //normalize new perpendicular vector
  if (vm_vec_normalize(yvec) == 0.0f)
- goto bad_vector2;
+ vm_vector_2_matrix_gen_vectors(m);
 
  //now recompute right vector, in case it wasn't entirely perpendiclar
  vm_vec_crossprod(xvec,yvec,zvec);
-
  }
  }
- else { //use up vec
-
+ else {      //use up vec
  if (vm_vec_copy_normalize(yvec,uvec) == 0.0f)
- goto bad_vector2;
+ vm_vector_2_matrix_gen_vectors(m);
 
  vm_vec_crossprod(xvec,yvec,zvec);
-
+
  //normalize new perpendicular vector
  if (vm_vec_normalize(xvec) == 0.0f)
- goto bad_vector2;
+ vm_vector_2_matrix_gen_vectors(m);
 
  //now recompute up vector, in case it wasn't entirely perpendiclar
  vm_vec_crossprod(yvec,zvec,xvec);
-
  }
  return m;
 }
@@ -896,65 +896,35 @@
  vec3d *yvec=&m->vec.uvec;
  vec3d *zvec=&m->vec.fvec;
 
-
  Assert(fvec != NULL);
 
  *zvec = *fvec;
 
  if (uvec == NULL) {
-
- if (rvec == NULL) { //just forward vec
-
-bad_vector2:
- ;
-
- if ((zvec->xyz.x==0.0f) && (zvec->xyz.z==0.0f)) { //forward vec is straight up or down
-
- m->vec.rvec.xyz.x = 1.0f;
- m->vec.uvec.xyz.z = (zvec->xyz.y<0.0f)?1.0f:-1.0f;
-
- m->vec.rvec.xyz.y = m->vec.rvec.xyz.z = m->vec.uvec.xyz.x = m->vec.uvec.xyz.y = 0.0f;
- }
- else { //not straight up or down
-
- xvec->xyz.x = zvec->xyz.z;
- xvec->xyz.y = 0.0f;
- xvec->xyz.z = -zvec->xyz.x;
-
- vm_vec_normalize(xvec);
-
- vm_vec_crossprod(yvec,zvec,xvec);
-
- }
-
+ if (rvec == NULL) {     //just forward vec
+ vm_vector_2_matrix_gen_vectors(m);
  }
- else { //use right vec
-
+ else {                      //use right vec
  vm_vec_crossprod(yvec,zvec,xvec);
 
  //normalize new perpendicular vector
  if (vm_vec_normalize(yvec) == 0.0f)
- goto bad_vector2;
+ vm_vector_2_matrix_gen_vectors(m);
 
  //now recompute right vector, in case it wasn't entirely perpendiclar
  vm_vec_crossprod(xvec,yvec,zvec);
-
  }
  }
- else { //use up vec
-
+ else {      //use up vec
  vm_vec_crossprod(xvec,yvec,zvec);
-
+
  //normalize new perpendicular vector
  if (vm_vec_normalize(xvec) == 0.0f)
- goto bad_vector2;
+ vm_vector_2_matrix_gen_vectors(m);
 
  //now recompute up vector, in case it wasn't entirely perpendiclar
  vm_vec_crossprod(yvec,zvec,xvec);
-
  }
-
-
  return m;
 }
 
Index: code/math/fvi.cpp
===================================================================
--- code/math/fvi.cpp (Revision 7362)
+++ code/math/fvi.cpp (Arbeitskopie)
@@ -1010,8 +1010,9 @@
  discriminant = B*B - 4*A*C;
  if (discriminant > 0) {
  root = fl_sqrt(discriminant);
- root1 = (float) ((-B + root)/(2*A));
- root2 = (float) ((-B - root)/(2*A));
+ float inv2A = 1.0f/(2*A);
+ root1 = (float) ((-B + root)*inv2A);
+ root2 = (float) ((-B - root)*inv2A);
 
 
  // sort root1 and root2
@@ -1056,8 +1057,9 @@
  }
 
  root = fl_sqrt(discriminant);
- root1 = (float) ((-B + root)/(2*A));
- root2 = (float) ((-B - root)/(2*A));
+ float inv2A = 1.0f/(2*A);
+ root1 = (float) ((-B + root)*inv2A);
+ root2 = (float) ((-B - root)*inv2A);
 
  // given sphere position, find which edge time (position) allows a valid solution
  if ( (root1 >= 0) && (root1 <= 1) ) {
@@ -1104,8 +1106,9 @@
  discriminant = B*B - 4*A*C;
  if (discriminant > 0) {
  root = fl_sqrt(discriminant);
- root1 = (float) ((-B + root)/(2*A));
- root2 = (float) ((-B - root)/(2*A));
+ float inv2A = 1.0f/(2*A);
+ root1 = (float) ((-B + root)*inv2A);
+ root2 = (float) ((-B - root)*inv2A);
 
  if (root1 > root2) {
  temp = root1;
@@ -1137,8 +1140,9 @@
  discriminant = B*B - 4*A*C;
  if (discriminant > 0) {
  root = fl_sqrt(discriminant);
- root1 = (float) ((-B + root)/(2*A));
- root2 = (float) ((-B - root)/(2*A));
+ float inv2A = 1.0f/(2*A);
+ root1 = (float) ((-B + root)*inv2A);
+ root2 = (float) ((-B - root)*inv2A);
 
  if (root1 > root2) {
  temp = root1;
Index: code/debris/debris.cpp
===================================================================
--- code/debris/debris.cpp (Revision 7362)
+++ code/debris/debris.cpp (Arbeitskopie)
@@ -941,34 +941,34 @@
  pmi = model_get_instance(Ships[heavy_obj->instance].model_instance_num);
 
  // turn off all rotating submodels and test for collision
- for (size_t j=0; j<submodel_vector.size(); j++) {
- pmi->submodel[submodel_vector[j]].collision_checked = true;
+ for (SCP_vector<int>::iterator smv = submodel_vector.begin(); smv != submodel_vector.end(); smv++) {
+ pmi->submodel[*smv].collision_checked = true;
  }
 
  // reset flags to check MC_CHECK_MODEL | MC_CHECK_SPHERELINE and maybe MC_CHECK_INVISIBLE_FACES and MC_SUBMODEL_INSTANCE
  mc.flags = copy_flags | MC_SUBMODEL_INSTANCE;
 
  // check each submodel in turn
- for (size_t i=0; i<submodel_vector.size(); i++) {
+ for (SCP_vector<int>::iterator smv = submodel_vector.begin(); smv != submodel_vector.end(); smv++) {
  // turn on submodel for collision test
- pmi->submodel[submodel_vector[i]].collision_checked = false;
+ pmi->submodel[*smv].collision_checked = false;
 
  // set angles for last frame (need to set to prev to get p0)
- angles copy_angles = pmi->submodel[submodel_vector[i]].angs;
+ angles copy_angles = pmi->submodel[*smv].angs;
 
  // find the start and end positions of the sphere in submodel RF
- pmi->submodel[submodel_vector[i]].angs = pmi->submodel[submodel_vector[i]].prev_angs;
- world_find_model_instance_point(&p0, &light_obj->last_pos, pm, pmi, submodel_vector[i], &heavy_obj->last_orient, &heavy_obj->last_pos);
+ pmi->submodel[*smv].angs = pmi->submodel[*smv].prev_angs;
+ world_find_model_instance_point(&p0, &light_obj->last_pos, pm, pmi, *smv, &heavy_obj->last_orient, &heavy_obj->last_pos);
 
- pmi->submodel[submodel_vector[i]].angs = copy_angles;
- world_find_model_instance_point(&p1, &light_obj->pos, pm, pmi, submodel_vector[i], &heavy_obj->orient, &heavy_obj->pos);
+ pmi->submodel[*smv].angs = copy_angles;
+ world_find_model_instance_point(&p1, &light_obj->pos, pm, pmi, *smv, &heavy_obj->orient, &heavy_obj->pos);
 
  mc.p0 = &p0;
  mc.p1 = &p1;
  // mc.pos = zero // in submodel RF
 
  mc.orient = &vmd_identity_matrix;
- mc.submodel_num = submodel_vector[i];
+ mc.submodel_num = *smv;
 
  if ( model_collide(&mc) ) {
  if ( mc.hit_dist < debris_hit_info->hit_time ) {
@@ -991,7 +991,7 @@
  }
  }
  // Don't look at this submodel again
- pmi->submodel[submodel_vector[i]].collision_checked = true;
+ pmi->submodel[*smv].collision_checked = true;
  }
 
  }
Index: code/cutscene/cutscenes.cpp
===================================================================
--- code/cutscene/cutscenes.cpp (Revision 7362)
+++ code/cutscene/cutscenes.cpp (Arbeitskopie)
@@ -42,13 +42,9 @@
 //extern int All_movies_enabled; // If set, all movies may be viewed.  Keyed off cheat code.
 void cutscene_close()
 {
- for(size_t i = 0; i < Cutscenes.size(); i++)
-    {
-     if(Cutscenes[i].description)
-        {
-            vm_free(Cutscenes[i].description);
-        }
-    }
+ for(SCP_vector<cutscene_info>::iterator cut = Cutscenes.begin(); cut != Cutscenes.end(); cut++)
+ if(cut->description)
+ vm_free(cut->description);
 }
 
 // initialization stuff for cutscenes
@@ -114,9 +110,9 @@
  return 0; // only 1 cd for OEM
 #else
 
- for (size_t i = 0; i < Cutscenes.size(); i++ ) {
- if ( !stricmp(Cutscenes[i].filename, filename) ) {
- return (Cutscenes[i].cd - 1);
+ for (SCP_vector<cutscene_info>::iterator cut = Cutscenes.begin(); cut != Cutscenes.end(); cut++) {
+ if ( !stricmp(cut->filename, filename) ) {
+ return (cut->cd - 1);
  }
  }
 
@@ -141,10 +137,10 @@
 
  // change to lower case
  strlwr(file);
-
- for (size_t i = 0; i < Cutscenes.size(); i++ ) {
+ int i = 0;
+ for (SCP_vector<cutscene_info>::iterator cut = Cutscenes.begin(); cut != Cutscenes.end(); cut++) {
  // change the cutscene file name to lower case
- strcpy_s(cut_file, Cutscenes[i].filename);
+ strcpy_s(cut_file, cut->filename);
  strlwr(cut_file);
 
  // see if the stripped filename matches the cutscene filename
@@ -152,6 +148,7 @@
  Cutscenes_viewable |= (1<<i);
  return;
  }
+ i++;
  }
 }
 
@@ -507,7 +504,9 @@
 //  Cutscenes_viewable = 0xffffffff; // Cheat code enables all movies.
 
     Cutscene_list.clear();
- for (size_t j = 0; j < Cutscenes.size(); j++ ) {
+
+ size_t size = Cutscenes.size();
+ for (size_t j=0;j < size;j++) {
  if ( Cutscenes_viewable & (1<<j) ) {
             Cutscene_list.push_back((int)j);
  }
@@ -568,7 +567,8 @@
  case KEY_CTRLED | KEY_SHIFTED | KEY_S:
  {
             Cutscene_list.clear();
- for (size_t t = 0; t < Cutscenes.size(); t++) {
+ size_t size = Cutscenes.size();
+ for (size_t t = 0; t < size; t++) {
                 Cutscene_list.push_back((int)t);
  }
 
Index: code/parse/lua.cpp
===================================================================
--- code/parse/lua.cpp (Revision 7362)
+++ code/parse/lua.cpp (Arbeitskopie)
@@ -13157,6 +13157,7 @@
  char *type_name = NULL;
  uint ade_id = UINT_MAX;
  int mtb_ldx = INT_MAX;
+ ade_table_entry* entry = 0;
 
  //*****STEP 1: Check for user-defined objects
  if(lua_istable(L, obj_ldx) && !ADE_SETTING_VAR)
@@ -13176,7 +13177,7 @@
  lua_pushcfunction(L, ade_friendly_error);
  int err_ldx = lua_gettop(L);
  int i;
-
+
  //*****WMC - go for the type name
  lua_pushstring(L, "__adeid");
  lua_rawget(L, mtb_ldx);
@@ -13184,7 +13185,10 @@
  {
  ade_id = (uint) lua_tonumber(L, -1);
  if(ade_id < Ade_table_entries.size())
- type_name = Ade_table_entries[ade_id].Name;
+ {
+ entry = &Ade_table_entries[ade_id];
+ type_name = entry->Name;
+ }
  }
  lua_pop(L, 1);
 
@@ -13196,7 +13200,7 @@
 
  //Get userdata sig
  char *ud = (char *)lua_touserdata(L, obj_ldx);
- ODATA_SIG_TYPE sig = *(ODATA_SIG_TYPE*)(ud + Ade_table_entries[ade_id].Value.Object.size);
+ ODATA_SIG_TYPE sig = *(ODATA_SIG_TYPE*)(ud + entry->Value.Object.size);
 
  //Now use it to index the table with that #
  lua_pushnumber(L, sig);
@@ -13319,7 +13323,7 @@
 
  //Get userdata sig
  char *ud = (char *)lua_touserdata(L, obj_ldx);
- ODATA_SIG_TYPE sig = *(ODATA_SIG_TYPE*)(ud + Ade_table_entries[ade_id].Value.Object.size);
+ ODATA_SIG_TYPE sig = *(ODATA_SIG_TYPE*)(ud + entry->Value.Object.size);
 
  //Now use it to index the table with that #
  lua_pushnumber(L, sig);
Index: code/parse/scripting.cpp
===================================================================
--- code/parse/scripting.cpp (Revision 7362)
+++ code/parse/scripting.cpp (Arbeitskopie)
@@ -398,10 +398,8 @@
  Assert(sys != NULL);
 
  //Do the actions
- script_action *sap;
- for(uint i = 0; i < Actions.size(); i++)
+ for(SCP_vector<script_action>::iterator sap = Actions.begin(); sap != Actions.end(); sap++)
  {
- sap = &Actions[i];
  if(sap->action_type == action)
  sys->RunBytecode(sap->hook, format, data);
  }
@@ -415,10 +413,8 @@
  //bool b = false;
 
  //Do the actions
- script_action *sap;
- for(uint i = 0; i < Actions.size(); i++)
+ for(SCP_vector<script_action>::iterator sap = Actions.begin(); sap != Actions.end(); sap++)
  {
- sap = &Actions[i];
  if(sap->action_type == action)
  {
  if(sys->IsOverride(sap->hook))
@@ -805,11 +801,9 @@
 
 int script_state::RunCondition(int action, char format, void *data, object *objp)
 {
- ConditionedHook *chp = NULL;
  int num = 0;
- for(uint i= 0; i < ConditionalHooks.size(); i++)
+ for(SCP_vector<ConditionedHook>::iterator chp = ConditionalHooks.begin(); chp != ConditionalHooks.end(); chp++)
  {
- chp = &ConditionalHooks[i];
  if(chp->ConditionsValid(action, objp))
  {
  chp->Run(this, action, format, data);
@@ -821,11 +815,9 @@
 
 bool script_state::IsConditionOverride(int action, object *objp)
 {
- ConditionedHook *chp = NULL;
  //bool b = false;
- for(uint i= 0; i < ConditionalHooks.size(); i++)
+ for(SCP_vector<ConditionedHook>::iterator chp = ConditionalHooks.begin(); chp != ConditionalHooks.end(); chp++)
  {
- chp = &ConditionalHooks[i];
  if(chp->ConditionsValid(action, objp))
  {
  if(chp->IsOverride(this, action))
Index: code/autopilot/autopilot.cpp
===================================================================
--- code/autopilot/autopilot.cpp (Revision 7362)
+++ code/autopilot/autopilot.cpp (Arbeitskopie)
@@ -372,8 +372,7 @@
  {
  capshipPresent = true;
 
- capIndexes.resize(capIndexes.size()+1);
- capIndexes[capIndexes.size()-1] = i;
+ capIndexes.push_back(i);
  // ok.. what size class
 
  if (Ship_info[Ships[i].ship_info_index].flags & (SIF_CAPITAL | SIF_SUPERCAP))
@@ -559,13 +558,13 @@
  // position capships
 
  vec3d right, front, up, offset;
- for (i = 0; i < (int)capIndexes.size(); i++)
+ for (SCP_vector<int>::iterator idx = capIndexes.begin(); idx != capIndexes.end(); idx++)
  {
  vm_vec_add(&right, &Autopilot_flight_leader->orient.vec.rvec, &zero);
  vm_vec_add(&front, &Autopilot_flight_leader->orient.vec.fvec, &zero);
  vm_vec_add(&up, &Autopilot_flight_leader->orient.vec.uvec, &zero);
  vm_vec_add(&offset, &zero, &zero);
- if (Ship_info[Ships[capIndexes[i]].ship_info_index].flags & (SIF_CAPITAL | SIF_SUPERCAP))
+ if (Ship_info[Ships[*idx].ship_info_index].flags & (SIF_CAPITAL | SIF_SUPERCAP))
  {
  //0 - below - three lines of position
 
@@ -599,7 +598,7 @@
 
  capship_placed[0]++;
  }
- else if (Ship_info[Ships[capIndexes[i]].ship_info_index].flags & SIF_CORVETTE)
+ else if (Ship_info[Ships[*idx].ship_info_index].flags & SIF_CORVETTE)
  {
  //1 above - 3 lines of position
  // front/back to zero
@@ -708,7 +707,7 @@
  // global scale the position by 50%
  //vm_vec_scale(&offset, 1.5);
 
- vm_vec_add(&Objects[Ships[capIndexes[i]].objnum].pos, &Autopilot_flight_leader->pos, &offset);
+ vm_vec_add(&Objects[Ships[*idx].objnum].pos, &Autopilot_flight_leader->pos, &offset);
 
  if (vm_vec_dist_quick(&Autopilot_flight_leader->pos, &Objects[Ships[i].objnum].pos) > distance)
  {
Index: code/ai/aicode.cpp
===================================================================
--- code/ai/aicode.cpp (Revision 7362)
+++ code/ai/aicode.cpp (Arbeitskopie)
@@ -359,20 +359,18 @@
 //           which can be fired on target_objp
 int is_preferred_weapon(int weapon_num, object *firer_objp, object *target_objp)
 {
- int i, firer_team, target_signature;
+ int firer_team, target_signature;
  ship *firer_ship;
- huge_fire_info *hfi = NULL;
-
+ SCP_vector<huge_fire_info>::iterator hfi;
  Assert( firer_objp->type == OBJ_SHIP );
  firer_ship = &Ships[firer_objp->instance];
  firer_team = firer_ship->team;
 
  // get target object's signature and try to find it in the list.
  target_signature = target_objp->signature;
- for ( i = 0; i < (int)Ai_huge_fire_info.size(); i++ ) {
+ for (hfi = Ai_huge_fire_info.begin();hfi != Ai_huge_fire_info.end(); ++hfi ) {
  int ship_index, signature;
 
- hfi = &Ai_huge_fire_info[i];
  if ( hfi->weapon_index == -1 )
  continue;
 
@@ -388,7 +386,7 @@
  }
 
  // return -1 if not found
- if ( i == (int)Ai_huge_fire_info.size() )
+ if ( hfi == Ai_huge_fire_info.end() )
  return -1;
 
  // otherwise, we can return the max number of weapons we can fire against target_objps
┏┓╋┏┓╋╋╋╋╋╋╋╋╋┏┓
┃┃╋┃┃╋╋╋╋╋╋╋╋╋┃┃
┃┃┏┫┃┏┳━━┓┏━━┓┃┗━┳━━┳━━┳━━┓
┃┃┣┫┗┛┫┃━┫┃┏┓┃┃┏┓┃┏┓┃━━┫━━┫
┃┗┫┃┏┓┫┃━┫┃┏┓┃┃┗┛┃┗┛┣━━┣━━┃
┗━┻┻┛┗┻━━┛┗┛┗┛┗━━┻━━┻━━┻━━┛

 

Offline The E

  • He's Ebeneezer Goode
  • Moderator
  • 213
  • Nothing personal, just tech support.
    • Steam
    • Twitter
Committed in revision 7363
If I'm just aching this can't go on
I came from chasing dreams to feel alone
There must be changes, miss to feel strong
I really need lifе to touch me
--Evergrey, Where August Mourns

 

Offline Plombo

  • 23
Committed in revision 7363

Revision 7363 breaks the build on my Linux machine using g++:

Code: [Select]
plombo@laptop:~/src/fs2_open$ make
Making all in code
make[1]: Entering directory `/home/bryan/src/fs2_open/code'
g++ -DPACKAGE_NAME=\"fs2_open\" -DPACKAGE_TARNAME=\"fs2_open\" -DPACKAGE_VERSION=\"3.6.13\" -DPACKAGE_STRING=\"fs2_open\ 3.6.13\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DNO_CD_CHECK=1 -DINF_BUILD=1 -D_DEBUG=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DSCP_UNIX=1 -DNO_DIRECT3D=1 -I.    -DLUA_USE_LINUX -O0 -g -Wall -Wextra -Wno-unused-parameter -Wno-write-strings -Wshadow -funroll-loops -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT       -I/usr/include/libpng12   -I/usr/include/lua5.1   -fsigned-char -Wno-unknown-pragmas  -Wno-deprecated -Wno-char-subscripts  -MT fvi.o -MD -MP -MF .deps/fvi.Tpo -c -o fvi.o `test -f 'math/fvi.cpp' || echo './'`math/fvi.cpp
math/fvi.cpp: In function ‘int fvi_polyedge_sphereline(vec3d*, vec3d*, vec3d*, float, int, vec3d**, float*)’:
math/fvi.cpp:1094: error: jump to label ‘TryVertex’
math/fvi.cpp:1033: error:   from here
math/fvi.cpp:1060: error:   crosses initialization of ‘float inv2A’
math/fvi.cpp:1109: warning: declaration of ‘inv2A’ shadows a previous local
math/fvi.cpp:1060: warning: shadowed declaration is here
math/fvi.cpp:1143: warning: declaration of ‘inv2A’ shadows a previous local
math/fvi.cpp:1060: warning: shadowed declaration is here
make[1]: *** [fvi.o] Error 1
make[1]: Leaving directory `/home/bryan/src/fs2_open/code'
make: *** [all-recursive] Error 1

 

Offline Zacam

  • Magnificent Bastard
  • Administrator
  • 211
  • I go Sledge-O-Matic on Spammers
    • Steam
    • Twitter
    • ModDB Feature

Curious. No idea if this would be a solution or not, but a little something I came up with in about 20 seconds (and 2 attempts):

Code: (fvi.cpp) [Select]
Index: fvi.cpp
===================================================================
--- fvi.cpp (revision 7364)
+++ fvi.cpp (working copy)
@@ -970,7 +970,7 @@
  vec3d ve; // edge velocity
  float best_sphere_time; // earliest time sphere hits edge
  vec3d delta_x;
- float delta_x_dot_ve, delta_x_dot_vs, ve_dot_vs, ve_sqr, vs_sqr, delta_x_sqr;
+ float delta_x_dot_ve, delta_x_dot_vs, ve_dot_vs, ve_sqr, vs_sqr, delta_x_sqr, inv2A;
  vec3d temp_edge_hit, temp_sphere_hit;
 
  best_sphere_time = FLT_MAX;
@@ -1010,7 +1010,7 @@
  discriminant = B*B - 4*A*C;
  if (discriminant > 0) {
  root = fl_sqrt(discriminant);
- float inv2A = 1.0f/(2*A);
+ inv2A = 1.0f/(2*A);
  root1 = (float) ((-B + root)*inv2A);
  root2 = (float) ((-B - root)*inv2A);
 
@@ -1057,7 +1057,7 @@
  }
 
  root = fl_sqrt(discriminant);
- float inv2A = 1.0f/(2*A);
+ inv2A = 1.0f/(2*A);
  root1 = (float) ((-B + root)*inv2A);
  root2 = (float) ((-B - root)*inv2A);
 
@@ -1106,7 +1106,7 @@
  discriminant = B*B - 4*A*C;
  if (discriminant > 0) {
  root = fl_sqrt(discriminant);
- float inv2A = 1.0f/(2*A);
+ inv2A = 1.0f/(2*A);
  root1 = (float) ((-B + root)*inv2A);
  root2 = (float) ((-B - root)*inv2A);
 
@@ -1140,7 +1140,7 @@
  discriminant = B*B - 4*A*C;
  if (discriminant > 0) {
  root = fl_sqrt(discriminant);
- float inv2A = 1.0f/(2*A);
+ inv2A = 1.0f/(2*A);
  root1 = (float) ((-B + root)*inv2A);
  root2 = (float) ((-B - root)*inv2A);

Report MediaVP issues, now on the MediaVP Mantis! Read all about it Here!
Talk with the community on Discord
"If you can keep a level head in all this confusion, you just don't understand the situation"

¤[D+¬>

[08/01 16:53:11] <sigtau> EveningTea: I have decided that I am a 32-bit registerkin.  Pronouns are eax, ebx, ecx, edx.
[08/01 16:53:31] <EveningTea> dhauidahh
[08/01 16:53:32] <EveningTea> sak
[08/01 16:53:40] * EveningTea froths at the mouth
[08/01 16:53:40] <sigtau> i broke him, boys

 

Offline Valathil

  • ...And I would have had a custom title if it wasn't for you meddling kids!
  • 29
  • Custom Title? Wizards need no Custom Title!
wtf gcc
┏┓╋┏┓╋╋╋╋╋╋╋╋╋┏┓
┃┃╋┃┃╋╋╋╋╋╋╋╋╋┃┃
┃┃┏┫┃┏┳━━┓┏━━┓┃┗━┳━━┳━━┳━━┓
┃┃┣┫┗┛┫┃━┫┃┏┓┃┃┏┓┃┏┓┃━━┫━━┫
┃┗┫┃┏┓┫┃━┫┃┏┓┃┃┗┛┃┗┛┣━━┣━━┃
┗━┻┻┛┗┻━━┛┗┛┗┛┗━━┻━━┻━━┻━━┛

 

Offline Echelon9

  • 210
GCC on Apple isn't liking that latest addition for SIMD instructions:

Code: [Select]
code/math/vecmat.cpp:17:23: error: xmmintrin.h: No such file or directory

 

Offline Valathil

  • ...And I would have had a custom title if it wasn't for you meddling kids!
  • 29
  • Custom Title? Wizards need no Custom Title!
are you compiling with sse enabled or not ? cause if it only happens with sse disabled an #ifdef (the same like around the intrinsic) around the include should fix that. If it happens on both that would be strange the file should be availiable on every system.
┏┓╋┏┓╋╋╋╋╋╋╋╋╋┏┓
┃┃╋┃┃╋╋╋╋╋╋╋╋╋┃┃
┃┃┏┫┃┏┳━━┓┏━━┓┃┗━┳━━┳━━┳━━┓
┃┃┣┫┗┛┫┃━┫┃┏┓┃┃┏┓┃┏┓┃━━┫━━┫
┃┗┫┃┏┓┫┃━┫┃┏┓┃┃┗┛┃┗┛┣━━┣━━┃
┗━┻┻┛┗┻━━┛┗┛┗┛┗━━┻━━┻━━┻━━┛

 

Offline chief1983

  • Still lacks a custom title
  • Moderator
  • 212
  • ⬇️⬆️⬅️⬅️🅰➡️⬇️
    • Skype
    • Steam
    • Twitter
    • Fate of the Galaxy
I don't believe OS X is set up to optimize for SSE yet, so probably not.
Fate of the Galaxy - Now Hiring!  Apply within | Diaspora | SCP Home | Collada Importer for PCS2
Karajorma's 'How to report bugs' | Mantis
#freespace | #scp-swc | #diaspora | #SCP | #hard-light on EsperNet

"You may not sell or otherwise commercially exploit the source or things you created based on the source." -- Excerpt from FSO license, for reference

Nuclear1:  Jesus Christ zack you're a little too hamyurger for HLP right now...
iamzack:  i dont have hamynerge i just want ptatoc hips D:
redsniper:  Platonic hips?!
iamzack:  lays

 

Offline Valathil

  • ...And I would have had a custom title if it wasn't for you meddling kids!
  • 29
  • Custom Title? Wizards need no Custom Title!
its an x86 processor opcode it has nothing to do with the os this should not be happening i dont get it he should have the header file. Is this happening to other apple users as well or just echelon?
┏┓╋┏┓╋╋╋╋╋╋╋╋╋┏┓
┃┃╋┃┃╋╋╋╋╋╋╋╋╋┃┃
┃┃┏┫┃┏┳━━┓┏━━┓┃┗━┳━━┳━━┳━━┓
┃┃┣┫┗┛┫┃━┫┃┏┓┃┃┏┓┃┏┓┃━━┫━━┫
┃┗┫┃┏┓┫┃━┫┃┏┓┃┃┗┛┃┗┛┣━━┣━━┃
┗━┻┻┛┗┻━━┛┗┛┗┛┗━━┻━━┻━━┻━━┛

 

Offline Goober5000

  • HLP Loremaster
  • Moderator
  • 214
    • Goober5000 Productions
#include <xmmintrin.h> fails for me too, on MSVC6.  So it looks like the #ifdef needs to be added.

 

Offline Echelon9

  • 210
#include <xmmintrin.h> fails for me too, on MSVC6.  So it looks like the #ifdef needs to be added.

Fix? Works for Xcode, but that's to be given as it's just switching it right off.
Code: [Select]
Index: code/math/vecmat.cpp
===================================================================
--- code/math/vecmat.cpp (revision 7372)
+++ code/math/vecmat.cpp (working copy)
@@ -14,9 +14,10 @@
 
 #include "math/vecmat.h"
 #include "math/floating.h"
-#include <xmmintrin.h>
+#if _M_IX86_FP >= 1
+ #include <xmmintrin.h>
+#endif
 
 #define SMALL_NUM 1e-7
 #define SMALLER_NUM 1e-20
 #define CONVERT_RADIANS 0.017453 // conversion factor from degrees to radians