Skip to content

Commit 94744e9

Browse files
Merge pull request #6899 from MjnMixael/lab_detail_level
Show current detail level in the lab
2 parents 04c2913 + 6abfddf commit 94744e9

4 files changed

Lines changed: 17 additions & 3 deletions

File tree

code/lab/manager/lab_manager.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include "io/key.h"
55
#include "math/staticrand.h"
66
#include "missionui/missionscreencommon.h"
7+
#include "model/modelrender.h"
78
#include "object/object.h"
89
#include "object/objectdock.h"
910
#include "debris/debris.h"
@@ -419,6 +420,8 @@ void LabManager::cleanup() {
419420
CurrentOrientation = vmd_identity_matrix;
420421
ModelFilename = "";
421422
Player_ship = nullptr;
423+
424+
Lab_object_detail_level = -1;
422425
}
423426

424427
}

code/lab/renderer/lab_renderer.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "lab/renderer/lab_renderer.h"
88
#include "lighting/lighting_profiles.h"
99
#include "math/bitarray.h"
10+
#include "model/modelrender.h"
1011
#include "nebula/neb.h"
1112
#include "parse/parselo.h"
1213
#include "particle/particle.h"
@@ -32,10 +33,11 @@ void LabRenderer::onFrame(float frametime) {
3233

3334
// print out the current pof filename, to help with... something
3435
if (strlen(getLabManager()->ModelFilename.c_str())) {
35-
gr_get_string_size(&w, &h, getLabManager()->ModelFilename.c_str());
36+
SCP_string lab_text = "POF File: " + getLabManager()->ModelFilename + " Detail Level: " + std::to_string(Lab_object_detail_level);
37+
gr_get_string_size(&w, &h, lab_text.c_str());
3638
gr_set_color_fast(&Color_white);
37-
gr_string(gr_screen.center_offset_x + gr_screen.center_w - w,
38-
gr_screen.center_offset_y + gr_screen.center_h - h, getLabManager()->ModelFilename.c_str(), GR_RESIZE_NONE);
39+
gr_string(gr_screen.center_offset_x + gr_screen.center_w - w - 20, // add a little padding to the right
40+
gr_screen.center_offset_y + gr_screen.center_h - h, lab_text.c_str(), GR_RESIZE_NONE);
3941
}
4042
}
4143

code/model/modelrender.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ extern float model_radius;
4343
extern bool Scene_framebuffer_in_frame;
4444
color Wireframe_color;
4545

46+
int Lab_object_detail_level = -1; // Used to display the detail level in the lab
47+
4648
extern void interp_generate_arc_segment(SCP_vector<vec3d> &arc_segment_points, const vec3d *v1, const vec3d *v2, ubyte depth_limit, ubyte depth);
4749

4850
int model_render_determine_elapsed_time(int objnum, uint64_t flags);
@@ -2667,6 +2669,11 @@ void model_render_queue(const model_render_params* interp, model_draw_list* scen
26672669
float depth = model_render_determine_depth(objnum, model_num, orient, pos, interp->get_detail_level_lock());
26682670
int detail_level = model_render_determine_detail(depth, model_num, interp->get_detail_level_lock());
26692671

2672+
// Send the detail level to the lab for displaying
2673+
if (gameseq_get_state() == GS_STATE_LAB) {
2674+
Lab_object_detail_level = detail_level;
2675+
}
2676+
26702677
// If we're rendering attached weapon models, check against the ships' tabled Weapon Model Draw Distance (which defaults to 200)
26712678
if ( model_flags & MR_ATTACHED_MODEL && shipp != NULL ) {
26722679
if (depth > Ship_info[shipp->ship_info_index].weapon_model_draw_distance) {

code/model/modelrender.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ extern vec3d Object_position;
2727

2828
extern color Wireframe_color;
2929

30+
extern int Lab_object_detail_level;
31+
3032
typedef enum {
3133
TECH_SHIP,
3234
TECH_WEAPON,

0 commit comments

Comments
 (0)