mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-03-03 14:14:49 +01:00
tunnel fixes, overlay hover value fix, array sort
This commit is contained in:
parent
9aee759156
commit
44991cb99e
53 changed files with 5232 additions and 221 deletions
38
#backups/scripts/draw_UI_scale/draw_UI_scale.gml.backup0
Normal file
38
#backups/scripts/draw_UI_scale/draw_UI_scale.gml.backup0
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
// 2024-04-22 17:22:37
|
||||||
|
function line_get_height(font = noone, offset = 0) {
|
||||||
|
INLINE
|
||||||
|
var _f = font != noone? font : draw_get_font();
|
||||||
|
return global.LINE_HEIGHTS[$ _f] + offset * UI_SCALE;
|
||||||
|
}
|
||||||
|
|
||||||
|
function line_get_width(txt, font = noone, offset = 0) {
|
||||||
|
var ff = draw_get_font();
|
||||||
|
|
||||||
|
if(font != noone)
|
||||||
|
draw_set_font(font);
|
||||||
|
var ww = string_width(txt) + offset * UI_SCALE;
|
||||||
|
|
||||||
|
draw_set_font(ff);
|
||||||
|
return ww;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region global
|
||||||
|
#macro TEXTBOX_HEIGHT line_get_height(f_p0, 8)
|
||||||
|
#macro BUTTON_HEIGHT line_get_height(f_p0, 12)
|
||||||
|
|
||||||
|
function ui(val) {
|
||||||
|
INLINE
|
||||||
|
return round(val * UI_SCALE);
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetScale(scale, willResize = false) {
|
||||||
|
if(PREFERENCES.display_scaling == scale) return;
|
||||||
|
|
||||||
|
PREFERENCES.display_scaling = scale;
|
||||||
|
resetPanel(false);
|
||||||
|
loadFonts();
|
||||||
|
|
||||||
|
if(willResize) time_source_start(time_source_create(time_source_global, 1, time_source_units_frames, onResize));
|
||||||
|
PREF_SAVE();
|
||||||
|
}
|
||||||
|
#endregion
|
|
@ -1,4 +1,4 @@
|
||||||
// 2024-04-22 13:36:52
|
// 2024-04-22 16:03:35
|
||||||
function draw_line_dashed(x0, y0, x1, y1, th = 1, dash_distance = 8, dash_shift = 0) {
|
function draw_line_dashed(x0, y0, x1, y1, th = 1, dash_distance = 8, dash_shift = 0) {
|
||||||
var dis = point_distance(x0, y0, x1, y1);
|
var dis = point_distance(x0, y0, x1, y1);
|
||||||
var dir = point_direction(x0, y0, x1, y1);
|
var dir = point_direction(x0, y0, x1, y1);
|
||||||
|
@ -54,6 +54,7 @@ function draw_line_dotted(x0, y0, x1, y1, radius, shift, distanceMulp = 1) {
|
||||||
var dir = point_direction(x0, y0, x1, y1);
|
var dir = point_direction(x0, y0, x1, y1);
|
||||||
var dtd = radius * distanceMulp * 2;
|
var dtd = radius * distanceMulp * 2;
|
||||||
var part = floor(dis / dtd);
|
var part = floor(dis / dtd);
|
||||||
|
dtd = dis / part;
|
||||||
|
|
||||||
var dx = lengthdir_x(1, dir);
|
var dx = lengthdir_x(1, dir);
|
||||||
var dy = lengthdir_y(1, dir);
|
var dy = lengthdir_y(1, dir);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// 2024-04-22 13:35:54
|
// 2024-04-22 16:02:03
|
||||||
function draw_line_dashed(x0, y0, x1, y1, th = 1, dash_distance = 8, dash_shift = 0) {
|
function draw_line_dashed(x0, y0, x1, y1, th = 1, dash_distance = 8, dash_shift = 0) {
|
||||||
var dis = point_distance(x0, y0, x1, y1);
|
var dis = point_distance(x0, y0, x1, y1);
|
||||||
var dir = point_direction(x0, y0, x1, y1);
|
var dir = point_direction(x0, y0, x1, y1);
|
||||||
|
@ -54,6 +54,7 @@ function draw_line_dotted(x0, y0, x1, y1, radius, shift, distanceMulp = 1) {
|
||||||
var dir = point_direction(x0, y0, x1, y1);
|
var dir = point_direction(x0, y0, x1, y1);
|
||||||
var dtd = radius * distanceMulp * 2;
|
var dtd = radius * distanceMulp * 2;
|
||||||
var part = floor(dis / dtd);
|
var part = floor(dis / dtd);
|
||||||
|
dtd = dis / part;
|
||||||
|
|
||||||
var dx = lengthdir_x(1, dir);
|
var dx = lengthdir_x(1, dir);
|
||||||
var dy = lengthdir_y(1, dir);
|
var dy = lengthdir_y(1, dir);
|
||||||
|
@ -61,7 +62,7 @@ function draw_line_dotted(x0, y0, x1, y1, radius, shift, distanceMulp = 1) {
|
||||||
var nd, nx, ny;
|
var nd, nx, ny;
|
||||||
var rat = dtd / dis;
|
var rat = dtd / dis;
|
||||||
|
|
||||||
for( var i = 0; i <= part; i++ ) {
|
for( var i = 0; i < part; i++ ) {
|
||||||
nd = dis * frac(i * rat + shift / dis);
|
nd = dis * frac(i * rat + shift / dis);
|
||||||
nx = x0 + dx * nd;
|
nx = x0 + dx * nd;
|
||||||
ny = y0 + dy * nd;
|
ny = y0 + dy * nd;
|
||||||
|
|
186
#backups/scripts/hlsl_server/hlsl_server.gml.backup0
Normal file
186
#backups/scripts/hlsl_server/hlsl_server.gml.backup0
Normal file
|
@ -0,0 +1,186 @@
|
||||||
|
// 2024-04-22 15:43:42
|
||||||
|
#region functions
|
||||||
|
global.HLSL_FUNCTIONS = ds_map_create();
|
||||||
|
global.HLSL_FUNCTIONS[? "abs"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "acos"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "asfloat"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "asin"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "asint"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "atan"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "atan2"] = ["y", "x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "ceil"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "clamp"] = ["x", "min", "max"];
|
||||||
|
global.HLSL_FUNCTIONS[? "clip"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "cos"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "cosh"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "cross"] = ["x", "y"];
|
||||||
|
global.HLSL_FUNCTIONS[? "ddx"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "ddy"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "degrees"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "determinant"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "distance"] = ["x", "y"];
|
||||||
|
global.HLSL_FUNCTIONS[? "dot"] = ["x", "y"];
|
||||||
|
global.HLSL_FUNCTIONS[? "exp"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "exp2"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "faceforward"] = ["n", "i", "ng"];
|
||||||
|
global.HLSL_FUNCTIONS[? "floor"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "fma"] = ["a", "b", "c"];
|
||||||
|
global.HLSL_FUNCTIONS[? "fmod"] = ["x", "y"];
|
||||||
|
global.HLSL_FUNCTIONS[? "frac"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "frexp"] = ["x", "exp"];
|
||||||
|
global.HLSL_FUNCTIONS[? "fwidth"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "isfinite"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "isinf"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "isnan"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "ldexp"] = ["x", "exp"];
|
||||||
|
global.HLSL_FUNCTIONS[? "length"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "lerp"] = ["x", "y", "s"];
|
||||||
|
global.HLSL_FUNCTIONS[? "lit"] = ["n_dot_l", "n_dot_h", "m"];
|
||||||
|
global.HLSL_FUNCTIONS[? "log"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "log10"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "log2"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "max"] = ["x", "y"];
|
||||||
|
global.HLSL_FUNCTIONS[? "min"] = ["x", "y"];
|
||||||
|
global.HLSL_FUNCTIONS[? "modf"] = ["x", "out ip"];
|
||||||
|
global.HLSL_FUNCTIONS[? "mul"] = ["x", "y"];
|
||||||
|
global.HLSL_FUNCTIONS[? "noise"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "normalize"]= ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "pow"] = ["x", "y"];
|
||||||
|
global.HLSL_FUNCTIONS[? "radians"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "rcp"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "reflect"] = ["i", "n"];
|
||||||
|
global.HLSL_FUNCTIONS[? "refract"] = ["i", "n", "?"];
|
||||||
|
global.HLSL_FUNCTIONS[? "round"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "rsqrt"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "saturate"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "sign"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "sin"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "sincos"] = ["x", "out s", "out c"];
|
||||||
|
global.HLSL_FUNCTIONS[? "sinh"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "smoothstep"]= ["min", "max", "x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "sqrt"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "step"] = ["y", "x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "tan"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "tanh"] = ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "transpose"]= ["x"];
|
||||||
|
global.HLSL_FUNCTIONS[? "trunc"] = ["x"];
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
global.HLSL_VAR = [ "float", "int", "float2", "float3", "float4", "float3x3", "float4x4", "sampler" ];
|
||||||
|
|
||||||
|
function hlsl_document_parser(prompt, node = noone) {
|
||||||
|
var params = [];
|
||||||
|
var lines = string_split(prompt, "\n");
|
||||||
|
|
||||||
|
for( var i = node.input_fix_len, n = ds_list_size(node.inputs); i < n; i += node.data_length ) {
|
||||||
|
var _arg_name = node.getInputData(i + 0);
|
||||||
|
var _arg_type = node.getInputData(i + 1);
|
||||||
|
|
||||||
|
if(_arg_type == 7) {
|
||||||
|
array_push(params, [ _arg_name + "Object", "Texture2D" ]);
|
||||||
|
array_push(params, [ _arg_name, "SamplerState" ]);
|
||||||
|
} else array_push(params, [ _arg_name, array_safe_get_fast(global.HLSL_VAR, _arg_type) ]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(lines); i < n; i++ ) {
|
||||||
|
var line = string_trim(lines[i]);
|
||||||
|
var _token = string_split(line, " ");
|
||||||
|
var _vari = false;
|
||||||
|
var _vart = "";
|
||||||
|
var _vars = "";
|
||||||
|
|
||||||
|
for( var j = 0, m = array_length(_token); j < m; j++ ) {
|
||||||
|
if(_vari)
|
||||||
|
_vars += _token[j];
|
||||||
|
|
||||||
|
if(array_exists(global.HLSL_VAR, _token[j])) {
|
||||||
|
_vart = _token[j];
|
||||||
|
_vari = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_vars = string_replace_all(_vars, ";", "");
|
||||||
|
_vars = string_replace_all(_vars, " ", "");
|
||||||
|
_vars = string_splice(_vars, ",");
|
||||||
|
|
||||||
|
var _varType = [];
|
||||||
|
|
||||||
|
for( var j = 0, m = array_length(_vars); j < m; j++ ) {
|
||||||
|
var _eq = string_splice(_vars[j], "=");
|
||||||
|
_varType[j] = [ _eq[0], _vart ];
|
||||||
|
}
|
||||||
|
|
||||||
|
params = array_append(params, _varType);
|
||||||
|
}
|
||||||
|
|
||||||
|
return params;
|
||||||
|
}
|
||||||
|
|
||||||
|
function hlsl_autocomplete_server(prompt, params = []) {
|
||||||
|
var res = [];
|
||||||
|
var pr_list = ds_priority_create();
|
||||||
|
|
||||||
|
//////////////////////////////////
|
||||||
|
ds_priority_clear(pr_list);
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(params); i < n; i++ ) {
|
||||||
|
var gl = params[i];
|
||||||
|
|
||||||
|
var match = string_partial_match(string_lower(gl[0]), string_lower(prompt));
|
||||||
|
if(match == -9999) continue;
|
||||||
|
|
||||||
|
ds_priority_add(pr_list, [[THEME.ac_constant, 2], gl[0], gl[1], gl[0]], match);
|
||||||
|
}
|
||||||
|
|
||||||
|
repeat(ds_priority_size(pr_list))
|
||||||
|
array_push(res, ds_priority_delete_max(pr_list));
|
||||||
|
|
||||||
|
//////////////////////////////////
|
||||||
|
ds_priority_clear(pr_list);
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(global.HLSL_VAR); i < n; i++ ) {
|
||||||
|
var gl = global.HLSL_VAR[i];
|
||||||
|
|
||||||
|
var match = string_partial_match(string_lower(gl), string_lower(prompt));
|
||||||
|
if(match == -9999) continue;
|
||||||
|
|
||||||
|
ds_priority_add(pr_list, [[THEME.ac_constant, 3], gl, "var type", gl], match);
|
||||||
|
}
|
||||||
|
|
||||||
|
repeat(ds_priority_size(pr_list))
|
||||||
|
array_push(res, ds_priority_delete_max(pr_list));
|
||||||
|
|
||||||
|
//////////////////////////////////
|
||||||
|
ds_priority_clear(pr_list);
|
||||||
|
|
||||||
|
var F = global.HLSL_FUNCTIONS;
|
||||||
|
var _keys = ds_map_keys_to_array(F);
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(_keys); i < n; i++ ) {
|
||||||
|
var _key = _keys[i];
|
||||||
|
var match = string_partial_match(string_lower(_key), string_lower(prompt));
|
||||||
|
if(match == -9999)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
ds_priority_add(pr_list, [[THEME.ac_function, 0], _key, "function", _key], match);
|
||||||
|
}
|
||||||
|
|
||||||
|
repeat(ds_priority_size(pr_list))
|
||||||
|
array_push(res, ds_priority_delete_max(pr_list));
|
||||||
|
|
||||||
|
ds_priority_destroy(pr_list);
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
function hlsl_function_guide_server(prompt) {
|
||||||
|
if(!ds_map_exists(global.HLSL_FUNCTIONS, prompt)) return "";
|
||||||
|
|
||||||
|
var fn = global.HLSL_FUNCTIONS[? prompt];
|
||||||
|
var guide = prompt + "(";
|
||||||
|
for( var i = 0, n = array_length(fn); i < n; i++ )
|
||||||
|
guide += (i? ", " : "") + string(fn[i]);
|
||||||
|
guide += ")";
|
||||||
|
|
||||||
|
return guide;
|
||||||
|
}
|
56
#backups/scripts/node_array_sort/node_array_sort.gml.backup0
Normal file
56
#backups/scripts/node_array_sort/node_array_sort.gml.backup0
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
// 2024-04-22 19:10:46
|
||||||
|
function Node_Array_Sort(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||||
|
name = "Sort Array";
|
||||||
|
|
||||||
|
setDimension(96, 80);
|
||||||
|
|
||||||
|
inputs[| 0] = nodeValue("Array in", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, [])
|
||||||
|
.setVisible(true, true);
|
||||||
|
|
||||||
|
inputs[| 1] = nodeValue("Order", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
||||||
|
.setDisplay(VALUE_DISPLAY.enum_button, [ "Ascending", "Descending" ])
|
||||||
|
.rejectArray();
|
||||||
|
|
||||||
|
outputs[| 0] = nodeValue("Sorted array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, []);
|
||||||
|
|
||||||
|
outputs[| 1] = nodeValue("Sorted index", self, JUNCTION_CONNECT.output, VALUE_TYPE.integer, []);
|
||||||
|
|
||||||
|
static sortAcs = function(v1, v2) { return v2.val - v1.val; }
|
||||||
|
static sortDes = function(v1, v2) { return v1.val - v2.val; }
|
||||||
|
|
||||||
|
static update = function(frame = CURRENT_FRAME) {
|
||||||
|
var arr = getInputData(0);
|
||||||
|
var asc = getInputData(1);
|
||||||
|
|
||||||
|
inputs[| 0].setType(VALUE_TYPE.any);
|
||||||
|
outputs[| 0].setType(VALUE_TYPE.any);
|
||||||
|
|
||||||
|
if(!is_array(arr)) return;
|
||||||
|
|
||||||
|
var len = array_length(arr);
|
||||||
|
|
||||||
|
if(inputs[| 0].value_from != noone) {
|
||||||
|
inputs[| 0].setType(inputs[| 0].value_from.type);
|
||||||
|
outputs[| 0].setType(inputs[| 0].value_from.type);
|
||||||
|
}
|
||||||
|
|
||||||
|
var _arr = array_map(arr, function(v, i) { return { index: i, val: v }; });
|
||||||
|
array_sort(_arr, asc? sortAcs : sortDes);
|
||||||
|
|
||||||
|
var resV = array_verify(outputs[| 0].getValue(), len);
|
||||||
|
var resO = array_verify(outputs[| 1].getValue(), len);
|
||||||
|
|
||||||
|
for( var i = 0; i < len; i++ ) {
|
||||||
|
resO[i] = _arr[i].index;
|
||||||
|
resV[i] = _arr[i].val;
|
||||||
|
}
|
||||||
|
|
||||||
|
outputs[| 0].setValue(resV);
|
||||||
|
outputs[| 1].setValue(resO);
|
||||||
|
}
|
||||||
|
|
||||||
|
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
||||||
|
var bbox = drawGetBbox(xx, yy, _s);
|
||||||
|
draw_sprite_fit(s_node_array_sort, 0, bbox.xc, bbox.yc, bbox.w, bbox.h);
|
||||||
|
}
|
||||||
|
}
|
56
#backups/scripts/node_array_sort/node_array_sort.gml.backup1
Normal file
56
#backups/scripts/node_array_sort/node_array_sort.gml.backup1
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
// 2024-04-22 19:08:27
|
||||||
|
function Node_Array_Sort(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||||
|
name = "Sort Array";
|
||||||
|
|
||||||
|
setDimension(96, 80);
|
||||||
|
|
||||||
|
inputs[| 0] = nodeValue("Array in", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, [])
|
||||||
|
.setVisible(true, true);
|
||||||
|
|
||||||
|
inputs[| 1] = nodeValue("Order", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
||||||
|
.setDisplay(VALUE_DISPLAY.enum_button, [ "Ascending", "Descending" ])
|
||||||
|
.rejectArray();
|
||||||
|
|
||||||
|
outputs[| 0] = nodeValue("Sorted array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, []);
|
||||||
|
|
||||||
|
outputs[| 1] = nodeValue("Sorted index", self, JUNCTION_CONNECT.output, VALUE_TYPE.integer, []);
|
||||||
|
|
||||||
|
static sortAcs = function(v1, v2) { return v2.val - v1.val; }
|
||||||
|
static sortDes = function(v1, v2) { return v1.val - v2.val; }
|
||||||
|
|
||||||
|
static update = function(frame = CURRENT_FRAME) {
|
||||||
|
var arr = getInputData(0);
|
||||||
|
var asc = getInputData(1);
|
||||||
|
|
||||||
|
inputs[| 0].setType(VALUE_TYPE.any);
|
||||||
|
outputs[| 0].setType(VALUE_TYPE.any);
|
||||||
|
|
||||||
|
if(!is_array(arr)) return;
|
||||||
|
|
||||||
|
var len = array_length(arr);
|
||||||
|
|
||||||
|
if(inputs[| 0].value_from != noone) {
|
||||||
|
inputs[| 0].setType(inputs[| 0].value_from.type);
|
||||||
|
outputs[| 0].setType(inputs[| 0].value_from.type);
|
||||||
|
}
|
||||||
|
|
||||||
|
var _arr = array_map(arr, function(v, i) { return { index: i, val: v }; });
|
||||||
|
array_sort(_arr, asc? sortAcs : sortDes);
|
||||||
|
|
||||||
|
var resV = array_verify(outputs[| 0].getValue(), len);
|
||||||
|
var resO = array_verify(outputs[| 1].getValue(), len);
|
||||||
|
|
||||||
|
for( var i = 0; i < len; i++ ) {
|
||||||
|
resO[i] = _arr[i].index;
|
||||||
|
resV[i] = _arr[i].val;
|
||||||
|
}
|
||||||
|
|
||||||
|
outputs[| 0].setValue(resV);
|
||||||
|
outputs[| 1].setValue(resO);
|
||||||
|
}
|
||||||
|
|
||||||
|
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
||||||
|
var bbox = drawGetBbox(xx, yy, _s);
|
||||||
|
draw_sprite_fit(s_node_array_sort, 0, bbox.xc, bbox.yc, bbox.w, bbox.h);
|
||||||
|
}
|
||||||
|
}
|
1162
#backups/scripts/node_registry/node_registry.gml.backup0
Normal file
1162
#backups/scripts/node_registry/node_registry.gml.backup0
Normal file
File diff suppressed because it is too large
Load diff
1162
#backups/scripts/node_registry/node_registry.gml.backup1
Normal file
1162
#backups/scripts/node_registry/node_registry.gml.backup1
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,4 +1,4 @@
|
||||||
// 2024-04-22 14:56:06
|
// 2024-04-22 16:35:49
|
||||||
function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||||
name = "Tunnel In";
|
name = "Tunnel In";
|
||||||
color = COLORS.node_blend_tunnel;
|
color = COLORS.node_blend_tunnel;
|
||||||
|
@ -12,8 +12,11 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
hover_scale_to = 0;
|
hover_scale_to = 0;
|
||||||
hover_alpha = 0;
|
hover_alpha = 0;
|
||||||
|
|
||||||
inputs[| 0] = nodeValue("Name", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "" )
|
var tname = "";
|
||||||
.setDisplay(VALUE_DISPLAY.text_tunnel)
|
if(!LOADING && !APPENDING)
|
||||||
|
tname = $"tunnel{ds_map_size(TUNNELS_IN_MAP)}";
|
||||||
|
|
||||||
|
inputs[| 0] = nodeValue("Name", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, tname )
|
||||||
.rejectArray();
|
.rejectArray();
|
||||||
|
|
||||||
inputs[| 1] = nodeValue("Value in", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, noone )
|
inputs[| 1] = nodeValue("Value in", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, noone )
|
||||||
|
@ -26,19 +29,19 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
|
|
||||||
static onInspector2Update = function() { #region
|
static onInspector2Update = function() { #region
|
||||||
var _node = nodeBuild("Node_Tunnel_Out", x + 128, y);
|
var _node = nodeBuild("Node_Tunnel_Out", x + 128, y);
|
||||||
_node.inputs[| 0].setValue(getInputData(0));
|
_node.inputs[| 0].setValue(inputs[| 0].getValue());
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static update = function(frame = CURRENT_FRAME) { onValueUpdate(); }
|
static update = function(frame = CURRENT_FRAME) { onValueUpdate(); }
|
||||||
|
|
||||||
static resetMap = function() { #region
|
static resetMap = function() { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
TUNNELS_IN_MAP[? node_id] = _key;
|
TUNNELS_IN_MAP[? node_id] = _key;
|
||||||
TUNNELS_IN[? _key] = inputs[| 1];
|
TUNNELS_IN[? _key] = inputs[| 1];
|
||||||
} #endregion
|
} resetMap(); #endregion
|
||||||
|
|
||||||
static checkDuplicate = function() { #region
|
static checkDuplicate = function() { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
var amo = ds_map_size(TUNNELS_IN_MAP);
|
var amo = ds_map_size(TUNNELS_IN_MAP);
|
||||||
var k = ds_map_find_first(TUNNELS_IN_MAP);
|
var k = ds_map_find_first(TUNNELS_IN_MAP);
|
||||||
var dup = false;
|
var dup = false;
|
||||||
|
@ -60,7 +63,7 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static onValueUpdate = function(index = -1) { #region
|
static onValueUpdate = function(index = -1) { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
resetMap();
|
resetMap();
|
||||||
|
|
||||||
var amo = ds_map_size(TUNNELS_IN_MAP);
|
var amo = ds_map_size(TUNNELS_IN_MAP);
|
||||||
|
@ -82,7 +85,7 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static step = function() { #region
|
static step = function() { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
|
|
||||||
value_validation[VALIDATION.error] = error_notification != noone;
|
value_validation[VALIDATION.error] = error_notification != noone;
|
||||||
|
|
||||||
|
@ -98,7 +101,7 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
static getNextNodes = function() { #region
|
static getNextNodes = function() { #region
|
||||||
var nodes = [];
|
var nodes = [];
|
||||||
var nodeNames = [];
|
var nodeNames = [];
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
var amo = ds_map_size(TUNNELS_OUT);
|
var amo = ds_map_size(TUNNELS_OUT);
|
||||||
var k = ds_map_find_first(TUNNELS_OUT);
|
var k = ds_map_find_first(TUNNELS_OUT);
|
||||||
|
|
||||||
|
@ -149,30 +152,32 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
var xx = _x + x * _s;
|
var xx = _x + x * _s;
|
||||||
var yy = _y + y * _s;
|
var yy = _y + y * _s;
|
||||||
|
|
||||||
var hover = isHovering;
|
var hover = isHovering || hover_alpha == 1;
|
||||||
var tun = findPanel("Panel_Tunnels");
|
var tun = findPanel("Panel_Tunnels");
|
||||||
hover |= tun && tun.tunnel_hover == self;
|
hover |= tun && tun.tunnel_hover == self;
|
||||||
if(!hover) return;
|
if(!hover) return;
|
||||||
|
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
var amo = ds_map_size(TUNNELS_OUT);
|
var _keys = ds_map_keys_to_array(TUNNELS_OUT);
|
||||||
var k = ds_map_find_first(TUNNELS_OUT);
|
|
||||||
|
|
||||||
draw_set_color(COLORS.node_blend_tunnel);
|
draw_set_color(inputs[| 1].color_display);
|
||||||
|
draw_set_alpha(0.5);
|
||||||
|
|
||||||
repeat(amo) {
|
for (var i = 0, n = array_length(_keys); i < n; i++) {
|
||||||
if(TUNNELS_OUT[? k] == _key && ds_map_exists(PROJECT.nodeMap, k)) {
|
var _k = _keys[i];
|
||||||
var node = PROJECT.nodeMap[? k];
|
|
||||||
|
if(TUNNELS_OUT[? _k] != _key) continue;
|
||||||
|
if(!ds_map_exists(PROJECT.nodeMap, _k)) continue;
|
||||||
|
|
||||||
|
var node = PROJECT.nodeMap[? _k];
|
||||||
if(node.group != group) continue;
|
if(node.group != group) continue;
|
||||||
|
|
||||||
var tox = _x + node.x * _s;
|
var tox = _x + node.x * _s;
|
||||||
var toy = _y + node.y * _s;
|
var toy = _y + node.y * _s;
|
||||||
draw_line_dotted(xx, yy, tox, toy, 4 * _s, current_time / 10, 2);
|
draw_line_dotted(xx, yy, tox, toy, 2 * _s, current_time / 10, 3);
|
||||||
}
|
|
||||||
|
|
||||||
k = ds_map_find_next(TUNNELS_OUT, k);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
draw_set_alpha(1);
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static drawJunctions = function(_x, _y, _mx, _my, _s) { #region
|
static drawJunctions = function(_x, _y, _mx, _my, _s) { #region
|
||||||
|
@ -228,7 +233,7 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
hover_scale_to = 0;
|
hover_scale_to = 0;
|
||||||
|
|
||||||
draw_set_text(f_sdf, fa_center, fa_bottom, COLORS._main_text);
|
draw_set_text(f_sdf, fa_center, fa_bottom, COLORS._main_text);
|
||||||
draw_text_transformed(xx, yy - 12, string(getInputData(0)), _s * 0.4, _s * 0.4, 0);
|
draw_text_transformed(xx, yy - 12, string(inputs[| 0].getValue()), _s * 0.4, _s * 0.4, 0);
|
||||||
|
|
||||||
return drawJunctions(_x, _y, _mx, _my, _s);
|
return drawJunctions(_x, _y, _mx, _my, _s);
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// 2024-04-22 14:56:00
|
// 2024-04-22 16:35:48
|
||||||
function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||||
name = "Tunnel In";
|
name = "Tunnel In";
|
||||||
color = COLORS.node_blend_tunnel;
|
color = COLORS.node_blend_tunnel;
|
||||||
|
@ -12,8 +12,11 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
hover_scale_to = 0;
|
hover_scale_to = 0;
|
||||||
hover_alpha = 0;
|
hover_alpha = 0;
|
||||||
|
|
||||||
inputs[| 0] = nodeValue("Name", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "" )
|
var tname = "";
|
||||||
.setDisplay(VALUE_DISPLAY.text_tunnel)
|
if(!LOADING && !APPENDING)
|
||||||
|
tname = $"tunnel{ds_map_size(TUNNELS_IN_MAP)}";
|
||||||
|
|
||||||
|
inputs[| 0] = nodeValue("Name", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, tname )
|
||||||
.rejectArray();
|
.rejectArray();
|
||||||
|
|
||||||
inputs[| 1] = nodeValue("Value in", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, noone )
|
inputs[| 1] = nodeValue("Value in", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, noone )
|
||||||
|
@ -26,19 +29,19 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
|
|
||||||
static onInspector2Update = function() { #region
|
static onInspector2Update = function() { #region
|
||||||
var _node = nodeBuild("Node_Tunnel_Out", x + 128, y);
|
var _node = nodeBuild("Node_Tunnel_Out", x + 128, y);
|
||||||
_node.inputs[| 0].setValue(getInputData(0));
|
_node.inputs[| 0].setValue(inputs[| 0].getValue());
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static update = function(frame = CURRENT_FRAME) { onValueUpdate(); }
|
static update = function(frame = CURRENT_FRAME) { onValueUpdate(); }
|
||||||
|
|
||||||
static resetMap = function() { #region
|
static resetMap = function() { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
TUNNELS_IN_MAP[? node_id] = _key;
|
TUNNELS_IN_MAP[? node_id] = _key;
|
||||||
TUNNELS_IN[? _key] = inputs[| 1];
|
TUNNELS_IN[? _key] = inputs[| 1];
|
||||||
} #endregion
|
} resetMap(); #endregion
|
||||||
|
|
||||||
static checkDuplicate = function() { #region
|
static checkDuplicate = function() { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
var amo = ds_map_size(TUNNELS_IN_MAP);
|
var amo = ds_map_size(TUNNELS_IN_MAP);
|
||||||
var k = ds_map_find_first(TUNNELS_IN_MAP);
|
var k = ds_map_find_first(TUNNELS_IN_MAP);
|
||||||
var dup = false;
|
var dup = false;
|
||||||
|
@ -60,7 +63,7 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static onValueUpdate = function(index = -1) { #region
|
static onValueUpdate = function(index = -1) { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
resetMap();
|
resetMap();
|
||||||
|
|
||||||
var amo = ds_map_size(TUNNELS_IN_MAP);
|
var amo = ds_map_size(TUNNELS_IN_MAP);
|
||||||
|
@ -82,7 +85,7 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static step = function() { #region
|
static step = function() { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
|
|
||||||
value_validation[VALIDATION.error] = error_notification != noone;
|
value_validation[VALIDATION.error] = error_notification != noone;
|
||||||
|
|
||||||
|
@ -98,7 +101,7 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
static getNextNodes = function() { #region
|
static getNextNodes = function() { #region
|
||||||
var nodes = [];
|
var nodes = [];
|
||||||
var nodeNames = [];
|
var nodeNames = [];
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
var amo = ds_map_size(TUNNELS_OUT);
|
var amo = ds_map_size(TUNNELS_OUT);
|
||||||
var k = ds_map_find_first(TUNNELS_OUT);
|
var k = ds_map_find_first(TUNNELS_OUT);
|
||||||
|
|
||||||
|
@ -149,30 +152,32 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
var xx = _x + x * _s;
|
var xx = _x + x * _s;
|
||||||
var yy = _y + y * _s;
|
var yy = _y + y * _s;
|
||||||
|
|
||||||
var hover = isHovering;
|
var hover = isHovering || hover_alpha == 1;
|
||||||
var tun = findPanel("Panel_Tunnels");
|
var tun = findPanel("Panel_Tunnels");
|
||||||
hover |= tun && tun.tunnel_hover == self;
|
hover |= tun && tun.tunnel_hover == self;
|
||||||
if(!hover) return;
|
if(!hover) return;
|
||||||
|
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
var amo = ds_map_size(TUNNELS_OUT);
|
var _keys = ds_map_keys_to_array(TUNNELS_OUT);
|
||||||
var k = ds_map_find_first(TUNNELS_OUT);
|
|
||||||
|
|
||||||
draw_set_color(COLORS.node_blend_tunnel);
|
draw_set_color(inputs[| 1].color_display);
|
||||||
|
draw_set_alpha(0.5);
|
||||||
|
|
||||||
repeat(amo) {
|
for (var i = 0, n = array_length(_keys); i < n; i++) {
|
||||||
if(TUNNELS_OUT[? k] == _key && ds_map_exists(PROJECT.nodeMap, k)) {
|
var _k = _keys[i];
|
||||||
var node = PROJECT.nodeMap[? k];
|
|
||||||
|
if(TUNNELS_OUT[? _k] != _key) continue;
|
||||||
|
if(!ds_map_exists(PROJECT.nodeMap, _k)) continue;
|
||||||
|
|
||||||
|
var node = PROJECT.nodeMap[? _k];
|
||||||
if(node.group != group) continue;
|
if(node.group != group) continue;
|
||||||
|
|
||||||
var tox = _x + node.x * _s;
|
var tox = _x + node.x * _s;
|
||||||
var toy = _y + node.y * _s;
|
var toy = _y + node.y * _s;
|
||||||
draw_line_dotted(xx, yy, tox, toy, 4 * _s, current_time / 10, 2);
|
draw_line_dotted(xx, yy, tox, toy, 2 * _s, current_time / 10, 3);
|
||||||
}
|
|
||||||
|
|
||||||
k = ds_map_find_next(TUNNELS_OUT, k);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
draw_set_alpha(1);
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static drawJunctions = function(_x, _y, _mx, _my, _s) { #region
|
static drawJunctions = function(_x, _y, _mx, _my, _s) { #region
|
||||||
|
@ -228,7 +233,7 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
hover_scale_to = 0;
|
hover_scale_to = 0;
|
||||||
|
|
||||||
draw_set_text(f_sdf, fa_center, fa_bottom, COLORS._main_text);
|
draw_set_text(f_sdf, fa_center, fa_bottom, COLORS._main_text);
|
||||||
draw_text_transformed(xx, yy - 12, string(getInputData(0)), _s * 0.4, _s * 0.4, 0);
|
draw_text_transformed(xx, yy - 12, string(inputs[| 0].getValue()), _s * 0.4, _s * 0.4, 0);
|
||||||
|
|
||||||
return drawJunctions(_x, _y, _mx, _my, _s);
|
return drawJunctions(_x, _y, _mx, _my, _s);
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// 2024-04-22 14:54:19
|
// 2024-04-22 16:35:44
|
||||||
function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||||
name = "Tunnel Out";
|
name = "Tunnel Out";
|
||||||
color = COLORS.node_blend_tunnel;
|
color = COLORS.node_blend_tunnel;
|
||||||
|
@ -12,7 +12,11 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
hover_scale_to = 0;
|
hover_scale_to = 0;
|
||||||
hover_alpha = 0;
|
hover_alpha = 0;
|
||||||
|
|
||||||
inputs[| 0] = nodeValue("Name", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "" )
|
var tname = "";
|
||||||
|
if(!LOADING && !APPENDING && !ds_map_empty(TUNNELS_IN))
|
||||||
|
tname = ds_map_find_first(TUNNELS_IN);
|
||||||
|
|
||||||
|
inputs[| 0] = nodeValue("Name", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, tname )
|
||||||
.setDisplay(VALUE_DISPLAY.text_tunnel)
|
.setDisplay(VALUE_DISPLAY.text_tunnel)
|
||||||
.rejectArray();
|
.rejectArray();
|
||||||
|
|
||||||
|
@ -22,7 +26,7 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
insp2UpdateIcon = [ THEME.tunnel, 1, c_white ];
|
insp2UpdateIcon = [ THEME.tunnel, 1, c_white ];
|
||||||
|
|
||||||
static onInspector2Update = function() { #region
|
static onInspector2Update = function() { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
if(!ds_map_exists(TUNNELS_IN, _key)) return;
|
if(!ds_map_exists(TUNNELS_IN, _key)) return;
|
||||||
|
|
||||||
var _node = TUNNELS_IN[? _key].node;
|
var _node = TUNNELS_IN[? _key].node;
|
||||||
|
@ -30,22 +34,22 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static isRenderable = function() { #region
|
static isRenderable = function() { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
if(!ds_map_exists(TUNNELS_IN, _key)) return false;
|
if(!ds_map_exists(TUNNELS_IN, _key)) return false;
|
||||||
|
|
||||||
return TUNNELS_IN[? _key].node.rendered;
|
return TUNNELS_IN[? _key].node.rendered;
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static onValueUpdate = function(index = -1) { #region
|
static onValueUpdate = function(index = -1) { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
|
|
||||||
TUNNELS_OUT[? node_id] = _key;
|
|
||||||
|
|
||||||
if(index == 0) { RENDER_ALL_REORDER }
|
if(index == 0) { RENDER_ALL_REORDER }
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static step = function() { #region
|
static step = function() { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
|
TUNNELS_OUT[? node_id] = _key;
|
||||||
|
|
||||||
if(ds_map_exists(TUNNELS_IN, _key)) {
|
if(ds_map_exists(TUNNELS_IN, _key)) {
|
||||||
outputs[| 0].setType(TUNNELS_IN[? _key].type);
|
outputs[| 0].setType(TUNNELS_IN[? _key].type);
|
||||||
outputs[| 0].display_type = TUNNELS_IN[? _key].display_type;
|
outputs[| 0].display_type = TUNNELS_IN[? _key].display_type;
|
||||||
|
@ -56,7 +60,7 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static update = function(frame = CURRENT_FRAME) { #region
|
static update = function(frame = CURRENT_FRAME) { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
|
|
||||||
if(ds_map_exists(TUNNELS_IN, _key))
|
if(ds_map_exists(TUNNELS_IN, _key))
|
||||||
outputs[| 0].setValue(TUNNELS_IN[? _key].getValue());
|
outputs[| 0].setValue(TUNNELS_IN[? _key].getValue());
|
||||||
|
@ -89,22 +93,25 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
var xx = _x + x * _s;
|
var xx = _x + x * _s;
|
||||||
var yy = _y + y * _s;
|
var yy = _y + y * _s;
|
||||||
|
|
||||||
var hover = isHovering;
|
var hover = isHovering || hover_alpha == 1;
|
||||||
var tun = findPanel("Panel_Tunnels");
|
var tun = findPanel("Panel_Tunnels");
|
||||||
hover |= tun && tun.tunnel_hover == self;
|
hover |= tun && tun.tunnel_hover == self;
|
||||||
if(!hover) return;
|
if(!hover) return;
|
||||||
|
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
if(!ds_map_exists(TUNNELS_IN, _key)) return;
|
if(!ds_map_exists(TUNNELS_IN, _key)) return;
|
||||||
|
|
||||||
var node = TUNNELS_IN[? _key].node;
|
var node = TUNNELS_IN[? _key].node;
|
||||||
if(node.group != group) return;
|
if(node.group != group) return;
|
||||||
|
|
||||||
draw_set_color(COLORS.node_blend_tunnel);
|
draw_set_color(outputs[| 0].color_display);
|
||||||
|
draw_set_alpha(0.5);
|
||||||
|
|
||||||
var frx = _x + node.x * _s;
|
var frx = _x + node.x * _s;
|
||||||
var fry = _y + node.y * _s;
|
var fry = _y + node.y * _s;
|
||||||
draw_line_dotted(frx, fry, xx, yy, 4 * _s, current_time / 10, 2);
|
draw_line_dotted(frx, fry, xx, yy, 2 * _s, current_time / 10, 3);
|
||||||
|
|
||||||
|
draw_set_alpha(1);
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static drawJunctions = function(_x, _y, _mx, _my, _s) { #region
|
static drawJunctions = function(_x, _y, _mx, _my, _s) { #region
|
||||||
|
@ -116,7 +123,7 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
if(!isHovering) return noone;
|
if(!isHovering) return noone;
|
||||||
|
|
||||||
hover_scale_to = 1;
|
hover_scale_to = 1;
|
||||||
return jhov? inputs[| 1] : noone;
|
return jhov? outputs[| 0] : noone;
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static drawNode = function(_x, _y, _mx, _my, _s) { #region
|
static drawNode = function(_x, _y, _mx, _my, _s) { #region
|
||||||
|
@ -160,7 +167,7 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
hover_scale_to = 0;
|
hover_scale_to = 0;
|
||||||
|
|
||||||
draw_set_text(f_sdf, fa_center, fa_bottom, COLORS._main_text);
|
draw_set_text(f_sdf, fa_center, fa_bottom, COLORS._main_text);
|
||||||
draw_text_transformed(xx, yy - 12, string(getInputData(0)), _s * 0.4, _s * 0.4, 0);
|
draw_text_transformed(xx, yy - 12, string(inputs[| 0].getValue()), _s * 0.4, _s * 0.4, 0);
|
||||||
|
|
||||||
return drawJunctions(_x, _y, _mx, _my, _s);
|
return drawJunctions(_x, _y, _mx, _my, _s);
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// 2024-04-22 14:53:30
|
// 2024-04-22 16:34:50
|
||||||
function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||||
name = "Tunnel Out";
|
name = "Tunnel Out";
|
||||||
color = COLORS.node_blend_tunnel;
|
color = COLORS.node_blend_tunnel;
|
||||||
|
@ -12,7 +12,11 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
hover_scale_to = 0;
|
hover_scale_to = 0;
|
||||||
hover_alpha = 0;
|
hover_alpha = 0;
|
||||||
|
|
||||||
inputs[| 0] = nodeValue("Name", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "" )
|
var tname = "";
|
||||||
|
if(!LOADING && !APPENDING && !ds_map_empty(TUNNELS_IN))
|
||||||
|
tname = ds_map_find_first(TUNNELS_IN);
|
||||||
|
|
||||||
|
inputs[| 0] = nodeValue("Name", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, tname )
|
||||||
.setDisplay(VALUE_DISPLAY.text_tunnel)
|
.setDisplay(VALUE_DISPLAY.text_tunnel)
|
||||||
.rejectArray();
|
.rejectArray();
|
||||||
|
|
||||||
|
@ -22,7 +26,7 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
insp2UpdateIcon = [ THEME.tunnel, 1, c_white ];
|
insp2UpdateIcon = [ THEME.tunnel, 1, c_white ];
|
||||||
|
|
||||||
static onInspector2Update = function() { #region
|
static onInspector2Update = function() { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
if(!ds_map_exists(TUNNELS_IN, _key)) return;
|
if(!ds_map_exists(TUNNELS_IN, _key)) return;
|
||||||
|
|
||||||
var _node = TUNNELS_IN[? _key].node;
|
var _node = TUNNELS_IN[? _key].node;
|
||||||
|
@ -30,22 +34,22 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static isRenderable = function() { #region
|
static isRenderable = function() { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
if(!ds_map_exists(TUNNELS_IN, _key)) return false;
|
if(!ds_map_exists(TUNNELS_IN, _key)) return false;
|
||||||
|
|
||||||
return TUNNELS_IN[? _key].node.rendered;
|
return TUNNELS_IN[? _key].node.rendered;
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static onValueUpdate = function(index = -1) { #region
|
static onValueUpdate = function(index = -1) { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
|
|
||||||
TUNNELS_OUT[? node_id] = _key;
|
|
||||||
|
|
||||||
if(index == 0) { RENDER_ALL_REORDER }
|
if(index == 0) { RENDER_ALL_REORDER }
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static step = function() { #region
|
static step = function() { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
|
TUNNELS_OUT[? node_id] = _key;
|
||||||
|
|
||||||
if(ds_map_exists(TUNNELS_IN, _key)) {
|
if(ds_map_exists(TUNNELS_IN, _key)) {
|
||||||
outputs[| 0].setType(TUNNELS_IN[? _key].type);
|
outputs[| 0].setType(TUNNELS_IN[? _key].type);
|
||||||
outputs[| 0].display_type = TUNNELS_IN[? _key].display_type;
|
outputs[| 0].display_type = TUNNELS_IN[? _key].display_type;
|
||||||
|
@ -56,7 +60,7 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static update = function(frame = CURRENT_FRAME) { #region
|
static update = function(frame = CURRENT_FRAME) { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
|
|
||||||
if(ds_map_exists(TUNNELS_IN, _key))
|
if(ds_map_exists(TUNNELS_IN, _key))
|
||||||
outputs[| 0].setValue(TUNNELS_IN[? _key].getValue());
|
outputs[| 0].setValue(TUNNELS_IN[? _key].getValue());
|
||||||
|
@ -89,22 +93,25 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
var xx = _x + x * _s;
|
var xx = _x + x * _s;
|
||||||
var yy = _y + y * _s;
|
var yy = _y + y * _s;
|
||||||
|
|
||||||
var hover = isHovering;
|
var hover = isHovering || active_draw_index;
|
||||||
var tun = findPanel("Panel_Tunnels");
|
var tun = findPanel("Panel_Tunnels");
|
||||||
hover |= tun && tun.tunnel_hover == self;
|
hover |= tun && tun.tunnel_hover == self;
|
||||||
if(!hover) return;
|
if(!hover) return;
|
||||||
|
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
if(!ds_map_exists(TUNNELS_IN, _key)) return;
|
if(!ds_map_exists(TUNNELS_IN, _key)) return;
|
||||||
|
|
||||||
var node = TUNNELS_IN[? _key].node;
|
var node = TUNNELS_IN[? _key].node;
|
||||||
if(node.group != group) return;
|
if(node.group != group) return;
|
||||||
|
|
||||||
draw_set_color(COLORS.node_blend_tunnel);
|
draw_set_color(outputs[| 0].color_display);
|
||||||
|
draw_set_alpha(0.5);
|
||||||
|
|
||||||
var frx = _x + node.x * _s;
|
var frx = _x + node.x * _s;
|
||||||
var fry = _y + node.y * _s;
|
var fry = _y + node.y * _s;
|
||||||
draw_line_dotted(frx, fry, xx, yy, 4 * _s, current_time / 10, 3);
|
draw_line_dotted(frx, fry, xx, yy, 2 * _s, current_time / 10, 3);
|
||||||
|
|
||||||
|
draw_set_alpha(1);
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static drawJunctions = function(_x, _y, _mx, _my, _s) { #region
|
static drawJunctions = function(_x, _y, _mx, _my, _s) { #region
|
||||||
|
@ -116,7 +123,7 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
if(!isHovering) return noone;
|
if(!isHovering) return noone;
|
||||||
|
|
||||||
hover_scale_to = 1;
|
hover_scale_to = 1;
|
||||||
return jhov? inputs[| 1] : noone;
|
return jhov? outputs[| 0] : noone;
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static drawNode = function(_x, _y, _mx, _my, _s) { #region
|
static drawNode = function(_x, _y, _mx, _my, _s) { #region
|
||||||
|
@ -160,7 +167,7 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
hover_scale_to = 0;
|
hover_scale_to = 0;
|
||||||
|
|
||||||
draw_set_text(f_sdf, fa_center, fa_bottom, COLORS._main_text);
|
draw_set_text(f_sdf, fa_center, fa_bottom, COLORS._main_text);
|
||||||
draw_text_transformed(xx, yy - 12, string(getInputData(0)), _s * 0.4, _s * 0.4, 0);
|
draw_text_transformed(xx, yy - 12, string(inputs[| 0].getValue()), _s * 0.4, _s * 0.4, 0);
|
||||||
|
|
||||||
return drawJunctions(_x, _y, _mx, _my, _s);
|
return drawJunctions(_x, _y, _mx, _my, _s);
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// 2024-04-20 09:57:04
|
// 2024-04-22 18:42:00
|
||||||
#region ---- global names ----
|
#region ---- global names ----
|
||||||
global.junctionEndName = [ "Hold", "Loop", "Ping pong", "Wrap" ];
|
global.junctionEndName = [ "Hold", "Loop", "Ping pong", "Wrap" ];
|
||||||
|
|
||||||
|
@ -669,6 +669,8 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
draw_blend = 1;
|
draw_blend = 1;
|
||||||
draw_blend_color = 1;
|
draw_blend_color = 1;
|
||||||
|
|
||||||
|
__overlay_hover = [];
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region ---- timeline ----
|
#region ---- timeline ----
|
||||||
|
@ -908,6 +910,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Number";
|
extract_node = "Node_Number";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.range : #region
|
case VALUE_DISPLAY.range : #region
|
||||||
editWidget = new rangeBox(_txt, function(index, val) { return setValueInspector(val, index); } );
|
editWidget = new rangeBox(_txt, function(index, val) { return setValueInspector(val, index); } );
|
||||||
|
|
||||||
|
@ -920,6 +923,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Number";
|
extract_node = "Node_Number";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.vector : #region
|
case VALUE_DISPLAY.vector : #region
|
||||||
var val = animator.getValue();
|
var val = animator.getValue();
|
||||||
var len = array_length(val);
|
var len = array_length(val);
|
||||||
|
@ -957,6 +961,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
animators[i].suffix = " " + string(array_safe_get_fast(global.displaySuffix_Axis, i));
|
animators[i].suffix = " " + string(array_safe_get_fast(global.displaySuffix_Axis, i));
|
||||||
|
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.vector_range : #region
|
case VALUE_DISPLAY.vector_range : #region
|
||||||
var val = animator.getValue();
|
var val = animator.getValue();
|
||||||
|
|
||||||
|
@ -979,6 +984,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
animators[i].suffix = " " + string(array_safe_get_fast(global.displaySuffix_VecRange, i));
|
animators[i].suffix = " " + string(array_safe_get_fast(global.displaySuffix_VecRange, i));
|
||||||
|
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.rotation : #region
|
case VALUE_DISPLAY.rotation : #region
|
||||||
var _step = struct_try_get(display_data, "step", -1);
|
var _step = struct_try_get(display_data, "step", -1);
|
||||||
|
|
||||||
|
@ -988,6 +994,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Number";
|
extract_node = "Node_Number";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.rotation_range : #region
|
case VALUE_DISPLAY.rotation_range : #region
|
||||||
editWidget = new rotatorRange(function(index, val) {
|
editWidget = new rotatorRange(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -998,6 +1005,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Vector2";
|
extract_node = "Node_Vector2";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.rotation_random: #region
|
case VALUE_DISPLAY.rotation_random: #region
|
||||||
editWidget = new rotatorRandom(function(index, val) {
|
editWidget = new rotatorRandom(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1005,6 +1013,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Vector2";
|
extract_node = "Node_Vector2";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.slider : #region
|
case VALUE_DISPLAY.slider : #region
|
||||||
var _range = struct_try_get(display_data, "range", [ 0, 1, 0.01 ]);
|
var _range = struct_try_get(display_data, "range", [ 0, 1, 0.01 ]);
|
||||||
|
|
||||||
|
@ -1016,6 +1025,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Number";
|
extract_node = "Node_Number";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.slider_range : #region
|
case VALUE_DISPLAY.slider_range : #region
|
||||||
var _range = struct_try_get(display_data, "range", [ 0, 1, 0.01 ]);
|
var _range = struct_try_get(display_data, "range", [ 0, 1, 0.01 ]);
|
||||||
|
|
||||||
|
@ -1027,6 +1037,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Vector2";
|
extract_node = "Node_Vector2";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.area : #region
|
case VALUE_DISPLAY.area : #region
|
||||||
editWidget = new areaBox(function(index, val) {
|
editWidget = new areaBox(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1042,6 +1053,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Area";
|
extract_node = "Node_Area";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.padding : #region
|
case VALUE_DISPLAY.padding : #region
|
||||||
editWidget = new paddingBox(function(index, val) {
|
editWidget = new paddingBox(function(index, val) {
|
||||||
//var _val = animator.getValue();
|
//var _val = animator.getValue();
|
||||||
|
@ -1055,6 +1067,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Vector4";
|
extract_node = "Node_Vector4";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.corner : #region
|
case VALUE_DISPLAY.corner : #region
|
||||||
editWidget = new cornerBox(function(index, val) {
|
editWidget = new cornerBox(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1066,6 +1079,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Vector4";
|
extract_node = "Node_Vector4";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.puppet_control : #region
|
case VALUE_DISPLAY.puppet_control : #region
|
||||||
editWidget = new controlPointBox(function(index, val) {
|
editWidget = new controlPointBox(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1073,6 +1087,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "";
|
extract_node = "";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.enum_scroll : #region
|
case VALUE_DISPLAY.enum_scroll : #region
|
||||||
if(!is_struct(display_data)) display_data = { data: display_data };
|
if(!is_struct(display_data)) display_data = { data: display_data };
|
||||||
var choices = __txt_junction_data(instanceof(node), connect_type, index, display_data.data);
|
var choices = __txt_junction_data(instanceof(node), connect_type, index, display_data.data);
|
||||||
|
@ -1088,6 +1103,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
key_inter = CURVE_TYPE.cut;
|
key_inter = CURVE_TYPE.cut;
|
||||||
extract_node = "";
|
extract_node = "";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.enum_button : #region
|
case VALUE_DISPLAY.enum_button : #region
|
||||||
if(!is_struct(display_data)) display_data = { data: display_data };
|
if(!is_struct(display_data)) display_data = { data: display_data };
|
||||||
var choices = __txt_junction_data(instanceof(node), connect_type, index, display_data.data);
|
var choices = __txt_junction_data(instanceof(node), connect_type, index, display_data.data);
|
||||||
|
@ -1100,6 +1116,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
key_inter = CURVE_TYPE.cut;
|
key_inter = CURVE_TYPE.cut;
|
||||||
extract_node = "";
|
extract_node = "";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.matrix : #region
|
case VALUE_DISPLAY.matrix : #region
|
||||||
editWidget = new matrixGrid(_txt, display_data.size, function(index, val) {
|
editWidget = new matrixGrid(_txt, display_data.size, function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1111,11 +1128,13 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "";
|
extract_node = "";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.transform : #region
|
case VALUE_DISPLAY.transform : #region
|
||||||
editWidget = new transformBox(function(index, val) { return setValueInspector(val, index); });
|
editWidget = new transformBox(function(index, val) { return setValueInspector(val, index); });
|
||||||
|
|
||||||
extract_node = "Node_Transform_Array";
|
extract_node = "Node_Transform_Array";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.toggle : #region
|
case VALUE_DISPLAY.toggle : #region
|
||||||
editWidget = new toggleGroup(display_data.data, function(val) {
|
editWidget = new toggleGroup(display_data.data, function(val) {
|
||||||
return setValueInspector(val);
|
return setValueInspector(val);
|
||||||
|
@ -1125,6 +1144,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
key_inter = CURVE_TYPE.cut;
|
key_inter = CURVE_TYPE.cut;
|
||||||
extract_node = "";
|
extract_node = "";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.d3quarternion : #region
|
case VALUE_DISPLAY.d3quarternion : #region
|
||||||
editWidget = new quarternionBox(function(index, val) {
|
editWidget = new quarternionBox(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1133,6 +1153,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
extract_node = "Node_Vector4";
|
extract_node = "Node_Vector4";
|
||||||
display_data.angle_display = QUARTERNION_DISPLAY.quarterion;
|
display_data.angle_display = QUARTERNION_DISPLAY.quarterion;
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.path_anchor : #region
|
case VALUE_DISPLAY.path_anchor : #region
|
||||||
editWidget = new pathAnchorBox(function(index, val) {
|
editWidget = new pathAnchorBox(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1143,6 +1164,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VALUE_TYPE.boolean : #region
|
case VALUE_TYPE.boolean : #region
|
||||||
if(name == "Active") editWidget = new checkBoxActive(function() { return setValueInspector(!animator.getValue()); } );
|
if(name == "Active") editWidget = new checkBoxActive(function() { return setValueInspector(!animator.getValue()); } );
|
||||||
else editWidget = new checkBox( function() { return setValueInspector(!animator.getValue()); } );
|
else editWidget = new checkBox( function() { return setValueInspector(!animator.getValue()); } );
|
||||||
|
@ -1150,6 +1172,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
key_inter = CURVE_TYPE.cut;
|
key_inter = CURVE_TYPE.cut;
|
||||||
extract_node = "Node_Boolean";
|
extract_node = "Node_Boolean";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.color : #region
|
case VALUE_TYPE.color : #region
|
||||||
switch(display_type) {
|
switch(display_type) {
|
||||||
case VALUE_DISPLAY._default :
|
case VALUE_DISPLAY._default :
|
||||||
|
@ -1165,11 +1188,13 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.gradient : #region
|
case VALUE_TYPE.gradient : #region
|
||||||
editWidget = new buttonGradient(function(gradient) { return setValueInspector(gradient); } );
|
editWidget = new buttonGradient(function(gradient) { return setValueInspector(gradient); } );
|
||||||
|
|
||||||
extract_node = "Node_Gradient_Out";
|
extract_node = "Node_Gradient_Out";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.path : #region
|
case VALUE_TYPE.path : #region
|
||||||
switch(display_type) {
|
switch(display_type) {
|
||||||
case VALUE_DISPLAY.path_array :
|
case VALUE_DISPLAY.path_array :
|
||||||
|
@ -1188,6 +1213,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_String";
|
extract_node = "Node_String";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VALUE_DISPLAY.path_save :
|
case VALUE_DISPLAY.path_save :
|
||||||
editWidget = new textBox(TEXTBOX_INPUT.text, function(str) { setValueInspector(str); } );
|
editWidget = new textBox(TEXTBOX_INPUT.text, function(str) { setValueInspector(str); } );
|
||||||
|
|
||||||
|
@ -1207,10 +1233,12 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.curve : #region
|
case VALUE_TYPE.curve : #region
|
||||||
display_type = VALUE_DISPLAY.curve;
|
display_type = VALUE_DISPLAY.curve;
|
||||||
editWidget = new curveBox(function(_modified) { return setValueInspector(_modified); });
|
editWidget = new curveBox(function(_modified) { return setValueInspector(_modified); });
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.text : #region
|
case VALUE_TYPE.text : #region
|
||||||
switch(display_type) {
|
switch(display_type) {
|
||||||
case VALUE_DISPLAY._default :
|
case VALUE_DISPLAY._default :
|
||||||
|
@ -1247,7 +1275,10 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VALUE_DISPLAY.text_tunnel :
|
case VALUE_DISPLAY.text_tunnel :
|
||||||
editWidget = new textBox(TEXTBOX_INPUT.text, function(str) { return setValueInspector(str); });
|
editWidget = new textArea(TEXTBOX_INPUT.text, function(str) { return setValueInspector(str); });
|
||||||
|
|
||||||
|
editWidget.autocomplete_server = tunnel_autocomplete_server;
|
||||||
|
|
||||||
extract_node = "Node_String";
|
extract_node = "Node_String";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1256,6 +1287,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.d3Material : #region
|
case VALUE_TYPE.d3Material : #region
|
||||||
editWidget = new materialBox(function(ind) {
|
editWidget = new materialBox(function(ind) {
|
||||||
var res = setValueInspector(ind);
|
var res = setValueInspector(ind);
|
||||||
|
@ -1267,6 +1299,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
show_in_inspector = true;
|
show_in_inspector = true;
|
||||||
extract_node = "Node_Canvas";
|
extract_node = "Node_Canvas";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.surface : #region
|
case VALUE_TYPE.surface : #region
|
||||||
editWidget = new surfaceBox(function(ind) { return setValueInspector(ind); } );
|
editWidget = new surfaceBox(function(ind) { return setValueInspector(ind); } );
|
||||||
|
|
||||||
|
@ -1274,6 +1307,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
show_in_inspector = true;
|
show_in_inspector = true;
|
||||||
extract_node = "Node_Canvas";
|
extract_node = "Node_Canvas";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.pathnode : #region
|
case VALUE_TYPE.pathnode : #region
|
||||||
extract_node = "Node_Path";
|
extract_node = "Node_Path";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// 2024-04-20 09:57:02
|
// 2024-04-22 18:38:48
|
||||||
#region ---- global names ----
|
#region ---- global names ----
|
||||||
global.junctionEndName = [ "Hold", "Loop", "Ping pong", "Wrap" ];
|
global.junctionEndName = [ "Hold", "Loop", "Ping pong", "Wrap" ];
|
||||||
|
|
||||||
|
@ -669,6 +669,8 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
draw_blend = 1;
|
draw_blend = 1;
|
||||||
draw_blend_color = 1;
|
draw_blend_color = 1;
|
||||||
|
|
||||||
|
__overlay_hover = [];
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region ---- timeline ----
|
#region ---- timeline ----
|
||||||
|
@ -908,6 +910,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Number";
|
extract_node = "Node_Number";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.range : #region
|
case VALUE_DISPLAY.range : #region
|
||||||
editWidget = new rangeBox(_txt, function(index, val) { return setValueInspector(val, index); } );
|
editWidget = new rangeBox(_txt, function(index, val) { return setValueInspector(val, index); } );
|
||||||
|
|
||||||
|
@ -920,6 +923,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Number";
|
extract_node = "Node_Number";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.vector : #region
|
case VALUE_DISPLAY.vector : #region
|
||||||
var val = animator.getValue();
|
var val = animator.getValue();
|
||||||
var len = array_length(val);
|
var len = array_length(val);
|
||||||
|
@ -957,6 +961,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
animators[i].suffix = " " + string(array_safe_get_fast(global.displaySuffix_Axis, i));
|
animators[i].suffix = " " + string(array_safe_get_fast(global.displaySuffix_Axis, i));
|
||||||
|
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.vector_range : #region
|
case VALUE_DISPLAY.vector_range : #region
|
||||||
var val = animator.getValue();
|
var val = animator.getValue();
|
||||||
|
|
||||||
|
@ -979,6 +984,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
animators[i].suffix = " " + string(array_safe_get_fast(global.displaySuffix_VecRange, i));
|
animators[i].suffix = " " + string(array_safe_get_fast(global.displaySuffix_VecRange, i));
|
||||||
|
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.rotation : #region
|
case VALUE_DISPLAY.rotation : #region
|
||||||
var _step = struct_try_get(display_data, "step", -1);
|
var _step = struct_try_get(display_data, "step", -1);
|
||||||
|
|
||||||
|
@ -988,6 +994,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Number";
|
extract_node = "Node_Number";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.rotation_range : #region
|
case VALUE_DISPLAY.rotation_range : #region
|
||||||
editWidget = new rotatorRange(function(index, val) {
|
editWidget = new rotatorRange(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -998,6 +1005,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Vector2";
|
extract_node = "Node_Vector2";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.rotation_random: #region
|
case VALUE_DISPLAY.rotation_random: #region
|
||||||
editWidget = new rotatorRandom(function(index, val) {
|
editWidget = new rotatorRandom(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1005,6 +1013,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Vector2";
|
extract_node = "Node_Vector2";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.slider : #region
|
case VALUE_DISPLAY.slider : #region
|
||||||
var _range = struct_try_get(display_data, "range", [ 0, 1, 0.01 ]);
|
var _range = struct_try_get(display_data, "range", [ 0, 1, 0.01 ]);
|
||||||
|
|
||||||
|
@ -1016,6 +1025,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Number";
|
extract_node = "Node_Number";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.slider_range : #region
|
case VALUE_DISPLAY.slider_range : #region
|
||||||
var _range = struct_try_get(display_data, "range", [ 0, 1, 0.01 ]);
|
var _range = struct_try_get(display_data, "range", [ 0, 1, 0.01 ]);
|
||||||
|
|
||||||
|
@ -1027,6 +1037,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Vector2";
|
extract_node = "Node_Vector2";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.area : #region
|
case VALUE_DISPLAY.area : #region
|
||||||
editWidget = new areaBox(function(index, val) {
|
editWidget = new areaBox(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1042,6 +1053,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Area";
|
extract_node = "Node_Area";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.padding : #region
|
case VALUE_DISPLAY.padding : #region
|
||||||
editWidget = new paddingBox(function(index, val) {
|
editWidget = new paddingBox(function(index, val) {
|
||||||
//var _val = animator.getValue();
|
//var _val = animator.getValue();
|
||||||
|
@ -1055,6 +1067,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Vector4";
|
extract_node = "Node_Vector4";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.corner : #region
|
case VALUE_DISPLAY.corner : #region
|
||||||
editWidget = new cornerBox(function(index, val) {
|
editWidget = new cornerBox(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1066,6 +1079,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Vector4";
|
extract_node = "Node_Vector4";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.puppet_control : #region
|
case VALUE_DISPLAY.puppet_control : #region
|
||||||
editWidget = new controlPointBox(function(index, val) {
|
editWidget = new controlPointBox(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1073,6 +1087,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "";
|
extract_node = "";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.enum_scroll : #region
|
case VALUE_DISPLAY.enum_scroll : #region
|
||||||
if(!is_struct(display_data)) display_data = { data: display_data };
|
if(!is_struct(display_data)) display_data = { data: display_data };
|
||||||
var choices = __txt_junction_data(instanceof(node), connect_type, index, display_data.data);
|
var choices = __txt_junction_data(instanceof(node), connect_type, index, display_data.data);
|
||||||
|
@ -1088,6 +1103,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
key_inter = CURVE_TYPE.cut;
|
key_inter = CURVE_TYPE.cut;
|
||||||
extract_node = "";
|
extract_node = "";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.enum_button : #region
|
case VALUE_DISPLAY.enum_button : #region
|
||||||
if(!is_struct(display_data)) display_data = { data: display_data };
|
if(!is_struct(display_data)) display_data = { data: display_data };
|
||||||
var choices = __txt_junction_data(instanceof(node), connect_type, index, display_data.data);
|
var choices = __txt_junction_data(instanceof(node), connect_type, index, display_data.data);
|
||||||
|
@ -1100,6 +1116,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
key_inter = CURVE_TYPE.cut;
|
key_inter = CURVE_TYPE.cut;
|
||||||
extract_node = "";
|
extract_node = "";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.matrix : #region
|
case VALUE_DISPLAY.matrix : #region
|
||||||
editWidget = new matrixGrid(_txt, display_data.size, function(index, val) {
|
editWidget = new matrixGrid(_txt, display_data.size, function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1111,11 +1128,13 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "";
|
extract_node = "";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.transform : #region
|
case VALUE_DISPLAY.transform : #region
|
||||||
editWidget = new transformBox(function(index, val) { return setValueInspector(val, index); });
|
editWidget = new transformBox(function(index, val) { return setValueInspector(val, index); });
|
||||||
|
|
||||||
extract_node = "Node_Transform_Array";
|
extract_node = "Node_Transform_Array";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.toggle : #region
|
case VALUE_DISPLAY.toggle : #region
|
||||||
editWidget = new toggleGroup(display_data.data, function(val) {
|
editWidget = new toggleGroup(display_data.data, function(val) {
|
||||||
return setValueInspector(val);
|
return setValueInspector(val);
|
||||||
|
@ -1125,6 +1144,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
key_inter = CURVE_TYPE.cut;
|
key_inter = CURVE_TYPE.cut;
|
||||||
extract_node = "";
|
extract_node = "";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.d3quarternion : #region
|
case VALUE_DISPLAY.d3quarternion : #region
|
||||||
editWidget = new quarternionBox(function(index, val) {
|
editWidget = new quarternionBox(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1133,6 +1153,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
extract_node = "Node_Vector4";
|
extract_node = "Node_Vector4";
|
||||||
display_data.angle_display = QUARTERNION_DISPLAY.quarterion;
|
display_data.angle_display = QUARTERNION_DISPLAY.quarterion;
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.path_anchor : #region
|
case VALUE_DISPLAY.path_anchor : #region
|
||||||
editWidget = new pathAnchorBox(function(index, val) {
|
editWidget = new pathAnchorBox(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1143,6 +1164,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VALUE_TYPE.boolean : #region
|
case VALUE_TYPE.boolean : #region
|
||||||
if(name == "Active") editWidget = new checkBoxActive(function() { return setValueInspector(!animator.getValue()); } );
|
if(name == "Active") editWidget = new checkBoxActive(function() { return setValueInspector(!animator.getValue()); } );
|
||||||
else editWidget = new checkBox( function() { return setValueInspector(!animator.getValue()); } );
|
else editWidget = new checkBox( function() { return setValueInspector(!animator.getValue()); } );
|
||||||
|
@ -1150,6 +1172,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
key_inter = CURVE_TYPE.cut;
|
key_inter = CURVE_TYPE.cut;
|
||||||
extract_node = "Node_Boolean";
|
extract_node = "Node_Boolean";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.color : #region
|
case VALUE_TYPE.color : #region
|
||||||
switch(display_type) {
|
switch(display_type) {
|
||||||
case VALUE_DISPLAY._default :
|
case VALUE_DISPLAY._default :
|
||||||
|
@ -1165,11 +1188,13 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.gradient : #region
|
case VALUE_TYPE.gradient : #region
|
||||||
editWidget = new buttonGradient(function(gradient) { return setValueInspector(gradient); } );
|
editWidget = new buttonGradient(function(gradient) { return setValueInspector(gradient); } );
|
||||||
|
|
||||||
extract_node = "Node_Gradient_Out";
|
extract_node = "Node_Gradient_Out";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.path : #region
|
case VALUE_TYPE.path : #region
|
||||||
switch(display_type) {
|
switch(display_type) {
|
||||||
case VALUE_DISPLAY.path_array :
|
case VALUE_DISPLAY.path_array :
|
||||||
|
@ -1188,6 +1213,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_String";
|
extract_node = "Node_String";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VALUE_DISPLAY.path_save :
|
case VALUE_DISPLAY.path_save :
|
||||||
editWidget = new textBox(TEXTBOX_INPUT.text, function(str) { setValueInspector(str); } );
|
editWidget = new textBox(TEXTBOX_INPUT.text, function(str) { setValueInspector(str); } );
|
||||||
|
|
||||||
|
@ -1207,10 +1233,12 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.curve : #region
|
case VALUE_TYPE.curve : #region
|
||||||
display_type = VALUE_DISPLAY.curve;
|
display_type = VALUE_DISPLAY.curve;
|
||||||
editWidget = new curveBox(function(_modified) { return setValueInspector(_modified); });
|
editWidget = new curveBox(function(_modified) { return setValueInspector(_modified); });
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.text : #region
|
case VALUE_TYPE.text : #region
|
||||||
switch(display_type) {
|
switch(display_type) {
|
||||||
case VALUE_DISPLAY._default :
|
case VALUE_DISPLAY._default :
|
||||||
|
@ -1247,7 +1275,10 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VALUE_DISPLAY.text_tunnel :
|
case VALUE_DISPLAY.text_tunnel :
|
||||||
editWidget = new textBox(TEXTBOX_INPUT.text, function(str) { return setValueInspector(str); });
|
editWidget = new textArea(TEXTBOX_INPUT.text, function(str) { return setValueInspector(str); });
|
||||||
|
|
||||||
|
editWidget.autocomplete_server = tunnel_autocomplete_server;
|
||||||
|
|
||||||
extract_node = "Node_String";
|
extract_node = "Node_String";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1256,6 +1287,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.d3Material : #region
|
case VALUE_TYPE.d3Material : #region
|
||||||
editWidget = new materialBox(function(ind) {
|
editWidget = new materialBox(function(ind) {
|
||||||
var res = setValueInspector(ind);
|
var res = setValueInspector(ind);
|
||||||
|
@ -1267,6 +1299,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
show_in_inspector = true;
|
show_in_inspector = true;
|
||||||
extract_node = "Node_Canvas";
|
extract_node = "Node_Canvas";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.surface : #region
|
case VALUE_TYPE.surface : #region
|
||||||
editWidget = new surfaceBox(function(ind) { return setValueInspector(ind); } );
|
editWidget = new surfaceBox(function(ind) { return setValueInspector(ind); } );
|
||||||
|
|
||||||
|
@ -1274,6 +1307,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
show_in_inspector = true;
|
show_in_inspector = true;
|
||||||
extract_node = "Node_Canvas";
|
extract_node = "Node_Canvas";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.pathnode : #region
|
case VALUE_TYPE.pathnode : #region
|
||||||
extract_node = "Node_Path";
|
extract_node = "Node_Path";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
429
#backups/scripts/panel_function/panel_function.gml.backup0
Normal file
429
#backups/scripts/panel_function/panel_function.gml.backup0
Normal file
|
@ -0,0 +1,429 @@
|
||||||
|
// 2024-04-22 17:29:02
|
||||||
|
#region data
|
||||||
|
globalvar PANEL_MAIN, PANEL_MENU, PANEL_PREVIEW, PANEL_INSPECTOR, PANEL_GRAPH, PANEL_ANIMATION, PANEL_COLLECTION;
|
||||||
|
globalvar FULL_SCREEN_PANEL, FULL_SCREEN_CONTENT, FULL_SCREEN_PARENT;
|
||||||
|
|
||||||
|
PANEL_MAIN = 0;
|
||||||
|
FULL_SCREEN_PANEL = noone;
|
||||||
|
FULL_SCREEN_CONTENT = noone;
|
||||||
|
FULL_SCREEN_PARENT = noone;
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region panel class
|
||||||
|
enum PANEL_CONTENT {
|
||||||
|
empty,
|
||||||
|
splith,
|
||||||
|
splitv,
|
||||||
|
menu,
|
||||||
|
inspector,
|
||||||
|
animation,
|
||||||
|
preview,
|
||||||
|
graph,
|
||||||
|
collection
|
||||||
|
}
|
||||||
|
|
||||||
|
#macro PANEL_PADDING padding = in_dialog? ui(24) : ui(16); \
|
||||||
|
title_height = in_dialog? ui(64) : ui(56);
|
||||||
|
|
||||||
|
#macro PANEL_TITLE draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text); \
|
||||||
|
draw_text_add(in_dialog? ui(56) : ui(24), title_height / 2 - (!in_dialog) * ui(4), title);
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region functions
|
||||||
|
function clearPanel() { #region
|
||||||
|
delete PANEL_MAIN;
|
||||||
|
delete PANEL_MENU;
|
||||||
|
delete PANEL_INSPECTOR;
|
||||||
|
delete PANEL_PREVIEW;
|
||||||
|
delete PANEL_GRAPH;
|
||||||
|
delete PANEL_COLLECTION;
|
||||||
|
|
||||||
|
PANEL_MAIN = {};
|
||||||
|
PANEL_MENU = {};
|
||||||
|
PANEL_INSPECTOR = {};
|
||||||
|
PANEL_PREVIEW = {};
|
||||||
|
PANEL_GRAPH = {};
|
||||||
|
PANEL_COLLECTION = {};
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function getPanelFromName(name, create = false) { #region
|
||||||
|
switch(name) {
|
||||||
|
case "Panel_Menu" : return (create || findPanel(name))? new Panel_Menu() : PANEL_MENU;
|
||||||
|
case "Panel_Inspector" : return (create || findPanel(name))? new Panel_Inspector() : PANEL_INSPECTOR;
|
||||||
|
case "Panel_Animation" : return (create || findPanel(name))? new Panel_Animation() : PANEL_ANIMATION;
|
||||||
|
case "Panel_Preview" : return (create || findPanel(name))? new Panel_Preview() : PANEL_PREVIEW;
|
||||||
|
case "Panel_Graph" : return (create || findPanel(name))? new Panel_Graph() : PANEL_GRAPH;
|
||||||
|
|
||||||
|
case "Panel_Collection" : return new Panel_Collection();
|
||||||
|
case "Panel_Workspace" : return new Panel_Workspace();
|
||||||
|
case "Panel_Tunnels" : return new Panel_Tunnels();
|
||||||
|
case "Panel_History" : return new Panel_History();
|
||||||
|
case "Panel_Notification" : return new Panel_Notification();
|
||||||
|
case "Panel_Nodes" : return new Panel_Nodes();
|
||||||
|
case "Panel_Globalvar" : return new Panel_Globalvar();
|
||||||
|
case "Panel_Node_Align" : return new Panel_Node_Align();
|
||||||
|
|
||||||
|
case "Panel_Color" : return new Panel_Color();
|
||||||
|
case "Panel_Palette" : return new Panel_Palette();
|
||||||
|
case "Panel_Gradient" : return new Panel_Gradient();
|
||||||
|
case "Panel_Console" : return new Panel_Console();
|
||||||
|
}
|
||||||
|
|
||||||
|
return noone;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function loadPanelStruct(panel, str) { #region
|
||||||
|
var cont = str.content;
|
||||||
|
|
||||||
|
if(variable_struct_exists(str, "split")) {
|
||||||
|
var pan = panel;
|
||||||
|
if(str.split == "v")
|
||||||
|
pan = panel.split_v(ui(str.width));
|
||||||
|
else if(str.split == "h")
|
||||||
|
pan = panel.split_h(ui(str.width));
|
||||||
|
|
||||||
|
if(pan != noone) {
|
||||||
|
loadPanelStruct(pan[0], cont[0]);
|
||||||
|
loadPanelStruct(pan[1], cont[1]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(!is_array(cont)) cont = [ cont ];
|
||||||
|
for( var i = 0, n = array_length(cont); i < n; i++ ) {
|
||||||
|
var _cont = getPanelFromName(cont[i])
|
||||||
|
if(_cont != noone) panel.setContent(_cont);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function loadPanel(path, panel) { #region
|
||||||
|
CURRENT_PANEL = json_load_struct(path);
|
||||||
|
loadPanelStruct(panel, CURRENT_PANEL.panel);
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function checkPanelValid() { #region
|
||||||
|
var val = true;
|
||||||
|
if(!is_instanceof(PANEL_GRAPH.panel, Panel)) val = false;
|
||||||
|
if(!is_instanceof(PANEL_PREVIEW.panel, Panel)) val = false;
|
||||||
|
if(!is_instanceof(PANEL_INSPECTOR.panel, Panel)) val = false;
|
||||||
|
|
||||||
|
if(!val) {
|
||||||
|
noti_warning("Invalid Panel Layout, layout and UI scale will be reset to the default value.\n\nRestart recommended.");
|
||||||
|
|
||||||
|
PREFERENCES.panel_layout_file = "Vertical";
|
||||||
|
PREFERENCES._display_scaling = 1;
|
||||||
|
PREFERENCES.display_scaling = 0;
|
||||||
|
|
||||||
|
resetScale(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return val;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function panelAdd(panel, create = false) { #region
|
||||||
|
var pan = getPanelFromName(panel, create);
|
||||||
|
if(pan == noone) return noone;
|
||||||
|
|
||||||
|
return dialogPanelCall(pan);
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function panelObjectInit() { #region
|
||||||
|
PANEL_MAIN = new Panel(noone, ui(2), ui(2), WIN_SW - ui(4), WIN_SH - ui(4));
|
||||||
|
PANEL_MENU = new Panel_Menu();
|
||||||
|
PANEL_INSPECTOR = new Panel_Inspector();
|
||||||
|
PANEL_ANIMATION = new Panel_Animation();
|
||||||
|
PANEL_PREVIEW = new Panel_Preview();
|
||||||
|
PANEL_GRAPH = new Panel_Graph();
|
||||||
|
PANEL_COLLECTION = new Panel_Collection();
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function resetPanel(check = true) { #region
|
||||||
|
clearPanel();
|
||||||
|
panelObjectInit();
|
||||||
|
loadPanelStruct(PANEL_MAIN, CURRENT_PANEL.panel);
|
||||||
|
PANEL_MAIN.refresh();
|
||||||
|
|
||||||
|
if(check) checkPanelValid();
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function __initPanel() { #region
|
||||||
|
directory_verify($"{DIRECTORY}layouts");
|
||||||
|
|
||||||
|
if(check_version($"{DIRECTORY}layouts/version"))
|
||||||
|
zip_unzip("data/Layouts.zip", DIRECTORY);
|
||||||
|
|
||||||
|
setPanel();
|
||||||
|
panelDisplayInit();
|
||||||
|
|
||||||
|
checkPanelValid();
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function setPanel() { #region
|
||||||
|
globalvar CURRENT_PANEL;
|
||||||
|
|
||||||
|
panelObjectInit();
|
||||||
|
|
||||||
|
var file = $"{DIRECTORY}layouts/{PREFERENCES.panel_layout_file}.json";
|
||||||
|
if(!file_exists_empty(file))
|
||||||
|
file = DIRECTORY + "layouts/Horizontal.json";
|
||||||
|
loadPanel(file, PANEL_MAIN);
|
||||||
|
|
||||||
|
PANEL_MAIN.refresh();
|
||||||
|
PANEL_MAIN.refreshSize();
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function findPanel(_type, _pane = PANEL_MAIN) { #region
|
||||||
|
var pan = _findPanel(_type, _pane);
|
||||||
|
if(pan) return pan;
|
||||||
|
|
||||||
|
with(o_dialog_panel) {
|
||||||
|
if(instanceof(content) == _type)
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
return noone;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function _findPanel(_type, _pane, _res = noone) { #region
|
||||||
|
if(instanceof(_pane) != "Panel")
|
||||||
|
return _res;
|
||||||
|
if(!ds_exists(_pane.childs, ds_type_list))
|
||||||
|
return _res;
|
||||||
|
|
||||||
|
if(ds_list_size(_pane.childs) == 0) {
|
||||||
|
for( var i = 0, n = array_length(_pane.content); i < n; i++ )
|
||||||
|
if(instanceof(_pane.content[i]) == _type)
|
||||||
|
return _pane.content[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
for(var i = 0; i < ds_list_size(_pane.childs); i++) {
|
||||||
|
var _re = _findPanel(_type, _pane.childs[| i], _res);
|
||||||
|
if(_re != noone) _res = _re;
|
||||||
|
}
|
||||||
|
|
||||||
|
return _res;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function findPanels(_type, _pane = PANEL_MAIN) { #region
|
||||||
|
return _findPanels(_type, _pane, []);
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function _findPanels(_type, _pane, _arr = []) { #region
|
||||||
|
if(!is_instanceof(_pane, Panel))
|
||||||
|
return _arr;
|
||||||
|
if(!ds_exists(_pane.childs, ds_type_list))
|
||||||
|
return _arr;
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(_pane.content); i < n; i++ ) {
|
||||||
|
var _cnt = instanceof(_pane.content[i]);
|
||||||
|
//print($" - content {_cnt} \ {_cnt == _type}");
|
||||||
|
if(_cnt == _type)
|
||||||
|
array_push(_arr, _pane.content[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(var i = 0; i < ds_list_size(_pane.childs); i++)
|
||||||
|
_arr = _findPanels(_type, _pane.childs[| i], _arr);
|
||||||
|
|
||||||
|
return _arr;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function panelInit() { #region
|
||||||
|
panel_dragging = noone;
|
||||||
|
panel_hovering = noone;
|
||||||
|
panel_split = 0;
|
||||||
|
|
||||||
|
panel_mouse = 0;
|
||||||
|
|
||||||
|
panel_draw_x0 = noone; panel_draw_x0_to = noone;
|
||||||
|
panel_draw_y0 = noone; panel_draw_y0_to = noone;
|
||||||
|
panel_draw_x1 = noone; panel_draw_x1_to = noone;
|
||||||
|
panel_draw_y1 = noone; panel_draw_y1_to = noone;
|
||||||
|
|
||||||
|
panel_draw_depth = 0;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function panelDraw() { #region
|
||||||
|
panel_draw_x0 = panel_draw_x0 == noone? panel_draw_x0_to : lerp_float(panel_draw_x0, panel_draw_x0_to, 3);
|
||||||
|
panel_draw_y0 = panel_draw_y0 == noone? panel_draw_y0_to : lerp_float(panel_draw_y0, panel_draw_y0_to, 3);
|
||||||
|
panel_draw_x1 = panel_draw_x1 == noone? panel_draw_x1_to : lerp_float(panel_draw_x1, panel_draw_x1_to, 3);
|
||||||
|
panel_draw_y1 = panel_draw_y1 == noone? panel_draw_y1_to : lerp_float(panel_draw_y1, panel_draw_y1_to, 3);
|
||||||
|
|
||||||
|
panel_draw_depth = lerp_float(panel_draw_depth, panel_split == 4, 3);
|
||||||
|
|
||||||
|
if(panel_draw_x0_to != noone) {
|
||||||
|
draw_set_color(COLORS._main_accent);
|
||||||
|
|
||||||
|
if(panel_split == 4) {
|
||||||
|
var dist = ui(8) * panel_draw_depth;
|
||||||
|
draw_set_alpha(.2);
|
||||||
|
draw_roundrect_ext(panel_draw_x0 - dist, panel_draw_y0 - dist, panel_draw_x1 - dist, panel_draw_y1 - dist, THEME_VALUE.panel_corner_radius, THEME_VALUE.panel_corner_radius, false);
|
||||||
|
draw_set_alpha(1.);
|
||||||
|
draw_roundrect_ext(panel_draw_x0 - dist, panel_draw_y0 - dist, panel_draw_x1 - dist, panel_draw_y1 - dist, THEME_VALUE.panel_corner_radius, THEME_VALUE.panel_corner_radius, true);
|
||||||
|
|
||||||
|
draw_set_alpha(.2);
|
||||||
|
draw_roundrect_ext(panel_draw_x0 + dist, panel_draw_y0 + dist, panel_draw_x1 + dist, panel_draw_y1 + dist, THEME_VALUE.panel_corner_radius, THEME_VALUE.panel_corner_radius, false);
|
||||||
|
draw_set_alpha(1.);
|
||||||
|
draw_roundrect_ext(panel_draw_x0 + dist, panel_draw_y0 + dist, panel_draw_x1 + dist, panel_draw_y1 + dist, THEME_VALUE.panel_corner_radius, THEME_VALUE.panel_corner_radius, true);
|
||||||
|
} else {
|
||||||
|
draw_set_alpha(.4);
|
||||||
|
draw_roundrect_ext(panel_draw_x0, panel_draw_y0, panel_draw_x1, panel_draw_y1, THEME_VALUE.panel_corner_radius, THEME_VALUE.panel_corner_radius, false);
|
||||||
|
draw_set_alpha(1.);
|
||||||
|
draw_roundrect_ext(panel_draw_x0, panel_draw_y0, panel_draw_x1, panel_draw_y1, THEME_VALUE.panel_corner_radius, THEME_VALUE.panel_corner_radius, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(panel_dragging) {
|
||||||
|
draw_surface_ext_safe(panel_dragging.dragSurface, mouse_mx + 8, mouse_my + 8, 0.5, 0.5, 0, c_white, 0.5);
|
||||||
|
if((panel_mouse == 0 && mouse_release(mb_left)) || (panel_mouse == 1 && mouse_press(mb_left))) {
|
||||||
|
var p = [];
|
||||||
|
|
||||||
|
if(panel_split == 4) {
|
||||||
|
if(panel_hovering == PANEL_MAIN) { //pop out
|
||||||
|
var panel = instanceof(panel_dragging) == "Panel"? panel_dragging.content : panel_dragging;
|
||||||
|
dialogPanelCall(panel);
|
||||||
|
} else
|
||||||
|
panel_hovering.setContent(panel_dragging, true);
|
||||||
|
} else if(panel_hovering == PANEL_MAIN) { //split main panel
|
||||||
|
var panel = new Panel(noone, ui(2), ui(2), WIN_SW - ui(4), WIN_SH - ui(4));
|
||||||
|
var main = PANEL_MAIN;
|
||||||
|
|
||||||
|
switch(panel_split) {
|
||||||
|
case 0 : p = panel.split_v( panel.h / 2); break;
|
||||||
|
case 1 : p = panel.split_h( panel.w / 2); break;
|
||||||
|
case 2 : p = panel.split_h( panel.w / 2); break;
|
||||||
|
case 3 : p = panel.split_v( panel.h / 2); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
panel.parent.childs[| (panel_split + 1) % 2] = main;
|
||||||
|
main.parent = panel.parent;
|
||||||
|
panel.parent.childs[| (panel_split + 0) % 2].setContent(panel_dragging);
|
||||||
|
|
||||||
|
PANEL_MAIN.refreshSize();
|
||||||
|
} else {
|
||||||
|
var c = panel_hovering.content;
|
||||||
|
panel_hovering.content = [];
|
||||||
|
|
||||||
|
switch(panel_split) {
|
||||||
|
case 0 : p = panel_hovering.split_v( panel_hovering.h / 2); break;
|
||||||
|
case 1 : p = panel_hovering.split_h( panel_hovering.w / 2); break;
|
||||||
|
case 2 : p = panel_hovering.split_h( panel_hovering.w / 2); break;
|
||||||
|
case 3 : p = panel_hovering.split_v( panel_hovering.h / 2); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
p[(panel_split + 1) % 2].setContent(c);
|
||||||
|
p[(panel_split + 0) % 2].setContent(panel_dragging);
|
||||||
|
|
||||||
|
panel_hovering.refreshSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
panel_hovering = noone;
|
||||||
|
panel_dragging = noone;
|
||||||
|
|
||||||
|
panel_draw_x0 = noone; panel_draw_x0_to = noone;
|
||||||
|
panel_draw_y0 = noone; panel_draw_y0_to = noone;
|
||||||
|
panel_draw_x1 = noone; panel_draw_x1_to = noone;
|
||||||
|
panel_draw_y1 = noone; panel_draw_y1_to = noone;
|
||||||
|
panel_draw_depth = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function panelSerialize() { #region
|
||||||
|
var cont = {};
|
||||||
|
cont.panel = _panelSerialize(PANEL_MAIN);
|
||||||
|
return cont;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function _panelSerialize(panel) { #region
|
||||||
|
var cont = {};
|
||||||
|
var ind = 0;
|
||||||
|
|
||||||
|
cont.content = [];
|
||||||
|
if(panel.split != "" && ds_list_size(panel.childs) == 2) {
|
||||||
|
cont.split = panel.split;
|
||||||
|
if(panel.split == "h") {
|
||||||
|
ind = panel.childs[| 1].w < panel.childs[| 0].w;
|
||||||
|
cont.width = panel.childs[| ind].w * (panel.childs[| ind].x == panel.x? 1 : -1);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
ind = panel.childs[| 1].h < panel.childs[| 0].h;
|
||||||
|
cont.width = panel.childs[| ind].h * (panel.childs[| ind].y == panel.y? 1 : -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
ind = panel.childs[| 1].x == panel.x && panel.childs[| 1].y == panel.y;
|
||||||
|
for( var i = 0; i < ds_list_size(panel.childs); i++ )
|
||||||
|
cont.content[i] = _panelSerialize(panel.childs[| (ind + i) % 2]);
|
||||||
|
} else {
|
||||||
|
for( var i = 0, n = array_length(panel.content); i < n; i++ )
|
||||||
|
cont.content[i] = instanceof(panel.content[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return cont;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function panelSerializeArray() { #region
|
||||||
|
return _panelSerializeArray(PANEL_MAIN);
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function _panelSerializeArray(panel) { #region
|
||||||
|
var cont = [];
|
||||||
|
|
||||||
|
if(!ds_list_empty(panel.childs)) {
|
||||||
|
for( var i = 0; i < ds_list_size(panel.childs); i++ )
|
||||||
|
cont[i] = _panelSerializeArray(panel.childs[| i] );
|
||||||
|
} else {
|
||||||
|
for( var i = 0, n = array_length(panel.content); i < n; i++ )
|
||||||
|
cont[i] = instanceof(panel.content[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return cont;
|
||||||
|
} #endregion
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region fullscreen
|
||||||
|
function set_focus_fullscreen() {
|
||||||
|
if(FULL_SCREEN_PANEL == noone) {
|
||||||
|
var panel = PREFERENCES.expand_hover? HOVER : FOCUS;
|
||||||
|
|
||||||
|
if(panel == noone) return;
|
||||||
|
if(!is_struct(panel)) return;
|
||||||
|
if(instanceof(panel) != "Panel") return;
|
||||||
|
if(array_length(panel.content) == 0) return;
|
||||||
|
|
||||||
|
var content = panel.getContent();
|
||||||
|
if(!content.expandable) return;
|
||||||
|
|
||||||
|
PANEL_MAIN.childs[| 1].setContent(content);
|
||||||
|
|
||||||
|
FULL_SCREEN_PARENT = PANEL_MAIN.childs[| 1];
|
||||||
|
FULL_SCREEN_PANEL = panel;
|
||||||
|
FULL_SCREEN_CONTENT = content;
|
||||||
|
|
||||||
|
content.onFullScreen();
|
||||||
|
} else {
|
||||||
|
PANEL_MAIN.childs[| 1].content = [];
|
||||||
|
PANEL_MAIN.refreshSize();
|
||||||
|
|
||||||
|
FULL_SCREEN_CONTENT.onFullScreen();
|
||||||
|
|
||||||
|
FULL_SCREEN_PARENT = noone;
|
||||||
|
FULL_SCREEN_PANEL = noone;
|
||||||
|
FULL_SCREEN_CONTENT = noone;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region focus hover
|
||||||
|
function panelHover(content) {
|
||||||
|
if(!HOVER) return false;
|
||||||
|
if(instanceof(HOVER) != "Panel") return false;
|
||||||
|
|
||||||
|
return instanceof(HOVER.getContent()) == instanceof(content);
|
||||||
|
}
|
||||||
|
|
||||||
|
function panelFocus(content) {
|
||||||
|
if(!FOCUS) return false;
|
||||||
|
if(instanceof(FOCUS) != "Panel") return false;
|
||||||
|
|
||||||
|
return instanceof(FOCUS.getContent()) == instanceof(content);
|
||||||
|
}
|
||||||
|
#endregion
|
429
#backups/scripts/panel_function/panel_function.gml.backup1
Normal file
429
#backups/scripts/panel_function/panel_function.gml.backup1
Normal file
|
@ -0,0 +1,429 @@
|
||||||
|
// 2024-04-22 17:28:16
|
||||||
|
#region data
|
||||||
|
globalvar PANEL_MAIN, PANEL_MENU, PANEL_PREVIEW, PANEL_INSPECTOR, PANEL_GRAPH, PANEL_ANIMATION, PANEL_COLLECTION;
|
||||||
|
globalvar FULL_SCREEN_PANEL, FULL_SCREEN_CONTENT, FULL_SCREEN_PARENT;
|
||||||
|
|
||||||
|
PANEL_MAIN = 0;
|
||||||
|
FULL_SCREEN_PANEL = noone;
|
||||||
|
FULL_SCREEN_CONTENT = noone;
|
||||||
|
FULL_SCREEN_PARENT = noone;
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region panel class
|
||||||
|
enum PANEL_CONTENT {
|
||||||
|
empty,
|
||||||
|
splith,
|
||||||
|
splitv,
|
||||||
|
menu,
|
||||||
|
inspector,
|
||||||
|
animation,
|
||||||
|
preview,
|
||||||
|
graph,
|
||||||
|
collection
|
||||||
|
}
|
||||||
|
|
||||||
|
#macro PANEL_PADDING padding = in_dialog? ui(24) : ui(16); \
|
||||||
|
title_height = in_dialog? ui(64) : ui(56);
|
||||||
|
|
||||||
|
#macro PANEL_TITLE draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text); \
|
||||||
|
draw_text_add(in_dialog? ui(56) : ui(24), title_height / 2 - (!in_dialog) * ui(4), title);
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region functions
|
||||||
|
function clearPanel() { #region
|
||||||
|
delete PANEL_MAIN;
|
||||||
|
delete PANEL_MENU;
|
||||||
|
delete PANEL_INSPECTOR;
|
||||||
|
delete PANEL_PREVIEW;
|
||||||
|
delete PANEL_GRAPH;
|
||||||
|
delete PANEL_COLLECTION;
|
||||||
|
|
||||||
|
PANEL_MAIN = {};
|
||||||
|
PANEL_MENU = {};
|
||||||
|
PANEL_INSPECTOR = {};
|
||||||
|
PANEL_PREVIEW = {};
|
||||||
|
PANEL_GRAPH = {};
|
||||||
|
PANEL_COLLECTION = {};
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function getPanelFromName(name, create = false) { #region
|
||||||
|
switch(name) {
|
||||||
|
case "Panel_Menu" : return (create || findPanel(name))? new Panel_Menu() : PANEL_MENU;
|
||||||
|
case "Panel_Inspector" : return (create || findPanel(name))? new Panel_Inspector() : PANEL_INSPECTOR;
|
||||||
|
case "Panel_Animation" : return (create || findPanel(name))? new Panel_Animation() : PANEL_ANIMATION;
|
||||||
|
case "Panel_Preview" : return (create || findPanel(name))? new Panel_Preview() : PANEL_PREVIEW;
|
||||||
|
case "Panel_Graph" : return (create || findPanel(name))? new Panel_Graph() : PANEL_GRAPH;
|
||||||
|
|
||||||
|
case "Panel_Collection" : return new Panel_Collection();
|
||||||
|
case "Panel_Workspace" : return new Panel_Workspace();
|
||||||
|
case "Panel_Tunnels" : return new Panel_Tunnels();
|
||||||
|
case "Panel_History" : return new Panel_History();
|
||||||
|
case "Panel_Notification" : return new Panel_Notification();
|
||||||
|
case "Panel_Nodes" : return new Panel_Nodes();
|
||||||
|
case "Panel_Globalvar" : return new Panel_Globalvar();
|
||||||
|
case "Panel_Node_Align" : return new Panel_Node_Align();
|
||||||
|
|
||||||
|
case "Panel_Color" : return new Panel_Color();
|
||||||
|
case "Panel_Palette" : return new Panel_Palette();
|
||||||
|
case "Panel_Gradient" : return new Panel_Gradient();
|
||||||
|
case "Panel_Console" : return new Panel_Console();
|
||||||
|
}
|
||||||
|
|
||||||
|
return noone;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function loadPanelStruct(panel, str) { #region
|
||||||
|
var cont = str.content;
|
||||||
|
|
||||||
|
if(variable_struct_exists(str, "split")) {
|
||||||
|
var pan = panel;
|
||||||
|
if(str.split == "v")
|
||||||
|
pan = panel.split_v(ui(str.width));
|
||||||
|
else if(str.split == "h")
|
||||||
|
pan = panel.split_h(ui(str.width));
|
||||||
|
|
||||||
|
if(pan != noone) {
|
||||||
|
loadPanelStruct(pan[0], cont[0]);
|
||||||
|
loadPanelStruct(pan[1], cont[1]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(!is_array(cont)) cont = [ cont ];
|
||||||
|
for( var i = 0, n = array_length(cont); i < n; i++ ) {
|
||||||
|
var _cont = getPanelFromName(cont[i])
|
||||||
|
if(_cont != noone) panel.setContent(_cont);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function loadPanel(path, panel) { #region
|
||||||
|
CURRENT_PANEL = json_load_struct(path);
|
||||||
|
loadPanelStruct(panel, CURRENT_PANEL.panel);
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function checkPanelValid() { #region
|
||||||
|
var val = true;
|
||||||
|
if(!is_instanceof(PANEL_GRAPH.panel, Panel)) val = false;
|
||||||
|
if(!is_instanceof(PANEL_PREVIEW.panel, Panel)) val = false;
|
||||||
|
if(!is_instanceof(PANEL_INSPECTOR.panel, Panel)) val = false;
|
||||||
|
|
||||||
|
if(!val) {
|
||||||
|
noti_warning("Invalid Panel Layout, layout and UI scale will be reset to the default value.\n\nRestart recommended.");
|
||||||
|
|
||||||
|
PREFERENCES.panel_layout_file = "Vertical";
|
||||||
|
PREFERENCES._display_scaling = 1;
|
||||||
|
PREFERENCES.display_scaling = 0;
|
||||||
|
|
||||||
|
resetScale(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return val;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function panelAdd(panel, create = false) { #region
|
||||||
|
var pan = getPanelFromName(panel, create);
|
||||||
|
if(pan == noone) return noone;
|
||||||
|
|
||||||
|
return dialogPanelCall(pan);
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function panelObjectInit() { #region
|
||||||
|
PANEL_MAIN = new Panel(noone, ui(2), ui(2), WIN_SW - ui(4), WIN_SH - ui(4));
|
||||||
|
PANEL_MENU = new Panel_Menu();
|
||||||
|
PANEL_INSPECTOR = new Panel_Inspector();
|
||||||
|
PANEL_ANIMATION = new Panel_Animation();
|
||||||
|
PANEL_PREVIEW = new Panel_Preview();
|
||||||
|
PANEL_GRAPH = new Panel_Graph();
|
||||||
|
PANEL_COLLECTION = new Panel_Collection();
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function resetPanel(check = true) { #region
|
||||||
|
clearPanel();
|
||||||
|
panelObjectInit();
|
||||||
|
loadPanelStruct(PANEL_MAIN, CURRENT_PANEL.panel);
|
||||||
|
PANEL_MAIN.refresh();
|
||||||
|
|
||||||
|
if(check) checkPanelValid();
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function __initPanel() { #region
|
||||||
|
directory_verify($"{DIRECTORY}layouts");
|
||||||
|
|
||||||
|
if(check_version($"{DIRECTORY}layouts/version"))
|
||||||
|
zip_unzip("data/Layouts.zip", DIRECTORY);
|
||||||
|
|
||||||
|
setPanel();
|
||||||
|
panelDisplayInit();
|
||||||
|
|
||||||
|
checkPanelValid();
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function setPanel() { #region
|
||||||
|
globalvar CURRENT_PANEL;
|
||||||
|
|
||||||
|
panelObjectInit();
|
||||||
|
|
||||||
|
var file = $"{DIRECTORY}layouts/{PREFERENCES.panel_layout_file}.json";
|
||||||
|
if(!file_exists_empty(file))
|
||||||
|
file = DIRECTORY + "layouts/Horizontal.json";
|
||||||
|
loadPanel(file, PANEL_MAIN);
|
||||||
|
|
||||||
|
PANEL_MAIN.refresh();
|
||||||
|
PANEL_MAIN.refreshSize();
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function findPanel(_type, _pane = PANEL_MAIN) { #region
|
||||||
|
var pan = _findPanel(_type, _pane);
|
||||||
|
if(pan) return pan;
|
||||||
|
|
||||||
|
with(o_dialog_panel) {
|
||||||
|
if(instanceof(content) == _type)
|
||||||
|
return content;
|
||||||
|
}
|
||||||
|
|
||||||
|
return noone;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function _findPanel(_type, _pane, _res = noone) { #region
|
||||||
|
if(instanceof(_pane) != "Panel")
|
||||||
|
return _res;
|
||||||
|
if(!ds_exists(_pane.childs, ds_type_list))
|
||||||
|
return _res;
|
||||||
|
|
||||||
|
if(ds_list_size(_pane.childs) == 0) {
|
||||||
|
for( var i = 0, n = array_length(_pane.content); i < n; i++ )
|
||||||
|
if(instanceof(_pane.content[i]) == _type)
|
||||||
|
return _pane.content[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
for(var i = 0; i < ds_list_size(_pane.childs); i++) {
|
||||||
|
var _re = _findPanel(_type, _pane.childs[| i], _res);
|
||||||
|
if(_re != noone) _res = _re;
|
||||||
|
}
|
||||||
|
|
||||||
|
return _res;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function findPanels(_type, _pane = PANEL_MAIN) { #region
|
||||||
|
return _findPanels(_type, _pane, []);
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function _findPanels(_type, _pane, _arr = []) { #region
|
||||||
|
if(!is_instanceof(_pane, Panel))
|
||||||
|
return _arr;
|
||||||
|
if(!ds_exists(_pane.childs, ds_type_list))
|
||||||
|
return _arr;
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(_pane.content); i < n; i++ ) {
|
||||||
|
var _cnt = instanceof(_pane.content[i]);
|
||||||
|
//print($" - content {_cnt} \ {_cnt == _type}");
|
||||||
|
if(_cnt == _type)
|
||||||
|
array_push(_arr, _pane.content[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(var i = 0; i < ds_list_size(_pane.childs); i++)
|
||||||
|
_arr = _findPanels(_type, _pane.childs[| i], _arr);
|
||||||
|
|
||||||
|
return _arr;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function panelInit() { #region
|
||||||
|
panel_dragging = noone;
|
||||||
|
panel_hovering = noone;
|
||||||
|
panel_split = 0;
|
||||||
|
|
||||||
|
panel_mouse = 0;
|
||||||
|
|
||||||
|
panel_draw_x0 = noone; panel_draw_x0_to = noone;
|
||||||
|
panel_draw_y0 = noone; panel_draw_y0_to = noone;
|
||||||
|
panel_draw_x1 = noone; panel_draw_x1_to = noone;
|
||||||
|
panel_draw_y1 = noone; panel_draw_y1_to = noone;
|
||||||
|
|
||||||
|
panel_draw_depth = 0;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function panelDraw() { #region
|
||||||
|
panel_draw_x0 = panel_draw_x0 == noone? panel_draw_x0_to : lerp_float(panel_draw_x0, panel_draw_x0_to, 3);
|
||||||
|
panel_draw_y0 = panel_draw_y0 == noone? panel_draw_y0_to : lerp_float(panel_draw_y0, panel_draw_y0_to, 3);
|
||||||
|
panel_draw_x1 = panel_draw_x1 == noone? panel_draw_x1_to : lerp_float(panel_draw_x1, panel_draw_x1_to, 3);
|
||||||
|
panel_draw_y1 = panel_draw_y1 == noone? panel_draw_y1_to : lerp_float(panel_draw_y1, panel_draw_y1_to, 3);
|
||||||
|
|
||||||
|
panel_draw_depth = lerp_float(panel_draw_depth, panel_split == 4, 3);
|
||||||
|
|
||||||
|
if(panel_draw_x0_to != noone) {
|
||||||
|
draw_set_color(COLORS._main_accent);
|
||||||
|
|
||||||
|
if(panel_split == 4) {
|
||||||
|
var dist = ui(8) * panel_draw_depth;
|
||||||
|
draw_set_alpha(.2);
|
||||||
|
draw_roundrect_ext(panel_draw_x0 - dist, panel_draw_y0 - dist, panel_draw_x1 - dist, panel_draw_y1 - dist, THEME_VALUE.panel_corner_radius, THEME_VALUE.panel_corner_radius, false);
|
||||||
|
draw_set_alpha(1.);
|
||||||
|
draw_roundrect_ext(panel_draw_x0 - dist, panel_draw_y0 - dist, panel_draw_x1 - dist, panel_draw_y1 - dist, THEME_VALUE.panel_corner_radius, THEME_VALUE.panel_corner_radius, true);
|
||||||
|
|
||||||
|
draw_set_alpha(.2);
|
||||||
|
draw_roundrect_ext(panel_draw_x0 + dist, panel_draw_y0 + dist, panel_draw_x1 + dist, panel_draw_y1 + dist, THEME_VALUE.panel_corner_radius, THEME_VALUE.panel_corner_radius, false);
|
||||||
|
draw_set_alpha(1.);
|
||||||
|
draw_roundrect_ext(panel_draw_x0 + dist, panel_draw_y0 + dist, panel_draw_x1 + dist, panel_draw_y1 + dist, THEME_VALUE.panel_corner_radius, THEME_VALUE.panel_corner_radius, true);
|
||||||
|
} else {
|
||||||
|
draw_set_alpha(.4);
|
||||||
|
draw_roundrect_ext(panel_draw_x0, panel_draw_y0, panel_draw_x1, panel_draw_y1, THEME_VALUE.panel_corner_radius, THEME_VALUE.panel_corner_radius, false);
|
||||||
|
draw_set_alpha(1.);
|
||||||
|
draw_roundrect_ext(panel_draw_x0, panel_draw_y0, panel_draw_x1, panel_draw_y1, THEME_VALUE.panel_corner_radius, THEME_VALUE.panel_corner_radius, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(panel_dragging) {
|
||||||
|
draw_surface_ext_safe(panel_dragging.dragSurface, mouse_mx + 8, mouse_my + 8, 0.5, 0.5, 0, c_white, 0.5);
|
||||||
|
if((panel_mouse == 0 && mouse_release(mb_left)) || (panel_mouse == 1 && mouse_press(mb_left))) {
|
||||||
|
var p = [];
|
||||||
|
|
||||||
|
if(panel_split == 4) {
|
||||||
|
if(panel_hovering == PANEL_MAIN) { //pop out
|
||||||
|
var panel = instanceof(panel_dragging) == "Panel"? panel_dragging.content : panel_dragging;
|
||||||
|
dialogPanelCall(panel);
|
||||||
|
} else
|
||||||
|
panel_hovering.setContent(panel_dragging, true);
|
||||||
|
} else if(panel_hovering == PANEL_MAIN) { //split main panel
|
||||||
|
var panel = new Panel(noone, ui(2), ui(2), WIN_SW - ui(4), WIN_SH - ui(4));
|
||||||
|
var main = PANEL_MAIN;
|
||||||
|
|
||||||
|
switch(panel_split) {
|
||||||
|
case 0 : p = panel.split_v( panel.h / 2); break;
|
||||||
|
case 1 : p = panel.split_h( panel.w / 2); break;
|
||||||
|
case 2 : p = panel.split_h( panel.w / 2); break;
|
||||||
|
case 3 : p = panel.split_v( panel.h / 2); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
panel.parent.childs[| (panel_split + 1) % 2] = main;
|
||||||
|
main.parent = panel.parent;
|
||||||
|
panel.parent.childs[| (panel_split + 0) % 2].setContent(panel_dragging);
|
||||||
|
|
||||||
|
PANEL_MAIN.refreshSize();
|
||||||
|
} else {
|
||||||
|
var c = panel_hovering.content;
|
||||||
|
panel_hovering.content = [];
|
||||||
|
|
||||||
|
switch(panel_split) {
|
||||||
|
case 0 : p = panel_hovering.split_v( panel_hovering.h / 2); break;
|
||||||
|
case 1 : p = panel_hovering.split_h( panel_hovering.w / 2); break;
|
||||||
|
case 2 : p = panel_hovering.split_h( panel_hovering.w / 2); break;
|
||||||
|
case 3 : p = panel_hovering.split_v( panel_hovering.h / 2); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
p[(panel_split + 1) % 2].setContent(c);
|
||||||
|
p[(panel_split + 0) % 2].setContent(panel_dragging);
|
||||||
|
|
||||||
|
panel_hovering.refreshSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
panel_hovering = noone;
|
||||||
|
panel_dragging = noone;
|
||||||
|
|
||||||
|
panel_draw_x0 = noone; panel_draw_x0_to = noone;
|
||||||
|
panel_draw_y0 = noone; panel_draw_y0_to = noone;
|
||||||
|
panel_draw_x1 = noone; panel_draw_x1_to = noone;
|
||||||
|
panel_draw_y1 = noone; panel_draw_y1_to = noone;
|
||||||
|
panel_draw_depth = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function panelSerialize() { #region
|
||||||
|
var cont = {};
|
||||||
|
cont.panel = _panelSerialize(PANEL_MAIN);
|
||||||
|
return cont;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function _panelSerialize(panel) { #region
|
||||||
|
var cont = {};
|
||||||
|
var ind = 0;
|
||||||
|
|
||||||
|
cont.content = [];
|
||||||
|
if(panel.split != "" && ds_list_size(panel.childs) == 2) {
|
||||||
|
cont.split = panel.split;
|
||||||
|
if(panel.split == "h") {
|
||||||
|
ind = panel.childs[| 1].w < panel.childs[| 0].w;
|
||||||
|
cont.width = panel.childs[| ind].w * (panel.childs[| ind].x == panel.x? 1 : -1);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
ind = panel.childs[| 1].h < panel.childs[| 0].h;
|
||||||
|
cont.width = panel.childs[| ind].h * (panel.childs[| ind].y == panel.y? 1 : -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
ind = panel.childs[| 1].x == panel.x && panel.childs[| 1].y == panel.y;
|
||||||
|
for( var i = 0; i < ds_list_size(panel.childs); i++ )
|
||||||
|
cont.content[i] = _panelSerialize(panel.childs[| (ind + i) % 2]);
|
||||||
|
} else {
|
||||||
|
for( var i = 0, n = array_length(panel.content); i < n; i++ )
|
||||||
|
cont.content[i] = instanceof(panel.content[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return cont;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function panelSerializeArray() { #region
|
||||||
|
return _panelSerializeArray(PANEL_MAIN);
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function _panelSerializeArray(panel) { #region
|
||||||
|
var cont = [];
|
||||||
|
|
||||||
|
if(!ds_list_empty(panel.childs)) {
|
||||||
|
for( var i = 0; i < ds_list_size(panel.childs); i++ )
|
||||||
|
cont[i] = _panelSerializeArray(panel.childs[| i] );
|
||||||
|
} else {
|
||||||
|
for( var i = 0, n = array_length(panel.content); i < n; i++ )
|
||||||
|
cont[i] = instanceof(panel.content[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return cont;
|
||||||
|
} #endregion
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region fullscreen
|
||||||
|
function set_focus_fullscreen() {
|
||||||
|
if(FULL_SCREEN_PANEL == noone) {
|
||||||
|
var panel = PREFERENCES.expand_hover? HOVER : FOCUS;
|
||||||
|
|
||||||
|
if(panel == noone) return;
|
||||||
|
if(!is_struct(panel)) return;
|
||||||
|
if(instanceof(panel) != "Panel") return;
|
||||||
|
if(array_length(panel.content) == 0) return;
|
||||||
|
|
||||||
|
var content = panel.getContent();
|
||||||
|
if(!content.expandable) return;
|
||||||
|
|
||||||
|
PANEL_MAIN.childs[| 1].setContent(content);
|
||||||
|
|
||||||
|
FULL_SCREEN_PARENT = PANEL_MAIN.childs[| 1];
|
||||||
|
FULL_SCREEN_PANEL = panel;
|
||||||
|
FULL_SCREEN_CONTENT = content;
|
||||||
|
|
||||||
|
content.onFullScreen();
|
||||||
|
} else {
|
||||||
|
PANEL_MAIN.childs[| 1].content = [];
|
||||||
|
PANEL_MAIN.refreshSize();
|
||||||
|
|
||||||
|
FULL_SCREEN_CONTENT.onFullScreen();
|
||||||
|
|
||||||
|
FULL_SCREEN_PARENT = noone;
|
||||||
|
FULL_SCREEN_PANEL = noone;
|
||||||
|
FULL_SCREEN_CONTENT = noone;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region focus hover
|
||||||
|
function panelHover(content) {
|
||||||
|
if(!HOVER) return false;
|
||||||
|
if(instanceof(HOVER) != "Panel") return false;
|
||||||
|
|
||||||
|
return instanceof(HOVER.getContent()) == instanceof(content);
|
||||||
|
}
|
||||||
|
|
||||||
|
function panelFocus(content) {
|
||||||
|
if(!FOCUS) return false;
|
||||||
|
if(instanceof(FOCUS) != "Panel") return false;
|
||||||
|
|
||||||
|
return instanceof(FOCUS.getContent()) == instanceof(content);
|
||||||
|
}
|
||||||
|
#endregion
|
|
@ -1,4 +1,4 @@
|
||||||
// 2024-04-21 14:21:07
|
// 2024-04-22 18:45:51
|
||||||
#region funtion calls
|
#region funtion calls
|
||||||
function __fnInit_Preview() {
|
function __fnInit_Preview() {
|
||||||
__registerFunction("preview_focus_content", panel_preview_focus_content);
|
__registerFunction("preview_focus_content", panel_preview_focus_content);
|
||||||
|
@ -1086,6 +1086,7 @@ function Panel_Preview() : PanelContent() constructor {
|
||||||
|
|
||||||
mouse_pos_string = "";
|
mouse_pos_string = "";
|
||||||
|
|
||||||
|
right_menu_x = w - ui(8);
|
||||||
if(_node == noone) return;
|
if(_node == noone) return;
|
||||||
|
|
||||||
right_menu_y += string_height("l");
|
right_menu_y += string_height("l");
|
||||||
|
@ -1094,7 +1095,6 @@ function Panel_Preview() : PanelContent() constructor {
|
||||||
draw_text(right_menu_x, right_menu_y, txt);
|
draw_text(right_menu_x, right_menu_y, txt);
|
||||||
|
|
||||||
right_menu_y += string_height("l");
|
right_menu_y += string_height("l");
|
||||||
right_menu_x = w - ui(8);
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var pseq = getNodePreviewSequence();
|
var pseq = getNodePreviewSequence();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// 2024-04-21 14:21:06
|
// 2024-04-22 18:45:50
|
||||||
#region funtion calls
|
#region funtion calls
|
||||||
function __fnInit_Preview() {
|
function __fnInit_Preview() {
|
||||||
__registerFunction("preview_focus_content", panel_preview_focus_content);
|
__registerFunction("preview_focus_content", panel_preview_focus_content);
|
||||||
|
@ -1086,6 +1086,7 @@ function Panel_Preview() : PanelContent() constructor {
|
||||||
|
|
||||||
mouse_pos_string = "";
|
mouse_pos_string = "";
|
||||||
|
|
||||||
|
right_menu_x = w - ui(8);
|
||||||
if(_node == noone) return;
|
if(_node == noone) return;
|
||||||
|
|
||||||
right_menu_y += string_height("l");
|
right_menu_y += string_height("l");
|
||||||
|
@ -1094,7 +1095,6 @@ function Panel_Preview() : PanelContent() constructor {
|
||||||
draw_text(right_menu_x, right_menu_y, txt);
|
draw_text(right_menu_x, right_menu_y, txt);
|
||||||
|
|
||||||
right_menu_y += string_height("l");
|
right_menu_y += string_height("l");
|
||||||
right_menu_x = w - ui(8);
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var pseq = getNodePreviewSequence();
|
var pseq = getNodePreviewSequence();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// 2024-04-17 07:56:45
|
// 2024-04-22 17:51:56
|
||||||
#region preference
|
#region preference
|
||||||
globalvar PREFERENCES, PREFERENCES_DEF, HOTKEYS_DATA;
|
globalvar PREFERENCES, PREFERENCES_DEF, HOTKEYS_DATA;
|
||||||
PREFERENCES = {};
|
PREFERENCES = {};
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// 2024-04-15 17:50:18
|
// 2024-04-22 17:28:13
|
||||||
#region preference
|
#region preference
|
||||||
globalvar PREFERENCES, PREFERENCES_DEF, HOTKEYS_DATA;
|
globalvar PREFERENCES, PREFERENCES_DEF, HOTKEYS_DATA;
|
||||||
PREFERENCES = {};
|
PREFERENCES = {};
|
||||||
|
|
|
@ -0,0 +1,394 @@
|
||||||
|
// 2024-04-22 18:30:24
|
||||||
|
function preview_overlay_area_padding(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _flag, display_data) { #region
|
||||||
|
var _val = array_clone(getValue());
|
||||||
|
var hover = -1;
|
||||||
|
|
||||||
|
if(!is_callable(display_data)) return hover;
|
||||||
|
|
||||||
|
var __ax = array_safe_get_fast(_val, 0);
|
||||||
|
var __ay = array_safe_get_fast(_val, 1);
|
||||||
|
var __aw = array_safe_get_fast(_val, 2);
|
||||||
|
var __ah = array_safe_get_fast(_val, 3);
|
||||||
|
var __at = array_safe_get_fast(_val, 4);
|
||||||
|
|
||||||
|
var _x0 = __ax - __aw;
|
||||||
|
var _x1 = __ax + __aw;
|
||||||
|
var _y0 = __ay - __ah;
|
||||||
|
var _y1 = __ay + __ah;
|
||||||
|
|
||||||
|
var ss = display_data();
|
||||||
|
|
||||||
|
var _l = _x0;
|
||||||
|
var _r = ss[0] - _x1;
|
||||||
|
var _t = _y0;
|
||||||
|
var _b = ss[1] - _y1;
|
||||||
|
var _xc = __ax;
|
||||||
|
var _yc = __ay;
|
||||||
|
|
||||||
|
var x0 = _l * _s + _x;
|
||||||
|
var y0 = _t * _s + _y;
|
||||||
|
var x1 = (ss[0] - _r) * _s + _x;
|
||||||
|
var y1 = (ss[1] - _b) * _s + _y;
|
||||||
|
var xc = (x0 + x1) / 2;
|
||||||
|
var yc = (y0 + y1) / 2;
|
||||||
|
|
||||||
|
var drawPos = _flag & 0b0001;
|
||||||
|
var drawSize = _flag & 0b0010;
|
||||||
|
|
||||||
|
if(drawSize) {
|
||||||
|
draw_set_color(COLORS._main_accent);
|
||||||
|
draw_set_circle_precision(32);
|
||||||
|
switch(__at) {
|
||||||
|
case AREA_SHAPE.rectangle : draw_rectangle(x0, y0, x1, y1, true); break;
|
||||||
|
case AREA_SHAPE.elipse : draw_ellipse(x0, y0, x1, y1, true); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!interact) return -1;
|
||||||
|
|
||||||
|
var _hov = [ 0, 0, 0, 0 ], _hovPos = 0;
|
||||||
|
|
||||||
|
if(drag_type == 1) _r = value_snap(drag_sx - (_mx - drag_mx) / _s, _snx);
|
||||||
|
else if(drag_type == 2) _t = value_snap(drag_sy + (_my - drag_my) / _s, _sny);
|
||||||
|
else if(drag_type == 3) _l = value_snap(drag_sx + (_mx - drag_mx) / _s, _snx);
|
||||||
|
else if(drag_type == 4) _b = value_snap(drag_sy - (_my - drag_my) / _s, _sny);
|
||||||
|
|
||||||
|
if(drag_type) {
|
||||||
|
var _val = array_clone(showValue());
|
||||||
|
if(drag_type == 1) _val[0] = _r;
|
||||||
|
else if(drag_type == 2) _val[1] = _t;
|
||||||
|
else if(drag_type == 3) _val[2] = _l;
|
||||||
|
else if(drag_type == 4) _val[3] = _b;
|
||||||
|
|
||||||
|
if(setValueInspector(_val)) UNDO_HOLDING = true;
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
drag_type = 0;
|
||||||
|
UNDO_HOLDING = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(drawSize && point_in_circle(_mx, _my, xc, y0, 16)) {
|
||||||
|
_hov[0] = 1;
|
||||||
|
hover = 1;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 2;
|
||||||
|
drag_sy = _t;
|
||||||
|
drag_my = _my;
|
||||||
|
}
|
||||||
|
} else if(drawSize && point_in_circle(_mx, _my, xc, y1, 16)) {
|
||||||
|
_hov[1] = 1;
|
||||||
|
hover = 3;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 4;
|
||||||
|
drag_sy = _b;
|
||||||
|
drag_my = _my;
|
||||||
|
}
|
||||||
|
} else if(drawSize && point_in_circle(_mx, _my, x0, yc, 16)) {
|
||||||
|
_hov[2] = 1;
|
||||||
|
hover = 0;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 3;
|
||||||
|
drag_sx = _l;
|
||||||
|
drag_mx = _mx;
|
||||||
|
}
|
||||||
|
} else if(drawSize && point_in_circle(_mx, _my, x1, yc, 16)) {
|
||||||
|
_hov[3] = 1;
|
||||||
|
hover = 2;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 1;
|
||||||
|
drag_sx = _r;
|
||||||
|
drag_mx = _mx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for( var i = 0; i < 4; i++ )
|
||||||
|
__overlay_hover[i] = lerp_float(__overlay_hover[i], _hov[i], 4);
|
||||||
|
|
||||||
|
if(drawSize) {
|
||||||
|
if(drag_type == 0 || drag_type == 2) draw_anchor_line(__overlay_hover[0], xc, y0, 16, 0);
|
||||||
|
if(drag_type == 0 || drag_type == 4) draw_anchor_line(__overlay_hover[1], xc, y1, 16, 0);
|
||||||
|
if(drag_type == 0 || drag_type == 3) draw_anchor_line(__overlay_hover[2], x0, yc, 16, 90);
|
||||||
|
if(drag_type == 0 || drag_type == 1) draw_anchor_line(__overlay_hover[3], x1, yc, 16, 90);
|
||||||
|
}
|
||||||
|
|
||||||
|
//draw_set_text(_f_p2b, fa_center, fa_center, COLORS._main_accent);
|
||||||
|
//draw_text_add((x0 + x1) / 2, (y0 + y1) / 2, name);
|
||||||
|
|
||||||
|
return hover;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function preview_overlay_area_two_point(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _flag) { #region
|
||||||
|
var _val = array_clone(getValue());
|
||||||
|
var hover = -1;
|
||||||
|
|
||||||
|
var __ax = array_safe_get_fast(_val, 0);
|
||||||
|
var __ay = array_safe_get_fast(_val, 1);
|
||||||
|
var __aw = array_safe_get_fast(_val, 2);
|
||||||
|
var __ah = array_safe_get_fast(_val, 3);
|
||||||
|
var __at = array_safe_get_fast(_val, 4);
|
||||||
|
|
||||||
|
var _x0 = __ax - __aw;
|
||||||
|
var _y0 = __ay - __ah;
|
||||||
|
var _x1 = __ax + __aw;
|
||||||
|
var _y1 = __ay + __ah;
|
||||||
|
|
||||||
|
var x0 = _x0 * _s + _x;
|
||||||
|
var y0 = _y0 * _s + _y;
|
||||||
|
var x1 = _x1 * _s + _x;
|
||||||
|
var y1 = _y1 * _s + _y;
|
||||||
|
var xc = (x0 + x1) / 2;
|
||||||
|
var yc = (y0 + y1) / 2;
|
||||||
|
|
||||||
|
var drawPos = _flag & 0b0001;
|
||||||
|
var drawSize = _flag & 0b0010;
|
||||||
|
|
||||||
|
if(drawSize) {
|
||||||
|
draw_set_color(COLORS._main_accent);
|
||||||
|
draw_set_circle_precision(32);
|
||||||
|
switch(__at) {
|
||||||
|
case AREA_SHAPE.rectangle : draw_rectangle(x0, y0, x1, y1, true); break;
|
||||||
|
case AREA_SHAPE.elipse : draw_ellipse(x0, y0, x1, y1, true); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!interact) return -1;
|
||||||
|
|
||||||
|
var _hov = [ 0, 0, 0 ];
|
||||||
|
var _r = 10;
|
||||||
|
|
||||||
|
if(drag_type == 1) {
|
||||||
|
var _xx = value_snap(drag_sx + (_mx - drag_mx) / _s, _snx);
|
||||||
|
var _yy = value_snap(drag_sy + (_my - drag_my) / _s, _sny);
|
||||||
|
|
||||||
|
var _sval = array_clone(showValue());
|
||||||
|
_sval[0] = _xx;
|
||||||
|
_sval[1] = _yy;
|
||||||
|
|
||||||
|
if(setValueInspector(_sval))
|
||||||
|
UNDO_HOLDING = true;
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
drag_type = 0;
|
||||||
|
UNDO_HOLDING = false;
|
||||||
|
}
|
||||||
|
} else if(drag_type == 2) {
|
||||||
|
var _xx = value_snap(drag_sx + (_mx - drag_mx) / _s, _snx);
|
||||||
|
var _yy = value_snap(drag_sy + (_my - drag_my) / _s, _sny);
|
||||||
|
|
||||||
|
var _sval = array_clone(showValue());
|
||||||
|
_sval[2] = _xx;
|
||||||
|
_sval[3] = _yy;
|
||||||
|
|
||||||
|
if(setValueInspector(_sval))
|
||||||
|
UNDO_HOLDING = true;
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
drag_type = 0;
|
||||||
|
UNDO_HOLDING = false;
|
||||||
|
}
|
||||||
|
} else if(drag_type == 3) {
|
||||||
|
var __x0 = value_snap(drag_sx + (_mx - drag_mx) / _s, _snx);
|
||||||
|
var __y0 = value_snap(drag_sy + (_my - drag_my) / _s, _sny);
|
||||||
|
var __x1 = value_snap(_x1 + (__x0 - _x0), _snx);
|
||||||
|
var __y1 = value_snap(_y1 + (__y0 - _y0), _sny);
|
||||||
|
|
||||||
|
_val[0] = __x0;
|
||||||
|
_val[1] = __y0;
|
||||||
|
_val[2] = __x1;
|
||||||
|
_val[3] = __y1;
|
||||||
|
|
||||||
|
if(setValueInspector(_val))
|
||||||
|
UNDO_HOLDING = true;
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
drag_type = 0;
|
||||||
|
UNDO_HOLDING = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(drawSize && point_in_circle(_mx, _my, x0, y0, 8)) {
|
||||||
|
_hov[1] = 1;
|
||||||
|
hover = 1;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 1;
|
||||||
|
drag_sx = _x0;
|
||||||
|
drag_sy = _y0;
|
||||||
|
drag_mx = _mx;
|
||||||
|
drag_my = _my;
|
||||||
|
}
|
||||||
|
} else if(drawSize && point_in_circle(_mx, _my, x1, y1, 8)) {
|
||||||
|
_hov[2] = 1;
|
||||||
|
hover = 2;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 2;
|
||||||
|
drag_sx = _x1;
|
||||||
|
drag_sy = _y1;
|
||||||
|
drag_mx = _mx;
|
||||||
|
drag_my = _my;
|
||||||
|
}
|
||||||
|
} else if(drawPos && point_in_rectangle(_mx, _my, x0, y0, x1, y1)) {
|
||||||
|
_hov[0] = 1;
|
||||||
|
hover = 3;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 3;
|
||||||
|
drag_sx = _x0;
|
||||||
|
drag_sy = _y0;
|
||||||
|
drag_mx = _mx;
|
||||||
|
drag_my = _my;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for( var i = 0; i < 3; i++ )
|
||||||
|
__overlay_hover[i] = lerp_float(__overlay_hover[i], _hov[i], 4);
|
||||||
|
|
||||||
|
if(drawPos && (drag_type == 0 || drag_type == 3)) draw_anchor_cross(__overlay_hover[0], xc, yc, _r + 4);
|
||||||
|
if(drawSize) {
|
||||||
|
if(drag_type == 0 || drag_type == 1) draw_anchor(__overlay_hover[1], x0, y0, _r);
|
||||||
|
if(drag_type == 0 || drag_type == 2) draw_anchor(__overlay_hover[2], x1, y1, _r);
|
||||||
|
}
|
||||||
|
|
||||||
|
//draw_set_text(_f_p2b, fa_center, fa_center, COLORS._main_accent);
|
||||||
|
//draw_text_add((x0 + x1) / 2, (y0 + y1) / 2 - 4, name);
|
||||||
|
|
||||||
|
return hover;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function preview_overlay_area_span(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _flag) { #region
|
||||||
|
var _val = array_clone(getValue());
|
||||||
|
var hover = -1;
|
||||||
|
|
||||||
|
var __ax = array_safe_get_fast(_val, 0);
|
||||||
|
var __ay = array_safe_get_fast(_val, 1);
|
||||||
|
var __aw = array_safe_get_fast(_val, 2);
|
||||||
|
var __ah = array_safe_get_fast(_val, 3);
|
||||||
|
var __at = array_safe_get_fast(_val, 4);
|
||||||
|
|
||||||
|
var _ax = __ax * _s + _x;
|
||||||
|
var _ay = __ay * _s + _y;
|
||||||
|
var _aw = __aw * _s;
|
||||||
|
var _ah = __ah * _s;
|
||||||
|
|
||||||
|
var drawPos = _flag & 0b0001;
|
||||||
|
var drawSize = _flag & 0b0010;
|
||||||
|
|
||||||
|
if(drawSize) {
|
||||||
|
draw_set_color(COLORS._main_accent);
|
||||||
|
draw_set_circle_precision(32);
|
||||||
|
switch(__at) {
|
||||||
|
case AREA_SHAPE.rectangle : draw_rectangle(_ax - _aw, _ay - _ah, _ax + _aw, _ay + _ah, true); break;
|
||||||
|
case AREA_SHAPE.elipse : draw_ellipse(_ax - _aw, _ay - _ah, _ax + _aw, _ay + _ah, true); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!interact) return -1;
|
||||||
|
|
||||||
|
var _hov = [ 0, 0 ];
|
||||||
|
var _r = 10;
|
||||||
|
|
||||||
|
if(point_in_circle(_mx, _my, _ax + _aw, _ay + _ah, _r))
|
||||||
|
_hov[1] = 1;
|
||||||
|
else if(point_in_rectangle(_mx, _my, _ax - _aw, _ay - _ah, _ax + _aw, _ay + _ah))
|
||||||
|
_hov[0] = 1;
|
||||||
|
|
||||||
|
__overlay_hover[0] = lerp_float(__overlay_hover[0], _hov[0], 4);
|
||||||
|
__overlay_hover[1] = lerp_float(__overlay_hover[1], _hov[1], 4);
|
||||||
|
|
||||||
|
if((drag_type == 0 || drag_type == 1) && drawPos) draw_anchor_cross(__overlay_hover[0], _ax, _ay, _r + 4);
|
||||||
|
if((drag_type == 0 || drag_type == 2) && drawSize) draw_anchor(__overlay_hover[1], _ax + _aw, _ay + _ah, _r);
|
||||||
|
|
||||||
|
if(drag_type == 1) {
|
||||||
|
var _xx = value_snap(drag_sx + (_mx - drag_mx) / _s, _snx);
|
||||||
|
var _yy = value_snap(drag_sy + (_my - drag_my) / _s, _sny);
|
||||||
|
|
||||||
|
if(key_mod_press(CTRL)) {
|
||||||
|
_val[0] = round(_xx);
|
||||||
|
_val[1] = round(_yy);
|
||||||
|
} else {
|
||||||
|
_val[0] = _xx;
|
||||||
|
_val[1] = _yy;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(setValueInspector(_val))
|
||||||
|
UNDO_HOLDING = true;
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
drag_type = 0;
|
||||||
|
UNDO_HOLDING = false;
|
||||||
|
}
|
||||||
|
} else if(drag_type == 2) {
|
||||||
|
var _dx = value_snap((_mx - drag_mx) / _s, _snx);
|
||||||
|
var _dy = value_snap((_my - drag_my) / _s, _sny);
|
||||||
|
|
||||||
|
if(key_mod_press(CTRL)) {
|
||||||
|
_val[2] = round(_dx);
|
||||||
|
_val[3] = round(_dy);
|
||||||
|
} else {
|
||||||
|
_val[2] = _dx;
|
||||||
|
_val[3] = _dy;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(keyboard_check(vk_shift)) {
|
||||||
|
_val[2] = max(_dx, _dy);
|
||||||
|
_val[3] = max(_dx, _dy);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(setValueInspector(_val))
|
||||||
|
UNDO_HOLDING = true;
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
drag_type = 0;
|
||||||
|
UNDO_HOLDING = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(drawSize && point_in_circle(_mx, _my, _ax + _aw, _ay + _ah, 8)) {
|
||||||
|
hover = 2;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 2;
|
||||||
|
drag_mx = _ax;
|
||||||
|
drag_my = _ay;
|
||||||
|
}
|
||||||
|
} else if(drawPos && point_in_rectangle(_mx, _my, _ax - _aw, _ay - _ah, _ax + _aw, _ay + _ah)) {
|
||||||
|
hover = 1;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 1;
|
||||||
|
drag_sx = __ax;
|
||||||
|
drag_sy = __ay;
|
||||||
|
drag_mx = _mx;
|
||||||
|
drag_my = _my;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//draw_set_text(_f_p2b, fa_center, fa_bottom, COLORS._main_accent);
|
||||||
|
//draw_text_add(round(_ax), round(_ay - 4), name);
|
||||||
|
|
||||||
|
return hover;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function preview_overlay_area(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _flag, display_data) {
|
||||||
|
var _val = array_clone(getValue());
|
||||||
|
var hover = -1;
|
||||||
|
if(is_array(_val[0])) return hover;
|
||||||
|
|
||||||
|
var mode = editWidget.mode;
|
||||||
|
|
||||||
|
__overlay_hover = array_verify(__overlay_hover, 5);
|
||||||
|
|
||||||
|
switch(mode) {
|
||||||
|
case AREA_MODE.area : return preview_overlay_area_span(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _flag);
|
||||||
|
case AREA_MODE.padding : return preview_overlay_area_padding(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _flag, display_data);
|
||||||
|
case AREA_MODE.two_point : return preview_overlay_area_two_point(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
return hover;
|
||||||
|
}
|
|
@ -0,0 +1,394 @@
|
||||||
|
// 2024-04-22 18:08:35
|
||||||
|
function preview_overlay_area_padding(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _flag, display_data) { #region
|
||||||
|
var _val = array_clone(getValue());
|
||||||
|
var hover = -1;
|
||||||
|
|
||||||
|
if(!is_callable(display_data)) return hover;
|
||||||
|
|
||||||
|
var __ax = array_safe_get_fast(_val, 0);
|
||||||
|
var __ay = array_safe_get_fast(_val, 1);
|
||||||
|
var __aw = array_safe_get_fast(_val, 2);
|
||||||
|
var __ah = array_safe_get_fast(_val, 3);
|
||||||
|
var __at = array_safe_get_fast(_val, 4);
|
||||||
|
|
||||||
|
var _x0 = __ax - __aw;
|
||||||
|
var _x1 = __ax + __aw;
|
||||||
|
var _y0 = __ay - __ah;
|
||||||
|
var _y1 = __ay + __ah;
|
||||||
|
|
||||||
|
var ss = display_data();
|
||||||
|
|
||||||
|
var _l = _x0;
|
||||||
|
var _r = ss[0] - _x1;
|
||||||
|
var _t = _y0;
|
||||||
|
var _b = ss[1] - _y1;
|
||||||
|
var _xc = __ax;
|
||||||
|
var _yc = __ay;
|
||||||
|
|
||||||
|
var x0 = _l * _s + _x;
|
||||||
|
var y0 = _t * _s + _y;
|
||||||
|
var x1 = (ss[0] - _r) * _s + _x;
|
||||||
|
var y1 = (ss[1] - _b) * _s + _y;
|
||||||
|
var xc = (x0 + x1) / 2;
|
||||||
|
var yc = (y0 + y1) / 2;
|
||||||
|
|
||||||
|
var drawPos = _flag & 0b0001;
|
||||||
|
var drawSize = _flag & 0b0010;
|
||||||
|
|
||||||
|
if(drawSize) {
|
||||||
|
draw_set_color(COLORS._main_accent);
|
||||||
|
draw_set_circle_precision(32);
|
||||||
|
switch(__at) {
|
||||||
|
case AREA_SHAPE.rectangle : draw_rectangle(x0, y0, x1, y1, true); break;
|
||||||
|
case AREA_SHAPE.elipse : draw_ellipse(x0, y0, x1, y1, true); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!interact) return -1;
|
||||||
|
|
||||||
|
var _hov = [ 0, 0, 0, 0 ], _hovPos = 0;
|
||||||
|
|
||||||
|
if(drag_type == 1) _r = value_snap(drag_sx - (_mx - drag_mx) / _s, _snx);
|
||||||
|
else if(drag_type == 2) _t = value_snap(drag_sy + (_my - drag_my) / _s, _sny);
|
||||||
|
else if(drag_type == 3) _l = value_snap(drag_sx + (_mx - drag_mx) / _s, _snx);
|
||||||
|
else if(drag_type == 4) _b = value_snap(drag_sy - (_my - drag_my) / _s, _sny);
|
||||||
|
|
||||||
|
if(drag_type) {
|
||||||
|
var _val = array_clone(showValue());
|
||||||
|
if(drag_type == 1) _val[0] = _r;
|
||||||
|
else if(drag_type == 2) _val[1] = _t;
|
||||||
|
else if(drag_type == 3) _val[2] = _l;
|
||||||
|
else if(drag_type == 4) _val[3] = _b;
|
||||||
|
|
||||||
|
if(setValueInspector(_val)) UNDO_HOLDING = true;
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
drag_type = 0;
|
||||||
|
UNDO_HOLDING = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(drawSize && point_in_circle(_mx, _my, xc, y0, 16)) {
|
||||||
|
_hov[0] = 1;
|
||||||
|
hover = 1;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 2;
|
||||||
|
drag_sy = _t;
|
||||||
|
drag_my = _my;
|
||||||
|
}
|
||||||
|
} else if(drawSize && point_in_circle(_mx, _my, xc, y1, 16)) {
|
||||||
|
_hov[1] = 1;
|
||||||
|
hover = 3;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 4;
|
||||||
|
drag_sy = _b;
|
||||||
|
drag_my = _my;
|
||||||
|
}
|
||||||
|
} else if(drawSize && point_in_circle(_mx, _my, x0, yc, 16)) {
|
||||||
|
_hov[2] = 1;
|
||||||
|
hover = 0;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 3;
|
||||||
|
drag_sx = _l;
|
||||||
|
drag_mx = _mx;
|
||||||
|
}
|
||||||
|
} else if(drawSize && point_in_circle(_mx, _my, x1, yc, 16)) {
|
||||||
|
_hov[3] = 1;
|
||||||
|
hover = 2;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 1;
|
||||||
|
drag_sx = _r;
|
||||||
|
drag_mx = _mx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for( var i = 0; i < 4; i++ )
|
||||||
|
__overlay_hover[i] = lerp_float(__overlay_hover[i], _hov[i], 4);
|
||||||
|
|
||||||
|
if(drawSize) {
|
||||||
|
if(drag_type == 0 || drag_type == 2) draw_anchor_line(__overlay_hover[0], xc, y0, 16, 0);
|
||||||
|
if(drag_type == 0 || drag_type == 4) draw_anchor_line(__overlay_hover[1], xc, y1, 16, 0);
|
||||||
|
if(drag_type == 0 || drag_type == 3) draw_anchor_line(__overlay_hover[2], x0, yc, 16, 90);
|
||||||
|
if(drag_type == 0 || drag_type == 1) draw_anchor_line(__overlay_hover[3], x1, yc, 16, 90);
|
||||||
|
}
|
||||||
|
|
||||||
|
//draw_set_text(_f_p2b, fa_center, fa_center, COLORS._main_accent);
|
||||||
|
//draw_text_add((x0 + x1) / 2, (y0 + y1) / 2, name);
|
||||||
|
|
||||||
|
return hover;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function preview_overlay_area_two_point(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _flag) { #region
|
||||||
|
var _val = array_clone(getValue());
|
||||||
|
var hover = -1;
|
||||||
|
|
||||||
|
var __ax = array_safe_get_fast(_val, 0);
|
||||||
|
var __ay = array_safe_get_fast(_val, 1);
|
||||||
|
var __aw = array_safe_get_fast(_val, 2);
|
||||||
|
var __ah = array_safe_get_fast(_val, 3);
|
||||||
|
var __at = array_safe_get_fast(_val, 4);
|
||||||
|
|
||||||
|
var _x0 = __ax - __aw;
|
||||||
|
var _y0 = __ay - __ah;
|
||||||
|
var _x1 = __ax + __aw;
|
||||||
|
var _y1 = __ay + __ah;
|
||||||
|
|
||||||
|
var x0 = _x0 * _s + _x;
|
||||||
|
var y0 = _y0 * _s + _y;
|
||||||
|
var x1 = _x1 * _s + _x;
|
||||||
|
var y1 = _y1 * _s + _y;
|
||||||
|
var xc = (x0 + x1) / 2;
|
||||||
|
var yc = (y0 + y1) / 2;
|
||||||
|
|
||||||
|
var drawPos = _flag & 0b0001;
|
||||||
|
var drawSize = _flag & 0b0010;
|
||||||
|
|
||||||
|
if(drawSize) {
|
||||||
|
draw_set_color(COLORS._main_accent);
|
||||||
|
draw_set_circle_precision(32);
|
||||||
|
switch(__at) {
|
||||||
|
case AREA_SHAPE.rectangle : draw_rectangle(x0, y0, x1, y1, true); break;
|
||||||
|
case AREA_SHAPE.elipse : draw_ellipse(x0, y0, x1, y1, true); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!interact) return -1;
|
||||||
|
|
||||||
|
var _hov = [ 0, 0, 0 ];
|
||||||
|
var _r = 10;
|
||||||
|
|
||||||
|
if(drag_type == 1) {
|
||||||
|
var _xx = value_snap(drag_sx + (_mx - drag_mx) / _s, _snx);
|
||||||
|
var _yy = value_snap(drag_sy + (_my - drag_my) / _s, _sny);
|
||||||
|
|
||||||
|
var _sval = array_clone(showValue());
|
||||||
|
_sval[0] = _xx;
|
||||||
|
_sval[1] = _yy;
|
||||||
|
|
||||||
|
if(setValueInspector(_sval))
|
||||||
|
UNDO_HOLDING = true;
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
drag_type = 0;
|
||||||
|
UNDO_HOLDING = false;
|
||||||
|
}
|
||||||
|
} else if(drag_type == 2) {
|
||||||
|
var _xx = value_snap(drag_sx + (_mx - drag_mx) / _s, _snx);
|
||||||
|
var _yy = value_snap(drag_sy + (_my - drag_my) / _s, _sny);
|
||||||
|
|
||||||
|
var _sval = array_clone(showValue());
|
||||||
|
_sval[2] = _xx;
|
||||||
|
_sval[3] = _yy;
|
||||||
|
|
||||||
|
if(setValueInspector(_sval))
|
||||||
|
UNDO_HOLDING = true;
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
drag_type = 0;
|
||||||
|
UNDO_HOLDING = false;
|
||||||
|
}
|
||||||
|
} else if(drag_type == 3) {
|
||||||
|
var __x0 = value_snap(drag_sx + (_mx - drag_mx) / _s, _snx);
|
||||||
|
var __y0 = value_snap(drag_sy + (_my - drag_my) / _s, _sny);
|
||||||
|
var __x1 = value_snap(_x1 + (__x0 - _x0), _snx);
|
||||||
|
var __y1 = value_snap(_y1 + (__y0 - _y0), _sny);
|
||||||
|
|
||||||
|
_val[0] = __x0;
|
||||||
|
_val[1] = __y0;
|
||||||
|
_val[2] = __x1;
|
||||||
|
_val[3] = __y1;
|
||||||
|
|
||||||
|
if(setValueInspector(_val))
|
||||||
|
UNDO_HOLDING = true;
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
drag_type = 0;
|
||||||
|
UNDO_HOLDING = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(drawSize && point_in_circle(_mx, _my, x0, y0, 8)) {
|
||||||
|
_hov[1] = 1;
|
||||||
|
hover = 1;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 1;
|
||||||
|
drag_sx = _x0;
|
||||||
|
drag_sy = _y0;
|
||||||
|
drag_mx = _mx;
|
||||||
|
drag_my = _my;
|
||||||
|
}
|
||||||
|
} else if(drawSize && point_in_circle(_mx, _my, x1, y1, 8)) {
|
||||||
|
_hov[2] = 1;
|
||||||
|
hover = 2;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 2;
|
||||||
|
drag_sx = _x1;
|
||||||
|
drag_sy = _y1;
|
||||||
|
drag_mx = _mx;
|
||||||
|
drag_my = _my;
|
||||||
|
}
|
||||||
|
} else if(drawPos && point_in_rectangle(_mx, _my, x0, y0, x1, y1)) {
|
||||||
|
_hov[0] = 1;
|
||||||
|
hover = 3;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 3;
|
||||||
|
drag_sx = _x0;
|
||||||
|
drag_sy = _y0;
|
||||||
|
drag_mx = _mx;
|
||||||
|
drag_my = _my;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for( var i = 0; i < 3; i++ )
|
||||||
|
__overlay_hover[i] = lerp_float(__overlay_hover[i], _hov[i], 4);
|
||||||
|
|
||||||
|
if(drawPos && (drag_type == 0 || drag_type == 3)) draw_anchor_cross(__overlay_hover[0], xc, yc, _r + 4);
|
||||||
|
if(drawSize) {
|
||||||
|
if(drag_type == 0 || drag_type == 1) draw_anchor(__overlay_hover[1], x0, y0, _r);
|
||||||
|
if(drag_type == 0 || drag_type == 2) draw_anchor(__overlay_hover[2], x1, y1, _r);
|
||||||
|
}
|
||||||
|
|
||||||
|
//draw_set_text(_f_p2b, fa_center, fa_center, COLORS._main_accent);
|
||||||
|
//draw_text_add((x0 + x1) / 2, (y0 + y1) / 2 - 4, name);
|
||||||
|
|
||||||
|
return hover;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function preview_overlay_area_span(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _flag) { #region
|
||||||
|
var _val = array_clone(getValue());
|
||||||
|
var hover = -1;
|
||||||
|
|
||||||
|
var __ax = array_safe_get_fast(_val, 0);
|
||||||
|
var __ay = array_safe_get_fast(_val, 1);
|
||||||
|
var __aw = array_safe_get_fast(_val, 2);
|
||||||
|
var __ah = array_safe_get_fast(_val, 3);
|
||||||
|
var __at = array_safe_get_fast(_val, 4);
|
||||||
|
|
||||||
|
var _ax = __ax * _s + _x;
|
||||||
|
var _ay = __ay * _s + _y;
|
||||||
|
var _aw = __aw * _s;
|
||||||
|
var _ah = __ah * _s;
|
||||||
|
|
||||||
|
var drawPos = _flag & 0b0001;
|
||||||
|
var drawSize = _flag & 0b0010;
|
||||||
|
|
||||||
|
if(drawSize) {
|
||||||
|
draw_set_color(COLORS._main_accent);
|
||||||
|
draw_set_circle_precision(32);
|
||||||
|
switch(__at) {
|
||||||
|
case AREA_SHAPE.rectangle : draw_rectangle(_ax - _aw, _ay - _ah, _ax + _aw, _ay + _ah, true); break;
|
||||||
|
case AREA_SHAPE.elipse : draw_ellipse(_ax - _aw, _ay - _ah, _ax + _aw, _ay + _ah, true); break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!interact) return -1;
|
||||||
|
|
||||||
|
var _hov = [ 0, 0 ];
|
||||||
|
var _r = 10;
|
||||||
|
|
||||||
|
if(point_in_circle(_mx, _my, _ax + _aw, _ay + _ah, _r))
|
||||||
|
_hov[1] = 1;
|
||||||
|
else if(point_in_rectangle(_mx, _my, _ax - _aw, _ay - _ah, _ax + _aw, _ay + _ah))
|
||||||
|
_hov[0] = 1;
|
||||||
|
|
||||||
|
__overlay_hover[0] = lerp_float(__overlay_hover[0], _hov[0], 4);
|
||||||
|
__overlay_hover[1] = lerp_float(__overlay_hover[1], _hov[1], 4);
|
||||||
|
|
||||||
|
if((drag_type == 0 || drag_type == 1) && drawPos) draw_anchor_cross(__overlay_hover[0], _ax, _ay, _r + 4);
|
||||||
|
if((drag_type == 0 || drag_type == 2) && drawSize) draw_anchor(__overlay_hover[1], _ax + _aw, _ay + _ah, _r);
|
||||||
|
|
||||||
|
if(drag_type == 1) {
|
||||||
|
var _xx = value_snap(drag_sx + (_mx - drag_mx) / _s, _snx);
|
||||||
|
var _yy = value_snap(drag_sy + (_my - drag_my) / _s, _sny);
|
||||||
|
|
||||||
|
if(key_mod_press(CTRL)) {
|
||||||
|
_val[0] = round(_xx);
|
||||||
|
_val[1] = round(_yy);
|
||||||
|
} else {
|
||||||
|
_val[0] = _xx;
|
||||||
|
_val[1] = _yy;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(setValueInspector(_val))
|
||||||
|
UNDO_HOLDING = true;
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
drag_type = 0;
|
||||||
|
UNDO_HOLDING = false;
|
||||||
|
}
|
||||||
|
} else if(drag_type == 2) {
|
||||||
|
var _dx = value_snap((_mx - drag_mx) / _s, _snx);
|
||||||
|
var _dy = value_snap((_my - drag_my) / _s, _sny);
|
||||||
|
|
||||||
|
if(key_mod_press(CTRL)) {
|
||||||
|
_val[2] = round(_dx);
|
||||||
|
_val[3] = round(_dy);
|
||||||
|
} else {
|
||||||
|
_val[2] = _dx;
|
||||||
|
_val[3] = _dy;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(keyboard_check(vk_shift)) {
|
||||||
|
_val[2] = max(_dx, _dy);
|
||||||
|
_val[3] = max(_dx, _dy);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(setValueInspector(_val))
|
||||||
|
UNDO_HOLDING = true;
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
drag_type = 0;
|
||||||
|
UNDO_HOLDING = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(drawSize && point_in_circle(_mx, _my, _ax + _aw, _ay + _ah, 8)) {
|
||||||
|
hover = 2;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 2;
|
||||||
|
drag_mx = _ax;
|
||||||
|
drag_my = _ay;
|
||||||
|
}
|
||||||
|
} else if(drawPos && point_in_rectangle(_mx, _my, _ax - _aw, _ay - _ah, _ax + _aw, _ay + _ah)) {
|
||||||
|
hover = 1;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 1;
|
||||||
|
drag_sx = __ax;
|
||||||
|
drag_sy = __ay;
|
||||||
|
drag_mx = _mx;
|
||||||
|
drag_my = _my;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//draw_set_text(_f_p2b, fa_center, fa_bottom, COLORS._main_accent);
|
||||||
|
//draw_text_add(round(_ax), round(_ay - 4), name);
|
||||||
|
|
||||||
|
return hover;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
function preview_overlay_area(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _flag, display_data) {
|
||||||
|
var _val = array_clone(getValue());
|
||||||
|
var hover = -1;
|
||||||
|
if(is_array(_val[0])) return hover;
|
||||||
|
|
||||||
|
var mode = editWidget.mode;
|
||||||
|
|
||||||
|
if(!struct_has(self, "__overlay_hover") || !is_array(__overlay_hover) || array_length(__overlay_hover) < 5) __overlay_hover = [ 0, 0, 0, 0, 0 ];
|
||||||
|
|
||||||
|
switch(mode) {
|
||||||
|
case AREA_MODE.area : return preview_overlay_area_span(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _flag);
|
||||||
|
case AREA_MODE.padding : return preview_overlay_area_padding(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _flag, display_data);
|
||||||
|
case AREA_MODE.two_point : return preview_overlay_area_two_point(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
return hover;
|
||||||
|
}
|
|
@ -0,0 +1,111 @@
|
||||||
|
// 2024-04-22 18:32:21
|
||||||
|
function preview_overlay_gradient_range(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _dim) {
|
||||||
|
var _val = array_clone(getValue());
|
||||||
|
var hover = -1;
|
||||||
|
if(!is_array(_val) || array_empty(_val)) return hover;
|
||||||
|
if(is_array(_val[0])) return hover;
|
||||||
|
|
||||||
|
var _sw = _dim[0];
|
||||||
|
var _sh = _dim[1];
|
||||||
|
|
||||||
|
var __x0 = _val[0] * _sw;
|
||||||
|
var __y0 = _val[1] * _sh;
|
||||||
|
var __x1 = _val[2] * _sw;
|
||||||
|
var __y1 = _val[3] * _sh;
|
||||||
|
|
||||||
|
var _ax0 = __x0 * _s + _x;
|
||||||
|
var _ay0 = __y0 * _s + _y;
|
||||||
|
var _ax1 = __x1 * _s + _x;
|
||||||
|
var _ay1 = __y1 * _s + _y;
|
||||||
|
|
||||||
|
var cc = COLORS.labels[2];
|
||||||
|
var _r = 10;
|
||||||
|
|
||||||
|
draw_set_text(f_p1, fa_left, fa_bottom, cc);
|
||||||
|
draw_text_add(_ax0 + ui(4), _ay0 - ui(4), "1");
|
||||||
|
draw_text_add(_ax1 + ui(4), _ay1 - ui(4), "2");
|
||||||
|
|
||||||
|
var tx0, ty0, tx1, ty1;
|
||||||
|
|
||||||
|
if(_ax0 > _ax1) {
|
||||||
|
tx0 = _ax1; tx1 = _ax0;
|
||||||
|
ty0 = _ay1; ty1 = _ay0;
|
||||||
|
} else {
|
||||||
|
tx0 = _ax0; tx1 = _ax1;
|
||||||
|
ty0 = _ay0; ty1 = _ay1;
|
||||||
|
}
|
||||||
|
|
||||||
|
var dir = point_direction(tx0, ty0, tx1, ty1);
|
||||||
|
var dis = point_distance( tx0, ty0, tx1, ty1);
|
||||||
|
|
||||||
|
draw_set_text(_f_p2b, fa_center, fa_center, cc);
|
||||||
|
var txt = string_cut(mappedJunc.name, dis - 16);
|
||||||
|
draw_text_transformed((tx0 + tx1) / 2, (ty0 + ty1) / 2, txt, 1, 1, dir);
|
||||||
|
|
||||||
|
var _tw = string_width(txt) + 16;
|
||||||
|
|
||||||
|
draw_set_color(cc);
|
||||||
|
draw_line_round(tx0, ty0, tx0 + lengthdir_x(dis / 2 - _tw / 2, dir), ty0 + lengthdir_y(dis / 2 - _tw / 2, dir), 2);
|
||||||
|
draw_line_round(tx1, ty1, tx1 - lengthdir_x(dis / 2 - _tw / 2, dir), ty1 - lengthdir_y(dis / 2 - _tw / 2, dir), 2);
|
||||||
|
|
||||||
|
var d0 = false;
|
||||||
|
var d1 = false;
|
||||||
|
|
||||||
|
if(drag_type) {
|
||||||
|
if(drag_type == 1) { d0 = true; }
|
||||||
|
if(drag_type == 2) { d1 = true; }
|
||||||
|
|
||||||
|
var _nx = value_snap((drag_sx + (_mx - drag_mx) - _x) / _s, _snx);
|
||||||
|
var _ny = value_snap((drag_sy + (_my - drag_my) - _y) / _s, _sny);
|
||||||
|
|
||||||
|
if(key_mod_press(CTRL)) {
|
||||||
|
_nx = round(_nx);
|
||||||
|
_ny = round(_ny);
|
||||||
|
}
|
||||||
|
|
||||||
|
_val[(drag_type - 1) * 2 + 0] = _nx / _sw;
|
||||||
|
_val[(drag_type - 1) * 2 + 1] = _ny / _sh;
|
||||||
|
|
||||||
|
if(setValueInspector( _val ))
|
||||||
|
UNDO_HOLDING = true;
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
drag_type = 0;
|
||||||
|
UNDO_HOLDING = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if(interact && active) {
|
||||||
|
if(point_in_circle(_mx, _my, _ax0, _ay0, 8)) {
|
||||||
|
d0 = true;
|
||||||
|
hover = 1;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = hover;
|
||||||
|
drag_mx = _mx;
|
||||||
|
drag_my = _my;
|
||||||
|
drag_sx = _ax0;
|
||||||
|
drag_sy = _ay0;
|
||||||
|
}
|
||||||
|
} else if(point_in_circle(_mx, _my, _ax1, _ay1, 8)) {
|
||||||
|
d1 = true;
|
||||||
|
hover = 2;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = hover;
|
||||||
|
drag_mx = _mx;
|
||||||
|
drag_my = _my;
|
||||||
|
drag_sx = _ax1;
|
||||||
|
drag_sy = _ay1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
__overlay_hover = array_verify(__overlay_hover, 2);
|
||||||
|
__overlay_hover[0] = lerp_float(__overlay_hover[0], d0, 4);
|
||||||
|
__overlay_hover[1] = lerp_float(__overlay_hover[1], d1, 4);
|
||||||
|
|
||||||
|
draw_anchor(__overlay_hover[0], _ax0, _ay0, _r);
|
||||||
|
draw_anchor(__overlay_hover[0], _ax1, _ay1, _r);
|
||||||
|
|
||||||
|
return hover;
|
||||||
|
}
|
|
@ -0,0 +1,111 @@
|
||||||
|
// 2024-04-22 18:32:18
|
||||||
|
function preview_overlay_gradient_range(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _dim) {
|
||||||
|
var _val = array_clone(getValue());
|
||||||
|
var hover = -1;
|
||||||
|
if(!is_array(_val) || array_empty(_val)) return hover;
|
||||||
|
if(is_array(_val[0])) return hover;
|
||||||
|
|
||||||
|
var _sw = _dim[0];
|
||||||
|
var _sh = _dim[1];
|
||||||
|
|
||||||
|
var __x0 = _val[0] * _sw;
|
||||||
|
var __y0 = _val[1] * _sh;
|
||||||
|
var __x1 = _val[2] * _sw;
|
||||||
|
var __y1 = _val[3] * _sh;
|
||||||
|
|
||||||
|
var _ax0 = __x0 * _s + _x;
|
||||||
|
var _ay0 = __y0 * _s + _y;
|
||||||
|
var _ax1 = __x1 * _s + _x;
|
||||||
|
var _ay1 = __y1 * _s + _y;
|
||||||
|
|
||||||
|
var cc = COLORS.labels[2];
|
||||||
|
var _r = 10;
|
||||||
|
|
||||||
|
draw_set_text(f_p1, fa_left, fa_bottom, cc);
|
||||||
|
draw_text_add(_ax0 + ui(4), _ay0 - ui(4), "1");
|
||||||
|
draw_text_add(_ax1 + ui(4), _ay1 - ui(4), "2");
|
||||||
|
|
||||||
|
var tx0, ty0, tx1, ty1;
|
||||||
|
|
||||||
|
if(_ax0 > _ax1) {
|
||||||
|
tx0 = _ax1; tx1 = _ax0;
|
||||||
|
ty0 = _ay1; ty1 = _ay0;
|
||||||
|
} else {
|
||||||
|
tx0 = _ax0; tx1 = _ax1;
|
||||||
|
ty0 = _ay0; ty1 = _ay1;
|
||||||
|
}
|
||||||
|
|
||||||
|
var dir = point_direction(tx0, ty0, tx1, ty1);
|
||||||
|
var dis = point_distance( tx0, ty0, tx1, ty1);
|
||||||
|
|
||||||
|
draw_set_text(_f_p2b, fa_center, fa_center, cc);
|
||||||
|
var txt = string_cut(mappedJunc.name, dis - 16);
|
||||||
|
draw_text_transformed((tx0 + tx1) / 2, (ty0 + ty1) / 2, txt, 1, 1, dir);
|
||||||
|
|
||||||
|
var _tw = string_width(txt) + 16;
|
||||||
|
|
||||||
|
draw_set_color(cc);
|
||||||
|
draw_line_round(tx0, ty0, tx0 + lengthdir_x(dis / 2 - _tw / 2, dir), ty0 + lengthdir_y(dis / 2 - _tw / 2, dir), 2);
|
||||||
|
draw_line_round(tx1, ty1, tx1 - lengthdir_x(dis / 2 - _tw / 2, dir), ty1 - lengthdir_y(dis / 2 - _tw / 2, dir), 2);
|
||||||
|
|
||||||
|
var d0 = false;
|
||||||
|
var d1 = false;
|
||||||
|
|
||||||
|
if(drag_type) {
|
||||||
|
if(drag_type == 1) { d0 = true; }
|
||||||
|
if(drag_type == 2) { d1 = true; }
|
||||||
|
|
||||||
|
var _nx = value_snap((drag_sx + (_mx - drag_mx) - _x) / _s, _snx);
|
||||||
|
var _ny = value_snap((drag_sy + (_my - drag_my) - _y) / _s, _sny);
|
||||||
|
|
||||||
|
if(key_mod_press(CTRL)) {
|
||||||
|
_nx = round(_nx);
|
||||||
|
_ny = round(_ny);
|
||||||
|
}
|
||||||
|
|
||||||
|
_val[(drag_type - 1) * 2 + 0] = _nx / _sw;
|
||||||
|
_val[(drag_type - 1) * 2 + 1] = _ny / _sh;
|
||||||
|
|
||||||
|
if(setValueInspector( _val ))
|
||||||
|
UNDO_HOLDING = true;
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
drag_type = 0;
|
||||||
|
UNDO_HOLDING = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if(interact && active) {
|
||||||
|
if(point_in_circle(_mx, _my, _ax0, _ay0, 8)) {
|
||||||
|
d0 = true;
|
||||||
|
hover = 1;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = hover;
|
||||||
|
drag_mx = _mx;
|
||||||
|
drag_my = _my;
|
||||||
|
drag_sx = _ax0;
|
||||||
|
drag_sy = _ay0;
|
||||||
|
}
|
||||||
|
} else if(point_in_circle(_mx, _my, _ax1, _ay1, 8)) {
|
||||||
|
d1 = true;
|
||||||
|
hover = 2;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = hover;
|
||||||
|
drag_mx = _mx;
|
||||||
|
drag_my = _my;
|
||||||
|
drag_sx = _ax1;
|
||||||
|
drag_sy = _ay1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
__overlay_hover = array_verify(__overlay_hover, 2);
|
||||||
|
__overlay_hover[0] = lerp_float(__overlay_hover[0], d0, 4);
|
||||||
|
__overlay_hover[1] = lerp_float(__overlay_hover[1], d1, 4);
|
||||||
|
|
||||||
|
draw_anchor(__overlay_hover[0], _ax0, _ay0, _r);
|
||||||
|
draw_anchor(__overlay_hover[0], _ax1, _ay1, _r);
|
||||||
|
|
||||||
|
return hover;
|
||||||
|
}
|
|
@ -0,0 +1,67 @@
|
||||||
|
// 2024-04-22 18:32:00
|
||||||
|
function preview_overlay_rotation(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _rad) {
|
||||||
|
var _val = getValue();
|
||||||
|
var hover = -1;
|
||||||
|
if(is_array(_val)) return hover;
|
||||||
|
|
||||||
|
var _ax = _x + lengthdir_x(_rad, _val);
|
||||||
|
var _ay = _y + lengthdir_y(_rad, _val);
|
||||||
|
var index = 0;
|
||||||
|
var _r = 10;
|
||||||
|
|
||||||
|
if(drag_type) {
|
||||||
|
index = 1;
|
||||||
|
|
||||||
|
var angle = point_direction(_x, _y, _mx, _my);
|
||||||
|
if(key_mod_press(CTRL))
|
||||||
|
angle = round(angle / 15) * 15;
|
||||||
|
|
||||||
|
if(setValueInspector( angle ))
|
||||||
|
UNDO_HOLDING = true;
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
drag_type = 0;
|
||||||
|
UNDO_HOLDING = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(interact && point_in_circle(_mx, _my, _ax, _ay, _r)) {
|
||||||
|
hover = 1;
|
||||||
|
index = 1;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 1;
|
||||||
|
drag_mx = _mx;
|
||||||
|
drag_my = _my;
|
||||||
|
drag_sx = _ax;
|
||||||
|
drag_sy = _ay;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(index) {
|
||||||
|
draw_set_color(COLORS._main_accent);
|
||||||
|
draw_set_alpha(0.5);
|
||||||
|
draw_circle_prec(_x, _y, _rad, true);
|
||||||
|
draw_set_alpha(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
__overlay_hover = array_verify(__overlay_hover, 1);
|
||||||
|
__overlay_hover[0] = lerp_float(__overlay_hover[0], index, 4);
|
||||||
|
|
||||||
|
shader_set(sh_node_widget_rotator);
|
||||||
|
shader_set_color("color", COLORS._main_accent);
|
||||||
|
shader_set_f("index", __overlay_hover[0]);
|
||||||
|
shader_set_f("angle", degtorad(_val + 90));
|
||||||
|
|
||||||
|
var _arx = _x + lengthdir_x(_rad - 4, _val);
|
||||||
|
var _ary = _y + lengthdir_y(_rad - 4, _val);
|
||||||
|
draw_sprite_stretched(s_fx_pixel, 0, _arx - _r * 2, _ary - _r * 2, _r * 4, _r * 4);
|
||||||
|
shader_reset();
|
||||||
|
|
||||||
|
//draw_sprite_colored(THEME.anchor_rotate, index, _ax, _ay, 1, _val - 90);
|
||||||
|
|
||||||
|
draw_set_text(_f_p2b, fa_center, fa_bottom, COLORS._main_accent);
|
||||||
|
draw_text_add(round(_ax), round(_ay - 4), name);
|
||||||
|
|
||||||
|
return hover;
|
||||||
|
}
|
|
@ -0,0 +1,67 @@
|
||||||
|
// 2024-04-22 18:31:57
|
||||||
|
function preview_overlay_rotation(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _rad) {
|
||||||
|
var _val = getValue();
|
||||||
|
var hover = -1;
|
||||||
|
if(is_array(_val)) return hover;
|
||||||
|
|
||||||
|
var _ax = _x + lengthdir_x(_rad, _val);
|
||||||
|
var _ay = _y + lengthdir_y(_rad, _val);
|
||||||
|
var index = 0;
|
||||||
|
var _r = 10;
|
||||||
|
|
||||||
|
if(drag_type) {
|
||||||
|
index = 1;
|
||||||
|
|
||||||
|
var angle = point_direction(_x, _y, _mx, _my);
|
||||||
|
if(key_mod_press(CTRL))
|
||||||
|
angle = round(angle / 15) * 15;
|
||||||
|
|
||||||
|
if(setValueInspector( angle ))
|
||||||
|
UNDO_HOLDING = true;
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
drag_type = 0;
|
||||||
|
UNDO_HOLDING = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(interact && point_in_circle(_mx, _my, _ax, _ay, _r)) {
|
||||||
|
hover = 1;
|
||||||
|
index = 1;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 1;
|
||||||
|
drag_mx = _mx;
|
||||||
|
drag_my = _my;
|
||||||
|
drag_sx = _ax;
|
||||||
|
drag_sy = _ay;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(index) {
|
||||||
|
draw_set_color(COLORS._main_accent);
|
||||||
|
draw_set_alpha(0.5);
|
||||||
|
draw_circle_prec(_x, _y, _rad, true);
|
||||||
|
draw_set_alpha(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
__overlay_hover = array_verify(__overlay_hover, 1);
|
||||||
|
__overlay_hover[0] = lerp_float(__overlay_hover[0], index, 4);
|
||||||
|
|
||||||
|
shader_set(sh_node_widget_rotator);
|
||||||
|
shader_set_color("color", COLORS._main_accent);
|
||||||
|
shader_set_f("index", __overlay_hover[0]);
|
||||||
|
shader_set_f("angle", degtorad(_val + 90));
|
||||||
|
|
||||||
|
var _arx = _x + lengthdir_x(_rad - 4, _val);
|
||||||
|
var _ary = _y + lengthdir_y(_rad - 4, _val);
|
||||||
|
draw_sprite_stretched(s_fx_pixel, 0, _arx - _r * 2, _ary - _r * 2, _r * 4, _r * 4);
|
||||||
|
shader_reset();
|
||||||
|
|
||||||
|
//draw_sprite_colored(THEME.anchor_rotate, index, _ax, _ay, 1, _val - 90);
|
||||||
|
|
||||||
|
draw_set_text(_f_p2b, fa_center, fa_bottom, COLORS._main_accent);
|
||||||
|
draw_text_add(round(_ax), round(_ay - 4), name);
|
||||||
|
|
||||||
|
return hover;
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
// 2024-04-22 18:32:54
|
||||||
|
function preview_overlay_scalar(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _angle, _scale, _spr) {
|
||||||
|
var _val = getValue();
|
||||||
|
var hover = -1;
|
||||||
|
if(!is_real(_val)) return hover;
|
||||||
|
|
||||||
|
var index = 0;
|
||||||
|
var __ax = lengthdir_x(_val * _scale, _angle);
|
||||||
|
var __ay = lengthdir_y(_val * _scale, _angle);
|
||||||
|
var _r = 10;
|
||||||
|
|
||||||
|
var _ax = _x + __ax * _s;
|
||||||
|
var _ay = _y + __ay * _s;
|
||||||
|
|
||||||
|
if(drag_type) {
|
||||||
|
index = 1;
|
||||||
|
var dist = point_distance(_mx, _my, _x, _y) / _s / _scale;
|
||||||
|
if(key_mod_press(CTRL))
|
||||||
|
dist = round(dist);
|
||||||
|
|
||||||
|
if(setValueInspector( dist ))
|
||||||
|
UNDO_HOLDING = true;
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
drag_type = 0;
|
||||||
|
UNDO_HOLDING = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(interact && point_in_circle(_mx, _my, _ax, _ay, _r)) {
|
||||||
|
hover = 1;
|
||||||
|
index = 1;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 1;
|
||||||
|
drag_mx = _mx;
|
||||||
|
drag_my = _my;
|
||||||
|
drag_sx = _ax;
|
||||||
|
drag_sy = _ay;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
__overlay_hover = array_verify(__overlay_hover, 1);
|
||||||
|
__overlay_hover[0] = lerp_float(__overlay_hover[0], index, 4);
|
||||||
|
draw_anchor(__overlay_hover[0], _ax, _ay, _r);
|
||||||
|
|
||||||
|
draw_set_text(_f_p2b, fa_center, fa_bottom, COLORS._main_accent);
|
||||||
|
draw_text_add(round(_ax), round(_ay - 4), name);
|
||||||
|
|
||||||
|
return hover;
|
||||||
|
}
|
|
@ -0,0 +1,59 @@
|
||||||
|
// 2024-04-22 18:32:38
|
||||||
|
function preview_overlay_vector(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _spr) {
|
||||||
|
var _val = array_clone(getValue());
|
||||||
|
var hover = -1;
|
||||||
|
if(!is_array(_val) || array_empty(_val)) return hover;
|
||||||
|
if(is_array(_val[0])) return hover;
|
||||||
|
|
||||||
|
var __ax = _val[0];
|
||||||
|
var __ay = _val[1];
|
||||||
|
var _r = 10;
|
||||||
|
|
||||||
|
var _ax = __ax * _s + _x;
|
||||||
|
var _ay = __ay * _s + _y;
|
||||||
|
var _index = 0;
|
||||||
|
|
||||||
|
if(drag_type) {
|
||||||
|
_index = 1;
|
||||||
|
|
||||||
|
var _nx = value_snap((drag_sx + (_mx - drag_mx) - _x) / _s, _snx);
|
||||||
|
var _ny = value_snap((drag_sy + (_my - drag_my) - _y) / _s, _sny);
|
||||||
|
if(key_mod_press(CTRL)) {
|
||||||
|
_val[0] = round(_nx);
|
||||||
|
_val[1] = round(_ny);
|
||||||
|
} else {
|
||||||
|
_val[0] = _nx;
|
||||||
|
_val[1] = _ny;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(setValueInspector( _val ))
|
||||||
|
UNDO_HOLDING = true;
|
||||||
|
|
||||||
|
if(mouse_release(mb_left)) {
|
||||||
|
drag_type = 0;
|
||||||
|
UNDO_HOLDING = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(interact && point_in_circle(_mx, _my, _ax, _ay, _r)) {
|
||||||
|
hover = 1;
|
||||||
|
_index = 1;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, active)) {
|
||||||
|
drag_type = 1;
|
||||||
|
drag_mx = _mx;
|
||||||
|
drag_my = _my;
|
||||||
|
drag_sx = _ax;
|
||||||
|
drag_sy = _ay;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
__overlay_hover = array_verify(__overlay_hover, 1);
|
||||||
|
__overlay_hover[0] = lerp_float(__overlay_hover[0], _index, 4);
|
||||||
|
draw_anchor(__overlay_hover[0], _ax, _ay, _r);
|
||||||
|
|
||||||
|
draw_set_text(_f_p2b, fa_center, fa_bottom, COLORS._main_accent);
|
||||||
|
draw_text_add(round(_ax), round(_ay - 4), name);
|
||||||
|
|
||||||
|
return hover;
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
// 2024-04-20 10:28:31
|
// 2024-04-22 15:44:58
|
||||||
enum TEXT_AREA_FORMAT {
|
enum TEXT_AREA_FORMAT {
|
||||||
_default,
|
_default,
|
||||||
codeLUA,
|
codeLUA,
|
||||||
|
@ -131,7 +131,6 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
||||||
o_dialog_textbox_autocomplete.deactivate(self);
|
o_dialog_textbox_autocomplete.deactivate(self);
|
||||||
o_dialog_textbox_function_guide.deactivate(self);
|
o_dialog_textbox_function_guide.deactivate(self);
|
||||||
|
|
||||||
if(!isCodeFormat()) return;
|
|
||||||
if(autocomplete_server == noone) return;
|
if(autocomplete_server == noone) return;
|
||||||
if(!use_autocomplete) return;
|
if(!use_autocomplete) return;
|
||||||
|
|
||||||
|
@ -144,6 +143,7 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
||||||
localParams = parser_server(crop, autocomplete_object);
|
localParams = parser_server(crop, autocomplete_object);
|
||||||
|
|
||||||
var data = autocomplete_server(pmt, localParams, autocomplete_context);
|
var data = autocomplete_server(pmt, localParams, autocomplete_context);
|
||||||
|
|
||||||
o_dialog_textbox_autocomplete.data = data;
|
o_dialog_textbox_autocomplete.data = data;
|
||||||
if(array_length(data)) {
|
if(array_length(data)) {
|
||||||
o_dialog_textbox_autocomplete.data = data;
|
o_dialog_textbox_autocomplete.data = data;
|
||||||
|
@ -151,6 +151,8 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
||||||
autocomplete_modi = true;
|
autocomplete_modi = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(function_guide_server == noone) return;
|
||||||
|
|
||||||
var _c = cursor;
|
var _c = cursor;
|
||||||
var _v = false;
|
var _v = false;
|
||||||
var _fn = "";
|
var _fn = "";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// 2024-04-20 10:27:46
|
// 2024-04-22 15:44:57
|
||||||
enum TEXT_AREA_FORMAT {
|
enum TEXT_AREA_FORMAT {
|
||||||
_default,
|
_default,
|
||||||
codeLUA,
|
codeLUA,
|
||||||
|
@ -131,7 +131,6 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
||||||
o_dialog_textbox_autocomplete.deactivate(self);
|
o_dialog_textbox_autocomplete.deactivate(self);
|
||||||
o_dialog_textbox_function_guide.deactivate(self);
|
o_dialog_textbox_function_guide.deactivate(self);
|
||||||
|
|
||||||
if(!isCodeFormat()) return;
|
|
||||||
if(autocomplete_server == noone) return;
|
if(autocomplete_server == noone) return;
|
||||||
if(!use_autocomplete) return;
|
if(!use_autocomplete) return;
|
||||||
|
|
||||||
|
@ -144,6 +143,7 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
||||||
localParams = parser_server(crop, autocomplete_object);
|
localParams = parser_server(crop, autocomplete_object);
|
||||||
|
|
||||||
var data = autocomplete_server(pmt, localParams, autocomplete_context);
|
var data = autocomplete_server(pmt, localParams, autocomplete_context);
|
||||||
|
|
||||||
o_dialog_textbox_autocomplete.data = data;
|
o_dialog_textbox_autocomplete.data = data;
|
||||||
if(array_length(data)) {
|
if(array_length(data)) {
|
||||||
o_dialog_textbox_autocomplete.data = data;
|
o_dialog_textbox_autocomplete.data = data;
|
||||||
|
@ -151,6 +151,8 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
||||||
autocomplete_modi = true;
|
autocomplete_modi = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(function_guide_server == noone) return;
|
||||||
|
|
||||||
var _c = cursor;
|
var _c = cursor;
|
||||||
var _v = false;
|
var _v = false;
|
||||||
var _fn = "";
|
var _fn = "";
|
||||||
|
@ -1027,9 +1029,6 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
draw_set_color(c_white);
|
|
||||||
draw_circle(_x, _y, 16, false);
|
|
||||||
|
|
||||||
if(DRAGGING && (DRAGGING.type == "Text" || DRAGGING.type == "Number") && hover && hoverRect) {
|
if(DRAGGING && (DRAGGING.type == "Text" || DRAGGING.type == "Number") && hover && hoverRect) {
|
||||||
draw_sprite_stretched_ext(THEME.ui_panel_active, 0, _x, _y, _w, hh, COLORS._main_value_positive, 1);
|
draw_sprite_stretched_ext(THEME.ui_panel_active, 0, _x, _y, _w, hh, COLORS._main_value_positive, 1);
|
||||||
if(mouse_release(mb_left))
|
if(mouse_release(mb_left))
|
||||||
|
|
26
#backups/scripts/tunnel_server/tunnel_server.gml.backup0
Normal file
26
#backups/scripts/tunnel_server/tunnel_server.gml.backup0
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
// 2024-04-22 15:44:23
|
||||||
|
function tunnel_autocomplete_server(prompt, params = []) {
|
||||||
|
var res = [];
|
||||||
|
|
||||||
|
var pr_list = ds_priority_create();
|
||||||
|
|
||||||
|
//////////////////////////////////
|
||||||
|
ds_priority_clear(pr_list);
|
||||||
|
|
||||||
|
var _tkeys = ds_map_keys_to_array(TUNNELS_IN);
|
||||||
|
for( var i = 0, n = array_length(_tkeys); i < n; i++ ) {
|
||||||
|
var gl = _tkeys[i];
|
||||||
|
|
||||||
|
var match = string_partial_match(string_lower(gl), string_lower(prompt));
|
||||||
|
if(match == -9999) continue;
|
||||||
|
|
||||||
|
ds_priority_add(pr_list, [[THEME.ac_constant, 2], gl, "tunnel", gl], match);
|
||||||
|
}
|
||||||
|
|
||||||
|
repeat(ds_priority_size(pr_list))
|
||||||
|
array_push(res, ds_priority_delete_max(pr_list));
|
||||||
|
|
||||||
|
ds_priority_destroy(pr_list);
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
26
#backups/scripts/tunnel_server/tunnel_server.gml.backup1
Normal file
26
#backups/scripts/tunnel_server/tunnel_server.gml.backup1
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
// 2024-04-22 15:43:49
|
||||||
|
function tunnel_autocomplete_server(prompt, params = []) {
|
||||||
|
var res = [];
|
||||||
|
|
||||||
|
var pr_list = ds_priority_create();
|
||||||
|
|
||||||
|
//////////////////////////////////
|
||||||
|
ds_priority_clear(pr_list);
|
||||||
|
|
||||||
|
var _tkeys = ds_map_keys_to_array(TUNNELS_IN);
|
||||||
|
for( var i = 0, n = array_length(_tkeys); i < n; i++ ) {
|
||||||
|
var gl = _tkeys[i];
|
||||||
|
|
||||||
|
var match = string_partial_match(string_lower(gl), string_lower(prompt));
|
||||||
|
if(match == -9999) continue;
|
||||||
|
|
||||||
|
ds_priority_add(pr_list, [[THEME.ac_constant, 2], gl, "tunnel", gl], match);
|
||||||
|
}
|
||||||
|
|
||||||
|
repeat(ds_priority_size(pr_list))
|
||||||
|
array_push(res, ds_priority_delete_max(pr_list));
|
||||||
|
|
||||||
|
ds_priority_destroy(pr_list);
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
|
@ -72,6 +72,7 @@
|
||||||
{"name":"for","order":6,"path":"folders/nodes/data/iterate/for.yy",},
|
{"name":"for","order":6,"path":"folders/nodes/data/iterate/for.yy",},
|
||||||
{"name":"lua","order":21,"path":"folders/nodes/data/lua.yy",},
|
{"name":"lua","order":21,"path":"folders/nodes/data/lua.yy",},
|
||||||
{"name":"misc","order":22,"path":"folders/nodes/data/misc.yy",},
|
{"name":"misc","order":22,"path":"folders/nodes/data/misc.yy",},
|
||||||
|
{"name":"tunnel","order":27,"path":"folders/nodes/data/misc/tunnel.yy",},
|
||||||
{"name":"lovify","order":26,"path":"folders/nodes/data/misc/lovify.yy",},
|
{"name":"lovify","order":26,"path":"folders/nodes/data/misc/lovify.yy",},
|
||||||
{"name":"MK_effects","order":23,"path":"folders/nodes/data/MK_effects.yy",},
|
{"name":"MK_effects","order":23,"path":"folders/nodes/data/MK_effects.yy",},
|
||||||
{"name":"src","order":14,"path":"folders/nodes/data/MK_effects/src.yy",},
|
{"name":"src","order":14,"path":"folders/nodes/data/MK_effects/src.yy",},
|
||||||
|
@ -1013,8 +1014,7 @@
|
||||||
{"name":"node_transform_array","order":15,"path":"scripts/node_transform_array/node_transform_array.yy",},
|
{"name":"node_transform_array","order":15,"path":"scripts/node_transform_array/node_transform_array.yy",},
|
||||||
{"name":"node_transform_single","order":1,"path":"scripts/node_transform_single/node_transform_single.yy",},
|
{"name":"node_transform_single","order":1,"path":"scripts/node_transform_single/node_transform_single.yy",},
|
||||||
{"name":"node_trigger_bool","order":1,"path":"scripts/node_trigger_bool/node_trigger_bool.yy",},
|
{"name":"node_trigger_bool","order":1,"path":"scripts/node_trigger_bool/node_trigger_bool.yy",},
|
||||||
{"name":"node_tunnel_in","order":6,"path":"scripts/node_tunnel_in/node_tunnel_in.yy",},
|
{"name":"node_tunnel_out","order":1,"path":"scripts/node_tunnel_out/node_tunnel_out.yy",},
|
||||||
{"name":"node_tunnel_out","order":7,"path":"scripts/node_tunnel_out/node_tunnel_out.yy",},
|
|
||||||
{"name":"node_twirl","order":4,"path":"scripts/node_twirl/node_twirl.yy",},
|
{"name":"node_twirl","order":4,"path":"scripts/node_twirl/node_twirl.yy",},
|
||||||
{"name":"node_unicode","order":1,"path":"scripts/node_unicode/node_unicode.yy",},
|
{"name":"node_unicode","order":1,"path":"scripts/node_unicode/node_unicode.yy",},
|
||||||
{"name":"node_value","order":5,"path":"scripts/node_value/node_value.yy",},
|
{"name":"node_value","order":5,"path":"scripts/node_value/node_value.yy",},
|
||||||
|
@ -1130,6 +1130,7 @@
|
||||||
{"name":"safe_operation","order":6,"path":"scripts/safe_operation/safe_operation.yy",},
|
{"name":"safe_operation","order":6,"path":"scripts/safe_operation/safe_operation.yy",},
|
||||||
{"name":"sample_projects","order":6,"path":"scripts/sample_projects/sample_projects.yy",},
|
{"name":"sample_projects","order":6,"path":"scripts/sample_projects/sample_projects.yy",},
|
||||||
{"name":"save_function","order":1,"path":"scripts/save_function/save_function.yy",},
|
{"name":"save_function","order":1,"path":"scripts/save_function/save_function.yy",},
|
||||||
|
{"name":"tunnel_server","order":2,"path":"scripts/tunnel_server/tunnel_server.yy",},
|
||||||
{"name":"scrollBox","order":2,"path":"scripts/scrollBox/scrollBox.yy",},
|
{"name":"scrollBox","order":2,"path":"scripts/scrollBox/scrollBox.yy",},
|
||||||
{"name":"scrollPane","order":3,"path":"scripts/scrollPane/scrollPane.yy",},
|
{"name":"scrollPane","order":3,"path":"scripts/scrollPane/scrollPane.yy",},
|
||||||
{"name":"shell_functions","order":20,"path":"scripts/shell_functions/shell_functions.yy",},
|
{"name":"shell_functions","order":20,"path":"scripts/shell_functions/shell_functions.yy",},
|
||||||
|
@ -1370,8 +1371,8 @@
|
||||||
{"name":"sh_mk_tile55_edge_l","order":6,"path":"shaders/sh_mk_tile55_edge_l/sh_mk_tile55_edge_l.yy",},
|
{"name":"sh_mk_tile55_edge_l","order":6,"path":"shaders/sh_mk_tile55_edge_l/sh_mk_tile55_edge_l.yy",},
|
||||||
{"name":"sh_mk_tile55_edge_r","order":7,"path":"shaders/sh_mk_tile55_edge_r/sh_mk_tile55_edge_r.yy",},
|
{"name":"sh_mk_tile55_edge_r","order":7,"path":"shaders/sh_mk_tile55_edge_r/sh_mk_tile55_edge_r.yy",},
|
||||||
{"name":"sh_mk_tile55_edge_t","order":4,"path":"shaders/sh_mk_tile55_edge_t/sh_mk_tile55_edge_t.yy",},
|
{"name":"sh_mk_tile55_edge_t","order":4,"path":"shaders/sh_mk_tile55_edge_t/sh_mk_tile55_edge_t.yy",},
|
||||||
{"name":"sh_node_circle","order":4,"path":"shaders/sh_node_circle/sh_node_circle.yy",},
|
|
||||||
{"name":"sh_node_arc","order":5,"path":"shaders/sh_node_arc/sh_node_arc.yy",},
|
{"name":"sh_node_arc","order":5,"path":"shaders/sh_node_arc/sh_node_arc.yy",},
|
||||||
|
{"name":"sh_node_circle","order":4,"path":"shaders/sh_node_circle/sh_node_circle.yy",},
|
||||||
{"name":"sh_node_widget_rotator","order":1,"path":"shaders/sh_node_widget_rotator/sh_node_widget_rotator.yy",},
|
{"name":"sh_node_widget_rotator","order":1,"path":"shaders/sh_node_widget_rotator/sh_node_widget_rotator.yy",},
|
||||||
{"name":"sh_node_widget_scalar_cross","order":2,"path":"shaders/sh_node_widget_scalar_cross/sh_node_widget_scalar_cross.yy",},
|
{"name":"sh_node_widget_scalar_cross","order":2,"path":"shaders/sh_node_widget_scalar_cross/sh_node_widget_scalar_cross.yy",},
|
||||||
{"name":"sh_node_widget_scalar_line","order":3,"path":"shaders/sh_node_widget_scalar_line/sh_node_widget_scalar_line.yy",},
|
{"name":"sh_node_widget_scalar_line","order":3,"path":"shaders/sh_node_widget_scalar_line/sh_node_widget_scalar_line.yy",},
|
||||||
|
|
|
@ -173,6 +173,7 @@
|
||||||
{"$GMFolder":"","%Name":"for","folderPath":"folders/nodes/data/iterate/for.yy","name":"for","resourceType":"GMFolder","resourceVersion":"2.0",},
|
{"$GMFolder":"","%Name":"for","folderPath":"folders/nodes/data/iterate/for.yy","name":"for","resourceType":"GMFolder","resourceVersion":"2.0",},
|
||||||
{"$GMFolder":"","%Name":"lua","folderPath":"folders/nodes/data/lua.yy","name":"lua","resourceType":"GMFolder","resourceVersion":"2.0",},
|
{"$GMFolder":"","%Name":"lua","folderPath":"folders/nodes/data/lua.yy","name":"lua","resourceType":"GMFolder","resourceVersion":"2.0",},
|
||||||
{"$GMFolder":"","%Name":"misc","folderPath":"folders/nodes/data/misc.yy","name":"misc","resourceType":"GMFolder","resourceVersion":"2.0",},
|
{"$GMFolder":"","%Name":"misc","folderPath":"folders/nodes/data/misc.yy","name":"misc","resourceType":"GMFolder","resourceVersion":"2.0",},
|
||||||
|
{"$GMFolder":"","%Name":"tunnel","folderPath":"folders/nodes/data/misc/tunnel.yy","name":"tunnel","resourceType":"GMFolder","resourceVersion":"2.0",},
|
||||||
{"$GMFolder":"","%Name":"lovify","folderPath":"folders/nodes/data/misc/lovify.yy","name":"lovify","resourceType":"GMFolder","resourceVersion":"2.0",},
|
{"$GMFolder":"","%Name":"lovify","folderPath":"folders/nodes/data/misc/lovify.yy","name":"lovify","resourceType":"GMFolder","resourceVersion":"2.0",},
|
||||||
{"$GMFolder":"","%Name":"spr","folderPath":"folders/nodes/data/misc/lovify/spr.yy","name":"spr","resourceType":"GMFolder","resourceVersion":"2.0",},
|
{"$GMFolder":"","%Name":"spr","folderPath":"folders/nodes/data/misc/lovify/spr.yy","name":"spr","resourceType":"GMFolder","resourceVersion":"2.0",},
|
||||||
{"$GMFolder":"","%Name":"MK_effects","folderPath":"folders/nodes/data/MK_effects.yy","name":"MK_effects","resourceType":"GMFolder","resourceVersion":"2.0",},
|
{"$GMFolder":"","%Name":"MK_effects","folderPath":"folders/nodes/data/MK_effects.yy","name":"MK_effects","resourceType":"GMFolder","resourceVersion":"2.0",},
|
||||||
|
@ -1611,6 +1612,7 @@
|
||||||
{"id":{"name":"safe_operation","path":"scripts/safe_operation/safe_operation.yy",},},
|
{"id":{"name":"safe_operation","path":"scripts/safe_operation/safe_operation.yy",},},
|
||||||
{"id":{"name":"sample_projects","path":"scripts/sample_projects/sample_projects.yy",},},
|
{"id":{"name":"sample_projects","path":"scripts/sample_projects/sample_projects.yy",},},
|
||||||
{"id":{"name":"save_function","path":"scripts/save_function/save_function.yy",},},
|
{"id":{"name":"save_function","path":"scripts/save_function/save_function.yy",},},
|
||||||
|
{"id":{"name":"tunnel_server","path":"scripts/tunnel_server/tunnel_server.yy",},},
|
||||||
{"id":{"name":"scrollBox","path":"scripts/scrollBox/scrollBox.yy",},},
|
{"id":{"name":"scrollBox","path":"scripts/scrollBox/scrollBox.yy",},},
|
||||||
{"id":{"name":"scrollPane","path":"scripts/scrollPane/scrollPane.yy",},},
|
{"id":{"name":"scrollPane","path":"scripts/scrollPane/scrollPane.yy",},},
|
||||||
{"id":{"name":"shader_functions","path":"scripts/shader_functions/shader_functions.yy",},},
|
{"id":{"name":"shader_functions","path":"scripts/shader_functions/shader_functions.yy",},},
|
||||||
|
@ -1897,8 +1899,8 @@
|
||||||
{"id":{"name":"sh_mk_tile55_edge_r","path":"shaders/sh_mk_tile55_edge_r/sh_mk_tile55_edge_r.yy",},},
|
{"id":{"name":"sh_mk_tile55_edge_r","path":"shaders/sh_mk_tile55_edge_r/sh_mk_tile55_edge_r.yy",},},
|
||||||
{"id":{"name":"sh_mk_tile55_edge_t","path":"shaders/sh_mk_tile55_edge_t/sh_mk_tile55_edge_t.yy",},},
|
{"id":{"name":"sh_mk_tile55_edge_t","path":"shaders/sh_mk_tile55_edge_t/sh_mk_tile55_edge_t.yy",},},
|
||||||
{"id":{"name":"sh_morph_surface","path":"shaders/sh_morph_surface/sh_morph_surface.yy",},},
|
{"id":{"name":"sh_morph_surface","path":"shaders/sh_morph_surface/sh_morph_surface.yy",},},
|
||||||
{"id":{"name":"sh_node_circle","path":"shaders/sh_node_circle/sh_node_circle.yy",},},
|
|
||||||
{"id":{"name":"sh_node_arc","path":"shaders/sh_node_arc/sh_node_arc.yy",},},
|
{"id":{"name":"sh_node_arc","path":"shaders/sh_node_arc/sh_node_arc.yy",},},
|
||||||
|
{"id":{"name":"sh_node_circle","path":"shaders/sh_node_circle/sh_node_circle.yy",},},
|
||||||
{"id":{"name":"sh_node_widget_rotator","path":"shaders/sh_node_widget_rotator/sh_node_widget_rotator.yy",},},
|
{"id":{"name":"sh_node_widget_rotator","path":"shaders/sh_node_widget_rotator/sh_node_widget_rotator.yy",},},
|
||||||
{"id":{"name":"sh_node_widget_scalar_cross","path":"shaders/sh_node_widget_scalar_cross/sh_node_widget_scalar_cross.yy",},},
|
{"id":{"name":"sh_node_widget_scalar_cross","path":"shaders/sh_node_widget_scalar_cross/sh_node_widget_scalar_cross.yy",},},
|
||||||
{"id":{"name":"sh_node_widget_scalar_line","path":"shaders/sh_node_widget_scalar_line/sh_node_widget_scalar_line.yy",},},
|
{"id":{"name":"sh_node_widget_scalar_line","path":"shaders/sh_node_widget_scalar_line/sh_node_widget_scalar_line.yy",},},
|
||||||
|
|
|
@ -28,7 +28,7 @@ function line_get_width(txt, font = noone, offset = 0) {
|
||||||
if(PREFERENCES.display_scaling == scale) return;
|
if(PREFERENCES.display_scaling == scale) return;
|
||||||
|
|
||||||
PREFERENCES.display_scaling = scale;
|
PREFERENCES.display_scaling = scale;
|
||||||
resetPanel();
|
resetPanel(false);
|
||||||
loadFonts();
|
loadFonts();
|
||||||
|
|
||||||
if(willResize) time_source_start(time_source_create(time_source_global, 1, time_source_units_frames, onResize));
|
if(willResize) time_source_start(time_source_create(time_source_global, 1, time_source_units_frames, onResize));
|
||||||
|
|
|
@ -53,6 +53,7 @@ function draw_line_dotted(x0, y0, x1, y1, radius, shift, distanceMulp = 1) {
|
||||||
var dir = point_direction(x0, y0, x1, y1);
|
var dir = point_direction(x0, y0, x1, y1);
|
||||||
var dtd = radius * distanceMulp * 2;
|
var dtd = radius * distanceMulp * 2;
|
||||||
var part = floor(dis / dtd);
|
var part = floor(dis / dtd);
|
||||||
|
dtd = dis / part;
|
||||||
|
|
||||||
var dx = lengthdir_x(1, dir);
|
var dx = lengthdir_x(1, dir);
|
||||||
var dy = lengthdir_y(1, dir);
|
var dy = lengthdir_y(1, dir);
|
||||||
|
|
|
@ -14,8 +14,8 @@ function Node_Array_Sort(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
|
|
||||||
outputs[| 1] = nodeValue("Sorted index", self, JUNCTION_CONNECT.output, VALUE_TYPE.integer, []);
|
outputs[| 1] = nodeValue("Sorted index", self, JUNCTION_CONNECT.output, VALUE_TYPE.integer, []);
|
||||||
|
|
||||||
static sortAcs = function(v1, v2) { return v1[1] < v2[1]; }
|
static sortAcs = function(v1, v2) { return v2.val - v1.val; }
|
||||||
static sortDes = function(v1, v2) { return v1[1] > v2[1]; }
|
static sortDes = function(v1, v2) { return v1.val - v2.val; }
|
||||||
|
|
||||||
static update = function(frame = CURRENT_FRAME) {
|
static update = function(frame = CURRENT_FRAME) {
|
||||||
var arr = getInputData(0);
|
var arr = getInputData(0);
|
||||||
|
@ -26,25 +26,26 @@ function Node_Array_Sort(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
|
|
||||||
if(!is_array(arr)) return;
|
if(!is_array(arr)) return;
|
||||||
|
|
||||||
|
var len = array_length(arr);
|
||||||
|
|
||||||
if(inputs[| 0].value_from != noone) {
|
if(inputs[| 0].value_from != noone) {
|
||||||
inputs[| 0].setType(inputs[| 0].value_from.type);
|
inputs[| 0].setType(inputs[| 0].value_from.type);
|
||||||
outputs[| 0].setType(inputs[| 0].value_from.type);
|
outputs[| 0].setType(inputs[| 0].value_from.type);
|
||||||
}
|
}
|
||||||
|
|
||||||
var _arr = [];
|
var _arr = array_map(arr, function(v, i) { return { index: i, val: v }; });
|
||||||
for( var i = 0, n = array_length(arr); i < n; i++ )
|
|
||||||
_arr[i] = [ i, arr[i] ];
|
|
||||||
|
|
||||||
array_sort(_arr, asc? sortAcs : sortDes);
|
array_sort(_arr, asc? sortAcs : sortDes);
|
||||||
|
|
||||||
var res = [ [], [] ];
|
var resV = array_verify(outputs[| 0].getValue(), len);
|
||||||
for( var i = 0, n = array_length(_arr); i < n; i++ ) {
|
var resO = array_verify(outputs[| 1].getValue(), len);
|
||||||
res[0][i] = _arr[i][0];
|
|
||||||
res[1][i] = _arr[i][1];
|
for( var i = 0; i < len; i++ ) {
|
||||||
|
resO[i] = _arr[i].index;
|
||||||
|
resV[i] = _arr[i].val;
|
||||||
}
|
}
|
||||||
|
|
||||||
outputs[| 0].setValue(res[1]);
|
outputs[| 0].setValue(resV);
|
||||||
outputs[| 1].setValue(res[0]);
|
outputs[| 1].setValue(resO);
|
||||||
}
|
}
|
||||||
|
|
||||||
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
||||||
|
|
|
@ -844,7 +844,7 @@ function __initNodes() {
|
||||||
addNodeObject(values, "Array Convolute", s_node_array_convolute, "Node_Array_Convolute", [1, Node_Array_Convolute]).setVersion(11540);
|
addNodeObject(values, "Array Convolute", s_node_array_convolute, "Node_Array_Convolute", [1, Node_Array_Convolute]).setVersion(11540);
|
||||||
addNodeObject(values, "Array Composite", s_node_array_composite, "Node_Array_Composite", [1, Node_Array_Composite]).setVersion(11540);
|
addNodeObject(values, "Array Composite", s_node_array_composite, "Node_Array_Composite", [1, Node_Array_Composite]).setVersion(11540);
|
||||||
addNodeObject(values, "Array Sample", s_node_array_sample, "Node_Array_Sample", [1, Node_Array_Sample]).setVersion(11540);
|
addNodeObject(values, "Array Sample", s_node_array_sample, "Node_Array_Sample", [1, Node_Array_Sample]).setVersion(11540);
|
||||||
addNodeObject(values, "Sort Number", s_node_array_sort, "Node_Array_Sort", [1, Node_Array_Sort], ["array sort"]).setVersion(1120);
|
addNodeObject(values, "Sort Array", s_node_array_sort, "Node_Array_Sort", [1, Node_Array_Sort], ["array sort"]).setVersion(1120);
|
||||||
addNodeObject(values, "Shuffle Array", s_node_array_shuffle, "Node_Array_Shuffle", [1, Node_Array_Shuffle], ["array shuffle"]).setVersion(1120);
|
addNodeObject(values, "Shuffle Array", s_node_array_shuffle, "Node_Array_Shuffle", [1, Node_Array_Shuffle], ["array shuffle"]).setVersion(1120);
|
||||||
addNodeObject(values, "Loop Array", s_node_loop_array, "Node_Iterate_Each_Inline", [1, Node_Iterate_Each_Inline], ["iterate each", "for each", "array loop"], "Create group that iterate to each member in an array.");
|
addNodeObject(values, "Loop Array", s_node_loop_array, "Node_Iterate_Each_Inline", [1, Node_Iterate_Each_Inline], ["iterate each", "for each", "array loop"], "Create group that iterate to each member in an array.");
|
||||||
addNodeObject(values, "Filter Array", s_node_filter_array, "Node_Iterate_Filter_Inline", [1, Node_Iterate_Filter_Inline],, "Filter array using condition.").setVersion(1140);
|
addNodeObject(values, "Filter Array", s_node_filter_array, "Node_Iterate_Filter_Inline", [1, Node_Iterate_Filter_Inline],, "Filter array using condition.").setVersion(1140);
|
||||||
|
|
|
@ -11,8 +11,11 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
hover_scale_to = 0;
|
hover_scale_to = 0;
|
||||||
hover_alpha = 0;
|
hover_alpha = 0;
|
||||||
|
|
||||||
inputs[| 0] = nodeValue("Name", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "" )
|
var tname = "";
|
||||||
.setDisplay(VALUE_DISPLAY.text_tunnel)
|
if(!LOADING && !APPENDING)
|
||||||
|
tname = $"tunnel{ds_map_size(TUNNELS_IN_MAP)}";
|
||||||
|
|
||||||
|
inputs[| 0] = nodeValue("Name", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, tname )
|
||||||
.rejectArray();
|
.rejectArray();
|
||||||
|
|
||||||
inputs[| 1] = nodeValue("Value in", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, noone )
|
inputs[| 1] = nodeValue("Value in", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, noone )
|
||||||
|
@ -25,19 +28,19 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
|
|
||||||
static onInspector2Update = function() { #region
|
static onInspector2Update = function() { #region
|
||||||
var _node = nodeBuild("Node_Tunnel_Out", x + 128, y);
|
var _node = nodeBuild("Node_Tunnel_Out", x + 128, y);
|
||||||
_node.inputs[| 0].setValue(getInputData(0));
|
_node.inputs[| 0].setValue(inputs[| 0].getValue());
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static update = function(frame = CURRENT_FRAME) { onValueUpdate(); }
|
static update = function(frame = CURRENT_FRAME) { onValueUpdate(); }
|
||||||
|
|
||||||
static resetMap = function() { #region
|
static resetMap = function() { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
TUNNELS_IN_MAP[? node_id] = _key;
|
TUNNELS_IN_MAP[? node_id] = _key;
|
||||||
TUNNELS_IN[? _key] = inputs[| 1];
|
TUNNELS_IN[? _key] = inputs[| 1];
|
||||||
} #endregion
|
} resetMap(); #endregion
|
||||||
|
|
||||||
static checkDuplicate = function() { #region
|
static checkDuplicate = function() { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
var amo = ds_map_size(TUNNELS_IN_MAP);
|
var amo = ds_map_size(TUNNELS_IN_MAP);
|
||||||
var k = ds_map_find_first(TUNNELS_IN_MAP);
|
var k = ds_map_find_first(TUNNELS_IN_MAP);
|
||||||
var dup = false;
|
var dup = false;
|
||||||
|
@ -59,7 +62,7 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static onValueUpdate = function(index = -1) { #region
|
static onValueUpdate = function(index = -1) { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
resetMap();
|
resetMap();
|
||||||
|
|
||||||
var amo = ds_map_size(TUNNELS_IN_MAP);
|
var amo = ds_map_size(TUNNELS_IN_MAP);
|
||||||
|
@ -81,7 +84,7 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static step = function() { #region
|
static step = function() { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
|
|
||||||
value_validation[VALIDATION.error] = error_notification != noone;
|
value_validation[VALIDATION.error] = error_notification != noone;
|
||||||
|
|
||||||
|
@ -97,7 +100,7 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
static getNextNodes = function() { #region
|
static getNextNodes = function() { #region
|
||||||
var nodes = [];
|
var nodes = [];
|
||||||
var nodeNames = [];
|
var nodeNames = [];
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
var amo = ds_map_size(TUNNELS_OUT);
|
var amo = ds_map_size(TUNNELS_OUT);
|
||||||
var k = ds_map_find_first(TUNNELS_OUT);
|
var k = ds_map_find_first(TUNNELS_OUT);
|
||||||
|
|
||||||
|
@ -148,30 +151,32 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
var xx = _x + x * _s;
|
var xx = _x + x * _s;
|
||||||
var yy = _y + y * _s;
|
var yy = _y + y * _s;
|
||||||
|
|
||||||
var hover = isHovering;
|
var hover = isHovering || hover_alpha == 1;
|
||||||
var tun = findPanel("Panel_Tunnels");
|
var tun = findPanel("Panel_Tunnels");
|
||||||
hover |= tun && tun.tunnel_hover == self;
|
hover |= tun && tun.tunnel_hover == self;
|
||||||
if(!hover) return;
|
if(!hover) return;
|
||||||
|
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
var amo = ds_map_size(TUNNELS_OUT);
|
var _keys = ds_map_keys_to_array(TUNNELS_OUT);
|
||||||
var k = ds_map_find_first(TUNNELS_OUT);
|
|
||||||
|
|
||||||
draw_set_color(COLORS.node_blend_tunnel);
|
draw_set_color(inputs[| 1].color_display);
|
||||||
|
draw_set_alpha(0.5);
|
||||||
|
|
||||||
repeat(amo) {
|
for (var i = 0, n = array_length(_keys); i < n; i++) {
|
||||||
if(TUNNELS_OUT[? k] == _key && ds_map_exists(PROJECT.nodeMap, k)) {
|
var _k = _keys[i];
|
||||||
var node = PROJECT.nodeMap[? k];
|
|
||||||
|
if(TUNNELS_OUT[? _k] != _key) continue;
|
||||||
|
if(!ds_map_exists(PROJECT.nodeMap, _k)) continue;
|
||||||
|
|
||||||
|
var node = PROJECT.nodeMap[? _k];
|
||||||
if(node.group != group) continue;
|
if(node.group != group) continue;
|
||||||
|
|
||||||
var tox = _x + node.x * _s;
|
var tox = _x + node.x * _s;
|
||||||
var toy = _y + node.y * _s;
|
var toy = _y + node.y * _s;
|
||||||
draw_line_dotted(xx, yy, tox, toy, 4 * _s, current_time / 10, 2);
|
draw_line_dotted(xx, yy, tox, toy, 2 * _s, current_time / 10, 3);
|
||||||
}
|
|
||||||
|
|
||||||
k = ds_map_find_next(TUNNELS_OUT, k);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
draw_set_alpha(1);
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static drawJunctions = function(_x, _y, _mx, _my, _s) { #region
|
static drawJunctions = function(_x, _y, _mx, _my, _s) { #region
|
||||||
|
@ -227,7 +232,7 @@ function Node_Tunnel_In(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
hover_scale_to = 0;
|
hover_scale_to = 0;
|
||||||
|
|
||||||
draw_set_text(f_sdf, fa_center, fa_bottom, COLORS._main_text);
|
draw_set_text(f_sdf, fa_center, fa_bottom, COLORS._main_text);
|
||||||
draw_text_transformed(xx, yy - 12, string(getInputData(0)), _s * 0.4, _s * 0.4, 0);
|
draw_text_transformed(xx, yy - 12, string(inputs[| 0].getValue()), _s * 0.4, _s * 0.4, 0);
|
||||||
|
|
||||||
return drawJunctions(_x, _y, _mx, _my, _s);
|
return drawJunctions(_x, _y, _mx, _my, _s);
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
"isDnD":false,
|
"isDnD":false,
|
||||||
"name":"node_tunnel_in",
|
"name":"node_tunnel_in",
|
||||||
"parent":{
|
"parent":{
|
||||||
"name":"misc",
|
"name":"tunnel",
|
||||||
"path":"folders/nodes/data/misc.yy",
|
"path":"folders/nodes/data/misc/tunnel.yy",
|
||||||
},
|
},
|
||||||
"resourceType":"GMScript",
|
"resourceType":"GMScript",
|
||||||
"resourceVersion":"2.0",
|
"resourceVersion":"2.0",
|
||||||
|
|
|
@ -11,7 +11,11 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
hover_scale_to = 0;
|
hover_scale_to = 0;
|
||||||
hover_alpha = 0;
|
hover_alpha = 0;
|
||||||
|
|
||||||
inputs[| 0] = nodeValue("Name", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "" )
|
var tname = "";
|
||||||
|
if(!LOADING && !APPENDING && !ds_map_empty(TUNNELS_IN))
|
||||||
|
tname = ds_map_find_first(TUNNELS_IN);
|
||||||
|
|
||||||
|
inputs[| 0] = nodeValue("Name", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, tname )
|
||||||
.setDisplay(VALUE_DISPLAY.text_tunnel)
|
.setDisplay(VALUE_DISPLAY.text_tunnel)
|
||||||
.rejectArray();
|
.rejectArray();
|
||||||
|
|
||||||
|
@ -21,7 +25,7 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
insp2UpdateIcon = [ THEME.tunnel, 1, c_white ];
|
insp2UpdateIcon = [ THEME.tunnel, 1, c_white ];
|
||||||
|
|
||||||
static onInspector2Update = function() { #region
|
static onInspector2Update = function() { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
if(!ds_map_exists(TUNNELS_IN, _key)) return;
|
if(!ds_map_exists(TUNNELS_IN, _key)) return;
|
||||||
|
|
||||||
var _node = TUNNELS_IN[? _key].node;
|
var _node = TUNNELS_IN[? _key].node;
|
||||||
|
@ -29,22 +33,22 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static isRenderable = function() { #region
|
static isRenderable = function() { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
if(!ds_map_exists(TUNNELS_IN, _key)) return false;
|
if(!ds_map_exists(TUNNELS_IN, _key)) return false;
|
||||||
|
|
||||||
return TUNNELS_IN[? _key].node.rendered;
|
return TUNNELS_IN[? _key].node.rendered;
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static onValueUpdate = function(index = -1) { #region
|
static onValueUpdate = function(index = -1) { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
|
|
||||||
TUNNELS_OUT[? node_id] = _key;
|
|
||||||
|
|
||||||
if(index == 0) { RENDER_ALL_REORDER }
|
if(index == 0) { RENDER_ALL_REORDER }
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static step = function() { #region
|
static step = function() { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
|
TUNNELS_OUT[? node_id] = _key;
|
||||||
|
|
||||||
if(ds_map_exists(TUNNELS_IN, _key)) {
|
if(ds_map_exists(TUNNELS_IN, _key)) {
|
||||||
outputs[| 0].setType(TUNNELS_IN[? _key].type);
|
outputs[| 0].setType(TUNNELS_IN[? _key].type);
|
||||||
outputs[| 0].display_type = TUNNELS_IN[? _key].display_type;
|
outputs[| 0].display_type = TUNNELS_IN[? _key].display_type;
|
||||||
|
@ -55,7 +59,7 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static update = function(frame = CURRENT_FRAME) { #region
|
static update = function(frame = CURRENT_FRAME) { #region
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
|
|
||||||
if(ds_map_exists(TUNNELS_IN, _key))
|
if(ds_map_exists(TUNNELS_IN, _key))
|
||||||
outputs[| 0].setValue(TUNNELS_IN[? _key].getValue());
|
outputs[| 0].setValue(TUNNELS_IN[? _key].getValue());
|
||||||
|
@ -88,22 +92,25 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
var xx = _x + x * _s;
|
var xx = _x + x * _s;
|
||||||
var yy = _y + y * _s;
|
var yy = _y + y * _s;
|
||||||
|
|
||||||
var hover = isHovering;
|
var hover = isHovering || hover_alpha == 1;
|
||||||
var tun = findPanel("Panel_Tunnels");
|
var tun = findPanel("Panel_Tunnels");
|
||||||
hover |= tun && tun.tunnel_hover == self;
|
hover |= tun && tun.tunnel_hover == self;
|
||||||
if(!hover) return;
|
if(!hover) return;
|
||||||
|
|
||||||
var _key = getInputData(0);
|
var _key = inputs[| 0].getValue();
|
||||||
if(!ds_map_exists(TUNNELS_IN, _key)) return;
|
if(!ds_map_exists(TUNNELS_IN, _key)) return;
|
||||||
|
|
||||||
var node = TUNNELS_IN[? _key].node;
|
var node = TUNNELS_IN[? _key].node;
|
||||||
if(node.group != group) return;
|
if(node.group != group) return;
|
||||||
|
|
||||||
draw_set_color(COLORS.node_blend_tunnel);
|
draw_set_color(outputs[| 0].color_display);
|
||||||
|
draw_set_alpha(0.5);
|
||||||
|
|
||||||
var frx = _x + node.x * _s;
|
var frx = _x + node.x * _s;
|
||||||
var fry = _y + node.y * _s;
|
var fry = _y + node.y * _s;
|
||||||
draw_line_dotted(frx, fry, xx, yy, 4 * _s, current_time / 10, 2);
|
draw_line_dotted(frx, fry, xx, yy, 2 * _s, current_time / 10, 3);
|
||||||
|
|
||||||
|
draw_set_alpha(1);
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static drawJunctions = function(_x, _y, _mx, _my, _s) { #region
|
static drawJunctions = function(_x, _y, _mx, _my, _s) { #region
|
||||||
|
@ -115,7 +122,7 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
if(!isHovering) return noone;
|
if(!isHovering) return noone;
|
||||||
|
|
||||||
hover_scale_to = 1;
|
hover_scale_to = 1;
|
||||||
return jhov? inputs[| 1] : noone;
|
return jhov? outputs[| 0] : noone;
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static drawNode = function(_x, _y, _mx, _my, _s) { #region
|
static drawNode = function(_x, _y, _mx, _my, _s) { #region
|
||||||
|
@ -159,7 +166,7 @@ function Node_Tunnel_Out(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
hover_scale_to = 0;
|
hover_scale_to = 0;
|
||||||
|
|
||||||
draw_set_text(f_sdf, fa_center, fa_bottom, COLORS._main_text);
|
draw_set_text(f_sdf, fa_center, fa_bottom, COLORS._main_text);
|
||||||
draw_text_transformed(xx, yy - 12, string(getInputData(0)), _s * 0.4, _s * 0.4, 0);
|
draw_text_transformed(xx, yy - 12, string(inputs[| 0].getValue()), _s * 0.4, _s * 0.4, 0);
|
||||||
|
|
||||||
return drawJunctions(_x, _y, _mx, _my, _s);
|
return drawJunctions(_x, _y, _mx, _my, _s);
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
"isDnD":false,
|
"isDnD":false,
|
||||||
"name":"node_tunnel_out",
|
"name":"node_tunnel_out",
|
||||||
"parent":{
|
"parent":{
|
||||||
"name":"misc",
|
"name":"tunnel",
|
||||||
"path":"folders/nodes/data/misc.yy",
|
"path":"folders/nodes/data/misc/tunnel.yy",
|
||||||
},
|
},
|
||||||
"resourceType":"GMScript",
|
"resourceType":"GMScript",
|
||||||
"resourceVersion":"2.0",
|
"resourceVersion":"2.0",
|
||||||
|
|
|
@ -668,6 +668,8 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
draw_blend = 1;
|
draw_blend = 1;
|
||||||
draw_blend_color = 1;
|
draw_blend_color = 1;
|
||||||
|
|
||||||
|
__overlay_hover = [];
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region ---- timeline ----
|
#region ---- timeline ----
|
||||||
|
@ -907,6 +909,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Number";
|
extract_node = "Node_Number";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.range : #region
|
case VALUE_DISPLAY.range : #region
|
||||||
editWidget = new rangeBox(_txt, function(index, val) { return setValueInspector(val, index); } );
|
editWidget = new rangeBox(_txt, function(index, val) { return setValueInspector(val, index); } );
|
||||||
|
|
||||||
|
@ -919,6 +922,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Number";
|
extract_node = "Node_Number";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.vector : #region
|
case VALUE_DISPLAY.vector : #region
|
||||||
var val = animator.getValue();
|
var val = animator.getValue();
|
||||||
var len = array_length(val);
|
var len = array_length(val);
|
||||||
|
@ -956,6 +960,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
animators[i].suffix = " " + string(array_safe_get_fast(global.displaySuffix_Axis, i));
|
animators[i].suffix = " " + string(array_safe_get_fast(global.displaySuffix_Axis, i));
|
||||||
|
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.vector_range : #region
|
case VALUE_DISPLAY.vector_range : #region
|
||||||
var val = animator.getValue();
|
var val = animator.getValue();
|
||||||
|
|
||||||
|
@ -978,6 +983,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
animators[i].suffix = " " + string(array_safe_get_fast(global.displaySuffix_VecRange, i));
|
animators[i].suffix = " " + string(array_safe_get_fast(global.displaySuffix_VecRange, i));
|
||||||
|
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.rotation : #region
|
case VALUE_DISPLAY.rotation : #region
|
||||||
var _step = struct_try_get(display_data, "step", -1);
|
var _step = struct_try_get(display_data, "step", -1);
|
||||||
|
|
||||||
|
@ -987,6 +993,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Number";
|
extract_node = "Node_Number";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.rotation_range : #region
|
case VALUE_DISPLAY.rotation_range : #region
|
||||||
editWidget = new rotatorRange(function(index, val) {
|
editWidget = new rotatorRange(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -997,6 +1004,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Vector2";
|
extract_node = "Node_Vector2";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.rotation_random: #region
|
case VALUE_DISPLAY.rotation_random: #region
|
||||||
editWidget = new rotatorRandom(function(index, val) {
|
editWidget = new rotatorRandom(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1004,6 +1012,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Vector2";
|
extract_node = "Node_Vector2";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.slider : #region
|
case VALUE_DISPLAY.slider : #region
|
||||||
var _range = struct_try_get(display_data, "range", [ 0, 1, 0.01 ]);
|
var _range = struct_try_get(display_data, "range", [ 0, 1, 0.01 ]);
|
||||||
|
|
||||||
|
@ -1015,6 +1024,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Number";
|
extract_node = "Node_Number";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.slider_range : #region
|
case VALUE_DISPLAY.slider_range : #region
|
||||||
var _range = struct_try_get(display_data, "range", [ 0, 1, 0.01 ]);
|
var _range = struct_try_get(display_data, "range", [ 0, 1, 0.01 ]);
|
||||||
|
|
||||||
|
@ -1026,6 +1036,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Vector2";
|
extract_node = "Node_Vector2";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.area : #region
|
case VALUE_DISPLAY.area : #region
|
||||||
editWidget = new areaBox(function(index, val) {
|
editWidget = new areaBox(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1041,6 +1052,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Area";
|
extract_node = "Node_Area";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.padding : #region
|
case VALUE_DISPLAY.padding : #region
|
||||||
editWidget = new paddingBox(function(index, val) {
|
editWidget = new paddingBox(function(index, val) {
|
||||||
//var _val = animator.getValue();
|
//var _val = animator.getValue();
|
||||||
|
@ -1054,6 +1066,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Vector4";
|
extract_node = "Node_Vector4";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.corner : #region
|
case VALUE_DISPLAY.corner : #region
|
||||||
editWidget = new cornerBox(function(index, val) {
|
editWidget = new cornerBox(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1065,6 +1078,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_Vector4";
|
extract_node = "Node_Vector4";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.puppet_control : #region
|
case VALUE_DISPLAY.puppet_control : #region
|
||||||
editWidget = new controlPointBox(function(index, val) {
|
editWidget = new controlPointBox(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1072,6 +1086,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "";
|
extract_node = "";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.enum_scroll : #region
|
case VALUE_DISPLAY.enum_scroll : #region
|
||||||
if(!is_struct(display_data)) display_data = { data: display_data };
|
if(!is_struct(display_data)) display_data = { data: display_data };
|
||||||
var choices = __txt_junction_data(instanceof(node), connect_type, index, display_data.data);
|
var choices = __txt_junction_data(instanceof(node), connect_type, index, display_data.data);
|
||||||
|
@ -1087,6 +1102,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
key_inter = CURVE_TYPE.cut;
|
key_inter = CURVE_TYPE.cut;
|
||||||
extract_node = "";
|
extract_node = "";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.enum_button : #region
|
case VALUE_DISPLAY.enum_button : #region
|
||||||
if(!is_struct(display_data)) display_data = { data: display_data };
|
if(!is_struct(display_data)) display_data = { data: display_data };
|
||||||
var choices = __txt_junction_data(instanceof(node), connect_type, index, display_data.data);
|
var choices = __txt_junction_data(instanceof(node), connect_type, index, display_data.data);
|
||||||
|
@ -1099,6 +1115,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
key_inter = CURVE_TYPE.cut;
|
key_inter = CURVE_TYPE.cut;
|
||||||
extract_node = "";
|
extract_node = "";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.matrix : #region
|
case VALUE_DISPLAY.matrix : #region
|
||||||
editWidget = new matrixGrid(_txt, display_data.size, function(index, val) {
|
editWidget = new matrixGrid(_txt, display_data.size, function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1110,11 +1127,13 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "";
|
extract_node = "";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.transform : #region
|
case VALUE_DISPLAY.transform : #region
|
||||||
editWidget = new transformBox(function(index, val) { return setValueInspector(val, index); });
|
editWidget = new transformBox(function(index, val) { return setValueInspector(val, index); });
|
||||||
|
|
||||||
extract_node = "Node_Transform_Array";
|
extract_node = "Node_Transform_Array";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.toggle : #region
|
case VALUE_DISPLAY.toggle : #region
|
||||||
editWidget = new toggleGroup(display_data.data, function(val) {
|
editWidget = new toggleGroup(display_data.data, function(val) {
|
||||||
return setValueInspector(val);
|
return setValueInspector(val);
|
||||||
|
@ -1124,6 +1143,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
key_inter = CURVE_TYPE.cut;
|
key_inter = CURVE_TYPE.cut;
|
||||||
extract_node = "";
|
extract_node = "";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.d3quarternion : #region
|
case VALUE_DISPLAY.d3quarternion : #region
|
||||||
editWidget = new quarternionBox(function(index, val) {
|
editWidget = new quarternionBox(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1132,6 +1152,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
extract_node = "Node_Vector4";
|
extract_node = "Node_Vector4";
|
||||||
display_data.angle_display = QUARTERNION_DISPLAY.quarterion;
|
display_data.angle_display = QUARTERNION_DISPLAY.quarterion;
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_DISPLAY.path_anchor : #region
|
case VALUE_DISPLAY.path_anchor : #region
|
||||||
editWidget = new pathAnchorBox(function(index, val) {
|
editWidget = new pathAnchorBox(function(index, val) {
|
||||||
return setValueInspector(val, index);
|
return setValueInspector(val, index);
|
||||||
|
@ -1142,6 +1163,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VALUE_TYPE.boolean : #region
|
case VALUE_TYPE.boolean : #region
|
||||||
if(name == "Active") editWidget = new checkBoxActive(function() { return setValueInspector(!animator.getValue()); } );
|
if(name == "Active") editWidget = new checkBoxActive(function() { return setValueInspector(!animator.getValue()); } );
|
||||||
else editWidget = new checkBox( function() { return setValueInspector(!animator.getValue()); } );
|
else editWidget = new checkBox( function() { return setValueInspector(!animator.getValue()); } );
|
||||||
|
@ -1149,6 +1171,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
key_inter = CURVE_TYPE.cut;
|
key_inter = CURVE_TYPE.cut;
|
||||||
extract_node = "Node_Boolean";
|
extract_node = "Node_Boolean";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.color : #region
|
case VALUE_TYPE.color : #region
|
||||||
switch(display_type) {
|
switch(display_type) {
|
||||||
case VALUE_DISPLAY._default :
|
case VALUE_DISPLAY._default :
|
||||||
|
@ -1164,11 +1187,13 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.gradient : #region
|
case VALUE_TYPE.gradient : #region
|
||||||
editWidget = new buttonGradient(function(gradient) { return setValueInspector(gradient); } );
|
editWidget = new buttonGradient(function(gradient) { return setValueInspector(gradient); } );
|
||||||
|
|
||||||
extract_node = "Node_Gradient_Out";
|
extract_node = "Node_Gradient_Out";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.path : #region
|
case VALUE_TYPE.path : #region
|
||||||
switch(display_type) {
|
switch(display_type) {
|
||||||
case VALUE_DISPLAY.path_array :
|
case VALUE_DISPLAY.path_array :
|
||||||
|
@ -1187,6 +1212,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
|
|
||||||
extract_node = "Node_String";
|
extract_node = "Node_String";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VALUE_DISPLAY.path_save :
|
case VALUE_DISPLAY.path_save :
|
||||||
editWidget = new textBox(TEXTBOX_INPUT.text, function(str) { setValueInspector(str); } );
|
editWidget = new textBox(TEXTBOX_INPUT.text, function(str) { setValueInspector(str); } );
|
||||||
|
|
||||||
|
@ -1206,10 +1232,12 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.curve : #region
|
case VALUE_TYPE.curve : #region
|
||||||
display_type = VALUE_DISPLAY.curve;
|
display_type = VALUE_DISPLAY.curve;
|
||||||
editWidget = new curveBox(function(_modified) { return setValueInspector(_modified); });
|
editWidget = new curveBox(function(_modified) { return setValueInspector(_modified); });
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.text : #region
|
case VALUE_TYPE.text : #region
|
||||||
switch(display_type) {
|
switch(display_type) {
|
||||||
case VALUE_DISPLAY._default :
|
case VALUE_DISPLAY._default :
|
||||||
|
@ -1246,7 +1274,10 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VALUE_DISPLAY.text_tunnel :
|
case VALUE_DISPLAY.text_tunnel :
|
||||||
editWidget = new textBox(TEXTBOX_INPUT.text, function(str) { return setValueInspector(str); });
|
editWidget = new textArea(TEXTBOX_INPUT.text, function(str) { return setValueInspector(str); });
|
||||||
|
|
||||||
|
editWidget.autocomplete_server = tunnel_autocomplete_server;
|
||||||
|
|
||||||
extract_node = "Node_String";
|
extract_node = "Node_String";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1255,6 +1286,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.d3Material : #region
|
case VALUE_TYPE.d3Material : #region
|
||||||
editWidget = new materialBox(function(ind) {
|
editWidget = new materialBox(function(ind) {
|
||||||
var res = setValueInspector(ind);
|
var res = setValueInspector(ind);
|
||||||
|
@ -1266,6 +1298,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
show_in_inspector = true;
|
show_in_inspector = true;
|
||||||
extract_node = "Node_Canvas";
|
extract_node = "Node_Canvas";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.surface : #region
|
case VALUE_TYPE.surface : #region
|
||||||
editWidget = new surfaceBox(function(ind) { return setValueInspector(ind); } );
|
editWidget = new surfaceBox(function(ind) { return setValueInspector(ind); } );
|
||||||
|
|
||||||
|
@ -1273,6 +1306,7 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
show_in_inspector = true;
|
show_in_inspector = true;
|
||||||
extract_node = "Node_Canvas";
|
extract_node = "Node_Canvas";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
||||||
case VALUE_TYPE.pathnode : #region
|
case VALUE_TYPE.pathnode : #region
|
||||||
extract_node = "Node_Path";
|
extract_node = "Node_Path";
|
||||||
break; #endregion
|
break; #endregion
|
||||||
|
|
|
@ -111,6 +111,7 @@
|
||||||
PREFERENCES.panel_layout_file = "Vertical";
|
PREFERENCES.panel_layout_file = "Vertical";
|
||||||
PREFERENCES._display_scaling = 1;
|
PREFERENCES._display_scaling = 1;
|
||||||
PREFERENCES.display_scaling = 0;
|
PREFERENCES.display_scaling = 0;
|
||||||
|
|
||||||
resetScale(1);
|
resetScale(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,13 +135,13 @@
|
||||||
PANEL_COLLECTION = new Panel_Collection();
|
PANEL_COLLECTION = new Panel_Collection();
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
function resetPanel() { #region
|
function resetPanel(check = true) { #region
|
||||||
clearPanel();
|
clearPanel();
|
||||||
panelObjectInit();
|
panelObjectInit();
|
||||||
loadPanelStruct(PANEL_MAIN, CURRENT_PANEL.panel);
|
loadPanelStruct(PANEL_MAIN, CURRENT_PANEL.panel);
|
||||||
PANEL_MAIN.refresh();
|
PANEL_MAIN.refresh();
|
||||||
|
|
||||||
checkPanelValid();
|
if(check) checkPanelValid();
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
function __initPanel() { #region
|
function __initPanel() { #region
|
||||||
|
|
|
@ -1085,6 +1085,7 @@ function Panel_Preview() : PanelContent() constructor {
|
||||||
|
|
||||||
mouse_pos_string = "";
|
mouse_pos_string = "";
|
||||||
|
|
||||||
|
right_menu_x = w - ui(8);
|
||||||
if(_node == noone) return;
|
if(_node == noone) return;
|
||||||
|
|
||||||
right_menu_y += string_height("l");
|
right_menu_y += string_height("l");
|
||||||
|
@ -1093,7 +1094,6 @@ function Panel_Preview() : PanelContent() constructor {
|
||||||
draw_text(right_menu_x, right_menu_y, txt);
|
draw_text(right_menu_x, right_menu_y, txt);
|
||||||
|
|
||||||
right_menu_y += string_height("l");
|
right_menu_y += string_height("l");
|
||||||
right_menu_x = w - ui(8);
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var pseq = getNodePreviewSequence();
|
var pseq = getNodePreviewSequence();
|
||||||
|
|
|
@ -381,7 +381,7 @@ function preview_overlay_area(interact, active, _x, _y, _s, _mx, _my, _snx, _sny
|
||||||
|
|
||||||
var mode = editWidget.mode;
|
var mode = editWidget.mode;
|
||||||
|
|
||||||
if(!struct_has(self, "__overlay_hover")) __overlay_hover = [ 0, 0, 0, 0, 0 ];
|
__overlay_hover = array_verify(__overlay_hover, 5);
|
||||||
|
|
||||||
switch(mode) {
|
switch(mode) {
|
||||||
case AREA_MODE.area : return preview_overlay_area_span(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _flag);
|
case AREA_MODE.area : return preview_overlay_area_span(interact, active, _x, _y, _s, _mx, _my, _snx, _sny, _flag);
|
||||||
|
|
|
@ -99,7 +99,7 @@ function preview_overlay_gradient_range(interact, active, _x, _y, _s, _mx, _my,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!struct_has(self, "__overlay_hover")) __overlay_hover = [ 0, 0 ];
|
__overlay_hover = array_verify(__overlay_hover, 2);
|
||||||
__overlay_hover[0] = lerp_float(__overlay_hover[0], d0, 4);
|
__overlay_hover[0] = lerp_float(__overlay_hover[0], d0, 4);
|
||||||
__overlay_hover[1] = lerp_float(__overlay_hover[1], d1, 4);
|
__overlay_hover[1] = lerp_float(__overlay_hover[1], d1, 4);
|
||||||
|
|
||||||
|
|
|
@ -44,12 +44,12 @@ function preview_overlay_rotation(interact, active, _x, _y, _s, _mx, _my, _snx,
|
||||||
draw_set_alpha(1);
|
draw_set_alpha(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!struct_has(self, "__overlay_hover")) __overlay_hover = 0;
|
__overlay_hover = array_verify(__overlay_hover, 1);
|
||||||
__overlay_hover = lerp_float(__overlay_hover, index, 4);
|
__overlay_hover[0] = lerp_float(__overlay_hover[0], index, 4);
|
||||||
|
|
||||||
shader_set(sh_node_widget_rotator);
|
shader_set(sh_node_widget_rotator);
|
||||||
shader_set_color("color", COLORS._main_accent);
|
shader_set_color("color", COLORS._main_accent);
|
||||||
shader_set_f("index", __overlay_hover);
|
shader_set_f("index", __overlay_hover[0]);
|
||||||
shader_set_f("angle", degtorad(_val + 90));
|
shader_set_f("angle", degtorad(_val + 90));
|
||||||
|
|
||||||
var _arx = _x + lengthdir_x(_rad - 4, _val);
|
var _arx = _x + lengthdir_x(_rad - 4, _val);
|
||||||
|
|
|
@ -39,9 +39,9 @@ function preview_overlay_scalar(interact, active, _x, _y, _s, _mx, _my, _snx, _s
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!struct_has(self, "__overlay_hover")) __overlay_hover = 0;
|
__overlay_hover = array_verify(__overlay_hover, 1);
|
||||||
__overlay_hover = lerp_float(__overlay_hover, index, 4);
|
__overlay_hover[0] = lerp_float(__overlay_hover[0], index, 4);
|
||||||
draw_anchor(__overlay_hover, _ax, _ay, _r);
|
draw_anchor(__overlay_hover[0], _ax, _ay, _r);
|
||||||
|
|
||||||
draw_set_text(_f_p2b, fa_center, fa_bottom, COLORS._main_accent);
|
draw_set_text(_f_p2b, fa_center, fa_bottom, COLORS._main_accent);
|
||||||
draw_text_add(round(_ax), round(_ay - 4), name);
|
draw_text_add(round(_ax), round(_ay - 4), name);
|
||||||
|
|
|
@ -47,9 +47,9 @@ function preview_overlay_vector(interact, active, _x, _y, _s, _mx, _my, _snx, _s
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!struct_has(self, "__overlay_hover")) __overlay_hover = 0;
|
__overlay_hover = array_verify(__overlay_hover, 1);
|
||||||
__overlay_hover = lerp_float(__overlay_hover, _index, 4);
|
__overlay_hover[0] = lerp_float(__overlay_hover[0], _index, 4);
|
||||||
draw_anchor(__overlay_hover, _ax, _ay, _r);
|
draw_anchor(__overlay_hover[0], _ax, _ay, _r);
|
||||||
|
|
||||||
draw_set_text(_f_p2b, fa_center, fa_bottom, COLORS._main_accent);
|
draw_set_text(_f_p2b, fa_center, fa_bottom, COLORS._main_accent);
|
||||||
draw_text_add(round(_ax), round(_ay - 4), name);
|
draw_text_add(round(_ax), round(_ay - 4), name);
|
||||||
|
|
|
@ -130,7 +130,6 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
||||||
o_dialog_textbox_autocomplete.deactivate(self);
|
o_dialog_textbox_autocomplete.deactivate(self);
|
||||||
o_dialog_textbox_function_guide.deactivate(self);
|
o_dialog_textbox_function_guide.deactivate(self);
|
||||||
|
|
||||||
if(!isCodeFormat()) return;
|
|
||||||
if(autocomplete_server == noone) return;
|
if(autocomplete_server == noone) return;
|
||||||
if(!use_autocomplete) return;
|
if(!use_autocomplete) return;
|
||||||
|
|
||||||
|
@ -143,6 +142,7 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
||||||
localParams = parser_server(crop, autocomplete_object);
|
localParams = parser_server(crop, autocomplete_object);
|
||||||
|
|
||||||
var data = autocomplete_server(pmt, localParams, autocomplete_context);
|
var data = autocomplete_server(pmt, localParams, autocomplete_context);
|
||||||
|
|
||||||
o_dialog_textbox_autocomplete.data = data;
|
o_dialog_textbox_autocomplete.data = data;
|
||||||
if(array_length(data)) {
|
if(array_length(data)) {
|
||||||
o_dialog_textbox_autocomplete.data = data;
|
o_dialog_textbox_autocomplete.data = data;
|
||||||
|
@ -150,6 +150,8 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
||||||
autocomplete_modi = true;
|
autocomplete_modi = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(function_guide_server == noone) return;
|
||||||
|
|
||||||
var _c = cursor;
|
var _c = cursor;
|
||||||
var _v = false;
|
var _v = false;
|
||||||
var _fn = "";
|
var _fn = "";
|
||||||
|
|
25
scripts/tunnel_server/tunnel_server.gml
Normal file
25
scripts/tunnel_server/tunnel_server.gml
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
function tunnel_autocomplete_server(prompt, params = []) {
|
||||||
|
var res = [];
|
||||||
|
|
||||||
|
var pr_list = ds_priority_create();
|
||||||
|
|
||||||
|
//////////////////////////////////
|
||||||
|
ds_priority_clear(pr_list);
|
||||||
|
|
||||||
|
var _tkeys = ds_map_keys_to_array(TUNNELS_IN);
|
||||||
|
for( var i = 0, n = array_length(_tkeys); i < n; i++ ) {
|
||||||
|
var gl = _tkeys[i];
|
||||||
|
|
||||||
|
var match = string_partial_match(string_lower(gl), string_lower(prompt));
|
||||||
|
if(match == -9999) continue;
|
||||||
|
|
||||||
|
ds_priority_add(pr_list, [[THEME.ac_constant, 2], gl, "tunnel", gl], match);
|
||||||
|
}
|
||||||
|
|
||||||
|
repeat(ds_priority_size(pr_list))
|
||||||
|
array_push(res, ds_priority_delete_max(pr_list));
|
||||||
|
|
||||||
|
ds_priority_destroy(pr_list);
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
13
scripts/tunnel_server/tunnel_server.yy
Normal file
13
scripts/tunnel_server/tunnel_server.yy
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"$GMScript":"",
|
||||||
|
"%Name":"tunnel_server",
|
||||||
|
"isCompatibility":false,
|
||||||
|
"isDnD":false,
|
||||||
|
"name":"tunnel_server",
|
||||||
|
"parent":{
|
||||||
|
"name":"tunnel",
|
||||||
|
"path":"folders/nodes/data/misc/tunnel.yy",
|
||||||
|
},
|
||||||
|
"resourceType":"GMScript",
|
||||||
|
"resourceVersion":"2.0",
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue