hmm. Although it’s not exposed to blueprint (at least in 4.27 which is the source i’m using and able to search easily right at the moment), there is a corresponding OnLinkMoveFinished event in NavLinkCustomComponent. I haven’t personally had a strong desire to implement that as a Blueprintable event, but that’s actually a pretty good idea for your point 3, as I presently trigger a timer to start as long as the move will take to re-enable a smart link that i don’t want multiple AIs travelling through simultaneously. However, for that specific one, there’s a significant time delay needed after the move is complete, as well. So that might not help me either.
Also, just remembered as I’m editing this, you can also connect to the incoming AI’s OnMoveCompleted event (just make sure you disconnect afterwards!) and use that in the SmartLink to know when the move has either finished or aborted while in progress.
I do wonder if setting area to null would have any advantages or disadvantages over my current setting a link disabled when i don’t want anyone to use it. Theoretically, there’s some system for notifying other pawns in the nearby area when a link goes disabled, but as far as I can tell, it looks like the code for it was taken out by someone in Epic’s history and never fixed. (i should maybe look at that in the Ue5 branch)
I could be wrong, but IMO, simple links are only useful if the AI in question has no setup required – it can already navigate between two disconnected pieces of mesh, without anything else telling it how. I think a smart link is required if you have to do anything special, like setup the character or ai to specifically handle it. Am I wrong there?
Oh, also NavLinkProxy has access to HasMovingAgents(), which is blueprint accessible too, might be useful. It does say “smart link” on it’s comment, though.
I do feel like NavLinkCustomComponent wasn’t 100% completed and could use some extra features…