Skip to content

Commit

Permalink
r_drawModelNames enum & cleanup code
Browse files Browse the repository at this point in the history
  • Loading branch information
mjkzy committed Oct 5, 2024
1 parent 7a714b8 commit 62a4ee9
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 33 deletions.
73 changes: 40 additions & 33 deletions src/client/component/renderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,10 @@ namespace renderer

void debug_draw_light_origins()
{
if (!r_drawLightOrigins || r_drawLightOrigins->current.integer == 0)
if (!r_drawLightOrigins || !r_drawLightOrigins->current.enabled)
{
return;
}

auto player = *game::mp::playerState;
float playerPosition[3]{ player->origin[0], player->origin[1], player->origin[2] };
Expand Down Expand Up @@ -219,10 +221,25 @@ namespace renderer
}
}

inline void draw_light_text(const char* name, game::vec3_t& origin, game::vec4_t& color)
{
game::vec2_t screen{};
if (game::CG_WorldPosToScreenPosReal(0, game::ScrPlace_GetActivePlacement(), origin, screen))
{
const auto font = game::R_RegisterFont("fonts/fira_mono_regular.ttf", 25);
if (font)
{
game::R_AddCmdDrawText(name, 0x7FFFFFFF, font, screen[0], screen[1], 1.f, 1.f, 0.0f, color, 6);
}
}
}

void debug_draw_model_names()
{
if (!r_drawModelNames || r_drawModelNames->current.integer == 0)
{
return;
}

auto player = *game::mp::playerState;
float playerPosition[3]{ player->origin[0], player->origin[1], player->origin[2] };
Expand All @@ -241,9 +258,9 @@ namespace renderer
auto distance = r_playerDrawDebugDistance->current.integer;
auto sqrDist = distance * static_cast<float>(distance);

float staticModelsColor[4] = { 1.0f, 0.0f, 1.0f, 1.0f };
float sceneModelsColor[4] = { 1.0f, 1.0f, 0.0f, 1.0f };
float dobjsColor[4] = { 0.0f, 1.0f, 1.0f, 1.0f };
static float staticModelsColor[4] = { 1.0f, 0.0f, 1.0f, 1.0f };
static float sceneModelsColor[4] = { 1.0f, 1.0f, 0.0f, 1.0f };
static float dobjsColor[4] = { 0.0f, 1.0f, 1.0f, 1.0f };
auto scene = *game::scene;

switch (r_drawModelNames->current.integer)
Expand All @@ -256,43 +273,25 @@ namespace renderer

if (Vec3SqrDistance(playerPosition, scene.sceneModel[i].placement.base.origin) < static_cast<float>(sqrDist))
{
auto screenPlace = game::ScrPlace_GetActivePlacement();
game::vec2_t screen{};
if (game::CG_WorldPosToScreenPosReal(0, screenPlace, scene.sceneModel[i].placement.base.origin, screen))
{
const auto font = game::R_RegisterFont("fonts/fira_mono_regular.ttf", 25);
if (font)
{
game::R_AddCmdDrawText(scene.sceneModel[i].model->name, 0x7FFFFFFF, font, screen[0], screen[1], 1.f, 1.f, 0.0f, sceneModelsColor, 6);
}
}
draw_light_text(scene.sceneModel[i].model->name, scene.sceneModel[i].placement.base.origin, sceneModelsColor);
}
}
break;
case 2:
for (size_t i = 0; i < gfxAsset->dpvs.smodelCount; i++)
for (auto i = 0; i < gfxAsset->dpvs.smodelCount; i++)

Check warning on line 281 in src/client/component/renderer.cpp

View workflow job for this annotation

GitHub Actions / Build binaries (Debug)

