perfectbloo submitted a new resource:
Blooprints - Create advanced scene logic with nodes
Read more about this resource...
Blooprints - Create advanced scene logic with nodes
Read more about this resource...
Last edited:
Thanks man, appreciate that! Yeah, I've been working on this one quite a bitYou 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.
here is the error log@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"?
@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.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.
{
"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.@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" : [ ] } }
No, there's no node for that at the moment.Now, as of right now Is it possible to make new atoms via blueprints?
As someone who likes to keep my Blooprints tidy and organized myself, yes, that would be very useful, especially grouping.I also have a recommendation: you should add node groups so you can sort of organize your nodes, as well as node renaming.
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).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.
{
"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 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.
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.Adding on, your GPURaycast plugin, which you also recently released, is it able to be used with Blooprints?
Making reusable building blocks like custom nodes is definitely on the roadmap!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.
Thanks for all your suggestions 🩵Other than that, I'm very impressed with this, as it is one of your first few plugins released.
Really appreciate you and your contribution to the VaM community, for now i wish you the best of luck on this project. Cheers.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!