// if the other node is not on the same row or column as this node, return false
        public bool IsDiagonal(Node2D <W> to)
        {
            int dx = Math.Abs(X - to.X), dy = Math.Abs(Y - to.Y);

            return(dx > 0 && dy > 0);
        }
 public abstract int GetTravelCost(Node2D <W> node);
 protected abstract bool CanGoConditions(Node2D <W> from, Node2D <W> to);
 public bool IsOutOfBounds(Node2D <W> node)
 {
     return(node.X < 0 || node.X >= SizeX || node.Y < 0 || node.Y >= SizeY);
 }