fixed stuff up
This commit is contained in:
parent
18d8721dd5
commit
e5ebe05571
4 changed files with 69 additions and 63 deletions
|
|
@ -1,4 +1,6 @@
|
|||
using Roboto.GameOffsets.States;
|
||||
using Serilog;
|
||||
using Terrain = Roboto.GameOffsets.States.Terrain;
|
||||
|
||||
namespace Roboto.Memory;
|
||||
|
||||
|
|
@ -64,9 +66,12 @@ public sealed class TerrainReader
|
|||
}
|
||||
|
||||
// Inline mode: TerrainStruct is inline at AreaInstance + TerrainListOffset
|
||||
// Single Read<Terrain> (0x1B0 = 432 bytes) replaces 5 individual reads
|
||||
var terrainBase = areaInstance + offsets.TerrainListOffset;
|
||||
var cols = (int)mem.Read<long>(terrainBase + offsets.TerrainDimensionsOffset);
|
||||
var rows = (int)mem.Read<long>(terrainBase + offsets.TerrainDimensionsOffset + 8);
|
||||
var t = mem.Read<Terrain>(terrainBase);
|
||||
|
||||
var cols = (int)t.Dimensions.X;
|
||||
var rows = (int)t.Dimensions.Y;
|
||||
|
||||
if (cols <= 0 || cols >= 1000 || rows <= 0 || rows >= 1000)
|
||||
return;
|
||||
|
|
@ -99,10 +104,9 @@ public sealed class TerrainReader
|
|||
return;
|
||||
}
|
||||
|
||||
// Read GridWalkableData StdVector (begin/end/cap pointers)
|
||||
var gridVecOffset = offsets.TerrainWalkableGridOffset;
|
||||
var gridBegin = mem.ReadPointer(terrainBase + gridVecOffset);
|
||||
var gridEnd = mem.ReadPointer(terrainBase + gridVecOffset + 8);
|
||||
// Grid vector pointers already available from the Terrain struct read
|
||||
var gridBegin = t.WalkableGrid.First;
|
||||
var gridEnd = t.WalkableGrid.Last;
|
||||
if (gridBegin == 0 || gridEnd <= gridBegin)
|
||||
return;
|
||||
|
||||
|
|
@ -110,7 +114,7 @@ public sealed class TerrainReader
|
|||
if (gridDataSize <= 0 || gridDataSize > 16 * 1024 * 1024)
|
||||
return;
|
||||
|
||||
var bytesPerRow = mem.Read<int>(terrainBase + offsets.TerrainBytesPerRowOffset);
|
||||
var bytesPerRow = t.BytesPerRow;
|
||||
if (bytesPerRow <= 0 || bytesPerRow > 0x10000)
|
||||
return;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue