diff options
| author | 2026-09-17 20:00:50 -0400 | |
|---|---|---|
| committer | 2026-09-17 20:00:50 -0400 | |
| commit | 7b5706b52c3145bba07dfbc95429798f9059360d (patch) | |
| tree | 9fc31eea7f169dffb98864b411a18a4070cf6f0b | |
| parent | 9106e19c3eb6a84fb10de2abfa1556ac67fa3313 (diff) | |
| download | WorldTuningTool-7b5706b52c3145bba07dfbc95429798f9059360d.tar.gz WorldTuningTool-7b5706b52c3145bba07dfbc95429798f9059360d.tar.bz2 WorldTuningTool-7b5706b52c3145bba07dfbc95429798f9059360d.zip | |
Checkboxes for bitmasks
Signed-off-by: Andrew Opalach <andrew@akon.city>
| -rw-r--r-- | Lights.cs | 4 | ||||
| -rw-r--r-- | Plugin.cs | 33 |
2 files changed, 35 insertions, 2 deletions
@@ -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); @@ -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; |