From 7b5706b52c3145bba07dfbc95429798f9059360d Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Thu, 17 Sep 2026 20:00:50 -0400 Subject: Checkboxes for bitmasks Signed-off-by: Andrew Opalach --- Plugin.cs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'Plugin.cs') 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(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(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; -- cgit v1.2.3-101-g0448