mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2024-12-24 22:16:17 +01:00
- [Blend] Fix warning popup when input is empty in tile mode.
This commit is contained in:
parent
b02dfa5d57
commit
a5810b9345
8 changed files with 52 additions and 30 deletions
|
@ -20,7 +20,7 @@
|
|||
static getName = function() { return name; }
|
||||
static getTooltip = function() { return tooltip; }
|
||||
|
||||
static build = function(_x = 0, _y = 0, _group = PANEL_GRAPH.getCurrentContext(), _param = {}) { #region
|
||||
static build = function(_x = 0, _y = 0, _group = PANEL_GRAPH.getCurrentContext(), _param = {}) {
|
||||
var _n = {};
|
||||
|
||||
for( var i = 0, n = array_length(nodes); i < n; i++ ) {
|
||||
|
@ -40,6 +40,7 @@
|
|||
var _setVal = _setVals[j];
|
||||
var _input = is_string(_setVal.index)? _node.inputMap[? _setVal.index] : _node.inputs[| _setVal.index];
|
||||
if(_input == undefined) continue;
|
||||
if(!value_type_direct_settable(_input.type)) continue;
|
||||
|
||||
if(struct_has(_setVal, "value")) _input.setValue(_setVal.value);
|
||||
if(struct_has(_setVal, "unit")) _input.unit.setMode(_setVal.unit);
|
||||
|
@ -51,6 +52,7 @@
|
|||
var _key = _keys[j];
|
||||
var _input = _node.inputs[| _key];
|
||||
if(_input == undefined) continue;
|
||||
if(!value_type_direct_settable(_input.type)) continue;
|
||||
|
||||
var _setVal = _setVals[$ _key];
|
||||
|
||||
|
@ -76,14 +78,14 @@
|
|||
}
|
||||
|
||||
return _n;
|
||||
} #endregion
|
||||
}
|
||||
|
||||
static serialize = function() { #region
|
||||
static serialize = function() {
|
||||
var map = { name, tooltip, nodes, connections, tags };
|
||||
return map;
|
||||
} #endregion
|
||||
}
|
||||
|
||||
static deserialize = function(path) { #region
|
||||
static deserialize = function(path) {
|
||||
var map = json_load_struct(path);
|
||||
|
||||
name = struct_try_get(map, "name", "");
|
||||
|
@ -107,7 +109,7 @@
|
|||
}
|
||||
|
||||
return self;
|
||||
} #endregion
|
||||
}
|
||||
}
|
||||
|
||||
function NodeAction_create() : NodeAction() constructor {
|
||||
|
@ -118,21 +120,22 @@
|
|||
static build = function() { PANEL_GRAPH.createAction(); }
|
||||
}
|
||||
|
||||
function __initNodeActions(list) {
|
||||
function __initNodeActions() {
|
||||
var root = $"{DIRECTORY}Actions";
|
||||
directory_verify(root);
|
||||
|
||||
root += "/Nodes";
|
||||
directory_verify(root);
|
||||
|
||||
ds_list_add(list, new NodeAction_create());
|
||||
ds_list_clear(NODE_ACTION_LIST);
|
||||
ds_list_add(NODE_ACTION_LIST, new NodeAction_create());
|
||||
|
||||
var f = file_find_first(root + "/*", 0);
|
||||
|
||||
while (f != "") {
|
||||
if(filename_ext(f) == ".json") {
|
||||
var _c = new NodeAction().deserialize($"{root}/{f}");
|
||||
ds_list_add(list, _c);
|
||||
ds_list_add(NODE_ACTION_LIST, _c);
|
||||
|
||||
if(_c.location != noone) {
|
||||
var _cat = array_safe_get(_c.location, 0, "");
|
||||
|
|
|
@ -93,7 +93,7 @@ function Node_Blend(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
drag_mx = 0;
|
||||
drag_my = 0;
|
||||
|
||||
static drawOverlay = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) { #region
|
||||
static drawOverlay = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) {
|
||||
var _surf = outputs[| 0].getValue();
|
||||
if(is_array(_surf)) _surf = array_safe_get_fast(_surf, preview_index);
|
||||
if(is_struct(_surf)) return;
|
||||
|
@ -145,9 +145,9 @@ function Node_Blend(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
}
|
||||
} else
|
||||
draw_rectangle(_rx, _ry, _rx + _rw, _ry + _rh, true);
|
||||
} #endregion
|
||||
}
|
||||
|
||||
static step = function() { #region
|
||||
static step = function() {
|
||||
var _back = getSingleValue(0);
|
||||
var _fore = getSingleValue(1);
|
||||
var _fill = getSingleValue(5);
|
||||
|
@ -160,9 +160,9 @@ function Node_Blend(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
inputs[| 7].setVisible(_outp == 4);
|
||||
|
||||
inputs[| 14].setVisible(_fill == 0 && !_atlas);
|
||||
} #endregion
|
||||
}
|
||||
|
||||
static processData = function(_outSurf, _data, _output_index, _array_index) { #region
|
||||
static processData = function(_outSurf, _data, _output_index, _array_index) {
|
||||
var _back = _data[0];
|
||||
var _fore = _data[1];
|
||||
var _type = _data[2];
|
||||
|
@ -264,12 +264,12 @@ function Node_Blend(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
|
||||
} else if(_fill == NODE_BLEND_FILL.stretch) {
|
||||
surface_set_shader(_foreDraw, noone,, BLEND.over);
|
||||
draw_surface_stretched(_fore, 0, 0, ww, hh);
|
||||
draw_surface_stretched_safe(_fore, 0, 0, ww, hh);
|
||||
surface_reset_shader();
|
||||
|
||||
} else if(_fill == NODE_BLEND_FILL.tile) {
|
||||
surface_set_shader(_foreDraw, noone,, BLEND.over);
|
||||
draw_surface_tiled(_fore, 0, 0);
|
||||
draw_surface_tiled_safe(_fore);
|
||||
surface_reset_shader();
|
||||
}
|
||||
|
||||
|
@ -296,5 +296,5 @@ function Node_Blend(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) con
|
|||
}
|
||||
|
||||
return _outSurf;
|
||||
} #endregion
|
||||
}
|
||||
}
|
|
@ -27,7 +27,7 @@ function Node_Frame(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
|||
tb_name.hide = true;
|
||||
tb_name.align = fa_center;
|
||||
|
||||
name_height = 16;
|
||||
name_height = 18;
|
||||
|
||||
draw_x0 = 0;
|
||||
draw_y0 = 0;
|
||||
|
@ -121,7 +121,7 @@ function Node_Frame(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
|||
draw_sprite_stretched_ext(nm_spr, 0, draw_x0, draw_y0, _w, name_height, color, alpha * .75);
|
||||
|
||||
draw_set_text(f_p2, fa_center, fa_bottom, COLORS._main_text);
|
||||
draw_text_cut((draw_x0 + draw_x1) / 2, draw_y0 + name_height + 2, txt, _w - 4);
|
||||
draw_text_cut((draw_x0 + draw_x1) / 2, draw_y0 + name_height + 1, txt, _w - 4);
|
||||
|
||||
if(point_in_rectangle(_mx, _my, draw_x0, draw_y0, draw_x0 + _w, draw_y0 + name_height)) {
|
||||
if(PANEL_GRAPH.pFOCUS && DOUBLE_CLICK)
|
||||
|
|
|
@ -1051,9 +1051,10 @@ function __initNodes() {
|
|||
// addNodeObject(node, "DLL", s_node_gui_out, "Node_DLL", [1, Node_DLL]).setVersion(11750);
|
||||
#endregion
|
||||
|
||||
var actions = ds_list_create();
|
||||
addNodeCatagory("Action", actions);
|
||||
__initNodeActions(actions);
|
||||
globalvar NODE_ACTION_LIST;
|
||||
NODE_ACTION_LIST = ds_list_create();
|
||||
addNodeCatagory("Action", NODE_ACTION_LIST);
|
||||
__initNodeActions();
|
||||
|
||||
var customs = ds_list_create();
|
||||
addNodeCatagory("Custom", customs);
|
||||
|
|
|
@ -44,7 +44,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
|||
}
|
||||
|
||||
if(struct_has(node, "inputMap")) {
|
||||
if(_connect == JUNCTION_CONNECT.input) node.inputMap[? internalName] = self;
|
||||
if(_connect == JUNCTION_CONNECT.input) node.inputMap[? internalName] = self;
|
||||
else if(_connect == JUNCTION_CONNECT.output) node.outputMap[? internalName] = self;
|
||||
}
|
||||
|
||||
|
@ -1541,14 +1541,14 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
|||
return true;
|
||||
} #endregion
|
||||
|
||||
static getString = function() { #region
|
||||
static getString = function() {
|
||||
var val = showValue();
|
||||
|
||||
if(type == VALUE_TYPE.text) return val;
|
||||
return json_beautify(val);
|
||||
} #endregion
|
||||
}
|
||||
|
||||
static setString = function(str) { #region
|
||||
static setString = function(str) {
|
||||
if(connect_type == JUNCTION_CONNECT.output) return;
|
||||
if(type == VALUE_TYPE.text) { setValue(str); return; }
|
||||
|
||||
|
@ -1558,7 +1558,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
|||
_dat = [ _dat ];
|
||||
|
||||
setValue(_dat);
|
||||
} #endregion
|
||||
}
|
||||
|
||||
/////=========== CONNECT ===========
|
||||
|
||||
|
|
|
@ -370,6 +370,20 @@ function value_type_from_string(str) {
|
|||
return VALUE_TYPE.any;
|
||||
}
|
||||
|
||||
function value_type_direct_settable(type) {
|
||||
switch(type) {
|
||||
case VALUE_TYPE.integer :
|
||||
case VALUE_TYPE.float :
|
||||
case VALUE_TYPE.boolean :
|
||||
case VALUE_TYPE.color :
|
||||
case VALUE_TYPE.path :
|
||||
case VALUE_TYPE.text :
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function typeArray(_type) {
|
||||
switch(_type) {
|
||||
case VALUE_DISPLAY.range :
|
||||
|
|
|
@ -73,6 +73,8 @@ function Panel_Action_Create() : PanelContent() constructor {
|
|||
|
||||
if(spr) surface_save(spr, $"{DIRECTORY}Actions/Nodes/{name}.png");
|
||||
close();
|
||||
|
||||
__initNodeActions();
|
||||
});
|
||||
|
||||
b_create.text = __txtx("new_action_create", "Create");
|
||||
|
@ -113,6 +115,8 @@ function Panel_Action_Create() : PanelContent() constructor {
|
|||
|
||||
for(var j = 0; j < ds_list_size(_n.inputs); j++) {
|
||||
var _in = _n.inputs[| j];
|
||||
if(!value_type_direct_settable(_in.type)) continue;
|
||||
|
||||
var _vali = _val[$ j];
|
||||
var _ttg = false;
|
||||
|
||||
|
@ -201,7 +205,7 @@ function Panel_Action_Create() : PanelContent() constructor {
|
|||
_vals[$ j] = {};
|
||||
|
||||
if(_in.value_from == noone || !struct_has(_nmap, _in.value_from.node.node_id)) {
|
||||
var _vl = _in.getValue();
|
||||
var _vl = _in.getValue(, false);
|
||||
if(!isEqual(_vl, _in.def_val))
|
||||
_vals[$ j].value = _vl;
|
||||
continue;
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
__channel_pos(surface);
|
||||
} #endregion
|
||||
|
||||
function draw_surface_tiled_safe(surface, _x, _y) { #region
|
||||
function draw_surface_tiled_safe(surface, _x = 0, _y = 0) { #region
|
||||
INLINE
|
||||
|
||||
if(is_struct(surface)) {
|
||||
|
@ -69,7 +69,7 @@
|
|||
__channel_pos(surface);
|
||||
} #endregion
|
||||
|
||||
function draw_surface_tiled_ext_safe(surface, _x, _y, _xs = 1, _ys = 1, _rot = 0, _col = c_white, _alpha = 1) { #region
|
||||
function draw_surface_tiled_ext_safe(surface, _x = 0, _y = 0, _xs = 1, _ys = 1, _rot = 0, _col = c_white, _alpha = 1) { #region
|
||||
INLINE
|
||||
|
||||
if(is_struct(surface)) {
|
||||
|
|
Loading…
Reference in a new issue