Skip to content

Penumbra attach redraw modes #101

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions xivModdingFramework/Cache/XivCache.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,14 @@ public EModelingTool ModelingTool

public XivTexFormat DefaultTextureFormat { get; set; } = XivTexFormat.A8R8G8B8;

public enum EPenumbraRedrawMode
{
RedrawAll,
RedrawSelf,
NoRedraw,
}

public EPenumbraRedrawMode PenumbraRedrawMode { get; set; } = EPenumbraRedrawMode.RedrawAll;
}

/// <summary>
Expand Down
14 changes: 13 additions & 1 deletion xivModdingFramework/Helpers/PenumbraAPI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ namespace xivModdingFramework.Helpers
/// </summary>
public static class PenumbraAPI
{

/// <summary>
/// Calls /redraw on the Penumbra API.
/// </summary>
Expand All @@ -28,6 +27,19 @@ public static async Task<bool> Redraw()

}

/// <summary>
/// Calls /redraw on the Penumbra API to redraw only the local player.
/// </summary>
/// <returns></returns>
public static async Task<bool> RedrawSelf()
{
Dictionary<string, string> args = new()
{
{ "ObjectTableIndex", "0" }
};
return await Request("/redraw", args);
}

/// <summary>
/// Calls /reloadmod on the Penumbra API.
/// </summary>
Expand Down
6 changes: 5 additions & 1 deletion xivModdingFramework/Helpers/PenumbraAttachHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using xivModdingFramework.Cache;
using xivModdingFramework.Mods;
using xivModdingFramework.Mods.FileTypes;
using xivModdingFramework.Mods.FileTypes.PMP;
Expand Down Expand Up @@ -361,7 +362,10 @@ private static async Task PenumbraRefresh(bool reload = false)
{
await PenumbraAPI.ReloadMod(folder);
}
await PenumbraAPI.Redraw();
if (XivCache.FrameworkSettings.PenumbraRedrawMode == FrameworkSettings.EPenumbraRedrawMode.RedrawAll)
await PenumbraAPI.Redraw();
else if (XivCache.FrameworkSettings.PenumbraRedrawMode == FrameworkSettings.EPenumbraRedrawMode.RedrawSelf)
await PenumbraAPI.RedrawSelf();
}
}
catch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -847,7 +847,10 @@ internal void UNSAFE_AddFileInfo(FileStorageInformation storageInfo, XivDataFile
await PMP.CreateSimplePmp(settings.TargetPath, mpack, dict, null, false);

await PenumbraAPI.ReloadMod(di.Name);
await PenumbraAPI.Redraw();
if (XivCache.FrameworkSettings.PenumbraRedrawMode == FrameworkSettings.EPenumbraRedrawMode.RedrawAll)
await PenumbraAPI.Redraw();
else if (XivCache.FrameworkSettings.PenumbraRedrawMode == FrameworkSettings.EPenumbraRedrawMode.RedrawSelf)
await PenumbraAPI.RedrawSelf();

// Don't have real offsets to update to, since we don't write to game files.
return null;
Expand Down