• Hi Guest!

    We are extremely excited to announce the release of our first Beta1.1 and the first release of our Public AddonKit!
    To participate in the Beta, a subscription to the Entertainer or Creator Tier is required. For access to the Public AddonKit you must be a Creator tier member. Once subscribed, download instructions can be found here.

    Click here for information and guides regarding the VaM2 beta. Join our Discord server for more announcements and community discussion about VaM2.
  • Hi Guest!

    VaM2 Resource Categories have now been added to the Hub! For information on posting VaM2 resources and details about VaM2 related changes to our Community Forums, please see our official announcement here.
Blooprints

Plugins + Scripts Blooprints

Download [1.24 MB]
You are an absolute MADMAN. This is incredible work. Thank you for sharing! I look forward to seeing what the community creates with this - but well done on what must have been a HUGE effort.
 
You are an absolute MADMAN. This is incredible work. Thank you for sharing! I look forward to seeing what the community creates with this - but well done on what must have been a HUGE effort.
Thanks man, appreciate that! Yeah, I've been working on this one quite a bit 😅
 
Wow, this seems like it could be very useful. Needs examples though. The example links in the description don't lead anywhere. Maybe they are private or something?
 
Woah, this is an insame piece of code you gave us there sir !
first bug report (yes I"m that guy :) )

the plugin doesn't like being in an atom contained in a subscene, UI breaks (awsome UI btw, you did an awsome job)
 
@cyberdelique Thanks for reporting! I can't reproduce the issue though, the UI seems to work fine for me in subscenes. Can you share more details about your subscene and what you mean by the "UI breaks"?
 
@cyberdelique Thanks for reporting! I can't reproduce the issue though, the UI seems to work fine for me in subscenes. Can you share more details about your subscene and what you mean by the "UI breaks"?
here is the error log

!> System.NullReferenceException: Object reference not set to an instance of an object
at everlaster.UX.AlternatePluginsList.PluginHandler.CreateMods () [0x00000] in <filename unknown>:0
at everlaster.LogBuilder.LogException()
at everlaster.LogBuilder.Exception(System.Exception e)
at everlaster.UX.AlternatePluginsList.PluginHandler.CreateMods()
at everlaster.UX.AlternatePluginsList.PluginHandler.ModifyUI()
at everlaster.UX.AlternatePluginsList.PluginHandler.Init()
at everlaster.UX.AlternatePluginsList.PluginHandler..ctor(everlaster.UX.AlternatePluginsList.AlternatePluginsList module, everlaster.UX.AlternatePluginsList.PluginManagerHandler managerHandler, UnityEngine.Transform pluginPanel, everlaster.LogBuilder logBuilder)
at everlaster.UX.AlternatePluginsList.PluginManagerHandler.AddNewPluginHandler(UnityEngine.Transform pluginPanel, Boolean updateRecent)
at everlaster.UX.AlternatePluginsList.PluginManagerHandler+<AddNewPluginHandlerWithWait>c__Iterator3.MoveNext()
at UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator enumerator, IntPtr returnValueAddress)
at UnityEngine.MonoBehaviour.StartCoroutineManaged2(IEnumerator )
at UnityEngine.MonoBehaviour.StartCoroutine(IEnumerator routine)
at everlaster.UX.AlternatePluginsList.PluginManagerHandler+<OnAddPlugin>c__AnonStorey6.<>m__0()
at JSONStorableUrl.SetFilePathBrowseCallback(System.String path, Boolean didClose)
at uFileBrowser.FileBrowser.SelectButtonClicked()
at uFileBrowser.FileBrowser.SelectFile(uFileBrowser.FileButton fb)
at uFileBrowser.FileBrowser.OnFileClick(uFileBrowser.FileButton fb)
at uFileBrowser.FileButton.OnClick()
at UnityEngine.Events.InvokableCall.Invoke()
at UnityEngine.Events.UnityEvent.Invoke()
at UnityEngine.UI.Button.Press()
at UnityEngine.UI.Button.OnPointerClick(UnityEngine.EventSystems.PointerEventData eventData)
at UnityEngine.EventSystems.ExecuteEvents.Execute(IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData)
at UnityEngine.EventSystems.ExecuteEvents.Execute(UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor)
at LookInputModule.ProcessMousePressAlt(UnityEngine.EventSystems.MouseButtonEventData data)
at LookInputModule.ProcessMouseAlt(Boolean useCenterOfCamera)
at SuperController.ProcessUI()
at SuperController.Update()

OK it's everlaster UXplus that throws the error if another plugin is allready on slot 0 in the empty (tried to load blooprint as plugin#1)
tried in a empty one and it works OK
RESOLVED
 
Suggestion, when you pull off a link to an empty space in the grid, it would make sense if it opened the context menu with options which have a matching input. And if you select one of those options in the context menu it would then assign the link to the first matching input pin on the node.
 
Yes, great suggestion, just like in UE5 or Blender nodes. Thanks! I had something like this planned, but it's one of those QoL features that didn't make it into the first version 😅
 
Yes, for now no commercial use of any of my resources. I'm open to make exceptions though, and might change the license at some point anyway.
 
Well this is going to eat up my life.

Really looking forward to your example scenes, mate! And a commercial license down the road. o_O

Cheers, mate! This is insane!
 
@donkeykong69 @Thavus @Arachnut One of the packages with examples is published now: Skin Paint Basics

It has two Blooprints that listen to parameters of another plugin via callbacks, and change colors and animations of a CUA in response. The spray paint Blooprint also does some physics calculations to play SFX for shaking the CUA. Both Blooprints also expose some parameters in the script UI. The next package will have 7 more Blooprints, some of them quite complex.

Although the Blooprints in both packages are tailored quite specifically to implementing logic for those CUAs, I think a lot can be learned about how to do stuff with Blooprints in general. Once you understand how to get parameters from atoms and plugins, set their value, and listen to changes via callbacks, you can already do a lot.

More general purpose examples that focus on how to do one specific thing would probably be nice, but I didn't get to that yet. In the meantime, I'm always happy to answer questions!
 
rutheniumm said:
This is a good plugin however, im wondering how i can activate triggers via blooprints, do i have to use Callback? because i dont know, i can activate triggers that take in a float argument, but i dont know how to activate triggers with StringChooser types, im trying to trigger some params inside the VAMMoan2 plugin.
@rutheniumm Are you asking how to set the value of a string chooser parameter? If so, you should use the "Set Value" node like in the example below. Right now you must type in the value, I should make this a dropdown for string chooser params in a future version.

Example Blooprint to set the state of VAMMoan to Kissing

