// // MemoryExtensions.cs // // Copyright (c) František Boháček. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using Reloaded.Memory.Sources; namespace NosSmooth.LocalBinding.Extensions; /// /// Extension methods for . /// public static class MemoryExtensions { /// /// Follows the offsets to a 32-bit pointer. /// /// The memory. /// The static address to follow offsets from. /// The offsets, first offset is the 0-th element. /// The last offset without evaluating a pointer. /// A final address. public static nuint FollowStaticAddressOffsets ( this IMemory memory, int staticAddress, int[] offsets, int lastOffset = 0 ) { int address = staticAddress; foreach (var offset in offsets) { memory.SafeRead((nuint)(address + offset), out address); } return (nuint)(address + lastOffset); } }