mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2024-12-26 06:56:45 +01:00
- [Group Input] Add visiblity properties.
This commit is contained in:
parent
64233526f7
commit
5232a0579e
6 changed files with 115 additions and 44 deletions
|
@ -38,7 +38,7 @@
|
||||||
LATEST_VERSION = 11700;
|
LATEST_VERSION = 11700;
|
||||||
VERSION = 11761;
|
VERSION = 11761;
|
||||||
SAVE_VERSION = 11700;
|
SAVE_VERSION = 11700;
|
||||||
VERSION_STRING = "1.17.6.1";
|
VERSION_STRING = "1.17.7.001";
|
||||||
BUILD_NUMBER = 11761;
|
BUILD_NUMBER = 11761;
|
||||||
|
|
||||||
globalvar HOTKEYS, HOTKEY_CONTEXT;
|
globalvar HOTKEYS, HOTKEY_CONTEXT;
|
||||||
|
|
|
@ -3,7 +3,7 @@ enum COLLECTION_TAG {
|
||||||
loop = 2
|
loop = 2
|
||||||
}
|
}
|
||||||
|
|
||||||
function groupNodes(nodeArray, _group = noone, record = true, check_connect = true) { #region
|
function groupNodes(nodeArray, _group = noone, record = true, check_connect = true) {
|
||||||
#region check inline
|
#region check inline
|
||||||
var _ctx_nodes = [];
|
var _ctx_nodes = [];
|
||||||
|
|
||||||
|
@ -117,9 +117,9 @@ function groupNodes(nodeArray, _group = noone, record = true, check_connect = tr
|
||||||
if(record) recordAction(ACTION_TYPE.group, _group, { content: _content });
|
if(record) recordAction(ACTION_TYPE.group, _group, { content: _content });
|
||||||
|
|
||||||
return _group;
|
return _group;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function upgroupNode(collection, record = true) { #region
|
function upgroupNode(collection, record = true) {
|
||||||
UNDO_HOLDING = true;
|
UNDO_HOLDING = true;
|
||||||
var _content = [], _deleted = [];
|
var _content = [], _deleted = [];
|
||||||
var _node_arr = collection.getNodeList();
|
var _node_arr = collection.getNodeList();
|
||||||
|
@ -166,7 +166,7 @@ function upgroupNode(collection, record = true) { #region
|
||||||
deleted : _deleted,
|
deleted : _deleted,
|
||||||
connectTo : _conn_to,
|
connectTo : _conn_to,
|
||||||
});
|
});
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function Node_Collection(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
function Node_Collection(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||||
nodes = [];
|
nodes = [];
|
||||||
|
|
|
@ -951,7 +951,7 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
|
||||||
|
|
||||||
static isRenderActive = function() { return renderActive || (PREFERENCES.render_all_export && IS_RENDERING); }
|
static isRenderActive = function() { return renderActive || (PREFERENCES.render_all_export && IS_RENDERING); }
|
||||||
|
|
||||||
static isRenderable = function(log = false) { #region //Check if every input is ready (updated)
|
static isRenderable = function(log = false) { //Check if every input is ready (updated)
|
||||||
if(!active) return false;
|
if(!active) return false;
|
||||||
if(!isRenderActive()) return false;
|
if(!isRenderActive()) return false;
|
||||||
|
|
||||||
|
@ -959,7 +959,7 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
|
||||||
if(!inputs[| j].isRendered()) return false;
|
if(!inputs[| j].isRendered()) return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static setRenderStatus = function(result) { #region
|
static setRenderStatus = function(result) { #region
|
||||||
INLINE
|
INLINE
|
||||||
|
|
|
@ -89,11 +89,30 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
||||||
inputs[| 8] = nodeValue("Button Label", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "Trigger")
|
inputs[| 8] = nodeValue("Button Label", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "Trigger")
|
||||||
.setVisible(false);
|
.setVisible(false);
|
||||||
|
|
||||||
|
inputs[| 9] = nodeValue("Visible Condition", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
||||||
|
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Show", "Hide", /* 2 */ new scrollItem("Equal", s_node_condition_type, 0),
|
||||||
|
/* 3 */ new scrollItem("Not equal", s_node_condition_type, 1),
|
||||||
|
/* 4 */ new scrollItem("Greater ", s_node_condition_type, 4),
|
||||||
|
/* 5 */ new scrollItem("Greater or equal", s_node_condition_type, 5),
|
||||||
|
/* 6 */ new scrollItem("Lesser", s_node_condition_type, 2),
|
||||||
|
/* 7 */ new scrollItem("Lesser or equal", s_node_condition_type, 3), ]);
|
||||||
|
|
||||||
|
inputs[| 10] = nodeValue("Visible Check", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0);
|
||||||
|
|
||||||
|
inputs[| 11] = nodeValue("Visible Check To", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0);
|
||||||
|
|
||||||
|
inputs[| 10].setFrom_condition = function(_valueFrom) {
|
||||||
|
if(is_instanceof(_valueFrom.node, Node_Group_Input)) return true;
|
||||||
|
|
||||||
|
noti_warning("Group IO visibility must be connected directly to another group input.",, self);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
for( var i = 0, n = ds_list_size(inputs); i < n; i++ )
|
for( var i = 0, n = ds_list_size(inputs); i < n; i++ )
|
||||||
inputs[| i].uncache().rejectArray();
|
inputs[| i].uncache().rejectArray();
|
||||||
|
|
||||||
input_display_list = [
|
input_display_list = [
|
||||||
["Display", false], 6,
|
["Display", false], 6, 9, 10, 11,
|
||||||
["Data", false], 2, 0, 4, 1, 7, 3, 8,
|
["Data", false], 2, 0, 4, 1, 7, 3, 8,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -122,12 +141,54 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
||||||
inputs[| 2].setValue(ind);
|
inputs[| 2].setValue(ind);
|
||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
||||||
if(inParent.isArray()) return;
|
if(inParent.isArray()) return;
|
||||||
return inParent.drawOverlay(hover, active, _x, _y, _s, _mx, _my, _snx, _sny);
|
return inParent.drawOverlay(hover, active, _x, _y, _s, _mx, _my, _snx, _sny);
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static onValueUpdate = function(index = 0) { #region
|
static isRenderable = function(log = false) { //Check if every input is ready (updated)
|
||||||
|
if(!active) return false;
|
||||||
|
if(!isRenderActive()) return false;
|
||||||
|
|
||||||
|
for(var j = 0; j < 9; j++) if(!inputs[| j].isRendered()) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static visibleCheck = function() {
|
||||||
|
var _vty = inputs[| 9].getValue();
|
||||||
|
|
||||||
|
inputs[| 10].setVisible(_vty >= 2, _vty >= 2);
|
||||||
|
inputs[| 11].setVisible(_vty >= 2);
|
||||||
|
|
||||||
|
var _val = inputs[| 10].getValue();
|
||||||
|
var _vto = inputs[| 11].getValue();
|
||||||
|
var _vis = true;
|
||||||
|
|
||||||
|
switch(_vty) {
|
||||||
|
case 0 : _vis = true; break;
|
||||||
|
case 1 : _vis = false; break;
|
||||||
|
|
||||||
|
case 2 : _vis = _val == _vto; break;
|
||||||
|
case 3 : _vis = _val != _vto; break;
|
||||||
|
|
||||||
|
case 4 : _vis = _val > _vto; break;
|
||||||
|
case 5 : _vis = _val >= _vto; break;
|
||||||
|
|
||||||
|
case 6 : _vis = _val < _vto; break;
|
||||||
|
case 7 : _vis = _val <= _vto; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
var _v = inParent.visible;
|
||||||
|
if(_v && !_vis) inParent.visible = false;
|
||||||
|
inParent.show_in_inspector = _vis;
|
||||||
|
|
||||||
|
if(_v != _vis) {
|
||||||
|
group.setHeight();
|
||||||
|
group.getJunctionList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static onValueUpdate = function(index = 0) {
|
||||||
if(is_undefined(inParent)) return;
|
if(is_undefined(inParent)) return;
|
||||||
|
|
||||||
var _dtype = getInputData(0);
|
var _dtype = getInputData(0);
|
||||||
|
@ -291,9 +352,11 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
||||||
inParent.setDisplay(VALUE_DISPLAY.button, { name: bname, onClick: function() { doTrigger = 1; } });
|
inParent.setDisplay(VALUE_DISPLAY.button, { name: bname, onClick: function() { doTrigger = 1; } });
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} #endregion
|
|
||||||
|
|
||||||
static createInput = function() { #region
|
visibleCheck();
|
||||||
|
}
|
||||||
|
|
||||||
|
static createInput = function() {
|
||||||
if(group == noone || !is_struct(group)) return noone;
|
if(group == noone || !is_struct(group)) return noone;
|
||||||
|
|
||||||
if(!is_undefined(inParent))
|
if(!is_undefined(inParent))
|
||||||
|
@ -315,14 +378,14 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
||||||
onValueUpdate(0);
|
onValueUpdate(0);
|
||||||
|
|
||||||
return inParent;
|
return inParent;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
if(!LOADING && !APPENDING) createInput();
|
if(!LOADING && !APPENDING) createInput();
|
||||||
|
|
||||||
dtype = -1;
|
dtype = -1;
|
||||||
range = 0;
|
range = 0;
|
||||||
|
|
||||||
static step = function() { #region
|
static step = function() {
|
||||||
if(is_undefined(inParent)) return;
|
if(is_undefined(inParent)) return;
|
||||||
|
|
||||||
var _type = getInputData(2);
|
var _type = getInputData(2);
|
||||||
|
@ -364,31 +427,37 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
||||||
case "Slider" :
|
case "Slider" :
|
||||||
case "Slider range" :
|
case "Slider range" :
|
||||||
inputs[| 7].setVisible(true);
|
inputs[| 7].setVisible(true);
|
||||||
|
inputs[| 1].setVisible(true);
|
||||||
|
break;
|
||||||
|
|
||||||
case "Range" :
|
case "Range" :
|
||||||
inputs[| 1].setVisible(true);
|
inputs[| 1].setVisible(true);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "Enum button" :
|
case "Enum button" :
|
||||||
case "Menu scroll" :
|
case "Menu scroll" :
|
||||||
inputs[| 3].setVisible(true);
|
inputs[| 3].setVisible(true);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "Vector" :
|
case "Vector" :
|
||||||
case "Vector range" :
|
case "Vector range" :
|
||||||
inputs[| 4].setVisible(true);
|
inputs[| 4].setVisible(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static update = function(frame = CURRENT_FRAME) { #region
|
static update = function(frame = CURRENT_FRAME) {
|
||||||
if(is_undefined(inParent)) return;
|
if(is_undefined(inParent)) return;
|
||||||
} #endregion
|
visibleCheck();
|
||||||
|
}
|
||||||
|
|
||||||
static getGraphPreviewSurface = function() { #region
|
static getGraphPreviewSurface = function() {
|
||||||
return inputs[| 0].getValue();
|
return inputs[| 0].getValue();
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static postDeserialize = function() { createInput(false); }
|
static postDeserialize = function() { createInput(false); }
|
||||||
|
|
||||||
static doApplyDeserialize = function() { #region
|
static doApplyDeserialize = function() {
|
||||||
if(inParent == undefined) return;
|
if(inParent == undefined) return;
|
||||||
if(group == noone) return;
|
if(group == noone) return;
|
||||||
|
|
||||||
|
@ -397,17 +466,17 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
||||||
onValueUpdate();
|
onValueUpdate();
|
||||||
|
|
||||||
group.sortIO();
|
group.sortIO();
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static onDestroy = function() { #region
|
static onDestroy = function() {
|
||||||
if(is_undefined(inParent)) return;
|
if(is_undefined(inParent)) return;
|
||||||
|
|
||||||
ds_list_remove(group.inputs, inParent);
|
ds_list_remove(group.inputs, inParent);
|
||||||
group.sortIO();
|
group.sortIO();
|
||||||
group.refreshNodes();
|
group.refreshNodes();
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static onUngroup = function() { #region
|
static onUngroup = function() {
|
||||||
var fr = inParent.value_from;
|
var fr = inParent.value_from;
|
||||||
|
|
||||||
for( var i = 0; i < array_length(outputs[| 0].value_to); i++ ) {
|
for( var i = 0; i < array_length(outputs[| 0].value_to); i++ ) {
|
||||||
|
@ -416,10 +485,10 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
||||||
|
|
||||||
to.setFrom(fr);
|
to.setFrom(fr);
|
||||||
}
|
}
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static onLoadGroup = function() { #region
|
static onLoadGroup = function() {
|
||||||
if(group == noone) destroy();
|
if(group == noone) destroy();
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -6,7 +6,7 @@ function Node_Iterator_Output(_x, _y, _group = noone) : Node_Group_Output(_x, _y
|
||||||
manual_ungroupable = false;
|
manual_ungroupable = false;
|
||||||
setDimension(96, 48);
|
setDimension(96, 48);
|
||||||
|
|
||||||
inputs[| 0].setFrom_condition = function(_valueFrom) { #region
|
inputs[| 0].setFrom_condition = function(_valueFrom) {
|
||||||
if(instanceof(_valueFrom.node) != "Node_Iterator_Input") return true;
|
if(instanceof(_valueFrom.node) != "Node_Iterator_Input") return true;
|
||||||
if(inputs[| 1].value_from == noone) return true;
|
if(inputs[| 1].value_from == noone) return true;
|
||||||
if(inputs[| 1].value_from.node == _valueFrom.node) {
|
if(inputs[| 1].value_from.node == _valueFrom.node) {
|
||||||
|
@ -14,13 +14,13 @@ function Node_Iterator_Output(_x, _y, _group = noone) : Node_Group_Output(_x, _y
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
inputs[| 1] = nodeValue("Loop exit", self, JUNCTION_CONNECT.input, VALUE_TYPE.node, -1)
|
inputs[| 1] = nodeValue("Loop exit", self, JUNCTION_CONNECT.input, VALUE_TYPE.node, -1)
|
||||||
.uncache()
|
.uncache()
|
||||||
.setVisible(true, true);
|
.setVisible(true, true);
|
||||||
|
|
||||||
inputs[| 1].setFrom_condition = function(_valueFrom) { #region
|
inputs[| 1].setFrom_condition = function(_valueFrom) {
|
||||||
if(instanceof(_valueFrom.node) != "Node_Iterator_Input") return true;
|
if(instanceof(_valueFrom.node) != "Node_Iterator_Input") return true;
|
||||||
if(inputs[| 0].value_from == noone) return true;
|
if(inputs[| 0].value_from == noone) return true;
|
||||||
if(inputs[| 0].value_from.node == _valueFrom.node) {
|
if(inputs[| 0].value_from.node == _valueFrom.node) {
|
||||||
|
@ -28,20 +28,20 @@ function Node_Iterator_Output(_x, _y, _group = noone) : Node_Group_Output(_x, _y
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
cache_value = -1;
|
cache_value = -1;
|
||||||
|
|
||||||
static getNextNodes = function() { #region
|
static getNextNodes = function() {
|
||||||
if(!struct_has(group, "outputNextNode")) return [];
|
if(!struct_has(group, "outputNextNode")) return [];
|
||||||
return group.outputNextNode();
|
return group.outputNextNode();
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static initLoop = function() { #region
|
static initLoop = function() {
|
||||||
cache_value = noone;
|
cache_value = noone;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static cloneValue = function(_prev_val, _val) { #region
|
static cloneValue = function(_prev_val, _val) {
|
||||||
if(inputs[| 0].value_from == noone) return _prev_val;
|
if(inputs[| 0].value_from == noone) return _prev_val;
|
||||||
|
|
||||||
var is_surf = inputs[| 0].value_from.type == VALUE_TYPE.surface;
|
var is_surf = inputs[| 0].value_from.type == VALUE_TYPE.surface;
|
||||||
|
@ -51,9 +51,9 @@ function Node_Iterator_Output(_x, _y, _group = noone) : Node_Group_Output(_x, _y
|
||||||
_new_val = is_surf? surface_array_clone(_val) : array_clone(_val);
|
_new_val = is_surf? surface_array_clone(_val) : array_clone(_val);
|
||||||
|
|
||||||
return _new_val;
|
return _new_val;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static update = function(frame = CURRENT_FRAME) { #region
|
static update = function(frame = CURRENT_FRAME) {
|
||||||
if(inputs[| 0].value_from == noone) {
|
if(inputs[| 0].value_from == noone) {
|
||||||
group.iterationUpdate();
|
group.iterationUpdate();
|
||||||
return;
|
return;
|
||||||
|
@ -62,5 +62,5 @@ function Node_Iterator_Output(_x, _y, _group = noone) : Node_Group_Output(_x, _y
|
||||||
var _val = getInputData(0);
|
var _val = getInputData(0);
|
||||||
cache_value = cloneValue(cache_value, _val);
|
cache_value = cloneValue(cache_value, _val);
|
||||||
group.iterationUpdate();
|
group.iterationUpdate();
|
||||||
} #endregion
|
}
|
||||||
}
|
}
|
|
@ -476,16 +476,18 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
/////============ DISPLAY ===========
|
/////============ DISPLAY ===========
|
||||||
|
|
||||||
static setVisible = function(inspector) { #region
|
static setVisible = function(inspector) {
|
||||||
|
var v = visible;
|
||||||
|
|
||||||
if(connect_type == JUNCTION_CONNECT.input) {
|
if(connect_type == JUNCTION_CONNECT.input) {
|
||||||
show_in_inspector = inspector;
|
show_in_inspector = inspector;
|
||||||
visible = argument_count > 1? argument[1] : visible;
|
visible = argument_count > 1? argument[1] : visible;
|
||||||
} else
|
} else
|
||||||
visible = inspector;
|
visible = inspector;
|
||||||
node.will_setHeight = true;
|
|
||||||
|
|
||||||
|
node.will_setHeight |= visible != v;
|
||||||
return self;
|
return self;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static setDisplay = function(_type = VALUE_DISPLAY._default, _data = {}) { #region
|
static setDisplay = function(_type = VALUE_DISPLAY._default, _data = {}) { #region
|
||||||
display_type = _type;
|
display_type = _type;
|
||||||
|
|
Loading…
Reference in a new issue