FlowCanvas Forums › Support › Suggestions
Tagged: features
So, as I told in the other topic, I’ve worked for a long time with uScript and now starting to get use to Flow Canvas. Here are features I miss:
1. Deleting the connection with the DEL key when it is selected. I know, that I can select a connection dot and delete it, but that’s not obvious and kinda counter-intuitive. The UX you expect – when you select a connection (it become white) you can delete it just by pressing DEL.
2. Ctrl+C / Ctrl+V doesn’t work. Don’t know why (because context commands are available in the mouse menu). I’m very used to Ctrl+C/Ctrl+V blocks in the uScript editor and hope that will come to flowCanvas also.
3. Default values (or I didn’t find the way?). I’d like to have some attribute like [DefaultValue(10f)] for the float input field for example. Now I overriden it with a strange code like:
1 2 3 4 5 6 7 |
protected override void OnNodeInspectorGUI() { ValueInput<float> ptime = GetInputPort("Time") as ValueInput<float>; if (ptime.isDefaultValue) ptime.serializedValue = 10f; base.OnNodeInspectorGUI(); } |
And some features that don’t exist in uScript but would be great to have in flowCanvas:
4. Enter doesn’t add a block in the block filter. I click right mouse button, start typing the block name and when I see it (and my desired block is hilighted with the cursor) – I still can’t press “Enter” and add it.
5. Attribute to make name+icon visible on the block at the same time (modified sources by myself for now 😉 )
6. I didn’t find the way to set string back to NULL once you’ve entered the value. Can be usefull for optional input parameters.
7. Is there any way to make a node with the input to the right and output to the left? I need it for one specific use – to avoid crossing connections in backwards loops like this:
(Or maybe just to have one single block that does it, something like “DummyBackwards”)
In all other cases flowCanvas looks very promising and I hope we will stay with it (and NodeCanvas also) on our current project. In case if you’re interested, it is a “Graveyard Keeper”
PS: Will add this topic when I find something more 🙂
Developer at Lazy Bear Games
http://www.lazybeargames.com
Hey,
Thanks a lot for the suggestions! Let me address them in order:
1) DELETE key should delete the selected connection. I’ve just re-checked to confirm and works as expected. Does this always no work for you, or sometimes?
2) Sure, I will add ctrl c/v shortcuts for copy/paste.
Initially I didn’t exactly because copy/paste is available in mouse menu :).
3) Yeah. Default values for ports is something I wanted to add for some time now. I will try to get them in the next version!
For normal nodes (ones extending FlowNode/FlowControlNode etc), I am leaning towards something like this:
1 2 3 |
AddValueInput<float>("number", 13f); |
By the way it’s already possible to do this (a bit hacky though, but better than writing an inspector just for this 🙂 ):
1 2 3 |
AddValueInput<float>("number").serializedValue = 13f; |
For Simplex nodes, indeed a [DefaultValue] attribute is the best option to add and I will do.
4) Enter does work for adding the highlighted node, but if the search field is still in focus, the first Enter hit will be consumed by the search field. The second one will work. If search field is not in focus 1 Enter hit should work fine.
I haven’t yet found a good solution around this, but can you confirm that it does even if with the above constrains?
5) Sure. I am thinking of adding an enum parameter to the existing [Icon] attribute to specify if the icon is Solo, or WithName for example. So this could be used like this [Icon(“Keyboard”, IconAttribute.Mode.WithName )]. Just an example.
6) It’s true that a string can’t be set back to null right now. The underline problem is quite similar to how a string can’t be null if it’s exposed in a Unity inspector (with a public string field in a monobehaviour for example).
I will investigate this. I am thinking that I could add a small button next to null-able type fields with witch to set them to their default value (which of course for string is null).
7) There is no way to do this, and unfortunately that will require some heavy code changes and special case ifs, to allow it and I dont think that adding this many changes will really worth it just for some very special cases like this one 🙁
To be honest I also think that doing this, will result is some big UI confusions.
Unfortunately I don’t see this option coming, at least any time soon. I am really sorry about that!
Finally, I want to say thank you for all your suggestions as well as your positive feedback!
I just now realized you are from the Punch Club dev team. Punch Club was awesome! I spend a lot of hours playing it! 😉
Graveyard Keeper looks great as well. Looking forward to it!
Do you mind if I add Graveyard Keeper in the new showcase page when it’s ready? (will be similar to NodeCanvas showcase page)
Thanks!
Join us on Discord: https://discord.gg/97q2Rjh
Thanks a lot for your replies.
About the DEL key – yes, it works now. Didn’t worked before. Strange. But never mind then 🙂
About showcase page – yes, sure. But only when I will be sure we will use it in the final version. Maybe I will find some flaws or will need to switch to another solution – who knows 🙂
Developer at Lazy Bear Games
http://www.lazybeargames.com
One more:
8. Ability to turn off all nodes based on reflection. In my case I’m using only customly written nodes, so reflected nodes are useless in my case and just preventing me from a clean navigation 🙂
Developer at Lazy Bear Games
http://www.lazybeargames.com
9. Important. (The common issue for flowCanvas and nodeCanvas) – I’d like to see the graph name while editing it. Because it sometimes become confusing when you don’t remember what script was opened.
Developer at Lazy Bear Games
http://www.lazybeargames.com
Hello again,
About the new things 🙂 :
8) The reflection based nodes are only those found under the “Functions/Reflected” sub-category.
Do you mean that it get in the way when doing a string search in the browser window because of the results shown? Let me know if this is it.
9) The graph name is visible in the editor on the top left when no node is selected, along with the gameobject owner name if any.
Do you mean something different than this?
Please let me know.
Thanks!
–EDIT–
Thanks for leaving a review too! I really appreciate it 🙂
Join us on Discord: https://discord.gg/97q2Rjh
Hey.
8) I want to filter reflections out because I use search a lot and see all blocks I don’t need there.
9) Strange. I don’t have the 2nd line displaying the name:
Checked both – Flow Script and Node Canvas editors.
Developer at Lazy Bear Games
http://www.lazybeargames.com
Hey,
8) OK. I will take a look at filtering out reflected nodes. By the way, you can completely remove the reflected nodes shown there, by opening up the Preferred Types Editor window and removing the types you don’t want to use. This is of course not the same, but until I implement your suggestion, this is a good work around to remove totally unwanted search results.
9) Ah. you are using an Asset Graph. Asset Graphs, don’t display the second line since they are not bound to any specific FlowScriptController GameObject. You can however change the name shown there (1st line), simply by selecting your graph asset and changing it’s name in the inspector.
I can probably totally remove this custom name field and simply use the name of the asset itself of course 🙂
—
Regarding your previous suggestions, I would like to let you know, that your variable shortcuts suggestion (called Relay Input/Output here) is now implemented as an initial version. It was actually quite easy after all 🙂
I have attached for you here the relevant package to add those nodes in your project and test them out.
(They can then be found under “Flow Controller/Relay” category).
Furthermore, your suggestion to show Icon WITH Title, is also implemented. In the next version you will be able to do the following to show the icon bellow the title.
1 2 3 |
[Icon("MyIcon", IconAttribute.Mode.AppendToTitle)] |
Let me know what you think.
Cheers!
Join us on Discord: https://discord.gg/97q2Rjh
Thanks a lot! I will try it.
And about #9 – yes, I’m having a bunch of graphs stored as assets which I attach with code to game obejcts on a fly. So, showing the name of the asset would be very helpful.
Developer at Lazy Bear Games
http://www.lazybeargames.com