public Vector3 ClampPositionIntoKnownTerrain(Vector3 pPos)
{
Vector3 ret = pPos;
// First, base addresses are never negative so correct for that possible problem.
if (ret.X < 0f || ret.Y < 0f)
{
ret.X = Util.Clamp<float>(ret.X, 0f, 1000000f);
ret.Y = Util.Clamp<float>(ret.Y, 0f, 1000000f);
DetailLog("{0},BSTerrainManager.ClampPositionToKnownTerrain,zeroingNegXorY,oldPos={1},newPos={2}",
BSScene.DetailLogZero, pPos, ret);
}
if (ret.X >= m_worldMax.X || ret.Y >= m_worldMax.Y)
{
ret.X = Util.Clamp<float>(ret.X, ret.X, m_worldMax.X);
ret.Y = Util.Clamp<float>(ret.Y, ret.X, m_worldMax.Y);
DetailLog("{0},BSTerrainManager.ClampPositionToKnownTerrain,maxingPosXorY,oldPos={1},newPos={2}",
BSScene.DetailLogZero, pPos, ret);
}
return ret;
}