Material editor: Customizable highlight color

This commit is contained in:
Exter-N 2023-09-01 18:46:31 +02:00
parent 233a865c78
commit 686c53d919
2 changed files with 8 additions and 4 deletions

View file

@ -19,6 +19,7 @@ using Penumbra.GameData.Structs;
using Penumbra.Interop.MaterialPreview; using Penumbra.Interop.MaterialPreview;
using Penumbra.String; using Penumbra.String;
using Penumbra.String.Classes; using Penumbra.String.Classes;
using Penumbra.UI.Classes;
using static Penumbra.GameData.Files.ShpkFile; using static Penumbra.GameData.Files.ShpkFile;
namespace Penumbra.UI.AdvancedWindow; namespace Penumbra.UI.AdvancedWindow;
@ -668,12 +669,13 @@ public partial class ModEditWindow
private static void ApplyHighlight(ref MtrlFile.ColorSet.Row row, float time) private static void ApplyHighlight(ref MtrlFile.ColorSet.Row row, float time)
{ {
var level = Math.Sin(time * 2.0 * Math.PI) * 0.25 + 0.5; var level = (MathF.Sin(time * 2.0f * MathF.PI) + 2.0f) / 3.0f / 255.0f;
var levelSq = (float)(level * level); var baseColor = ColorId.InGameHighlight.Value();
var color = level * new Vector3(baseColor & 0xFF, (baseColor >> 8) & 0xFF, (baseColor >> 16) & 0xFF);
row.Diffuse = Vector3.Zero; row.Diffuse = Vector3.Zero;
row.Specular = Vector3.Zero; row.Specular = Vector3.Zero;
row.Emissive = new Vector3(levelSq); row.Emissive = color * color;
} }
public void Update() public void Update()

View file

@ -24,7 +24,8 @@ public enum ColorId
RedundantAssignment, RedundantAssignment,
NoModsAssignment, NoModsAssignment,
NoAssignment, NoAssignment,
SelectorPriority, SelectorPriority,
InGameHighlight,
} }
public static class Colors public static class Colors
@ -64,6 +65,7 @@ public static class Colors
ColorId.NoModsAssignment => ( 0x50000080, "'Use No Mods' Collection Assignment", "A collection assignment set to not use any mods at all."), ColorId.NoModsAssignment => ( 0x50000080, "'Use No Mods' Collection Assignment", "A collection assignment set to not use any mods at all."),
ColorId.NoAssignment => ( 0x00000000, "Unassigned Collection Assignment", "A collection assignment that is not configured to any collection and thus just has no specific treatment."), ColorId.NoAssignment => ( 0x00000000, "Unassigned Collection Assignment", "A collection assignment that is not configured to any collection and thus just has no specific treatment."),
ColorId.SelectorPriority => ( 0xFF808080, "Mod Selector Priority", "The priority displayed for non-zero priority mods in the mod selector."), ColorId.SelectorPriority => ( 0xFF808080, "Mod Selector Priority", "The priority displayed for non-zero priority mods in the mod selector."),
ColorId.InGameHighlight => ( 0xFFEBCF89, "In-Game Highlight", "An in-game element that has been highlighted for ease of editing."),
_ => throw new ArgumentOutOfRangeException( nameof( color ), color, null ), _ => throw new ArgumentOutOfRangeException( nameof( color ), color, null ),
// @formatter:on // @formatter:on
}; };