There is a search feature for finding nodes by their name, but not by what events they listen to, or otherwise what they do for example.
The category of the nodes is more or less also hinting what they do of course.
But maybe I completely misunderstood the question. Did you instead mean searching in the existing graph and nodes, like filtering them?
If so, this feature does not exists, but I would like to hear some ideas if you care to elaborate.
Ok. If I have a CustomActionTask in some category, for example “Common actions”, and task called “IsPlayerInView”, how can I detect all graphs, which are using this action task? And, yes, feature with filtering nodes in current graph by some predicate (for example event name in conditional decorators) would be really helpful.
And I can’t imagine how I can collaborate with others developers in one project. Let’s assume that new developer joins to project. His task is to expand some functionality when some event triggered. How will he find places and objects to make a changes to? If project is plain old unity project without nodecanvas component he will just grep all over a codebase by “EventName”.
Nodecanvas is really awesome, but are there any refactoring tools?
Right now there is no way to find all graphs that are using a specific task, but I just added this in the TO DO list and I will try to implement this soon. The way I see it working, would be by a command in the right click context menu of a script in the project, similar to how Unity does it’s own “Find References In Scene”, only in NodeCanvas case, an editor window will open listing all graph assets using that task script. Is that also the way you suggest this to work for example?
Now as far as collaborating with other people and refactoring, I am unfortunately not sure what you suggest, or what feature you would like to see implemented and that which are now missing (apart from the above). Would you please elaborate on those things a bit more specifically?
I think that your solution sounds pretty cool. But it not covers use case when I want to find event listeners. Assume I have a GameObject which works as gamemanager for scene. It has many event listeners which comes from different objects in the scene and do some work for any event (enables/disables buttons, increase/decrease score etc.). It has really huge behaviour tree graph. Looks like image in attachment. It will be really cool if I could just open this graph editor window and type cmd+F, type eventName or other actionName and needed node makes highlighted, focused or detected by some other way.
Or may be I use nodecanvas wrong way and don’t need to build such complex graphs? How do you think?
Complexity is not an issue. One thing that I really suggest you can do in case you have a lot of events with the same name (like I see here (“DECOMPOSE FINISHED”), would be to instead of using direct string names in the ActionTask, to instead use Linked Variable for those strings. This way, all events can be viewed in the Variables list, all tasks can reference those in common and can also be changed much easier. With the new feature in version 2.6.0, you can also categorize these variables under a named header. Following is a screen of what I mean:
Let me know if this helps in managing your events.
I will also take a look at your suggestions and see what can be done 🙂