Link2 not working after upgrade from 4.3.82 to 4.3.90

Hi,

After upgrading from 4.3.82 to 4.3.90 on Unity 2022.3.10f1 the Link2 stopped working, it looks like agents are not seeing them.
Here is a video: https://youtu.be/hvnlM8AYqQ8
Here are a Pathfinder setting:

I can send you this small repro project if you want. If so, where do you want to send it?
Other link types seem not to work either.

Another strange thing is when using this code:

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            var worldPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            seeker.StartPath(transform.position, worldPosition, OnComplete);
        }
    }

    private void OnComplete(Path path)
    {
        ai.SetPath(path);
    }

I am getting this error:
ArgumentException: If you calculate the path using seeker.StartPath then this script will pick up the calculated path anyway as it listens for all paths the Seeker finishes calculating. You should not call SetPath in that case.

So instead I am calling this code, but not sure if that is the way to do it?

ai.SetPath(ABPath.Construct(transform.position, worldPosition));

Hi

Can you check to make sure the links are somewhat close to the nodes along the z axis as well?

Previously, they could be almost infinitely far away on the z axis. Now there is a limit to how far away the link will connect the nodes.

This is exactly right.

Yes, the pathfinder component and all link transforms has Z == 0, so this is not the case.

I have the minimum clean reproduction project ready and in the cloud, so if you like, just let me know where I should send the link.

In the test project, I got it working by adding a new empty point graph. It looks like originally the point graph for links was automatically added, but not in 4.3.90. It is still not working on my main project even when adding point graph manually, so I am still investigating.

So I think I figured out the problem.

  1. The Pathfinder and all links were on the same Z position, but all were children of a transform with Z = 10. So you are probably checking the links in absolute position and not relatively to the Pathfinder transform. Which is at least misleading. In other words, I found misleading that the transform position of the Pathfinder is not taken in account. Maybe would be nice to show a warning when the transform is moved out of zero position

  2. Point graph is not automatically added, which was working in previous versions. I consider at least this as a bug.

Hi

  1. The pathfinder transform itself does not affect anything. The grid graph has a center parameter, though. The links need to be close to the nodes in world space. It’s easiest to just check in the scene view.

  2. The point graph should not be required anymore. Are you sure it doesn’t work if you remove it?

No, the point graph is required to make it work, I tested this several times.

And there’s nothing in your code that relies on the point graph? Does the link show up as green in the scene view without the point graph? (green indicates that it is connected to the graph and should work properly).

I can create links without a point graph in the example scenes.

No, I have a separate minimum blank project just for testing, there is only Pathfinder and Player with following settings:

When there is only the grid graph, I click scan, no green links. When I add point graph, click scan, green line appears.

EDIT: PlayerMovement has only the minimum behaviour I showed above.

Hmm. I really can’t replicate this.
Would you mind sharing that test project?

Sure, will you give me e-mail where I can send it privately?

You can send it as a pm

OK, test project sent as pm

Thanks! I managed to replicate it!
The root cause was that the bounding box property on the grid graph was not correct if the node size was smaller than one.
I’ll include a fix in the next update.

Great you found it!

Now, a final question - I have multiple scenes with Pathfinder component. After the update, what is the best practice - should I delete the point graph everywhere (I used it only for the links)?

Still, I think the problem with links Z offset could be easily misleading, especially when changing the behavior so that it was working before, and now it is not without any warning. I am not sure if my case was so specific.

Yes. The code will actually attempt to delete it automatically during a migration, but it is conservative and will only delete it if it is really sure that it’s only used for links.

Great, thank you for support!

Hi, updated to 4.3.92 and started deleting all the point graphs (used specifically for Link2) and regenerating caches for all the scenes. And I found probably another bug.

When there is a Link2 inside DynamicGridObstacle that is active during cache generation, that link is never working in play mode, even after toggling the DynamicGridObstacle. I tried reproducing that reliably in several scenes and places. The solution is either:

  1. deactivate the DynamicGridObject gameObject during cache generation (which is not convenient as for the rest of the grid graph and obstacles it works fine activated, except for Link2)
  2. keep there the point graph (which is not convenient, as it breaks the rule that point graph should not be necessary)

Hi

I cannot replicate this. If I include a link that is inside a DynamicGridObstacle, and then during runtime deactivate that obstacle’s GameObject, the link is recalculated properly and shows up as green in the scene view.
Could you share some more details and screenshots?