mirror of
https://github.com/Ottermandias/Glamourer.git
synced 2025-12-12 10:17:23 +01:00
Update.
This commit is contained in:
parent
18ff905746
commit
22babad789
18 changed files with 160 additions and 111 deletions
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
|
|
@ -15,7 +15,7 @@ jobs:
|
||||||
- name: Setup .NET
|
- name: Setup .NET
|
||||||
uses: actions/setup-dotnet@v1
|
uses: actions/setup-dotnet@v1
|
||||||
with:
|
with:
|
||||||
dotnet-version: '8.x.x'
|
dotnet-version: '9.x.x'
|
||||||
- name: Restore dependencies
|
- name: Restore dependencies
|
||||||
run: dotnet restore
|
run: dotnet restore
|
||||||
- name: Download Dalamud
|
- name: Download Dalamud
|
||||||
|
|
|
||||||
2
.github/workflows/test_release.yml
vendored
2
.github/workflows/test_release.yml
vendored
|
|
@ -15,7 +15,7 @@ jobs:
|
||||||
- name: Setup .NET
|
- name: Setup .NET
|
||||||
uses: actions/setup-dotnet@v1
|
uses: actions/setup-dotnet@v1
|
||||||
with:
|
with:
|
||||||
dotnet-version: '8.x.x'
|
dotnet-version: '9.x.x'
|
||||||
- name: Restore dependencies
|
- name: Restore dependencies
|
||||||
run: dotnet restore
|
run: dotnet restore
|
||||||
- name: Download Dalamud
|
- name: Download Dalamud
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 9f9bdf0873899d2e45fabaca446bb1624303b418
|
Subproject commit 5e5c867a095eecac0dd494b30a33298a65e46426
|
||||||
|
|
@ -29,30 +29,30 @@ Global
|
||||||
Release|Any CPU = Release|Any CPU
|
Release|Any CPU = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{01EB903D-871F-4285-A8CF-6486561D5B5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{01EB903D-871F-4285-A8CF-6486561D5B5B}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
{01EB903D-871F-4285-A8CF-6486561D5B5B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{01EB903D-871F-4285-A8CF-6486561D5B5B}.Debug|Any CPU.Build.0 = Debug|x64
|
||||||
{01EB903D-871F-4285-A8CF-6486561D5B5B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{01EB903D-871F-4285-A8CF-6486561D5B5B}.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
{01EB903D-871F-4285-A8CF-6486561D5B5B}.Release|Any CPU.Build.0 = Release|Any CPU
|
{01EB903D-871F-4285-A8CF-6486561D5B5B}.Release|Any CPU.Build.0 = Release|x64
|
||||||
{29C589ED-7AF1-4DE9-82EF-33EBEF19AAFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{29C589ED-7AF1-4DE9-82EF-33EBEF19AAFA}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
{29C589ED-7AF1-4DE9-82EF-33EBEF19AAFA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{29C589ED-7AF1-4DE9-82EF-33EBEF19AAFA}.Debug|Any CPU.Build.0 = Debug|x64
|
||||||
{29C589ED-7AF1-4DE9-82EF-33EBEF19AAFA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{29C589ED-7AF1-4DE9-82EF-33EBEF19AAFA}.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
{29C589ED-7AF1-4DE9-82EF-33EBEF19AAFA}.Release|Any CPU.Build.0 = Release|Any CPU
|
{29C589ED-7AF1-4DE9-82EF-33EBEF19AAFA}.Release|Any CPU.Build.0 = Release|x64
|
||||||
{C0A2FAF8-C3AE-4B7B-ADDB-4AAC1A855428}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{C0A2FAF8-C3AE-4B7B-ADDB-4AAC1A855428}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
{C0A2FAF8-C3AE-4B7B-ADDB-4AAC1A855428}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{C0A2FAF8-C3AE-4B7B-ADDB-4AAC1A855428}.Debug|Any CPU.Build.0 = Debug|x64
|
||||||
{C0A2FAF8-C3AE-4B7B-ADDB-4AAC1A855428}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{C0A2FAF8-C3AE-4B7B-ADDB-4AAC1A855428}.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
{C0A2FAF8-C3AE-4B7B-ADDB-4AAC1A855428}.Release|Any CPU.Build.0 = Release|Any CPU
|
{C0A2FAF8-C3AE-4B7B-ADDB-4AAC1A855428}.Release|Any CPU.Build.0 = Release|x64
|
||||||
{AAFE22E7-0F9B-462A-AAA3-6EE3B268F3F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{AAFE22E7-0F9B-462A-AAA3-6EE3B268F3F8}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
{AAFE22E7-0F9B-462A-AAA3-6EE3B268F3F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{AAFE22E7-0F9B-462A-AAA3-6EE3B268F3F8}.Debug|Any CPU.Build.0 = Debug|x64
|
||||||
{AAFE22E7-0F9B-462A-AAA3-6EE3B268F3F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{AAFE22E7-0F9B-462A-AAA3-6EE3B268F3F8}.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
{AAFE22E7-0F9B-462A-AAA3-6EE3B268F3F8}.Release|Any CPU.Build.0 = Release|Any CPU
|
{AAFE22E7-0F9B-462A-AAA3-6EE3B268F3F8}.Release|Any CPU.Build.0 = Release|x64
|
||||||
{EF233CE2-F243-449E-BE05-72B9D110E419}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{EF233CE2-F243-449E-BE05-72B9D110E419}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
{EF233CE2-F243-449E-BE05-72B9D110E419}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{EF233CE2-F243-449E-BE05-72B9D110E419}.Debug|Any CPU.Build.0 = Debug|x64
|
||||||
{EF233CE2-F243-449E-BE05-72B9D110E419}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{EF233CE2-F243-449E-BE05-72B9D110E419}.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
{EF233CE2-F243-449E-BE05-72B9D110E419}.Release|Any CPU.Build.0 = Release|Any CPU
|
{EF233CE2-F243-449E-BE05-72B9D110E419}.Release|Any CPU.Build.0 = Release|x64
|
||||||
{9B46691B-FAB2-4CC3-9B89-C8B91A590F47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{9B46691B-FAB2-4CC3-9B89-C8B91A590F47}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||||
{9B46691B-FAB2-4CC3-9B89-C8B91A590F47}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{9B46691B-FAB2-4CC3-9B89-C8B91A590F47}.Debug|Any CPU.Build.0 = Debug|x64
|
||||||
{9B46691B-FAB2-4CC3-9B89-C8B91A590F47}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{9B46691B-FAB2-4CC3-9B89-C8B91A590F47}.Release|Any CPU.ActiveCfg = Release|x64
|
||||||
{9B46691B-FAB2-4CC3-9B89-C8B91A590F47}.Release|Any CPU.Build.0 = Release|Any CPU
|
{9B46691B-FAB2-4CC3-9B89-C8B91A590F47}.Release|Any CPU.Build.0 = Release|x64
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
|
||||||
|
|
@ -1,38 +1,13 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Dalamud.NET.Sdk/12.0.2">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net8.0-windows</TargetFramework>
|
|
||||||
<LangVersion>preview</LangVersion>
|
|
||||||
<PlatformTarget>x64</PlatformTarget>
|
|
||||||
<RootNamespace>Glamourer</RootNamespace>
|
<RootNamespace>Glamourer</RootNamespace>
|
||||||
<AssemblyName>Glamourer</AssemblyName>
|
<AssemblyName>Glamourer</AssemblyName>
|
||||||
<FileVersion>9.0.0.1</FileVersion>
|
<FileVersion>9.0.0.1</FileVersion>
|
||||||
<AssemblyVersion>9.0.0.1</AssemblyVersion>
|
<AssemblyVersion>9.0.0.1</AssemblyVersion>
|
||||||
<Company>SoftOtter</Company>
|
|
||||||
<Product>Glamourer</Product>
|
<Product>Glamourer</Product>
|
||||||
<Copyright>Copyright © 2023</Copyright>
|
<Copyright>Copyright © 2025</Copyright>
|
||||||
<Deterministic>true</Deterministic>
|
|
||||||
<OutputType>Library</OutputType>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
|
||||||
<Nullable>enable</Nullable>
|
|
||||||
<OutputPath>bin\$(Configuration)\</OutputPath>
|
<OutputPath>bin\$(Configuration)\</OutputPath>
|
||||||
<MSBuildWarningsAsMessages>$(MSBuildWarningsAsMessages);MSB3277</MSBuildWarningsAsMessages>
|
|
||||||
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
|
|
||||||
<ProduceReferenceAssembly>false</ProduceReferenceAssembly>
|
|
||||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
|
||||||
<DebugType>full</DebugType>
|
|
||||||
<Optimize>false</Optimize>
|
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
||||||
<DebugType>pdbonly</DebugType>
|
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|
@ -47,41 +22,6 @@
|
||||||
<EmbeddedResource Include="LegacyTattoo.raw" />
|
<EmbeddedResource Include="LegacyTattoo.raw" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<DalamudLibPath>$(AppData)\XIVLauncher\addon\Hooks\dev\</DalamudLibPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Reference Include="Dalamud">
|
|
||||||
<HintPath>$(DalamudLibPath)Dalamud.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="FFXIVClientStructs">
|
|
||||||
<HintPath>$(DalamudLibPath)FFXIVClientStructs.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="ImGui.NET">
|
|
||||||
<HintPath>$(DalamudLibPath)ImGui.NET.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="ImGuiScene">
|
|
||||||
<HintPath>$(DalamudLibPath)ImGuiScene.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Lumina">
|
|
||||||
<HintPath>$(DalamudLibPath)Lumina.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Lumina.Excel">
|
|
||||||
<HintPath>$(DalamudLibPath)Lumina.Excel.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Newtonsoft.Json">
|
|
||||||
<HintPath>$(DalamudLibPath)Newtonsoft.Json.dll</HintPath>
|
|
||||||
<Private>False</Private>
|
|
||||||
</Reference>
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Glamourer.Api\Glamourer.Api.csproj" />
|
<ProjectReference Include="..\Glamourer.Api\Glamourer.Api.csproj" />
|
||||||
<ProjectReference Include="..\OtterGui\OtterGui.csproj" />
|
<ProjectReference Include="..\OtterGui\OtterGui.csproj" />
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
"AssemblyVersion": "9.0.0.1",
|
"AssemblyVersion": "9.0.0.1",
|
||||||
"RepoUrl": "https://github.com/Ottermandias/Glamourer",
|
"RepoUrl": "https://github.com/Ottermandias/Glamourer",
|
||||||
"ApplicableVersion": "any",
|
"ApplicableVersion": "any",
|
||||||
"DalamudApiLevel": 11,
|
"DalamudApiLevel": 12,
|
||||||
"ImageUrls": null,
|
"ImageUrls": null,
|
||||||
"IconUrl": "https://raw.githubusercontent.com/Ottermandias/Glamourer/master/images/icon.png"
|
"IconUrl": "https://raw.githubusercontent.com/Ottermandias/Glamourer/master/images/icon.png"
|
||||||
}
|
}
|
||||||
|
|
@ -173,7 +173,7 @@ public sealed class DesignQuickBar : Window, IDisposable
|
||||||
available |= 2;
|
available |= 2;
|
||||||
_tooltipBuilder.Append("Right-Click: Apply ")
|
_tooltipBuilder.Append("Right-Click: Apply ")
|
||||||
.Append(design.ResolveName(_config.Ephemeral.IncognitoMode))
|
.Append(design.ResolveName(_config.Ephemeral.IncognitoMode))
|
||||||
.Append(" to {_targetIdentifier}.");
|
.Append(" to ").Append(_config.Ephemeral.IncognitoMode ? _targetIdentifier.Incognito(null) : _targetIdentifier.ToName());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (available == 0)
|
if (available == 0)
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ public sealed unsafe class AdvancedDyePopup(
|
||||||
: ByteString.FromSpanUnsafe(materialHandle->ResourceHandle.FileName.AsSpan(), true).ToString();
|
: ByteString.FromSpanUnsafe(materialHandle->ResourceHandle.FileName.AsSpan(), true).ToString();
|
||||||
var gamePath = modelHandle == null
|
var gamePath = modelHandle == null
|
||||||
? string.Empty
|
? string.Empty
|
||||||
: modelHandle->GetMaterialFileNameBySlotAsString(index.MaterialIndex);
|
: modelHandle->GetMaterialFileNameBySlot(index.MaterialIndex).ToString();
|
||||||
return (path, gamePath);
|
return (path, gamePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ public sealed class PenumbraChangedItemTooltip : IDisposable
|
||||||
.Select(p => new KeyValuePair<EquipSlot, EquipItem>(p.First, p.Second));
|
.Select(p => new KeyValuePair<EquipSlot, EquipItem>(p.First, p.Second));
|
||||||
|
|
||||||
public ChangedItemType LastType { get; private set; } = ChangedItemType.None;
|
public ChangedItemType LastType { get; private set; } = ChangedItemType.None;
|
||||||
public uint LastId { get; private set; } = 0;
|
public uint LastId { get; private set; }
|
||||||
public DateTime LastTooltip { get; private set; } = DateTime.MinValue;
|
public DateTime LastTooltip { get; private set; } = DateTime.MinValue;
|
||||||
public DateTime LastClick { get; private set; } = DateTime.MinValue;
|
public DateTime LastClick { get; private set; } = DateTime.MinValue;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,9 @@
|
||||||
using Dalamud.Plugin.Services;
|
using Dalamud.Plugin.Services;
|
||||||
using FFXIVClientStructs.FFXIV.Client.Graphics.Kernel;
|
|
||||||
using Lumina.Data.Files;
|
|
||||||
using OtterGui.Services;
|
using OtterGui.Services;
|
||||||
using Penumbra.GameData.Files.MaterialStructs;
|
using Penumbra.GameData.Files.MaterialStructs;
|
||||||
using Penumbra.String.Functions;
|
using Penumbra.String.Functions;
|
||||||
using SharpGen.Runtime;
|
using SharpGen.Runtime;
|
||||||
using Vortice.Direct3D11;
|
using Vortice.Direct3D11;
|
||||||
using Vortice.DXGI;
|
|
||||||
using MapFlags = Vortice.Direct3D11.MapFlags;
|
using MapFlags = Vortice.Direct3D11.MapFlags;
|
||||||
using Texture = FFXIVClientStructs.FFXIV.Client.Graphics.Kernel.Texture;
|
using Texture = FFXIVClientStructs.FFXIV.Client.Graphics.Kernel.Texture;
|
||||||
|
|
||||||
|
|
@ -14,7 +11,7 @@ namespace Glamourer.Interop.Material;
|
||||||
|
|
||||||
public unsafe class DirectXService(IFramework framework) : IService
|
public unsafe class DirectXService(IFramework framework) : IService
|
||||||
{
|
{
|
||||||
private readonly object _lock = new();
|
private readonly object _lock = new();
|
||||||
private readonly ConcurrentDictionary<nint, (DateTime Update, ColorTable.Table Table)> _textures = [];
|
private readonly ConcurrentDictionary<nint, (DateTime Update, ColorTable.Table Table)> _textures = [];
|
||||||
|
|
||||||
/// <summary> Generate a color table the way the game does inside the original texture, and release the original. </summary>
|
/// <summary> Generate a color table the way the game does inside the original texture, and release the original. </summary>
|
||||||
|
|
@ -32,9 +29,7 @@ public unsafe class DirectXService(IFramework framework) : IService
|
||||||
|
|
||||||
lock (_lock)
|
lock (_lock)
|
||||||
{
|
{
|
||||||
using var texture = new SafeTextureHandle(Device.Instance()->CreateTexture2D(textureSize, 1,
|
using var texture = new SafeTextureHandle(MaterialService.CreateColorTableTexture(), false);
|
||||||
(uint)TexFile.TextureFormat.R16G16B16A16F,
|
|
||||||
(uint)(TexFile.Attribute.TextureType2D | TexFile.Attribute.Managed | TexFile.Attribute.Immutable), 7), false);
|
|
||||||
if (texture.IsInvalid)
|
if (texture.IsInvalid)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
@ -119,7 +114,7 @@ public unsafe class DirectXService(IFramework framework) : IService
|
||||||
{
|
{
|
||||||
var desc = resource.Description1;
|
var desc = resource.Description1;
|
||||||
|
|
||||||
if (desc.Format is not Format.R16G16B16A16_Float
|
if (desc.Format is not Vortice.DXGI.Format.R16G16B16A16_Float
|
||||||
|| desc.Width != MaterialService.TextureWidth
|
|| desc.Width != MaterialService.TextureWidth
|
||||||
|| desc.Height != MaterialService.TextureHeight
|
|| desc.Height != MaterialService.TextureHeight
|
||||||
|| map.DepthPitch != map.RowPitch * desc.Height)
|
|| map.DepthPitch != map.RowPitch * desc.Height)
|
||||||
|
|
|
||||||
|
|
@ -9,18 +9,24 @@ namespace Glamourer.Interop.Material;
|
||||||
|
|
||||||
public static unsafe class MaterialService
|
public static unsafe class MaterialService
|
||||||
{
|
{
|
||||||
|
private const TextureFormat Format = TextureFormat.R16G16B16A16_FLOAT;
|
||||||
|
private const TextureFlags Flags = TextureFlags.TextureType2D | TextureFlags.Managed | TextureFlags.Immutable;
|
||||||
|
|
||||||
public const int TextureWidth = 8;
|
public const int TextureWidth = 8;
|
||||||
public const int TextureHeight = ColorTable.NumRows;
|
public const int TextureHeight = ColorTable.NumRows;
|
||||||
public const int MaterialsPerModel = 10;
|
public const int MaterialsPerModel = 10;
|
||||||
|
|
||||||
public static bool GenerateNewColorTable(in ColorTable.Table colorTable, out Texture* texture)
|
public static Texture* CreateColorTableTexture()
|
||||||
{
|
{
|
||||||
var textureSize = stackalloc int[2];
|
var textureSize = stackalloc int[2];
|
||||||
textureSize[0] = TextureWidth;
|
textureSize[0] = TextureWidth;
|
||||||
textureSize[1] = TextureHeight;
|
textureSize[1] = TextureHeight;
|
||||||
|
return Device.Instance()->CreateTexture2D(textureSize, 1, Format, Flags, 7);
|
||||||
|
}
|
||||||
|
|
||||||
texture = Device.Instance()->CreateTexture2D(textureSize, 1, (uint)TexFile.TextureFormat.R16G16B16A16F,
|
public static bool GenerateNewColorTable(in ColorTable.Table colorTable, out Texture* texture)
|
||||||
(uint)(TexFile.Attribute.TextureType2D | TexFile.Attribute.Managed | TexFile.Attribute.Immutable), 7);
|
{
|
||||||
|
texture = CreateColorTableTexture();
|
||||||
if (texture == null)
|
if (texture == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,7 @@ public sealed unsafe class PrepareColorSet
|
||||||
public static ColorRow.Mode GetMode(MaterialResourceHandle* handle)
|
public static ColorRow.Mode GetMode(MaterialResourceHandle* handle)
|
||||||
=> handle == null
|
=> handle == null
|
||||||
? ColorRow.Mode.Dawntrail
|
? ColorRow.Mode.Dawntrail
|
||||||
: handle->ShpkNameSpan.SequenceEqual("characterlegacy.shpk"u8)
|
: handle->ShpkName.AsSpan().SequenceEqual("characterlegacy.shpk"u8)
|
||||||
? ColorRow.Mode.Legacy
|
? ColorRow.Mode.Legacy
|
||||||
: ColorRow.Mode.Dawntrail;
|
: ColorRow.Mode.Dawntrail;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -190,7 +190,7 @@ public class CustomizeUnlockManager : IDisposable, ISavable
|
||||||
? "Eternal Bond"
|
? "Eternal Bond"
|
||||||
: x.Value.HintItem.ValueNullable?.Name.ExtractText().Replace("Modern Aesthetics - ", string.Empty)
|
: x.Value.HintItem.ValueNullable?.Name.ExtractText().Replace("Modern Aesthetics - ", string.Empty)
|
||||||
?? string.Empty;
|
?? string.Empty;
|
||||||
ret.TryAdd(hair, (x.Value.Data, name));
|
ret.TryAdd(hair, (x.Value.UnlockLink, name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -201,7 +201,7 @@ public class CustomizeUnlockManager : IDisposable, ISavable
|
||||||
{
|
{
|
||||||
var name = x.Value.HintItem.ValueNullable?.Name.ExtractText().Replace("Modern Cosmetics - ", string.Empty)
|
var name = x.Value.HintItem.ValueNullable?.Name.ExtractText().Replace("Modern Cosmetics - ", string.Empty)
|
||||||
?? string.Empty;
|
?? string.Empty;
|
||||||
ret.TryAdd(paint, (x.Value.Data, name));
|
ret.TryAdd(paint, (x.Value.UnlockLink, name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
108
Glamourer/packages.lock.json
Normal file
108
Glamourer/packages.lock.json
Normal file
|
|
@ -0,0 +1,108 @@
|
||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"dependencies": {
|
||||||
|
"net9.0-windows7.0": {
|
||||||
|
"DalamudPackager": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[12.0.0, )",
|
||||||
|
"resolved": "12.0.0",
|
||||||
|
"contentHash": "J5TJLV3f16T/E2H2P17ClWjtfEBPpq3yxvqW46eN36JCm6wR+EaoaYkqG9Rm5sHqs3/nK/vKjWWyvEs/jhKoXw=="
|
||||||
|
},
|
||||||
|
"DotNet.ReproducibleBuilds": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[1.2.25, )",
|
||||||
|
"resolved": "1.2.25",
|
||||||
|
"contentHash": "xCXiw7BCxHJ8pF6wPepRUddlh2dlQlbr81gXA72hdk4FLHkKXas7EH/n+fk5UCA/YfMqG1Z6XaPiUjDbUNBUzg=="
|
||||||
|
},
|
||||||
|
"Vortice.Direct3D11": {
|
||||||
|
"type": "Direct",
|
||||||
|
"requested": "[3.4.2-beta, )",
|
||||||
|
"resolved": "3.4.2-beta",
|
||||||
|
"contentHash": "CWVMTF7ebylzzXbQXVp5C9UpBB/L+EpX2OxSdb2wlzcsdEmrev/Ith8wVs0WjZ6DbA0WiiybnYAWqB5v0nOO/A==",
|
||||||
|
"dependencies": {
|
||||||
|
"SharpGen.Runtime": "2.1.2-beta",
|
||||||
|
"Vortice.DXGI": "3.4.2-beta"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"JetBrains.Annotations": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "2024.3.0",
|
||||||
|
"contentHash": "ox5pkeLQXjvJdyAB4b2sBYAlqZGLh3PjSnP1bQNVx72ONuTJ9+34/+Rq91Fc0dG29XG9RgZur9+NcP4riihTug=="
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.DependencyInjection": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "9.0.2",
|
||||||
|
"contentHash": "ZffbJrskOZ40JTzcTyKwFHS5eACSWp2bUQBBApIgGV+es8RaTD4OxUG7XxFr3RIPLXtYQ1jQzF2DjKB5fZn7Qg==",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Microsoft.Extensions.DependencyInjection.Abstractions": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "9.0.2",
|
||||||
|
"contentHash": "MNe7GSTBf3jQx5vYrXF0NZvn6l7hUKF6J54ENfAgCO8y6xjN1XUmKKWG464LP2ye6QqDiA1dkaWEZBYnhoZzjg=="
|
||||||
|
},
|
||||||
|
"SharpGen.Runtime": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "2.1.2-beta",
|
||||||
|
"contentHash": "nqZAjfEG1jX1ivvdZLsi6Pkt0DiOJyuOgRgldNFsmjXFPhxUbXQibofLSwuDZidL2kkmtTF8qLoRIeqeVdXgYw=="
|
||||||
|
},
|
||||||
|
"SharpGen.Runtime.COM": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "2.1.2-beta",
|
||||||
|
"contentHash": "HBCrb6HfnUWx9v5/GjJeBr5DuodZLnHlFQQYXPrQs1Hbe1c6Wd0uCXf+SJp4hW8fQNxjXEu0FgiyHGlA/SRzRw==",
|
||||||
|
"dependencies": {
|
||||||
|
"SharpGen.Runtime": "2.1.2-beta"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Vortice.DirectX": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "3.4.2-beta",
|
||||||
|
"contentHash": "EwDbemXkmEiDGZVDem25uiEcZBYOMb+wzePuta+M/k2LXrQVGPknZhZUK56+QlHhI+Ducf/d+J75wgBzEjKi2g==",
|
||||||
|
"dependencies": {
|
||||||
|
"SharpGen.Runtime": "2.1.2-beta",
|
||||||
|
"SharpGen.Runtime.COM": "2.1.2-beta",
|
||||||
|
"Vortice.Mathematics": "1.7.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Vortice.DXGI": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "3.4.2-beta",
|
||||||
|
"contentHash": "T4S3pp6l/SGJ6SH3ebCbodN/bimGOkIBiIYKeBpVEis7+/ac1XIjyzgSTJ5XsH3o3hSH7DqSbP6Yo6mL9nyFQA==",
|
||||||
|
"dependencies": {
|
||||||
|
"SharpGen.Runtime": "2.1.2-beta",
|
||||||
|
"Vortice.DirectX": "3.4.2-beta"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Vortice.Mathematics": {
|
||||||
|
"type": "Transitive",
|
||||||
|
"resolved": "1.7.6",
|
||||||
|
"contentHash": "W8FNv850lPGxmHphwLyi1qnUlQHZBxh/62EenFJTaY6acPP29Fk0xMQJI60G+YNlsVJb3fSoriuW+ong5sM5UQ=="
|
||||||
|
},
|
||||||
|
"glamourer.api": {
|
||||||
|
"type": "Project"
|
||||||
|
},
|
||||||
|
"ottergui": {
|
||||||
|
"type": "Project",
|
||||||
|
"dependencies": {
|
||||||
|
"JetBrains.Annotations": "[2024.3.0, )",
|
||||||
|
"Microsoft.Extensions.DependencyInjection": "[9.0.2, )"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"penumbra.api": {
|
||||||
|
"type": "Project"
|
||||||
|
},
|
||||||
|
"penumbra.gamedata": {
|
||||||
|
"type": "Project",
|
||||||
|
"dependencies": {
|
||||||
|
"OtterGui": "[1.0.0, )",
|
||||||
|
"Penumbra.Api": "[5.6.1, )",
|
||||||
|
"Penumbra.String": "[1.0.6, )"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"penumbra.string": {
|
||||||
|
"type": "Project"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
OtterGui
2
OtterGui
|
|
@ -1 +1 @@
|
||||||
Subproject commit 13f1a90b88d2b8572480748a209f957b70d6a46f
|
Subproject commit 3396ee176fa72ad2dfb2de3294f7125ebce4dae5
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 70f046830cc7cd35b3480b12b7efe94182477fbb
|
Subproject commit 2cbf4bace53a5749d3eab1ff03025a6e6bd9fc37
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 96163f79e13c7d52cc36cdd82ab4e823763f4f31
|
Subproject commit 9ae4a97110fff005a54213815086ce950d4d8b2d
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 4eb7c118cdac5873afb97cb04719602f061f03b7
|
Subproject commit 2896c0561f60827f97408650d52a15c38f4d9d10
|
||||||
Loading…
Add table
Add a link
Reference in a new issue