feat(honorific): render glow outline as opt-in (gradient deferred)
Honorific's TitleData carries Glow / Color3 / GradientColourSet / GradientAnimationStyle beyond the Title + Color we parsed in Cycle 1. The DTO now mirrors all four so the JSON roundtrip doesn't silently drop fields. Rendering for v1.4.7 covers Glow only: when Config.ShowHonorificGlow is on and the title has a Glow colour, the chat header title gets an 8-direction ±1px draw-list outline pre-pass in the glow colour at 0.4 alpha, then the primary text on top. Gradient (Color3 / GradientColourSet / GradientAnimationStyle) is parsed and stashed for a later cycle — porting the full animation needs Honorific's hardcoded Pride-palette list and GradientSystem.cs (or an upstream IPC PR exposing the resolved frame colour). Tracked as "Honorific Full Gradient Port" in the vault backlog. ShowHonorificGlow defaults OFF — keeps v1.4.6 visuals untouched and dodges per-frame DrawList overhead on low-end hardware. Tooltip flags the gradient deferral so users aren't surprised by static rendering.
This commit is contained in:
@@ -1999,10 +1999,7 @@ public sealed class ChatLogWindow : Window
|
||||
ImGui.TextUnformatted(FontAwesomeIcon.Crown.ToIconString());
|
||||
}
|
||||
ImGui.SameLine(0f, gapAfterCrown);
|
||||
using (ImRaii.PushColor(ImGuiCol.Text, titleColor))
|
||||
{
|
||||
ImGui.TextUnformatted(rendered);
|
||||
}
|
||||
DrawHonorificTitleText(rendered, titleColor, title.Glow);
|
||||
ImGui.EndGroup();
|
||||
|
||||
if (ImGui.IsItemHovered())
|
||||
@@ -2013,6 +2010,35 @@ public sealed class ChatLogWindow : Window
|
||||
ImGui.SameLine();
|
||||
}
|
||||
|
||||
// Renders the title text, optionally with a glow outline pre-pass. Glow is
|
||||
// drawn at 8 cardinal offsets (±1 px) in the glow colour at reduced alpha,
|
||||
// then the primary text on top. The pre-pass uses the window draw list so
|
||||
// it composites correctly with the regular ImGui text that follows.
|
||||
private void DrawHonorificTitleText(string rendered, Vector4 titleColor, Vector3? glow)
|
||||
{
|
||||
if (Plugin.Config.ShowHonorificGlow && glow is { } g)
|
||||
{
|
||||
var pos = ImGui.GetCursorScreenPos();
|
||||
var glowColor = new Vector4(g.X, g.Y, g.Z, 0.4f);
|
||||
var glowAbgr = ImGui.ColorConvertFloat4ToU32(glowColor);
|
||||
var drawList = ImGui.GetWindowDrawList();
|
||||
for (var dy = -1; dy <= 1; dy++)
|
||||
{
|
||||
for (var dx = -1; dx <= 1; dx++)
|
||||
{
|
||||
if (dx == 0 && dy == 0)
|
||||
continue;
|
||||
drawList.AddText(new Vector2(pos.X + dx, pos.Y + dy), glowAbgr, rendered);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
using (ImRaii.PushColor(ImGuiCol.Text, titleColor))
|
||||
{
|
||||
ImGui.TextUnformatted(rendered);
|
||||
}
|
||||
}
|
||||
|
||||
// One-time hint banner for the pop-out header button and right-click pathway.
|
||||
private float DrawV061HintBannerIfNeeded()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user