diff --git a/src/overlay.cpp b/src/overlay.cpp index 078de786..eea83b20 100644 --- a/src/overlay.cpp +++ b/src/overlay.cpp @@ -59,8 +59,6 @@ bool open = false, displayHud = true; string gpuString; float offset_x, offset_y, hudSpacing; int hudFirstRow, hudSecondRow, frameOverhead = 0, sleepTime = 0; -const char* offset_x_env = std::getenv("X_OFFSET"); -const char* offset_y_env = std::getenv("Y_OFFSET"); string engineName, engineVersion; ImFont* font = nullptr; ImFont* font1 = nullptr; @@ -1078,36 +1076,29 @@ static void position_layer(struct swapchain_data *data) struct device_data *device_data = data->device; struct instance_data *instance_data = device_data->instance; float margin = 10.0f; - if (offset_x_env) + if (instance_data->params.offset_x > 0 || instance_data->params.offset_y > 0) margin = 0.0f; - ImGui::SetNextWindowBgAlpha(0.5); ImGui::SetNextWindowSize(ImVec2(instance_data->params.width, instance_data->params.height), ImGuiCond_Always); ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(8,-3)); - if (offset_x_env) - offset_x = std::stof(offset_x_env); - - if (offset_y_env) - offset_y = std::stof(offset_y_env); - switch (instance_data->params.position) { case LAYER_POSITION_TOP_LEFT: - ImGui::SetNextWindowPos(ImVec2(margin + offset_x, margin + offset_y), ImGuiCond_Always); + ImGui::SetNextWindowPos(ImVec2(margin + instance_data->params.offset_x, margin + instance_data->params.offset_y), ImGuiCond_Always); break; case LAYER_POSITION_TOP_RIGHT: - ImGui::SetNextWindowPos(ImVec2(data->width - data->window_size.x - margin, margin), + ImGui::SetNextWindowPos(ImVec2(data->width - data->window_size.x - margin + instance_data->params.offset_x, margin + instance_data->params.offset_y), ImGuiCond_Always); break; case LAYER_POSITION_BOTTOM_LEFT: - ImGui::SetNextWindowPos(ImVec2(margin, data->height - data->window_size.y - margin), + ImGui::SetNextWindowPos(ImVec2(margin + instance_data->params.offset_x, data->height - data->window_size.y - margin + instance_data->params.offset_y), ImGuiCond_Always); break; case LAYER_POSITION_BOTTOM_RIGHT: - ImGui::SetNextWindowPos(ImVec2(data->width - data->window_size.x - margin, - data->height - data->window_size.y - margin), + ImGui::SetNextWindowPos(ImVec2(data->width - data->window_size.x - margin + instance_data->params.offset_x, + data->height - data->window_size.y - margin + instance_data->params.offset_y), ImGuiCond_Always); break; } diff --git a/src/overlay_params.cpp b/src/overlay_params.cpp index 9d134f82..df593d8a 100644 --- a/src/overlay_params.cpp +++ b/src/overlay_params.cpp @@ -100,12 +100,6 @@ parse_fps_limit(const char *str) return strtol(str, NULL, 0); } -static uint32_t -parse_vsync(const char *str) -{ - return strtol(str, NULL, 0); -} - static uint32_t parse_crosshair_size(const char *str) { @@ -127,6 +121,8 @@ parse_unsigned(const char *str) #define parse_width(s) parse_unsigned(s) #define parse_height(s) parse_unsigned(s) #define parse_vsync(s) parse_unsigned(s) +#define parse_offset_x(s) parse_unsigned(s) +#define parse_offset_y(s) parse_unsigned(s) static bool parse_help(const char *str) @@ -222,6 +218,8 @@ parse_overlay_env(struct overlay_params *params, params->fps_limit = 0; params->vsync = -1; params->crosshair_size = 30; + params->offset_x = 0; + params->offset_y = 0; // Get config options parseConfigFile(); diff --git a/src/overlay_params.h b/src/overlay_params.h index 09653bd9..08a051d4 100644 --- a/src/overlay_params.h +++ b/src/overlay_params.h @@ -60,6 +60,8 @@ extern "C" { OVERLAY_PARAM_CUSTOM(toggle_hud) \ OVERLAY_PARAM_CUSTOM(toggle_logging) \ OVERLAY_PARAM_CUSTOM(crosshair_size) \ + OVERLAY_PARAM_CUSTOM(offset_x) \ + OVERLAY_PARAM_CUSTOM(offset_y) \ OVERLAY_PARAM_CUSTOM(help) enum overlay_param_position { @@ -90,6 +92,8 @@ struct overlay_params { bool no_display; unsigned width; unsigned height; + unsigned offset_x; + unsigned offset_y; unsigned vsync; float font_size; KeySym toggle_hud;