UHSampleGame.CoreObjects.Units.Unit.CheckIfStuck C# (CSharp) Method

CheckIfStuck() private method

private CheckIfStuck ( ) : bool
return bool
        bool CheckIfStuck()
        {
            if (TileMap.Tiles[CurrentTileID].PathsInts[goalTileID].Count < 1)
            {
                //FIX MATH.ABS CRAP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                diffX = Position.X - focalPoint.X;
                diffZ = Position.Z - focalPoint.Z;
                diffX = diffX >= 0 ? diffX : diffX * -1;
                diffZ = diffZ >= 0 ? diffZ : diffZ * -1;
                if ((diffX < 30 && diffZ < 30)
                    || !TileMap.GetTileFromPos(focalPoint).IsWalkable() || !isStuck)
                {
                    List<Tile> stuckTiles = TileMap.GetWalkableNeighbors(TileMap.Tiles[CurrentTileID]);
                    stuckTiles.Add(TileMap.Tiles[CurrentTileID]);

                    if (stuckTiles.Count == 1 && !TileMap.Tiles[CurrentTileID].IsWalkable())
                    {
                        Health = 0;
                        OnDied();
                        //throw new NotImplementedException("No walkable neighbors with blocked current Tile2... handle this!");
                    }

                    SetFocalPointAndVelocity(stuckTiles[rand.Next(stuckTiles.Count)].ID);
                }

                UpdatePositionAndRotation();
                isStuck = true;
                return true;
            }
            isStuck = false;
            return false;
        }