Action nodes: Location tag

This commit is contained in:
Tanasart 2023-08-09 11:52:57 +02:00
parent 80b02f7eab
commit 14fab463f7
11 changed files with 76 additions and 16 deletions

Binary file not shown.

View file

@ -2,6 +2,7 @@
"name": "Armature Build",
"tags": ["bone", "rigging"],
"tooltip": "",
"location": ["Compose", "Armature"],
"sprPath": "./Armature Build.png",
"nodes": [
{ "node": "Node_Armature" },

View file

@ -2,6 +2,7 @@
"name": "Follow Path",
"tags": [],
"tooltip": "",
"location": ["Transform", "Transformations"],
"sprPath": "./Follow Path.png",
"nodes": [
{ "node": "Node_Path", "y": 64 },

View file

@ -2,6 +2,7 @@
"name": "Line from Path",
"tags": [],
"tooltip": "",
"location": ["Generate", "Drawer"],
"sprPath": "./Line from Path.png",
"nodes": [
{ "node": "Node_Path" },

View file

@ -120,6 +120,7 @@ event_inherited();
function buildNode(_node, _param = "") {
if(!_node) {
instance_destroy();
instance_destroy(o_dialog_menubox);
return;
}
@ -130,6 +131,7 @@ event_inherited();
_new_node = _node.build(node_target_x, node_target_y,, _param);
if(!_new_node) {
instance_destroy();
instance_destroy(o_dialog_menubox);
return;
}
@ -226,6 +228,7 @@ event_inherited();
}
instance_destroy();
instance_destroy(o_dialog_menubox);
}
catagory_pane = new scrollPane(category_width, dialog_h - ui(66), function(_y, _m) {

View file

@ -1,5 +1,4 @@
/// @description
event_inherited();
WIDGET_CURRENT = noone;
instance_destroy(o_dialog_menubox);
WIDGET_CURRENT = noone;

View file

@ -104,7 +104,7 @@
VERSION = 11484;
SAVE_VERSION = 11482;
VERSION_STRING = "1.15rc4";
BUILD_NUMBER = 11484;
BUILD_NUMBER = 11485;
globalvar APPEND_MAP;
APPEND_MAP = ds_map_create();

View file

@ -14,6 +14,8 @@
inputNode = noone;
outputNode = noone;
location = noone;
static getName = function() { return name; /*__txt_node_name(node, name); */ }
static getTooltip = function() { return tooltip; /*__txt_node_tooltip(node, tooltip); */ }
@ -67,6 +69,8 @@
inputNode = struct_try_get(map, "inputNode", noone);
outputNode = struct_try_get(map, "outputNode", noone);
location = struct_try_get(map, "location", noone);
if(struct_has(map, "sprPath")) {
var _path = string_replace(map.sprPath, "./", filename_dir(path) + "/");
@ -93,6 +97,23 @@
if(filename_ext(f) == ".json") {
var _c = new NodeAction().deserialize($"{root}/{f}");
ds_list_add(list, _c);
if(_c.location != noone) {
var _cat = _c.location[0];
var _grp = _c.location[1];
for( var i = 0, n = ds_list_size(NODE_CATEGORY); i < n; i++ ) {
if(NODE_CATEGORY[| i].name != _cat) continue;
var _list = NODE_CATEGORY[| i].list;
var j = 0;
for( var m = ds_list_size(_list); j < m; j++ )
if(_list[| j] == _grp) break;
ds_list_insert(_list, j + 1, _c);
break;
}
}
}
f = file_find_next();

View file

@ -37,6 +37,8 @@ function Node_ASE_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
inputs[| 2] = nodeValue("Current tag", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "");
inputs[| 3] = nodeValue("Use cel dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
outputs[| 0] = nodeValue("Output", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 1] = nodeValue("Content", self, JUNCTION_CONNECT.output, VALUE_TYPE.object, self);
@ -155,7 +157,7 @@ function Node_ASE_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
input_display_list = [
["File", true], 0,
["Layers", false], 1, layer_renderer,
["Layers", false], 1, 3, layer_renderer,
["Tags", false], 2, tag_renderer,
];
@ -183,6 +185,8 @@ function Node_ASE_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
var nh = (array_length(layers) - 1) / 2 * _nh;
var ny = y - nh;
var use_cel = inputs[| 3].getValue();
var lvs = [];
for( var i = 0, n = array_length(layers); i < n; i++ ) {
var _layer = layers[i];
@ -201,9 +205,10 @@ function Node_ASE_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
if(_node == noone)
_node = nodeBuild("Node_ASE_layer", nx, ny + i * _nh);
lvs[i] = _node;
lvs[i].inputs[| 0].setFrom(outputs[| 1]);
lvs[i].inputs[| 1].setValue(use_cel);
lvs[i].setDisplayName(_name);
}
}

View file

@ -9,18 +9,45 @@ function Node_Palette_Sort(_x, _y, _group = noone) : Node(_x, _y, _group) constr
.setVisible(true, true);
inputs[| 1] = nodeValue("Order", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Brightness", -1, "Hue (HSV)", "Saturation (SHV)", "Value (VHS)", -1, "Red (RGB)", "Green (GBR)", "Blue (BRG)" ])
.setDisplay(VALUE_DISPLAY.enum_button, [ "Brightness", -1, "Hue (HSV)", "Saturation (SHV)", "Value (VHS)", -1, "Red (RGB)", "Green (GBR)", "Blue (BRG)", -1, "Custom" ])
.rejectArray();
inputs[| 2] = nodeValue("Reverse", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
inputs[| 3] = nodeValue("Sort Order", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "RGB");
outputs[| 0] = nodeValue("Sorted palette", self, JUNCTION_CONNECT.output, VALUE_TYPE.color, [])
.setDisplay(VALUE_DISPLAY.palette);
static step = function() {
var _typ = inputs[| 1].getValue();
inputs[| 3].setVisible(_typ == 10);
}
sort_string = "";
static customSort = function(c) {
var len = string_length(sort_string);
var val = power(256, len);
for( var i = 1; i <= len; i++ ) {
var ch = string_lower(string_char_at(sort_string, i));
switch(ch) {
case "r" : return
}
val /= 256;
}
return c;
}
static update = function(frame = PROJECT.animator.current_frame) {
var _arr = inputs[| 0].getValue();
var _ord = inputs[| 1].getValue();
var _rev = inputs[| 2].getValue();
sort_string = inputs[| 3].getValue();
if(!is_array(_arr)) return;
var _pal = array_clone(_arr);
@ -28,13 +55,15 @@ function Node_Palette_Sort(_x, _y, _group = noone) : Node(_x, _y, _group) constr
switch(_ord) {
case 0 : array_sort(_pal, __sortBright); break;
case 1 : array_sort(_pal, __sortHue); break;
case 2 : array_sort(_pal, __sortSat); break;
case 3 : array_sort(_pal, __sortVal); break;
case 2 : array_sort(_pal, __sortHue); break;
case 3 : array_sort(_pal, __sortSat); break;
case 4 : array_sort(_pal, __sortVal); break;
case 4 : array_sort(_pal, __sortRed); break;
case 5 : array_sort(_pal, __sortGreen); break;
case 6 : array_sort(_pal, __sortBlue); break;
case 6 : array_sort(_pal, __sortRed); break;
case 7 : array_sort(_pal, __sortGreen); break;
case 8 : array_sort(_pal, __sortBlue); break;
case 10 : array_sort(_pal, function(c1, c2) { return customSort(c1) - customSort(c2); }); break;
}
if(_rev) _pal = array_reverse(_pal);

View file

@ -732,7 +732,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
);
callAddDialog();
menuCall("graph_node_selected_menu",o_dialog_add_node.dialog_x - ui(8), o_dialog_add_node.dialog_y + ui(4), menu, fa_right );
menuCall("graph_node_selected_menu", o_dialog_add_node.dialog_x - ui(8), o_dialog_add_node.dialog_y + ui(4), menu, fa_right );
setFocus(o_dialog_add_node.id, "Dialog");
}
}
@ -1083,18 +1083,18 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
SAVE_NODE(_node, nodeArray[i],,,, getCurrentContext());
_map.nodes = _node;
clipboard_set_text(json_encode_minify(_map));
clipboard_set_text(json_stringify_minify(_map));
}
function doPaste() {
var txt = clipboard_get_text();
var txt = clipboard_get_text();
var _map = json_try_parse(txt, noone);
if(_map != noone) {
ds_map_clear(APPEND_MAP);
APPENDING = true;
CLONING = true;
var _app = __APPEND_MAP(_map);
var _app = __APPEND_MAP(_map);
APPENDING = false;
CLONING = false;