From 24efeb3697f464c1a205421516b0d9ca108eb751 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Sun, 9 Aug 2026 21:20:43 -0400 Subject: Reduce reads in Parameter.Update() Signed-off-by: Andrew Opalach --- Plugin.cs | 52 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 22 deletions(-) (limited to 'Plugin.cs') diff --git a/Plugin.cs b/Plugin.cs index 111eb09..3ee06d3 100644 --- a/Plugin.cs +++ b/Plugin.cs @@ -9,6 +9,9 @@ using System.Runtime.CompilerServices; #if ENABLE_ASSERTS using System.Diagnostics; #endif +#if SHADER_FEATURES +using System.Runtime.InteropServices; +#endif using ImGuiNET; using SharpPluginLoader.Core; @@ -592,17 +595,18 @@ namespace WorldTuningTool case ParameterType.BYTE: { ref byte b1 = ref MemoryUtil.GetRef(baseObject + offset); + byte b = b1; if (overrideValue) { - if (b1 != (byte)valueInt) + if (b != (byte)valueInt) { - oValueInt = b1; + oValueInt = b; } b1 = (byte)valueInt; } else { - valueInt = b1; + valueInt = b; } break; } @@ -637,16 +641,16 @@ namespace WorldTuningTool case ParameterType.COLOR: { ref int i1 = ref MemoryUtil.GetRef(baseObject + offset); - int m1 = i1; + int m = i1; if (mask != 0) { - m1 = (i1 & mask) >> BitIndex(mask); + m = (m & mask) >> BitIndex(mask); } if (overrideValue) { - if (m1 != valueInt) + if (m != valueInt) { - oValueInt = m1; + oValueInt = m; } if (mask != 0) { @@ -659,42 +663,44 @@ namespace WorldTuningTool } else { - valueInt = m1; + valueInt = m; } break; } case ParameterType.FLOAT: { ref float f1 = ref MemoryUtil.GetRef(baseObject + offset); + float f = f1; if (overrideValue) { - if (f1 != valueV.X) + if (f != valueV.X) { - oValueV.X = f1; + oValueV.X = f; } f1 = valueV.X; } else { - valueV.X = f1; + valueV.X = f; } break; } case ParameterType.VECTOR2: { ref Vector2 v2 = ref MemoryUtil.GetRef(baseObject + offset); - Vector2 valueV2 = new Vector2(valueV.X, valueV.Y); + Vector2 v = v2; if (overrideValue) { - if (v2 != valueV2) + Vector2 valueV2 = new Vector2(valueV.X, valueV.Y); + if (v != valueV2) { - oValueV = new Vector4(v2.X, v2.Y, 0.0f, 0.0f); + oValueV = new Vector4(v.X, v.Y, 0.0f, 0.0f); } v2 = valueV2; } else { - valueV = new Vector4(v2.X, v2.Y, 0.0f, 0.0f); + valueV = new Vector4(v.X, v.Y, 0.0f, 0.0f); } break; } @@ -702,35 +708,37 @@ namespace WorldTuningTool case ParameterType.COLOR_FACTOR: { ref Vector3 v3 = ref MemoryUtil.GetRef(baseObject + offset); - Vector3 valueV3 = new Vector3(valueV.X, valueV.Y, valueV.Z); + Vector3 v = v3; if (overrideValue) { - if (v3 != valueV3) + Vector3 valueV3 = new Vector3(valueV.X, valueV.Y, valueV.Z); + if (v != valueV3) { - oValueV = new Vector4(v3.X, v3.Y, v3.Z, 0.0f); + oValueV = new Vector4(v.X, v.Y, v.Z, 0.0f); } v3 = valueV3; } else { - valueV = new Vector4(v3.X, v3.Y, v3.Z, 0.0f); + valueV = new Vector4(v.X, v.Y, v.Z, 0.0f); } break; } case ParameterType.VECTOR4: { ref Vector4 v4 = ref MemoryUtil.GetRef(baseObject + offset); + Vector4 v = v4; if (overrideValue) { - if (v4 != valueV) + if (v != valueV) { - oValueV = v4; + oValueV = v; } v4 = valueV; } else { - valueV = v4; + valueV = v; } break; } -- cgit v1.2.3-101-g0448