reduced memory usage of DtLink.

This commit is contained in:
ikpil 2024-05-16 00:46:05 +09:00 committed by Ikpil
parent c3208f7968
commit 886afd20cd
2 changed files with 13 additions and 14 deletions

View File

@ -27,12 +27,11 @@ namespace DotRecast.Detour
/// @see dtMeshTile
public class DtLink
{
public readonly int index; // DtMeshTile.links array index
public long refs; //< Neighbour reference. (The neighbor that is linked to.)
public int next; //< Index of the next link.
public int edge; //< Index of the polygon edge that owns this link.
public int side; //< If a boundary link, defines on which side the link is.
public int bmin; //< If a boundary link, defines the minimum sub-edge area.
public int bmax; //< If a boundary link, defines the maximum sub-edge area.
public byte edge; //< Index of the polygon edge that owns this link.
public byte side; //< If a boundary link, defines on which side the link is.
public byte bmin; //< If a boundary link, defines the minimum sub-edge area.
public byte bmax; //< If a boundary link, defines the maximum sub-edge area.
}
}

View File

@ -587,7 +587,7 @@ namespace DotRecast.Detour
int idx = AllocLink(tile);
DtLink link = tile.links[idx];
link.refs = @base | (long)(poly.neis[j] - 1);
link.edge = j;
link.edge = (byte)j;
link.side = 0xff;
link.bmin = link.bmax = 0;
// Add to linked list.
@ -684,8 +684,8 @@ namespace DotRecast.Detour
{
DtLink link = tile.links[idx];
link.refs = connectPoly.refs;
link.edge = j;
link.side = dir;
link.edge = (byte)j;
link.side = (byte)dir;
link.next = poly.firstLink;
poly.firstLink = idx;
@ -704,8 +704,8 @@ namespace DotRecast.Detour
tmax = temp;
}
link.bmin = (int)MathF.Round(Math.Clamp(tmin, 0.0f, 1.0f) * 255.0f);
link.bmax = (int)MathF.Round(Math.Clamp(tmax, 0.0f, 1.0f) * 255.0f);
link.bmin = (byte)MathF.Round(Math.Clamp(tmin, 0.0f, 1.0f) * 255.0f);
link.bmax = (byte)MathF.Round(Math.Clamp(tmax, 0.0f, 1.0f) * 255.0f);
}
else if (dir == 2 || dir == 6)
{
@ -720,8 +720,8 @@ namespace DotRecast.Detour
tmax = temp;
}
link.bmin = (int)MathF.Round(Math.Clamp(tmin, 0.0f, 1.0f) * 255.0f);
link.bmax = (int)MathF.Round(Math.Clamp(tmax, 0.0f, 1.0f) * 255.0f);
link.bmin = (byte)MathF.Round(Math.Clamp(tmin, 0.0f, 1.0f) * 255.0f);
link.bmax = (byte)MathF.Round(Math.Clamp(tmax, 0.0f, 1.0f) * 255.0f);
}
}
}
@ -790,7 +790,7 @@ namespace DotRecast.Detour
DtLink link = target.links[idx];
link.refs = refs;
link.edge = 1;
link.side = oppositeSide;
link.side = (byte)oppositeSide;
link.bmin = link.bmax = 0;
// Add to linked list.
link.next = targetPoly.firstLink;
@ -805,7 +805,7 @@ namespace DotRecast.Detour
link = tile.links[tidx];
link.refs = GetPolyRefBase(target) | (long)targetCon.poly;
link.edge = 0xff;
link.side = (side == -1 ? 0xff : side);
link.side = (byte)(side == -1 ? 0xff : side);
link.bmin = link.bmax = 0;
// Add to linked list.
link.next = landPoly.firstLink;