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:
Follow me at: Twitter: @steincodes and Find Tutorials about this at Youtube:Steincodes
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.
This 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. Theaddons
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 exampleEatApples
. -
Now it's time to get started scripting our custom node! All custom nodes should extend
VisualScriptCustomNode
and have atool
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 returnfalse
for example. -
Now comes the most important part of your custom node, the
_step
function. All the logic happens in here. You can modify theoutput
array and theworking_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, aadd_custom_node
one in_enter_tree
and aremove_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.