summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Lights.cs4
-rw-r--r--Plugin.cs33
2 files changed, 35 insertions, 2 deletions
diff --git a/Lights.cs b/Lights.cs
index 4927fd3..fd072e2 100644
--- a/Lights.cs
+++ b/Lights.cs
@@ -45,7 +45,7 @@ namespace WorldTuningTool
public uLight(nint lightObject) : base(lightObject)
{
Parameters.AddRange(new Parameter[]{
- M<int>("Group", 0x13C, ParameterType.INT, 0x7, pMinMaxStep(0, 7, 1)), // 1 = World, (1 << 1) = Player/Palico, (1 << 2) = NPCs
+ M<int>("Group", 0x13C, ParameterType.BITS, 0x7), // 1 = World, (1 << 1) = Player/Palico, (1 << 2) = NPCs
M<int>("Priority", 0x138, ParameterType.INT, (0xFF << 6), pMinMaxStep(0, 255, 1)),
P<int>("Color", 0x140, ParameterType.COLOR),
P<float>("Intensity", 0x144, ParameterType.FLOAT),
@@ -277,7 +277,7 @@ namespace WorldTuningTool
{
public override int Type => 3;
public override string Name => $"uSpotLight";
- public override string Info => $"0x{Object:X}, Parent: 0x{Parent:X}";
+ public override string Info => $"0x{Object:X}" + (Parent != 0x0 ? $", Parent: 0x{Parent:X}" : "");
public nint Parent => MemoryUtil.Read<nint>(Object + 0x600);
public int ParentNo => MemoryUtil.Read<int>(Object + 0x610);
public nint Target => MemoryUtil.Read<nint>(Object + 0x608);
diff --git a/Plugin.cs b/Plugin.cs
index 7da60f9..20d9786 100644
--- a/Plugin.cs
+++ b/Plugin.cs
@@ -163,6 +163,7 @@ namespace WorldTuningTool
INT,
ALIGNED_INT,
HEX,
+ BITS,
COLOR,
COLOR_FACTOR,
FLOAT,
@@ -444,6 +445,7 @@ namespace WorldTuningTool
case ParameterType.INT:
case ParameterType.ALIGNED_INT:
case ParameterType.HEX:
+ case ParameterType.BITS:
case ParameterType.COLOR:
{
ref int i1 = ref MemoryUtil.GetRef<int>(lastAddr + offset);
@@ -643,6 +645,7 @@ namespace WorldTuningTool
case ParameterType.INT:
case ParameterType.ALIGNED_INT:
case ParameterType.HEX:
+ case ParameterType.BITS:
case ParameterType.COLOR:
{
ref int i1 = ref MemoryUtil.GetRef<int>(baseObject + offset);
@@ -787,6 +790,7 @@ namespace WorldTuningTool
case ParameterType.BYTE:
case ParameterType.INT:
case ParameterType.HEX:
+ case ParameterType.BITS:
i1 = Math.Clamp(i1, min, max);
break;
case ParameterType.ALIGNED_INT:
@@ -854,6 +858,32 @@ namespace WorldTuningTool
}
break;
}
+ case ParameterType.BITS:
+ {
+ for (int i = 0; i < 32; i++)
+ {
+ int bit = (1 << i);
+ if ((mask & bit) == bit)
+ {
+ bool set = (i1 & bit) == bit;
+ if (ImGui.Checkbox($"##Bit{i}", ref set))
+ {
+ if (set)
+ {
+ i1 |= bit;
+ }
+ else
+ {
+ i1 &= ~bit;
+ }
+ valueChanged = true;
+ }
+ ImGui.SameLine();
+ }
+ }
+ ImGui.Text(label);
+ break;
+ }
case ParameterType.COLOR:
{
Vector4 colorV = ColorVectorFromInt(i1);
@@ -950,6 +980,7 @@ namespace WorldTuningTool
ImGui.Text($"({name}: {i1})");
break;
case ParameterType.HEX:
+ case ParameterType.BITS:
case ParameterType.COLOR:
ImGui.Text($"({name}: {i1:X})");
break;
@@ -1281,6 +1312,7 @@ namespace WorldTuningTool
case ParameterType.SHADOW_RESOLUTION:
return Int32ToString(sValueInt);
case ParameterType.HEX:
+ case ParameterType.BITS:
case ParameterType.COLOR:
return Int32ToString(sValueInt, "X8");
case ParameterType.FLOAT:
@@ -1317,6 +1349,7 @@ namespace WorldTuningTool
valueInt = StringToInt32(value);
break;
case ParameterType.HEX:
+ case ParameterType.BITS:
case ParameterType.COLOR:
valueInt = StringToInt32(value, 16);
break;