A helper library of visual scripting custom nodes in Godot.
This library is a collection of visual script custom nodes that anyone can use in their projects.
It's purpose is to make the visual scripting work flow in Godot easier.
Some nodes from the library in use:
To use the custom nodes in this library you have to copy the addons
folder from this repo into your project.
Then go to Project Setting>Plugins
and set the status of the VisualScript Library
plugin to activate.
Load Directory
nodeThis node is useful for loading all the files in a directory into a dictionary. These files can be any files that can be loaded with the ResourceLoader. This is useful for loading random scenes or textures for example.
Apply a random texture from the Sprites
folder to a sprite:
You can contribute in many ways; If you have questions or suggestions, just open an issue here on GitHub. If you have an idea for a node, be sure to first post it in the Node Brainstorming issue (#4), so you can get feedback. After your idea has been approved, follow these steps:
Get started by making a fork of this repository and creating a branch for your custom node
Create a new Godot project and either copy the addons
folder into it or create a symlink. The addons
folder is where Godot loads plugins from, so it's name is important.
Create a new GDScript in the addons/vs_custom_nodes
directory. Name it by the name of your custom node in CamelCase, which should not include the word "Node" and describe what is does, for example EatApples
.
Now it's time to get started scripting our custom node! All custom nodes should extend VisualScriptCustomNode
and have a tool
keyword at the top.
There are some getter functions you will need to add to set some parameters. Look at some of the existing nodes to see what you need. Only add functions that are really needed, you don't need a _has_input_sequence_port
if it should return false
for example.
Now comes the most important part of your custom node, the _step
function. All the logic happens in here. You can modify the output
array and the working_mem
to create your functionality.
If you want to throw an error, if the inputs are incorrect for example, then you need to return the error as a string. When everything goes all right, return the id of the sequence port which should be called next. If your custom node doesn't have any, just return 0.
If you have your custom node all done, you need to register it in addvsnodes.gd
. Add a ppreload
statement at the top, a add_custom_node
one in _enter_tree
and a remove_custom_node
in _exit_tree
. Be sure to give it a unique id and the correct category.
Now you can test your node by enabling the plugin in Project->Project Settings->Plugins and adding your custom node to a VisualScript.
If it works how you want it to, create a pull request and wait for it to be merged.
For help PM me on @steincodes on Twitter and follow me there for more updates on the project.
Keep track in the project board of any updates and plans before starting something.