JSON:
{
   "Version" : "1.0.0.1",
   "Storables" : [
   ],
   "Graph" : {
      "Guid" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
      "variables" : [
      ],
      "nodes" : [
         {
            "Guid" : "03729e6a-e4eb-4454-842c-3a061098d055",
            "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
            "inExecPins" : [
            ],
            "outExecPins" : [
               {
                  "Guid" : "5dd9f78a-acb1-43b4-b97c-e91f25fdeaa7",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "03729e6a-e4eb-4454-842c-3a061098d055",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
            ],
            "outDataPins" : [
            ],
            "displayName" : "OnEnable",
            "compactName" : "",
            "position" : {
               "x" : "-817.7578",
               "y" : "480.7813"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintOnEnable"
         },
         {
            "Guid" : "b56031b0-a515-4fec-b77b-5f879a4ea074",
            "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
               {
                  "Guid" : "b9a6fecf-06f1-428b-b275-a182ab79846e",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "b56031b0-a515-4fec-b77b-5f879a4ea074",
                  "IsOutput" : "false",
                  "name" : "Atom",
                  "type" : "Atom, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "Atom, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "[CameraRig]",
                     "$type" : "Atom, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "06792e2c-d73d-4734-92cc-349f3c1b0262",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "b56031b0-a515-4fec-b77b-5f879a4ea074",
                  "IsOutput" : "false",
                  "name" : "Name",
                  "type" : "System.String",
                  "constraint" : {
                     "types" : [
                        "System.String"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "VAMMoan2TeaserPlugin.VAMMoan2Teaser",
                     "$type" : "System.String"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "418dfa72-722b-4619-9122-d85295b1af32",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "b56031b0-a515-4fec-b77b-5f879a4ea074",
                  "IsOutput" : "true",
                  "name" : "",
                  "type" : "MVRScript, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "MVRScript, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "FindPlugin",
            "compactName" : "",
            "position" : {
               "x" : "-563.9922",
               "y" : "315.957"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Atoms.PBNodeAtomsFindPlugin"
         },
         {
            "Guid" : "590dce1c-368e-4b6a-b438-381b30a2a8eb",
            "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
            ],
            "outDataPins" : [
               {
                  "Guid" : "900abb06-81ed-4f0c-8d3b-6d15c3b27c1d",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "590dce1c-368e-4b6a-b438-381b30a2a8eb",
                  "IsOutput" : "true",
                  "name" : "Value",
                  "type" : "Atom, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "Atom, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "Owner",
            "compactName" : "Owner",
            "position" : {
               "x" : "-792.4766",
               "y" : "261.3398"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintOwner"
         },
         {
            "Guid" : "7560913e-334a-4e3c-85a1-6134144a00c5",
            "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
               {
                  "Guid" : "3a2889ac-841e-4f0e-8004-4e72b76cff71",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "7560913e-334a-4e3c-85a1-6134144a00c5",
                  "IsOutput" : "false",
                  "name" : "Storable",
                  "type" : "JSONStorable, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorable, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "3ce35db1-5ee4-429e-adfa-1f490c4370d2",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "7560913e-334a-4e3c-85a1-6134144a00c5",
                  "IsOutput" : "false",
                  "name" : "Name",
                  "type" : "System.String",
                  "constraint" : {
                     "types" : [
                        "System.String"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "Change State",
                     "$type" : "System.String"
                  },
                  "visibility" : [
                     "Name",
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "0c53c197-1f68-47d0-951e-cc872bfdfb2c",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "7560913e-334a-4e3c-85a1-6134144a00c5",
                  "IsOutput" : "true",
                  "name" : "",
                  "type" : "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "GetParam",
            "compactName" : "",
            "position" : {
               "x" : "138.9648",
               "y" : "315.2188"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Storables.PBNodeStorablesGetParam"
         },
         {
            "Guid" : "6629661f-57f6-4343-9c1e-58a9cc584345",
            "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
            "inExecPins" : [
               {
                  "Guid" : "a28fc88e-8390-4cd2-81d3-381bf157e2ce",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "6629661f-57f6-4343-9c1e-58a9cc584345",
                  "IsOutput" : "false",
                  "name" : "Exec",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "outExecPins" : [
               {
                  "Guid" : "079472e5-830a-4288-a42d-bbbaf8d5ee10",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "6629661f-57f6-4343-9c1e-58a9cc584345",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
               {
                  "Guid" : "6a700970-c878-47ca-86d4-c48df71111e7",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "6629661f-57f6-4343-9c1e-58a9cc584345",
                  "IsOutput" : "false",
                  "name" : "Param",
                  "type" : "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableBool, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableFloat, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableVector3, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableString, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableUrl, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableColor, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "e0f94973-3995-4617-9d3a-a0c1a8f1ef6f",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "6629661f-57f6-4343-9c1e-58a9cc584345",
                  "IsOutput" : "false",
                  "name" : "Value",
                  "type" : "System.String",
                  "constraint" : {
                     "types" : [
                        "System.Boolean",
                        "System.Single",
                        "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "System.String",
                        "HSVColor, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "Kissing",
                     "$type" : "System.String"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
            ],
            "displayName" : "SetValue",
            "compactName" : "",
            "position" : {
               "x" : "639.1289",
               "y" : "482.3672"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Storables.PBNodeStorablesSetValue"
         }
      ],
      "links" : [
         {
            "Guid" : "154a8995-0728-4dc9-9784-a32ab0e4758c",
            "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
            "Output" : "900abb06-81ed-4f0c-8d3b-6d15c3b27c1d",
            "Input" : "b9a6fecf-06f1-428b-b275-a182ab79846e"
         },
         {
            "Guid" : "a1573566-e1fa-46a2-8816-b61dbf6a542d",
            "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
            "Output" : "418dfa72-722b-4619-9122-d85295b1af32",
            "Input" : "3a2889ac-841e-4f0e-8004-4e72b76cff71"
         },
         {
            "Guid" : "4c629461-686e-4e01-a405-73a3ca7261f4",
            "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
            "Output" : "5dd9f78a-acb1-43b4-b97c-e91f25fdeaa7",
            "Input" : "a28fc88e-8390-4cd2-81d3-381bf157e2ce"
         },
         {
            "Guid" : "58cffc8a-0c99-4dcf-bf21-73d9fd55e220",
            "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
            "Output" : "0c53c197-1f68-47d0-951e-cc872bfdfb2c",
            "Input" : "6a700970-c878-47ca-86d4-c48df71111e7"
         }
      ],
      "redirectors" : [
      ]
   }
}
 
@rutheniumm Are you asking how to set the value of a string chooser parameter? If so, you should use the "Set Value" node like in the example below. Right now you must type in the value, I should make this a dropdown for string chooser params in a future version.

View attachment 570209
JSON:
{
   "Version" : "1.0.0.1",
   "Storables" : [
   ],
   "Graph" : {
      "Guid" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
      "variables" : [
      ],
      "nodes" : [
         {
            "Guid" : "03729e6a-e4eb-4454-842c-3a061098d055",
            "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
            "inExecPins" : [
            ],
            "outExecPins" : [
               {
                  "Guid" : "5dd9f78a-acb1-43b4-b97c-e91f25fdeaa7",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "03729e6a-e4eb-4454-842c-3a061098d055",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
            ],
            "outDataPins" : [
            ],
            "displayName" : "OnEnable",
            "compactName" : "",
            "position" : {
               "x" : "-817.7578",
               "y" : "480.7813"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintOnEnable"
         },
         {
            "Guid" : "b56031b0-a515-4fec-b77b-5f879a4ea074",
            "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
               {
                  "Guid" : "b9a6fecf-06f1-428b-b275-a182ab79846e",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "b56031b0-a515-4fec-b77b-5f879a4ea074",
                  "IsOutput" : "false",
                  "name" : "Atom",
                  "type" : "Atom, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "Atom, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "[CameraRig]",
                     "$type" : "Atom, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "06792e2c-d73d-4734-92cc-349f3c1b0262",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "b56031b0-a515-4fec-b77b-5f879a4ea074",
                  "IsOutput" : "false",
                  "name" : "Name",
                  "type" : "System.String",
                  "constraint" : {
                     "types" : [
                        "System.String"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "VAMMoan2TeaserPlugin.VAMMoan2Teaser",
                     "$type" : "System.String"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "418dfa72-722b-4619-9122-d85295b1af32",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "b56031b0-a515-4fec-b77b-5f879a4ea074",
                  "IsOutput" : "true",
                  "name" : "",
                  "type" : "MVRScript, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "MVRScript, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "FindPlugin",
            "compactName" : "",
            "position" : {
               "x" : "-563.9922",
               "y" : "315.957"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Atoms.PBNodeAtomsFindPlugin"
         },
         {
            "Guid" : "590dce1c-368e-4b6a-b438-381b30a2a8eb",
            "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
            ],
            "outDataPins" : [
               {
                  "Guid" : "900abb06-81ed-4f0c-8d3b-6d15c3b27c1d",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "590dce1c-368e-4b6a-b438-381b30a2a8eb",
                  "IsOutput" : "true",
                  "name" : "Value",
                  "type" : "Atom, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "Atom, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "Owner",
            "compactName" : "Owner",
            "position" : {
               "x" : "-792.4766",
               "y" : "261.3398"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintOwner"
         },
         {
            "Guid" : "7560913e-334a-4e3c-85a1-6134144a00c5",
            "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
               {
                  "Guid" : "3a2889ac-841e-4f0e-8004-4e72b76cff71",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "7560913e-334a-4e3c-85a1-6134144a00c5",
                  "IsOutput" : "false",
                  "name" : "Storable",
                  "type" : "JSONStorable, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorable, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "3ce35db1-5ee4-429e-adfa-1f490c4370d2",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "7560913e-334a-4e3c-85a1-6134144a00c5",
                  "IsOutput" : "false",
                  "name" : "Name",
                  "type" : "System.String",
                  "constraint" : {
                     "types" : [
                        "System.String"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "Change State",
                     "$type" : "System.String"
                  },
                  "visibility" : [
                     "Name",
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "0c53c197-1f68-47d0-951e-cc872bfdfb2c",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "7560913e-334a-4e3c-85a1-6134144a00c5",
                  "IsOutput" : "true",
                  "name" : "",
                  "type" : "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "GetParam",
            "compactName" : "",
            "position" : {
               "x" : "138.9648",
               "y" : "315.2188"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Storables.PBNodeStorablesGetParam"
         },
         {
            "Guid" : "6629661f-57f6-4343-9c1e-58a9cc584345",
            "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
            "inExecPins" : [
               {
                  "Guid" : "a28fc88e-8390-4cd2-81d3-381bf157e2ce",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "6629661f-57f6-4343-9c1e-58a9cc584345",
                  "IsOutput" : "false",
                  "name" : "Exec",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "outExecPins" : [
               {
                  "Guid" : "079472e5-830a-4288-a42d-bbbaf8d5ee10",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "6629661f-57f6-4343-9c1e-58a9cc584345",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
               {
                  "Guid" : "6a700970-c878-47ca-86d4-c48df71111e7",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "6629661f-57f6-4343-9c1e-58a9cc584345",
                  "IsOutput" : "false",
                  "name" : "Param",
                  "type" : "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableBool, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableFloat, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableVector3, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableString, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableUrl, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableColor, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "e0f94973-3995-4617-9d3a-a0c1a8f1ef6f",
                  "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
                  "Node" : "6629661f-57f6-4343-9c1e-58a9cc584345",
                  "IsOutput" : "false",
                  "name" : "Value",
                  "type" : "System.String",
                  "constraint" : {
                     "types" : [
                        "System.Boolean",
                        "System.Single",
                        "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "System.String",
                        "HSVColor, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "Kissing",
                     "$type" : "System.String"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
            ],
            "displayName" : "SetValue",
            "compactName" : "",
            "position" : {
               "x" : "639.1289",
               "y" : "482.3672"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Storables.PBNodeStorablesSetValue"
         }
      ],
      "links" : [
         {
            "Guid" : "154a8995-0728-4dc9-9784-a32ab0e4758c",
            "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
            "Output" : "900abb06-81ed-4f0c-8d3b-6d15c3b27c1d",
            "Input" : "b9a6fecf-06f1-428b-b275-a182ab79846e"
         },
         {
            "Guid" : "a1573566-e1fa-46a2-8816-b61dbf6a542d",
            "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
            "Output" : "418dfa72-722b-4619-9122-d85295b1af32",
            "Input" : "3a2889ac-841e-4f0e-8004-4e72b76cff71"
         },
         {
            "Guid" : "4c629461-686e-4e01-a405-73a3ca7261f4",
            "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
            "Output" : "5dd9f78a-acb1-43b4-b97c-e91f25fdeaa7",
            "Input" : "a28fc88e-8390-4cd2-81d3-381bf157e2ce"
         },
         {
            "Guid" : "58cffc8a-0c99-4dcf-bf21-73d9fd55e220",
            "Graph" : "7262e9f5-c800-4b7f-a4d2-bd444fbcb421",
            "Output" : "0c53c197-1f68-47d0-951e-cc872bfdfb2c",
            "Input" : "6a700970-c878-47ca-86d4-c48df71111e7"
         }
      ],
      "redirectors" : [
      ]
   }
}
Ah, I must've done something wrong to not get the same results you yielded in this response, common mistake XD. I appreciate the assistance on that. Now, as of right now Is it possible to make new atoms via blueprints? I also have a recommendation: you should add node groups so you can sort of organize your nodes, as well as node renaming. I would also appreciate it if you added more explanation on how to use callbacks; it seems a bit repetitive, and it seems like there could perhaps be a better way of implementing callbacks in this node system. But in the meantime, I think it would be helpful for me and any other users who come across this plugin that you added some more documentation, of course, that is a lot of work, but some minor documentation could work. You could basically make an auto-doc system yourself if you really wanted to, but when it comes to documentation, I think that would be a VERY helpful thing, as this plugin is already one of my favorites. I've been waiting for some logic/scripting like this for ages now. Adding on, your GPURaycast plugin, which you also recently released, is it able to be used with Blooprints? And finally, if you do add node grouping/renaming, you should allow for there to be custom nodes we can make when we bundle these nodes together, it could allow for a better way for people to make individual node addons to this plugin, and better yet it could eventually have its own section on the VAM Resources, and people can just easily download node extensions. Other than that, I'm very impressed with this, as it is one of your first few plugins released.
 
Now, as of right now Is it possible to make new atoms via blueprints?
No, there's no node for that at the moment.

I also have a recommendation: you should add node groups so you can sort of organize your nodes, as well as node renaming.
As someone who likes to keep my Blooprints tidy and organized myself, yes, that would be very useful, especially grouping.

I would also appreciate it if you added more explanation on how to use callbacks; it seems a bit repetitive, and it seems like there could perhaps be a better way of implementing callbacks in this node system.
Callbacks are used to do something whenever the value of a param changes. The example Blooprint below illustrates how to use callbacks. In this example the value of "Some Param" is logged whenever it's changed (e.g. via the slider in the UI, or using the SetValue node).

If you enable "Call Now" in the SetCallback node, the callback will not only be called whenever the value changes, but also once right now with the current value of the param. This is useful for initialization.

You can also use the SetCallback node with the "On" toggle disabled at a later point again, if you want to stop listening to changes. Callbacks will also automatically unsubscribed when Run is disabled.

If you want to manually run your callback logic, use the Call node. This will invoke your callback with the passed value, but not change the param value.

Also worth noting, you can use the same callback for multiple params.

As for the repetitiveness, it can be, yes. I plan to add dropdowns to the SetCallback node, that could already make it a bit smoother. For the "Param" pin all params of the Blooprint itself, and its callbacks in the "Callback" pin.

blooprints-callbacks.png

JSON:
{
   "Version" : "1.0.0.1",
   "Storables" : [
      {
         "name" : "Some Param",
         "hasUi" : "true",
         "uiRightSide" : "false",
         "defaultValue" : "0",
         "min" : "0",
         "max" : "1",
         "constrained" : "true",
         "wholeNumbers" : "false",
         "$type" : "perfectbloo.Core.Storables.DynamicFloatParam"
      }
   ],
   "Graph" : {
      "Guid" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
      "variables" : [
         {
            "Guid" : "22c67d3d-3d1d-43d6-a3c2-f13627c79b6e",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "name" : "My Callback",
            "Kind" : "Callback",
            "type" : "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
         }
      ],
      "nodes" : [
         {
            "Guid" : "1dea6492-32fc-4423-b94f-ebf3b2c33bd2",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "inExecPins" : [
               {
                  "Guid" : "0d92aae3-6777-4085-ba16-2e35dabb872b",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1dea6492-32fc-4423-b94f-ebf3b2c33bd2",
                  "IsOutput" : "false",
                  "name" : "Exec",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "outExecPins" : [
               {
                  "Guid" : "8810fb1a-d4f2-40c8-b0fc-73d830fbcf15",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1dea6492-32fc-4423-b94f-ebf3b2c33bd2",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
               {
                  "Guid" : "c111d6ef-669c-4112-af5c-2864cc0a1976",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1dea6492-32fc-4423-b94f-ebf3b2c33bd2",
                  "IsOutput" : "false",
                  "name" : "Message",
                  "type" : "System.Object",
                  "constraint" : {
                     "types" : [
                        "System.String",
                        "System.Object"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
            ],
            "displayName" : "Print",
            "compactName" : "",
            "position" : {
               "x" : "456.0703",
               "y" : "-48.97656"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Logging.PBNodeLoggingPrint"
         },
         {
            "Guid" : "1d0497d8-d237-404e-ba17-26b73b0eb72e",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
            ],
            "outDataPins" : [
               {
                  "Guid" : "e98016b7-9045-410c-9daa-7246be4e40ce",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1d0497d8-d237-404e-ba17-26b73b0eb72e",
                  "IsOutput" : "true",
                  "name" : "Value",
                  "type" : "MVRScript, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "MVRScript, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "Self",
            "compactName" : "Self",
            "position" : {
               "x" : "-94.99219",
               "y" : "375.1523"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintSelf"
         },
         {
            "Guid" : "a4b9e161-0c30-49c1-a2a6-ea1aab3e7eb1",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
               {
                  "Guid" : "011342fc-5ff5-49dc-b97a-a1e75207bb60",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "a4b9e161-0c30-49c1-a2a6-ea1aab3e7eb1",
                  "IsOutput" : "false",
                  "name" : "Storable",
                  "type" : "JSONStorable, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorable, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "b0d44046-dff5-4f35-8e7f-e6cafeea15d0",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "a4b9e161-0c30-49c1-a2a6-ea1aab3e7eb1",
                  "IsOutput" : "false",
                  "name" : "Name",
                  "type" : "System.String",
                  "constraint" : {
                     "types" : [
                        "System.String"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "Some Param",
                     "$type" : "System.String"
                  },
                  "visibility" : [
                     "Name",
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "4765ba55-ce8e-42c7-91c4-052f23e7decc",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "a4b9e161-0c30-49c1-a2a6-ea1aab3e7eb1",
                  "IsOutput" : "true",
                  "name" : "",
                  "type" : "JSONStorableFloat, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableFloat, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "GetParam",
            "compactName" : "",
            "position" : {
               "x" : "74.88281",
               "y" : "429.7383"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Storables.PBNodeStorablesGetParam"
         },
         {
            "Guid" : "b79c7a6f-25c4-4c52-8bcf-10eb250eda26",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
               {
                  "Guid" : "6140a4cf-0161-48c7-bd1b-ef4086f861a4",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "b79c7a6f-25c4-4c52-8bcf-10eb250eda26",
                  "IsOutput" : "false",
                  "name" : "Guid",
                  "type" : "System.Guid",
                  "constraint" : {
                     "types" : [
                        "System.Guid"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "22c67d3d-3d1d-43d6-a3c2-f13627c79b6e",
                     "$type" : "System.Guid"
                  },
                  "visibility" : [
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "389a8c5e-a300-460d-834d-1227cd128ed1",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "b79c7a6f-25c4-4c52-8bcf-10eb250eda26",
                  "IsOutput" : "true",
                  "name" : "Value",
                  "type" : "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "GetCallback",
            "compactName" : "",
            "position" : {
               "x" : "93.84375",
               "y" : "195.6055"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintGetCallback"
         },
         {
            "Guid" : "1cf78e09-32dc-4b1a-8247-c6d71c4ef4f0",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "inExecPins" : [
               {
                  "Guid" : "3247826e-b087-4b7b-a435-919f45eade42",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1cf78e09-32dc-4b1a-8247-c6d71c4ef4f0",
                  "IsOutput" : "false",
                  "name" : "Exec",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "outExecPins" : [
               {
                  "Guid" : "ef79c87f-fe5f-426d-b9cd-63637b16f2b3",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1cf78e09-32dc-4b1a-8247-c6d71c4ef4f0",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
               {
                  "Guid" : "77a06387-9739-4421-b44b-26341893eed1",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1cf78e09-32dc-4b1a-8247-c6d71c4ef4f0",
                  "IsOutput" : "false",
                  "name" : "Param",
                  "type" : "JSONStorableFloat, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableBool, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableFloat, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableVector3, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableString, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableUrl, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableColor, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableAction, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "32b73b0a-c4db-440b-a217-bbc31cf4a882",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1cf78e09-32dc-4b1a-8247-c6d71c4ef4f0",
                  "IsOutput" : "false",
                  "name" : "Callback",
                  "type" : "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableBool+SetBoolCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableVector3+SetVector3Callback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableString+SetStringCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableStringChooser+SetStringCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableColor+SetHSVColorCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableAction+ActionCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "6c179ba6-ecc0-4d2d-83e0-bc8c29b9703a",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1cf78e09-32dc-4b1a-8247-c6d71c4ef4f0",
                  "IsOutput" : "false",
                  "name" : "On",
                  "type" : "System.Boolean",
                  "constraint" : {
                     "types" : [
                        "System.Boolean"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "true",
                     "$type" : "System.Boolean"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "c28390e4-5f9c-4878-81cf-e302be70595a",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1cf78e09-32dc-4b1a-8247-c6d71c4ef4f0",
                  "IsOutput" : "false",
                  "name" : "CallNow",
                  "type" : "System.Boolean",
                  "constraint" : {
                     "types" : [
                        "System.Boolean"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "false",
                     "$type" : "System.Boolean"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
            ],
            "displayName" : "SetCallback",
            "compactName" : "",
            "position" : {
               "x" : "606.4766",
               "y" : "574.2344"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Storables.PBNodeStorablesSetCallback"
         },
         {
            "Guid" : "9d628fc8-fa1e-420b-8e84-2720fb284662",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "inExecPins" : [
            ],
            "outExecPins" : [
               {
                  "Guid" : "c89a35ca-976d-43a9-980d-464ec6c0f2a4",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "9d628fc8-fa1e-420b-8e84-2720fb284662",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
               {
                  "Guid" : "dd229fa2-1076-49d9-8234-bf2d7f16684e",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "9d628fc8-fa1e-420b-8e84-2720fb284662",
                  "IsOutput" : "false",
                  "name" : "CallbackVariable",
                  "type" : "System.Guid",
                  "constraint" : {
                     "types" : [
                        "System.Guid"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "22c67d3d-3d1d-43d6-a3c2-f13627c79b6e",
                     "$type" : "System.Guid"
                  },
                  "visibility" : [
                     "None"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "96ebdba4-82df-49f0-a911-bfa1ca253ced",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "9d628fc8-fa1e-420b-8e84-2720fb284662",
                  "IsOutput" : "false",
                  "name" : "Type",
                  "type" : "perfectbloo.Blooprints.Nodes.Blooprint.EStorableType",
                  "constraint" : {
                     "types" : [
                        "perfectbloo.Blooprints.Nodes.Blooprint.EStorableType"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "Float",
                     "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.EStorableType"
                  },
                  "visibility" : [
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "7bdaa97b-1fed-4d51-a456-d8d448a0c0ea",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "9d628fc8-fa1e-420b-8e84-2720fb284662",
                  "IsOutput" : "false",
                  "name" : "Name",
                  "type" : "System.String",
                  "constraint" : {
                     "types" : [
                        "System.String"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "My Callback",
                     "$type" : "System.String"
                  },
                  "visibility" : [
                     "Name",
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "767e8c9a-c32d-4c7e-a7b7-08256251a615",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "9d628fc8-fa1e-420b-8e84-2720fb284662",
                  "IsOutput" : "true",
                  "name" : "Value",
                  "type" : "System.Single",
                  "constraint" : {
                     "types" : [
                        "System.Single"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "0",
                     "$type" : "System.Single"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "Callback",
            "compactName" : "",
            "position" : {
               "x" : "-168.9844",
               "y" : "-50.07031"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintCallback"
         },
         {
            "Guid" : "0c5f0c87-e5ba-4de7-8595-15eb3e28830e",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "inExecPins" : [
            ],
            "outExecPins" : [
               {
                  "Guid" : "e2a58551-64c6-4f5d-a09b-e9d192ca8781",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "0c5f0c87-e5ba-4de7-8595-15eb3e28830e",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
            ],
            "outDataPins" : [
            ],
            "displayName" : "OnEnable",
            "compactName" : "",
            "position" : {
               "x" : "-175.8555",
               "y" : "573.3008"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintOnEnable"
         },
         {
            "Guid" : "a196fa3e-9315-4aa7-b7ec-7af40792a55b",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "inExecPins" : [
               {
                  "Guid" : "f72f8271-6ab4-48cb-a54f-9584cb4f8eb8",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "a196fa3e-9315-4aa7-b7ec-7af40792a55b",
                  "IsOutput" : "false",
                  "name" : "Exec",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "outExecPins" : [
               {
                  "Guid" : "b5396bdf-5dc6-4e9b-a06d-7eb3739f8cf6",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "a196fa3e-9315-4aa7-b7ec-7af40792a55b",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
               {
                  "Guid" : "5a1a7d2a-2b8f-4f28-8690-0951f99ec0ac",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "a196fa3e-9315-4aa7-b7ec-7af40792a55b",
                  "IsOutput" : "false",
                  "name" : "Callback",
                  "type" : "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableBool+SetBoolCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableVector3+SetVector3Callback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableString+SetStringCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableStringChooser+SetStringCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableColor+SetHSVColorCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableAction+ActionCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "816ab479-484b-4277-a364-ee4702f94e79",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "a196fa3e-9315-4aa7-b7ec-7af40792a55b",
                  "IsOutput" : "false",
                  "name" : "Value",
                  "type" : "System.Single",
                  "constraint" : {
                     "types" : [
                        "System.Boolean",
                        "System.Single",
                        "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "System.String",
                        "HSVColor, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "42",
                     "$type" : "System.Single"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
            ],
            "displayName" : "Call",
            "compactName" : "",
            "position" : {
               "x" : "1474.332",
               "y" : "565.8906"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Storables.PBNodeStorablesCall"
         },
         {
            "Guid" : "87eb0703-6112-4446-830e-9e9e108f0bea",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
               {
                  "Guid" : "a5131a80-8fda-4923-8291-dc33093ad2b1",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "87eb0703-6112-4446-830e-9e9e108f0bea",
                  "IsOutput" : "false",
                  "name" : "Guid",
                  "type" : "System.Guid",
                  "constraint" : {
                     "types" : [
                        "System.Guid"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "22c67d3d-3d1d-43d6-a3c2-f13627c79b6e",
                     "$type" : "System.Guid"
                  },
                  "visibility" : [
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "86f2ccb2-f7f9-432e-bb53-b1ec367f2794",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "87eb0703-6112-4446-830e-9e9e108f0bea",
                  "IsOutput" : "true",
                  "name" : "Value",
                  "type" : "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "GetCallback",
            "compactName" : "",
            "position" : {
               "x" : "985.5586",
               "y" : "442.4023"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintGetCallback"
         }
      ],
      "links" : [
         {
            "Guid" : "c471cb0a-f392-4d80-b216-c0c70d2a723b",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "Output" : "4765ba55-ce8e-42c7-91c4-052f23e7decc",
            "Input" : "77a06387-9739-4421-b44b-26341893eed1"
         },
         {
            "Guid" : "3ab2bf25-b0c3-4ee2-b71f-685366da5b6e",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "Output" : "e98016b7-9045-410c-9daa-7246be4e40ce",
            "Input" : "011342fc-5ff5-49dc-b97a-a1e75207bb60"
         },
         {
            "Guid" : "8e90cc86-e181-4e53-9e61-848411354a06",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "Output" : "389a8c5e-a300-460d-834d-1227cd128ed1",
            "Input" : "32b73b0a-c4db-440b-a217-bbc31cf4a882"
         },
         {
            "Guid" : "88c3b13c-d3bb-4355-98f6-c41682544b70",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "Output" : "767e8c9a-c32d-4c7e-a7b7-08256251a615",
            "Input" : "c111d6ef-669c-4112-af5c-2864cc0a1976"
         },
         {
            "Guid" : "5fa6a0bc-5dbb-4947-82dc-ae6ac35ffb9f",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "Output" : "c89a35ca-976d-43a9-980d-464ec6c0f2a4",
            "Input" : "0d92aae3-6777-4085-ba16-2e35dabb872b"
         },
         {
            "Guid" : "f5784690-bfdc-4ad0-81ac-03be434d9a7a",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "Output" : "e2a58551-64c6-4f5d-a09b-e9d192ca8781",
            "Input" : "3247826e-b087-4b7b-a435-919f45eade42"
         },
         {
            "Guid" : "ec6ec363-fd23-46e0-8e96-3f01ecfaa6ef",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "Output" : "86f2ccb2-f7f9-432e-bb53-b1ec367f2794",
            "Input" : "5a1a7d2a-2b8f-4f28-8690-0951f99ec0ac"
         }
      ],
      "redirectors" : [
      ]
   }
}

But in the meantime, I think it would be helpful for me and any other users who come across this plugin that you added some more documentation, of course, that is a lot of work, but some minor documentation could work. You could basically make an auto-doc system yourself if you really wanted to, but when it comes to documentation, I think that would be a VERY helpful thing, as this plugin is already one of my favorites. I've been waiting for some logic/scripting like this for ages now.
I totally get that, documentation is very important for a tool like this. Just keep in mind, at this point this is an experimental release. For those that like to tinker and experiment themselves, and maybe even have some experience with other node based scripting tools like UE5. Knowing VaM plugin development can help a lot, too.

But yes, for now it would also be great to at least have examples with the basics to get started. I hope to gradually build the documentation, with the long-term goal to have tutorials and actually have some sort of auto-doc system with descriptions of each node. To provide in-game hints, and probably a web-based documentation as well.

Adding on, your GPURaycast plugin, which you also recently released, is it able to be used with Blooprints?
Technically it is, but not really convenient. It exposes an API you could access using the param, value, and call nodes. But no, there's no dedicated node for it.

And finally, if you do add node grouping/renaming, you should allow for there to be custom nodes we can make when we bundle these nodes together, it could allow for a better way for people to make individual node addons to this plugin, and better yet it could eventually have its own section on the VAM Resources, and people can just easily download node extensions.
Making reusable building blocks like custom nodes is definitely on the roadmap!

Other than that, I'm very impressed with this, as it is one of your first few plugins released.
Thanks for all your suggestions 🩵

Right now I'm noting down all the feedback I get, prioritize, see what will make it into the next major update, and gradually improve documentation. However, as probably most other creators I'm doing this in my free time, so please be patient. In the meantime, I'm always happy to answer questions!
 
No, there's no node for that at the moment.


As someone who likes to keep my Blooprints tidy and organized myself, yes, that would be very useful, especially grouping.


Callbacks are used to do something whenever the value of a param changes. The example Blooprint below illustrates how to use callbacks. In this example the value of "Some Param" is logged whenever it's changed (e.g. via the slider in the UI, or using the SetValue node).

If you enable "Call Now" in the SetCallback node, the callback will not only be called whenever the value changes, but also once right now with the current value of the param. This is useful for initialization.

You can also use the SetCallback node with the "On" toggle disabled at a later point again, if you want to stop listening to changes. Callbacks will also automatically unsubscribed when Run is disabled.

If you want to manually run your callback logic, use the Call node. This will invoke your callback with the passed value, but not change the param value.

Also worth noting, you can use the same callback for multiple params.

As for the repetitiveness, it can be, yes. I plan to add dropdowns to the SetCallback node, that could already make it a bit smoother. For the "Param" pin all params of the Blooprint itself, and its callbacks in the "Callback" pin.

View attachment 570290
JSON:
{
   "Version" : "1.0.0.1",
   "Storables" : [
      {
         "name" : "Some Param",
         "hasUi" : "true",
         "uiRightSide" : "false",
         "defaultValue" : "0",
         "min" : "0",
         "max" : "1",
         "constrained" : "true",
         "wholeNumbers" : "false",
         "$type" : "perfectbloo.Core.Storables.DynamicFloatParam"
      }
   ],
   "Graph" : {
      "Guid" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
      "variables" : [
         {
            "Guid" : "22c67d3d-3d1d-43d6-a3c2-f13627c79b6e",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "name" : "My Callback",
            "Kind" : "Callback",
            "type" : "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
         }
      ],
      "nodes" : [
         {
            "Guid" : "1dea6492-32fc-4423-b94f-ebf3b2c33bd2",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "inExecPins" : [
               {
                  "Guid" : "0d92aae3-6777-4085-ba16-2e35dabb872b",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1dea6492-32fc-4423-b94f-ebf3b2c33bd2",
                  "IsOutput" : "false",
                  "name" : "Exec",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "outExecPins" : [
               {
                  "Guid" : "8810fb1a-d4f2-40c8-b0fc-73d830fbcf15",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1dea6492-32fc-4423-b94f-ebf3b2c33bd2",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
               {
                  "Guid" : "c111d6ef-669c-4112-af5c-2864cc0a1976",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1dea6492-32fc-4423-b94f-ebf3b2c33bd2",
                  "IsOutput" : "false",
                  "name" : "Message",
                  "type" : "System.Object",
                  "constraint" : {
                     "types" : [
                        "System.String",
                        "System.Object"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
            ],
            "displayName" : "Print",
            "compactName" : "",
            "position" : {
               "x" : "456.0703",
               "y" : "-48.97656"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Logging.PBNodeLoggingPrint"
         },
         {
            "Guid" : "1d0497d8-d237-404e-ba17-26b73b0eb72e",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
            ],
            "outDataPins" : [
               {
                  "Guid" : "e98016b7-9045-410c-9daa-7246be4e40ce",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1d0497d8-d237-404e-ba17-26b73b0eb72e",
                  "IsOutput" : "true",
                  "name" : "Value",
                  "type" : "MVRScript, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "MVRScript, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "Self",
            "compactName" : "Self",
            "position" : {
               "x" : "-94.99219",
               "y" : "375.1523"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintSelf"
         },
         {
            "Guid" : "a4b9e161-0c30-49c1-a2a6-ea1aab3e7eb1",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
               {
                  "Guid" : "011342fc-5ff5-49dc-b97a-a1e75207bb60",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "a4b9e161-0c30-49c1-a2a6-ea1aab3e7eb1",
                  "IsOutput" : "false",
                  "name" : "Storable",
                  "type" : "JSONStorable, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorable, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "b0d44046-dff5-4f35-8e7f-e6cafeea15d0",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "a4b9e161-0c30-49c1-a2a6-ea1aab3e7eb1",
                  "IsOutput" : "false",
                  "name" : "Name",
                  "type" : "System.String",
                  "constraint" : {
                     "types" : [
                        "System.String"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "Some Param",
                     "$type" : "System.String"
                  },
                  "visibility" : [
                     "Name",
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "4765ba55-ce8e-42c7-91c4-052f23e7decc",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "a4b9e161-0c30-49c1-a2a6-ea1aab3e7eb1",
                  "IsOutput" : "true",
                  "name" : "",
                  "type" : "JSONStorableFloat, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableFloat, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "GetParam",
            "compactName" : "",
            "position" : {
               "x" : "74.88281",
               "y" : "429.7383"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Storables.PBNodeStorablesGetParam"
         },
         {
            "Guid" : "b79c7a6f-25c4-4c52-8bcf-10eb250eda26",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
               {
                  "Guid" : "6140a4cf-0161-48c7-bd1b-ef4086f861a4",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "b79c7a6f-25c4-4c52-8bcf-10eb250eda26",
                  "IsOutput" : "false",
                  "name" : "Guid",
                  "type" : "System.Guid",
                  "constraint" : {
                     "types" : [
                        "System.Guid"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "22c67d3d-3d1d-43d6-a3c2-f13627c79b6e",
                     "$type" : "System.Guid"
                  },
                  "visibility" : [
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "389a8c5e-a300-460d-834d-1227cd128ed1",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "b79c7a6f-25c4-4c52-8bcf-10eb250eda26",
                  "IsOutput" : "true",
                  "name" : "Value",
                  "type" : "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "GetCallback",
            "compactName" : "",
            "position" : {
               "x" : "93.84375",
               "y" : "195.6055"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintGetCallback"
         },
         {
            "Guid" : "1cf78e09-32dc-4b1a-8247-c6d71c4ef4f0",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "inExecPins" : [
               {
                  "Guid" : "3247826e-b087-4b7b-a435-919f45eade42",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1cf78e09-32dc-4b1a-8247-c6d71c4ef4f0",
                  "IsOutput" : "false",
                  "name" : "Exec",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "outExecPins" : [
               {
                  "Guid" : "ef79c87f-fe5f-426d-b9cd-63637b16f2b3",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1cf78e09-32dc-4b1a-8247-c6d71c4ef4f0",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
               {
                  "Guid" : "77a06387-9739-4421-b44b-26341893eed1",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1cf78e09-32dc-4b1a-8247-c6d71c4ef4f0",
                  "IsOutput" : "false",
                  "name" : "Param",
                  "type" : "JSONStorableFloat, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableBool, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableFloat, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableVector3, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableString, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableUrl, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableColor, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableAction, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "32b73b0a-c4db-440b-a217-bbc31cf4a882",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1cf78e09-32dc-4b1a-8247-c6d71c4ef4f0",
                  "IsOutput" : "false",
                  "name" : "Callback",
                  "type" : "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableBool+SetBoolCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableVector3+SetVector3Callback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableString+SetStringCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableStringChooser+SetStringCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableColor+SetHSVColorCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableAction+ActionCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "6c179ba6-ecc0-4d2d-83e0-bc8c29b9703a",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1cf78e09-32dc-4b1a-8247-c6d71c4ef4f0",
                  "IsOutput" : "false",
                  "name" : "On",
                  "type" : "System.Boolean",
                  "constraint" : {
                     "types" : [
                        "System.Boolean"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "true",
                     "$type" : "System.Boolean"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "c28390e4-5f9c-4878-81cf-e302be70595a",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "1cf78e09-32dc-4b1a-8247-c6d71c4ef4f0",
                  "IsOutput" : "false",
                  "name" : "CallNow",
                  "type" : "System.Boolean",
                  "constraint" : {
                     "types" : [
                        "System.Boolean"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "false",
                     "$type" : "System.Boolean"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
            ],
            "displayName" : "SetCallback",
            "compactName" : "",
            "position" : {
               "x" : "606.4766",
               "y" : "574.2344"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Storables.PBNodeStorablesSetCallback"
         },
         {
            "Guid" : "9d628fc8-fa1e-420b-8e84-2720fb284662",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "inExecPins" : [
            ],
            "outExecPins" : [
               {
                  "Guid" : "c89a35ca-976d-43a9-980d-464ec6c0f2a4",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "9d628fc8-fa1e-420b-8e84-2720fb284662",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
               {
                  "Guid" : "dd229fa2-1076-49d9-8234-bf2d7f16684e",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "9d628fc8-fa1e-420b-8e84-2720fb284662",
                  "IsOutput" : "false",
                  "name" : "CallbackVariable",
                  "type" : "System.Guid",
                  "constraint" : {
                     "types" : [
                        "System.Guid"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "22c67d3d-3d1d-43d6-a3c2-f13627c79b6e",
                     "$type" : "System.Guid"
                  },
                  "visibility" : [
                     "None"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "96ebdba4-82df-49f0-a911-bfa1ca253ced",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "9d628fc8-fa1e-420b-8e84-2720fb284662",
                  "IsOutput" : "false",
                  "name" : "Type",
                  "type" : "perfectbloo.Blooprints.Nodes.Blooprint.EStorableType",
                  "constraint" : {
                     "types" : [
                        "perfectbloo.Blooprints.Nodes.Blooprint.EStorableType"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "Float",
                     "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.EStorableType"
                  },
                  "visibility" : [
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "7bdaa97b-1fed-4d51-a456-d8d448a0c0ea",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "9d628fc8-fa1e-420b-8e84-2720fb284662",
                  "IsOutput" : "false",
                  "name" : "Name",
                  "type" : "System.String",
                  "constraint" : {
                     "types" : [
                        "System.String"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "My Callback",
                     "$type" : "System.String"
                  },
                  "visibility" : [
                     "Name",
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "767e8c9a-c32d-4c7e-a7b7-08256251a615",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "9d628fc8-fa1e-420b-8e84-2720fb284662",
                  "IsOutput" : "true",
                  "name" : "Value",
                  "type" : "System.Single",
                  "constraint" : {
                     "types" : [
                        "System.Single"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "0",
                     "$type" : "System.Single"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "Callback",
            "compactName" : "",
            "position" : {
               "x" : "-168.9844",
               "y" : "-50.07031"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintCallback"
         },
         {
            "Guid" : "0c5f0c87-e5ba-4de7-8595-15eb3e28830e",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "inExecPins" : [
            ],
            "outExecPins" : [
               {
                  "Guid" : "e2a58551-64c6-4f5d-a09b-e9d192ca8781",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "0c5f0c87-e5ba-4de7-8595-15eb3e28830e",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
            ],
            "outDataPins" : [
            ],
            "displayName" : "OnEnable",
            "compactName" : "",
            "position" : {
               "x" : "-175.8555",
               "y" : "573.3008"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintOnEnable"
         },
         {
            "Guid" : "a196fa3e-9315-4aa7-b7ec-7af40792a55b",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "inExecPins" : [
               {
                  "Guid" : "f72f8271-6ab4-48cb-a54f-9584cb4f8eb8",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "a196fa3e-9315-4aa7-b7ec-7af40792a55b",
                  "IsOutput" : "false",
                  "name" : "Exec",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "outExecPins" : [
               {
                  "Guid" : "b5396bdf-5dc6-4e9b-a06d-7eb3739f8cf6",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "a196fa3e-9315-4aa7-b7ec-7af40792a55b",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
               {
                  "Guid" : "5a1a7d2a-2b8f-4f28-8690-0951f99ec0ac",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "a196fa3e-9315-4aa7-b7ec-7af40792a55b",
                  "IsOutput" : "false",
                  "name" : "Callback",
                  "type" : "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableBool+SetBoolCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableVector3+SetVector3Callback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableString+SetStringCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableStringChooser+SetStringCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableColor+SetHSVColorCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableAction+ActionCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "816ab479-484b-4277-a364-ee4702f94e79",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "a196fa3e-9315-4aa7-b7ec-7af40792a55b",
                  "IsOutput" : "false",
                  "name" : "Value",
                  "type" : "System.Single",
                  "constraint" : {
                     "types" : [
                        "System.Boolean",
                        "System.Single",
                        "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "System.String",
                        "HSVColor, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "42",
                     "$type" : "System.Single"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
            ],
            "displayName" : "Call",
            "compactName" : "",
            "position" : {
               "x" : "1474.332",
               "y" : "565.8906"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Storables.PBNodeStorablesCall"
         },
         {
            "Guid" : "87eb0703-6112-4446-830e-9e9e108f0bea",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
               {
                  "Guid" : "a5131a80-8fda-4923-8291-dc33093ad2b1",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "87eb0703-6112-4446-830e-9e9e108f0bea",
                  "IsOutput" : "false",
                  "name" : "Guid",
                  "type" : "System.Guid",
                  "constraint" : {
                     "types" : [
                        "System.Guid"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "22c67d3d-3d1d-43d6-a3c2-f13627c79b6e",
                     "$type" : "System.Guid"
                  },
                  "visibility" : [
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "86f2ccb2-f7f9-432e-bb53-b1ec367f2794",
                  "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
                  "Node" : "87eb0703-6112-4446-830e-9e9e108f0bea",
                  "IsOutput" : "true",
                  "name" : "Value",
                  "type" : "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "GetCallback",
            "compactName" : "",
            "position" : {
               "x" : "985.5586",
               "y" : "442.4023"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintGetCallback"
         }
      ],
      "links" : [
         {
            "Guid" : "c471cb0a-f392-4d80-b216-c0c70d2a723b",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "Output" : "4765ba55-ce8e-42c7-91c4-052f23e7decc",
            "Input" : "77a06387-9739-4421-b44b-26341893eed1"
         },
         {
            "Guid" : "3ab2bf25-b0c3-4ee2-b71f-685366da5b6e",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "Output" : "e98016b7-9045-410c-9daa-7246be4e40ce",
            "Input" : "011342fc-5ff5-49dc-b97a-a1e75207bb60"
         },
         {
            "Guid" : "8e90cc86-e181-4e53-9e61-848411354a06",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "Output" : "389a8c5e-a300-460d-834d-1227cd128ed1",
            "Input" : "32b73b0a-c4db-440b-a217-bbc31cf4a882"
         },
         {
            "Guid" : "88c3b13c-d3bb-4355-98f6-c41682544b70",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "Output" : "767e8c9a-c32d-4c7e-a7b7-08256251a615",
            "Input" : "c111d6ef-669c-4112-af5c-2864cc0a1976"
         },
         {
            "Guid" : "5fa6a0bc-5dbb-4947-82dc-ae6ac35ffb9f",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "Output" : "c89a35ca-976d-43a9-980d-464ec6c0f2a4",
            "Input" : "0d92aae3-6777-4085-ba16-2e35dabb872b"
         },
         {
            "Guid" : "f5784690-bfdc-4ad0-81ac-03be434d9a7a",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "Output" : "e2a58551-64c6-4f5d-a09b-e9d192ca8781",
            "Input" : "3247826e-b087-4b7b-a435-919f45eade42"
         },
         {
            "Guid" : "ec6ec363-fd23-46e0-8e96-3f01ecfaa6ef",
            "Graph" : "d6681344-2d2e-43f3-bbf8-040bf13fe911",
            "Output" : "86f2ccb2-f7f9-432e-bb53-b1ec367f2794",
            "Input" : "5a1a7d2a-2b8f-4f28-8690-0951f99ec0ac"
         }
      ],
      "redirectors" : [
      ]
   }
}


I totally get that, documentation is very important for a tool like this. Just keep in mind, at this point this is an experimental release. For those that like to tinker and experiment themselves, and maybe even have some experience with other node based scripting tools like UE5. Knowing VaM plugin development can help a lot, too.

But yes, for now it would also be great to at least have examples with the basics to get started. I hope to gradually build the documentation, with the long-term goal to have tutorials and actually have some sort of auto-doc system with descriptions of each node. To provide in-game hints, and probably a web-based documentation as well.


Technically it is, but not really convenient. It exposes an API you could access using the param, value, and call nodes. But no, there's no dedicated node for it.


Making reusable building blocks like custom nodes is definitely on the roadmap!


Thanks for all your suggestions 🩵

Right now I'm noting down all the feedback I get, prioritize, see what will make it into the next major update, and gradually improve documentation. However, as probably most other creators I'm doing this in my free time, so please be patient. In the meantime, I'm always happy to answer questions!
Really appreciate you and your contribution to the VaM community, for now i wish you the best of luck on this project. Cheers.
 
Back
Top Bottom