Skip to content

Commit cb531f8

Browse files
committed
Remove object instance from lab render info
If the object number is set for the render info the renderer uses the instance information of that object to render the model. That is not correct for the lab since the instance data is handled by the lab code in that case. This fixes #643.
1 parent 4321fd3 commit cb531f8

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

code/lab/lab.cpp

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -902,6 +902,12 @@ void labviewer_render_model(float frametime)
902902
}
903903
}
904904
}
905+
906+
if (sip != NULL) {
907+
if (Lab_viewer_flags & LAB_FLAG_DESTROYED_SUBSYSTEMS) {
908+
model_show_damaged(Lab_model_num, 1);
909+
}
910+
}
905911

906912
if( !( flagggs & MR_NO_LIGHTING ) && Cmdline_shadow_quality ) {
907913
polymodel *pm = model_get(Lab_model_num);
@@ -930,6 +936,7 @@ void labviewer_render_model(float frametime)
930936
for(k = 0; k < bank->num_slots; k++) {
931937

932938
render_info.set_flags(render_flags);
939+
render_info.set_object_number(-1);
933940
model_render_immediate(&render_info, Lab_weaponmodel_num[l], &vmd_identity_matrix, &bank->pnt[k]);
934941
}
935942
}
@@ -947,13 +954,15 @@ void labviewer_render_model(float frametime)
947954
if (Weapon_info[sip->secondary_bank_weapons[j]].wi_flags[Weapon::Info_Flags::External_weapon_lnch]) {
948955
for(k = 0; k < bank->num_slots; k++) {
949956
render_info.set_flags(render_flags);
957+
render_info.set_object_number(-1);
950958
model_render_immediate(&render_info, Lab_weaponmodel_num[l], &vmd_identity_matrix, &bank->pnt[k]);
951959
}
952960
} else {
953961
for(k = 0; k < bank->num_slots; k++)
954962
{
955963
secondary_weapon_pos = bank->pnt[k];
956964
render_info.set_flags(render_flags);
965+
render_info.set_object_number(-1);
957966
model_render_immediate(&render_info, Lab_weaponmodel_num[l], &vmd_identity_matrix, &secondary_weapon_pos);
958967
}
959968
}
@@ -976,12 +985,6 @@ void labviewer_render_model(float frametime)
976985
// MIN((timer_get_milliseconds()-anim_timer_start)/1500.0f, 2.0f)
977986
// );
978987

979-
if (sip != NULL) {
980-
if (Lab_viewer_flags & LAB_FLAG_DESTROYED_SUBSYSTEMS) {
981-
model_show_damaged(Lab_model_num, 1);
982-
}
983-
}
984-
985988
//render weapon models if selected
986989
if (Lab_mode == LAB_MODE_SHIP && (Lab_viewer_flags & LAB_FLAG_SHOW_WEAPONS)) {
987990
int k,l;
@@ -1000,6 +1003,7 @@ void labviewer_render_model(float frametime)
10001003
w_bank *bank = &model_get(Lab_model_num)->gun_banks[j];
10011004
for(k = 0; k < bank->num_slots; k++) {
10021005
render_info.set_flags(render_flags);
1006+
render_info.set_object_number(-1);
10031007
model_render_immediate(&render_info, Lab_weaponmodel_num[l], &vmd_identity_matrix, &bank->pnt[k]);
10041008
}
10051009
}
@@ -1024,6 +1028,7 @@ void labviewer_render_model(float frametime)
10241028
{
10251029
secondary_weapon_pos = bank->pnt[k];
10261030
render_info.set_flags(render_flags);
1031+
render_info.set_object_number(-1);
10271032
model_render_immediate(&render_info, Lab_weaponmodel_num[l], &vmd_identity_matrix, &secondary_weapon_pos);
10281033
}
10291034
}
@@ -1035,7 +1040,6 @@ void labviewer_render_model(float frametime)
10351040

10361041
render_info.set_debug_flags(Lab_model_debug_flags);
10371042
render_info.set_flags(flagggs);
1038-
render_info.set_object_number(Lab_selected_object);
10391043

10401044
model_render_immediate(&render_info, Lab_model_num, &Lab_viewer_orient, &vmd_zero_vector, MODEL_RENDER_OPAQUE);
10411045
gr_opengl_deferred_lighting_end();

0 commit comments

Comments
 (0)