Skip to content

Commit d36db98

Browse files
authored
Merge pull request #5014 from MjnMixael/fix_render_tech_model
Do not include -destroyed subobjects in renderTechModel
2 parents a822d2a + 84962ff commit d36db98

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

code/scripting/api/objs/shipclass.cpp

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1227,6 +1227,11 @@ ADE_FUNC(renderTechModel,
12271227

12281228
//Draw the ship!!
12291229
model_clear_instance(sip->model_num);
1230+
1231+
//Create an instance that can be used to clear out destroyed subobjects from rendering
1232+
int model_instance = model_create_instance(-1, sip->model_num);
1233+
model_set_up_techroom_instance(sip, model_instance);
1234+
12301235
render_info.set_detail_level_lock(0);
12311236

12321237
uint render_flags = MR_AUTOCENTER | MR_NO_FOGGING;
@@ -1236,7 +1241,7 @@ ADE_FUNC(renderTechModel,
12361241

12371242
render_info.set_flags(render_flags);
12381243

1239-
model_render_immediate(&render_info, sip->model_num, &orient, &vmd_zero_vector);
1244+
model_render_immediate(&render_info, sip->model_num, model_instance, &orient, &vmd_zero_vector);
12401245

12411246
//OK we're done
12421247
gr_end_view_matrix();
@@ -1246,6 +1251,9 @@ ADE_FUNC(renderTechModel,
12461251
g3_end_frame();
12471252
gr_reset_clip();
12481253

1254+
//Now that we've rendered the frame we can remove the instance
1255+
model_delete_instance(model_instance);
1256+
12491257
return ade_set_args(L, "b", true);
12501258
}
12511259

@@ -1296,6 +1304,11 @@ ADE_FUNC(renderTechModel2, l_Shipclass, "number X1, number Y1, number X2, number
12961304

12971305
//Draw the ship!!
12981306
model_clear_instance(sip->model_num);
1307+
1308+
// Create an instance that can be used to clear out destroyed subobjects from rendering
1309+
int model_instance = model_create_instance(-1, sip->model_num);
1310+
model_set_up_techroom_instance(sip, model_instance);
1311+
12991312
render_info.set_detail_level_lock(0);
13001313

13011314
uint render_flags = MR_AUTOCENTER | MR_NO_FOGGING;
@@ -1305,7 +1318,7 @@ ADE_FUNC(renderTechModel2, l_Shipclass, "number X1, number Y1, number X2, number
13051318

13061319
render_info.set_flags(render_flags);
13071320

1308-
model_render_immediate(&render_info, sip->model_num, orient, &vmd_zero_vector);
1321+
model_render_immediate(&render_info, sip->model_num, model_instance, orient, &vmd_zero_vector);
13091322

13101323
//OK we're done
13111324
gr_end_view_matrix();
@@ -1315,6 +1328,9 @@ ADE_FUNC(renderTechModel2, l_Shipclass, "number X1, number Y1, number X2, number
13151328
g3_end_frame();
13161329
gr_reset_clip();
13171330

1331+
// Now that we've rendered the frame we can remove the instance
1332+
model_delete_instance(model_instance);
1333+
13181334
return ade_set_args(L, "b", true);
13191335
}
13201336

0 commit comments

Comments
 (0)