@@ -40,9 +40,7 @@ extern int Model_polys;
4040extern int tiling;
4141extern float model_radius;
4242
43- extern const int MAX_ARC_SEGMENT_POINTS;
44- extern int Num_arc_segment_points;
45- extern vec3d Arc_segment_points[];
43+ extern SCP_vector<vec3d> Arc_segment_points;
4644
4745extern bool Scene_framebuffer_in_frame;
4846color Wireframe_color;
@@ -810,12 +808,9 @@ model_draw_list::~model_draw_list() {
810808
811809void model_render_add_lightning (model_draw_list *scene, const model_render_params* interp, const polymodel *pm, const submodel_instance *smi )
812810{
813- int i;
814811 float width = 0 .9f ;
815812 color primary, secondary;
816813
817- Assert ( smi->num_arcs > 0 );
818-
819814 if ( interp->get_model_flags () & MR_SHOW_OUTLINE_PRESET ) {
820815 return ;
821816 }
@@ -825,9 +820,7 @@ void model_render_add_lightning(model_draw_list *scene, const model_render_param
825820 return ;
826821 }
827822
828- for ( i = 0 ; i < smi->num_arcs ; i++ ) {
829- auto &arc = smi->electrical_arcs [i];
830-
823+ for (auto &arc: smi->electrical_arcs ) {
831824 // pick a color based upon arc type
832825 switch ( arc.type ) {
833826 // "normal", FreeSpace 1 style arcs
@@ -1305,7 +1298,7 @@ void model_render_children_buffers(model_draw_list* scene, model_material *rende
13051298 }
13061299 }
13071300
1308- if ( smi != nullptr && smi->num_arcs > 0 ) {
1301+ if ( smi != nullptr && ! smi->electrical_arcs . empty () ) {
13091302 model_render_add_lightning ( scene, interp, pm, smi );
13101303 }
13111304
@@ -1625,7 +1618,7 @@ void submodel_render_queue(const model_render_params *render_info, model_draw_li
16251618 }
16261619 }
16271620
1628- if ( pmi && pmi->submodel [submodel_num].num_arcs > 0 ) {
1621+ if ( pmi && ! pmi->submodel [submodel_num].electrical_arcs . empty () ) {
16291622 model_render_add_lightning ( scene, render_info, pm, &pmi->submodel [submodel_num] );
16301623 }
16311624
@@ -2079,8 +2072,8 @@ void model_render_glow_points(const polymodel *pm, const polymodel_instance *pmi
20792072 Assert ( bank->points != nullptr );
20802073 int flick;
20812074
2082- if (pmi != nullptr && pmi->submodel [pm->detail [0 ]].num_arcs > 0 ) {
2083- flick = static_rand ( timestamp () % 20 ) % (pmi->submodel [pm->detail [0 ]].num_arcs + j); // the more damage, the more arcs, the more likely the lights will fail
2075+ if (pmi != nullptr && ! pmi->submodel [pm->detail [0 ]].electrical_arcs . empty () ) {
2076+ flick = static_rand ( timestamp () % 20 ) % (pmi->submodel [pm->detail [0 ]].electrical_arcs . size () + j); // the more damage, the more arcs, the more likely the lights will fail
20842077 } else {
20852078 flick = 1 ;
20862079 }
@@ -2502,21 +2495,21 @@ void model_render_insignias(const insignia_draw_data *insignia_data)
25022495
25032496void model_render_arc (const vec3d *v1, const vec3d *v2, const color *primary, const color *secondary, float arc_width)
25042497{
2505- Num_arc_segment_points = 0 ;
2498+ Arc_segment_points. clear () ;
25062499
2507- // need need to add the first point
2508- memcpy ( & Arc_segment_points[Num_arc_segment_points++], v1, sizeof (vec3d) );
2500+ // need to add the first point
2501+ Arc_segment_points. push_back (*v1 );
25092502
25102503 // this should fill in all of the middle, and the last, points
25112504 interp_render_arc_segment (v1, v2, 0 );
25122505
25132506 // use primary color for fist pass
25142507 Assert ( primary );
25152508
2516- g3_render_rod (primary, Num_arc_segment_points , Arc_segment_points, arc_width);
2509+ g3_render_rod (primary, static_cast < int >(Arc_segment_points. size ()) , Arc_segment_points. data () , arc_width);
25172510
25182511 if (secondary) {
2519- g3_render_rod (secondary, Num_arc_segment_points , Arc_segment_points, arc_width * 0 .33f );
2512+ g3_render_rod (secondary, static_cast < int >(Arc_segment_points. size ()) , Arc_segment_points. data () , arc_width * 0 .33f );
25202513 }
25212514}
25222515
@@ -2921,7 +2914,7 @@ void model_render_queue(const model_render_params* interp, model_draw_list* scen
29212914 } else {
29222915 model_render_buffers (scene, &rendering_material, interp, &pm->submodel [detail_model_num].buffer , pm, detail_model_num, detail_level, tmap_flags);
29232916
2924- if ( pmi != nullptr && pmi->submodel [detail_model_num].num_arcs > 0 ) {
2917+ if ( pmi != nullptr && ! pmi->submodel [detail_model_num].electrical_arcs . empty () ) {
29252918 model_render_add_lightning ( scene, interp, pm, &pmi->submodel [detail_model_num] );
29262919 }
29272920 }
0 commit comments