'<': signed/unsigned mismatch [D:\a\h1-mod\h1-mod\build\client.vcxproj]
{
auto staticModel = gfxAsset->dpvs.smodelDrawInsts[i];
if (staticModel.model)
{
const auto dist = Vec3SqrDistance(playerPosition, staticModel.placement.origin);
if (dist < static_cast<float>(sqrDist))
{
if (!staticModel.model)
continue;

auto screenPlace = game::ScrPlace_GetActivePlacement();
game::vec2_t screen{};
if (game::CG_WorldPosToScreenPosReal(0, screenPlace, staticModel.placement.origin, screen))
{
const auto font = game::R_RegisterFont("fonts/fira_mono_regular.ttf", 25);
if (font)
{
game::R_AddCmdDrawText(staticModel.model->name, 0x7FFFFFFF, font, screen[0], screen[1], 1.f, 1.f, 0.0f, staticModelsColor, 6);
}
}
}
if (Vec3SqrDistance(playerPosition, staticModel.placement.origin) < static_cast<float>(sqrDist))
{
draw_light_text(staticModel.model->name, staticModel.placement.origin, staticModelsColor);
}
}
break;
default:
break;
}
}
#endif
Expand Down Expand Up @@ -341,8 +340,16 @@ namespace renderer
return;
}

r_drawLightOrigins = dvars::register_int("r_drawLightOrigins", 0, 0, 2, game::DVAR_FLAG_CHEAT, "Draw comworld light origins");
r_drawModelNames = dvars::register_int("r_drawModelNames", 0, 0, 2, game::DVAR_FLAG_CHEAT, "Draw all model names");
static const char* values[] =
{
"off",
"map/temporary entities",
"map models",
nullptr
};

r_drawLightOrigins = dvars::register_bool("r_drawLightOrigins", false, game::DVAR_FLAG_CHEAT, "Draw comworld light origins");
r_drawModelNames = dvars::register_enum("r_drawModelNames", values, 0, game::DVAR_FLAG_CHEAT, "Draw all model names");
r_playerDrawDebugDistance = dvars::register_int("r_drawDebugDistance", 1000, 0, 50000, game::DVAR_FLAG_SAVED, "r_draw debug functions draw distance relative to the player");

scheduler::loop([]
Expand Down
8 changes: 8 additions & 0 deletions src/client/game/dvars.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -279,4 +279,12 @@ namespace dvars
insert_dvar_info(hash, name, description);
return game::Dvar_RegisterVec4(hash, "", x, y, z, w, min, max, flags);
}

game::dvar_t* register_enum(const std::string& name, const char** value_list, int default_index,
unsigned int flags, const std::string& description)
{
const auto hash = generate_hash(name);
insert_dvar_info(hash, name, description);
return game::Dvar_RegisterEnum(hash, "", value_list, default_index, flags);
}
}
2 changes: 2 additions & 0 deletions src/client/game/dvars.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -116,4 +116,6 @@ namespace dvars
unsigned int flags, const std::string& description);
game::dvar_t* register_vec4(const std::string& name, float x, float y, float z, float w, float min,
float max, unsigned int flags, const std::string& description);
game::dvar_t* register_enum(const std::string& name, const char** value_list, int default_index,
unsigned int flags, const std::string& description);
}
1 change: 1 addition & 0 deletions src/client/game/symbols.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ namespace game
unsigned int flags)> Dvar_RegisterString{0x4197E0, 0x182BD0};
WEAK symbol<dvar_t*(int dvarName, const char* a2, float x, float y, float z,
float w, float min, float max, unsigned int flags)> Dvar_RegisterVec4{0x419C60, 0x183010};
WEAK symbol<dvar_t*(int hash, const char* dvarName, const char** valueList, int defaultIndex, unsigned int flags)> Dvar_RegisterEnum{0x0, 0x182700};

WEAK symbol<long long(const char* qpath, char** buffer)> FS_ReadFile{0x40E280, 0x1EC690};
WEAK symbol<void(void* buffer)> FS_FreeFile{0x40E270, 0x59E2F0};
Expand Down

0 comments on commit 62a4ee9

Please sign in to comment.