mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-02-21 17:36:05 +01:00
csv
This commit is contained in:
parent
8d388a164f
commit
cbf3c51db9
18 changed files with 474 additions and 144 deletions
|
@ -733,6 +733,7 @@
|
|||
{"name":"node_array_copy","order":14,"path":"scripts/node_array_copy/node_array_copy.yy",},
|
||||
{"name":"node_array_csv_parse","order":15,"path":"scripts/node_array_csv_parse/node_array_csv_parse.yy",},
|
||||
{"name":"node_array_find","order":1,"path":"scripts/node_array_find/node_array_find.yy",},
|
||||
{"name":"node_array_flattern","order":24,"path":"scripts/node_array_flattern/node_array_flattern.yy",},
|
||||
{"name":"node_array_get","order":7,"path":"scripts/node_array_get/node_array_get.yy",},
|
||||
{"name":"node_array_length","order":8,"path":"scripts/node_array_length/node_array_length.yy",},
|
||||
{"name":"node_array_pin","order":22,"path":"scripts/node_array_pin/node_array_pin.yy",},
|
||||
|
@ -1955,6 +1956,7 @@
|
|||
{"name":"s_node_array_copy","order":4,"path":"sprites/s_node_array_copy/s_node_array_copy.yy",},
|
||||
{"name":"s_node_array_csv_parse","order":19,"path":"sprites/s_node_array_csv_parse/s_node_array_csv_parse.yy",},
|
||||
{"name":"s_node_array_find","order":5,"path":"sprites/s_node_array_find/s_node_array_find.yy",},
|
||||
{"name":"s_node_array_flattern","order":24,"path":"sprites/s_node_array_flattern/s_node_array_flattern.yy",},
|
||||
{"name":"s_node_array_get","order":6,"path":"sprites/s_node_array_get/s_node_array_get.yy",},
|
||||
{"name":"s_node_array_insert","order":7,"path":"sprites/s_node_array_insert/s_node_array_insert.yy",},
|
||||
{"name":"s_node_array_length","order":8,"path":"sprites/s_node_array_length/s_node_array_length.yy",},
|
||||
|
|
|
@ -1903,6 +1903,7 @@
|
|||
{"id":{"name":"node_array_copy","path":"scripts/node_array_copy/node_array_copy.yy",},},
|
||||
{"id":{"name":"node_array_csv_parse","path":"scripts/node_array_csv_parse/node_array_csv_parse.yy",},},
|
||||
{"id":{"name":"node_array_find","path":"scripts/node_array_find/node_array_find.yy",},},
|
||||
{"id":{"name":"node_array_flattern","path":"scripts/node_array_flattern/node_array_flattern.yy",},},
|
||||
{"id":{"name":"node_array_get","path":"scripts/node_array_get/node_array_get.yy",},},
|
||||
{"id":{"name":"node_array_insert","path":"scripts/node_array_insert/node_array_insert.yy",},},
|
||||
{"id":{"name":"node_array_length","path":"scripts/node_array_length/node_array_length.yy",},},
|
||||
|
@ -3291,6 +3292,7 @@
|
|||
{"id":{"name":"s_node_array_copy","path":"sprites/s_node_array_copy/s_node_array_copy.yy",},},
|
||||
{"id":{"name":"s_node_array_csv_parse","path":"sprites/s_node_array_csv_parse/s_node_array_csv_parse.yy",},},
|
||||
{"id":{"name":"s_node_array_find","path":"sprites/s_node_array_find/s_node_array_find.yy",},},
|
||||
{"id":{"name":"s_node_array_flattern","path":"sprites/s_node_array_flattern/s_node_array_flattern.yy",},},
|
||||
{"id":{"name":"s_node_array_get","path":"sprites/s_node_array_get/s_node_array_get.yy",},},
|
||||
{"id":{"name":"s_node_array_insert","path":"sprites/s_node_array_insert/s_node_array_insert.yy",},},
|
||||
{"id":{"name":"s_node_array_length","path":"sprites/s_node_array_length/s_node_array_length.yy",},},
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"name":"Array Flattern",
|
||||
"baseNode":"Node_Array_Flattern",
|
||||
"tooltip":"Flattern higher dimension array into 1 dimension linear array.",
|
||||
"spr":"s_node_array_flattern",
|
||||
"io":[
|
||||
"float"
|
||||
],
|
||||
"pxc_version":118090,
|
||||
}
|
|
@ -754,6 +754,7 @@
|
|||
"Node_Array_Shuffle",
|
||||
"Node_Array_Unique",
|
||||
"Node_Array_Boolean_Opr",
|
||||
"Node_Array_Flattern",
|
||||
{ "label": "/Group Operators" },
|
||||
"Node_Array_Sort",
|
||||
"Node_Iterate_Each_Inline",
|
||||
|
|
|
@ -10,11 +10,11 @@ event_inherited();
|
|||
|
||||
font = f_p1;
|
||||
arrayBox = noone;
|
||||
|
||||
anchor = ANCHOR.top | ANCHOR.left;
|
||||
mode = 0;
|
||||
anchor = ANCHOR.top | ANCHOR.left;
|
||||
|
||||
sc_content = new scrollPane(0, 0, function(_y, _m) {
|
||||
draw_clear(COLORS.panel_bg_clear);
|
||||
draw_clear(COLORS.panel_bg_clear, 1);
|
||||
|
||||
var hght = line_get_height(font, 8);
|
||||
var _h = array_length(arrayBox.data) * hght;
|
||||
|
@ -24,11 +24,17 @@ event_inherited();
|
|||
for(var i = 0; i < array_length(arrayBox.data); i++) {
|
||||
var _ly = _y + i * hght;
|
||||
var yc = _ly + hght / 2;
|
||||
var exists = false;
|
||||
var exists = 0;
|
||||
|
||||
for( var j = 0; j < array_length(array); j++ ) {
|
||||
if(arrayBox.data[i] == array[j])
|
||||
exists = true;
|
||||
if(mode == 0) {
|
||||
for( var j = 0; j < array_length(array); j++ )
|
||||
if(arrayBox.data[i] == array[j]) exists = 1;
|
||||
|
||||
} else if(mode == 1) {
|
||||
for( var j = 0; j < array_length(array); j++ ) {
|
||||
if("+" + arrayBox.data[i] == array[j]) exists = 1;
|
||||
if("-" + arrayBox.data[i] == array[j]) exists = -1;
|
||||
}
|
||||
}
|
||||
|
||||
var ind = 0;
|
||||
|
@ -43,8 +49,22 @@ event_inherited();
|
|||
ind = 1;
|
||||
|
||||
if(sFOCUS && (mouse_press(mb_left) || keyboard_check_pressed(vk_enter))) {
|
||||
if(exists) array_remove(array, arrayBox.data[i]);
|
||||
else array_push(array, arrayBox.data[i]);
|
||||
if(mode == 0) {
|
||||
if(exists) array_remove(array, arrayBox.data[i]);
|
||||
else array_push(array, arrayBox.data[i]);
|
||||
|
||||
} else if(mode == 1) {
|
||||
switch(exists) {
|
||||
case 0 : array_push(array, "+" + arrayBox.data[i]); break;
|
||||
|
||||
case 1 :
|
||||
array_remove(array, "+" + arrayBox.data[i]);
|
||||
array_push(array, "-" + arrayBox.data[i]);
|
||||
break;
|
||||
|
||||
case -1 : array_remove(array, "-" + arrayBox.data[i]); break;
|
||||
}
|
||||
}
|
||||
|
||||
if(arrayBox.onModify) arrayBox.onModify();
|
||||
}
|
||||
|
@ -52,10 +72,17 @@ event_inherited();
|
|||
|
||||
var bs = hght - ui(8);
|
||||
draw_sprite_stretched(THEME.checkbox_def, ind, ui(20) - bs / 2, yc - bs / 2, bs, bs);
|
||||
if(exists) draw_sprite_stretched_ext(THEME.checkbox_def, 2, ui(20) - bs / 2, yc - bs / 2, bs, bs, COLORS._main_accent, 1);
|
||||
|
||||
if(mode == 0) {
|
||||
if(exists) draw_sprite_stretched_ext(THEME.checkbox_def, 2, ui(20) - bs / 2, yc - bs / 2, bs, bs, COLORS._main_accent, 1);
|
||||
|
||||
} else if(mode == 1) {
|
||||
if(exists == 1) draw_sprite_ext(THEME.arrow, 1, ui(20), yc, 1, 1, 0, COLORS._main_value_positive, 1);
|
||||
else if(exists == -1) draw_sprite_ext(THEME.arrow, 3, ui(20), yc + ui(2), 1, 1, 0, COLORS._main_value_negative, 1);
|
||||
}
|
||||
|
||||
draw_set_text(font, fa_left, fa_center, COLORS._main_text);
|
||||
draw_text(ui(40), yc, arrayBox.data[i]);
|
||||
draw_text_add(ui(40), yc, arrayBox.data[i]);
|
||||
}
|
||||
|
||||
if(sFOCUS) {
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
LATEST_VERSION = 1_18_00_0;
|
||||
VERSION = 1_18_08_0;
|
||||
SAVE_VERSION = 1_18_09_0;
|
||||
VERSION_STRING = MAC? "1.18.003m" : "1.18.9.001";
|
||||
VERSION_STRING = MAC? "1.18.003m" : "1.18.9.002";
|
||||
BUILD_NUMBER = 118080.002;
|
||||
PREF_VERSION = 1_17_1;
|
||||
|
||||
|
|
|
@ -2,25 +2,148 @@ function Node_Array_CSV_Parse(_x, _y, _group = noone) : Node(_x, _y, _group) con
|
|||
name = "CSV Parse";
|
||||
setDimension(96, 48);
|
||||
|
||||
newInput(0, nodeValue_Text("CSV string", self, 0))
|
||||
newInput(0, nodeValue_Text("CSV string", self, ""))
|
||||
.setVisible(true, true);
|
||||
|
||||
newInput(1, nodeValue_Int("Skip line", self, 0));
|
||||
|
||||
newInput(2, nodeValue_Bool("First Row Header", self, false));
|
||||
|
||||
newInput(3, nodeValue_Text("Sort", self, []))
|
||||
.setDisplay(VALUE_DISPLAY.text_array, { data: [] });
|
||||
|
||||
newInput(4, nodeValue_Bool("Output Struct", self, false));
|
||||
|
||||
newInput(5, nodeValue_Text("Columns", self, []))
|
||||
.setDisplay(VALUE_DISPLAY.text_array, { data: [] });
|
||||
|
||||
newOutput(0, nodeValue_Output("Array", self, VALUE_TYPE.any, 0))
|
||||
.setArrayDepth(1);
|
||||
|
||||
input_display_list = [
|
||||
["Input", false], 0, 1,
|
||||
["Table", false], 2, 3,
|
||||
["Output", false], 5, 4,
|
||||
];
|
||||
|
||||
inputs[0].editWidget.max_height = ui(240);
|
||||
inputs[3].editWidget.mode = 1;
|
||||
|
||||
__sortKey = "";
|
||||
|
||||
function sortValueAsc(a,b,k) {
|
||||
var va = a[$ k];
|
||||
var vb = b[$ k];
|
||||
|
||||
if(is_string(va)) return string_compare(va,vb);
|
||||
if(is_numeric(va)) return va-vb;
|
||||
return 0;
|
||||
}
|
||||
|
||||
function sortValueDec(a,b,k) {
|
||||
var va = a[$ k];
|
||||
var vb = b[$ k];
|
||||
|
||||
if(is_string(va)) return string_compare(vb,va);
|
||||
if(is_numeric(va)) return vb-va;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static update = function(frame = CURRENT_FRAME) {
|
||||
var _str = getInputData(0);
|
||||
var _skp = getInputData(1);
|
||||
var _str = getInputData(0);
|
||||
var _skp = getInputData(1);
|
||||
var _hed = getInputData(2);
|
||||
var _sort = getInputData(3);
|
||||
var _struct = getInputData(4);
|
||||
var _ocol = getInputData(5);
|
||||
|
||||
var _lines = string_splice(_str, "\n");
|
||||
var _arr = [];
|
||||
var _lines = _str;
|
||||
var _lAmo = array_length(_lines);
|
||||
var _head = noone;
|
||||
var _sarr = [];
|
||||
|
||||
for( var i = _skp; i < array_length(_lines); i++ )
|
||||
array_push(_arr, string_splice(_lines[i], ","));
|
||||
var _col = 0;
|
||||
|
||||
outputs[0].setValue(_arr);
|
||||
////- PARSE
|
||||
|
||||
for( var i = _skp; i < _lAmo; i++ ) {
|
||||
var _l = _lines[i];
|
||||
_l = string_replace_all(_l, "\"", "");
|
||||
_l = string_trim(_l);
|
||||
|
||||
var _row = string_split(_l, ",");
|
||||
|
||||
if(_hed && _head == noone) {
|
||||
_head = _row;
|
||||
_col = array_length(_row);
|
||||
continue;
|
||||
}
|
||||
|
||||
if(_head != noone) {
|
||||
var _rowStr = {};
|
||||
for( var j = 0, m = min(array_length(_row), _col); j < m; j++ )
|
||||
_rowStr[$ _head[j]] = _row[j];
|
||||
array_push(_sarr, _rowStr);
|
||||
}
|
||||
}
|
||||
|
||||
////- SORT
|
||||
|
||||
if(_hed && _head != noone) {
|
||||
inputs[3].editWidget.data = _head;
|
||||
inputs[5].editWidget.data = _head;
|
||||
}
|
||||
|
||||
__sort = [];
|
||||
for( var i = 0, n = array_length(_sort); i < n; i++ ) {
|
||||
var _srt = _sort[i];
|
||||
__sort[i] = [
|
||||
string_char_at(_srt, 1) == "+",
|
||||
string_copy(_srt, 2, string_length(_srt) - 1)
|
||||
];
|
||||
}
|
||||
|
||||
array_sort(_sarr, function(a,b) /*=>*/ {
|
||||
for( var i = 0, n = array_length(__sort); i < n; i++ ) {
|
||||
var _srt = __sort[i];
|
||||
var _res = _srt[0]? sortValueAsc(a, b, _srt[1]) : sortValueDec(a, b, _srt[1]);
|
||||
if(_res != 0) return _res;
|
||||
}
|
||||
|
||||
return 0;
|
||||
});
|
||||
|
||||
////- OUTPUT
|
||||
|
||||
if(_struct && _head != noone) {
|
||||
if(!array_empty(_ocol)) {
|
||||
var _a = [];
|
||||
|
||||
for( var i = 0, n = array_length(_sarr); i < n; i++ ) {
|
||||
var _rw = {};
|
||||
for( var j = 0, m = array_length(outCol); j < m; j++ )
|
||||
_rw[$ outCol[j]] = _sarr[i][$ outCol[j]];
|
||||
_a[i] = _rw;
|
||||
}
|
||||
|
||||
outputs[0].setValue(_a);
|
||||
|
||||
} else
|
||||
outputs[0].setValue(_sarr);
|
||||
|
||||
} else {
|
||||
var outCol = array_empty(_ocol)? _head : _ocol;
|
||||
var _a = [];
|
||||
|
||||
for( var i = 0, n = array_length(_sarr); i < n; i++ ) {
|
||||
var _rw = [];
|
||||
for( var j = 0, m = array_length(outCol); j < m; j++ )
|
||||
_rw[j] = _sarr[i][$ outCol[j]];
|
||||
_a[i] = _rw;
|
||||
}
|
||||
|
||||
outputs[0].setValue(_a);
|
||||
}
|
||||
}
|
||||
|
||||
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
||||
|
|
31
scripts/node_array_flattern/node_array_flattern.gml
Normal file
31
scripts/node_array_flattern/node_array_flattern.gml
Normal file
|
@ -0,0 +1,31 @@
|
|||
function Node_Array_Flattern(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Array Flattern";
|
||||
setDimension(96, 48);
|
||||
|
||||
newInput(0, nodeValue("Array in", self, CONNECT_TYPE.input, VALUE_TYPE.any, []))
|
||||
.setVisible(true, true);
|
||||
|
||||
newOutput(0, nodeValue_Output("Flatterned Array", self, VALUE_TYPE.any, []));
|
||||
|
||||
static update = function(frame = CURRENT_FRAME) {
|
||||
var arr = getInputData(0);
|
||||
|
||||
inputs[0].setType(VALUE_TYPE.any);
|
||||
outputs[0].setType(VALUE_TYPE.any);
|
||||
|
||||
if(!is_array(arr)) return;
|
||||
|
||||
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_spread(arr);
|
||||
outputs[0].setValue(_arr);
|
||||
}
|
||||
|
||||
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
||||
var bbox = drawGetBbox(xx, yy, _s);
|
||||
draw_sprite_fit(s_node_array_flattern, 0, bbox.xc, bbox.yc, bbox.w, bbox.h);
|
||||
}
|
||||
}
|
14
scripts/node_array_flattern/node_array_flattern.yy
Normal file
14
scripts/node_array_flattern/node_array_flattern.yy
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"$GMScript":"v1",
|
||||
"%Name":"node_array_flattern",
|
||||
"isCompatibility":false,
|
||||
"isDnD":false,
|
||||
"name":"node_array_flattern",
|
||||
"parent":{
|
||||
"name":"array",
|
||||
"path":"folders/nodes/data/value/array.yy",
|
||||
},
|
||||
"resourceType":"GMScript",
|
||||
"resourceVersion":"2.0",
|
||||
"tags":[],
|
||||
}
|
|
@ -28,14 +28,13 @@ function Node_create_CSV_File_Read_path(_x, _y, path) {
|
|||
function Node_CSV_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "CSV File In";
|
||||
color = COLORS.node_blend_input;
|
||||
|
||||
w = 128;
|
||||
w = 128;
|
||||
|
||||
newInput(0, nodeValue_Path("Path", self, ""))
|
||||
.setDisplay(VALUE_DISPLAY.path_load, { filter: "CSV file|*.csv" })
|
||||
.rejectArray();
|
||||
|
||||
newInput(1, nodeValue_Bool("Convert to number", self, false))
|
||||
newInput(1, nodeValue_Bool("Convert to Number", self, false))
|
||||
.rejectArray();
|
||||
|
||||
newOutput(0, nodeValue_Output("Content", self, VALUE_TYPE.text, ""));
|
||||
|
@ -43,22 +42,21 @@ function Node_CSV_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
|||
newOutput(1, nodeValue_Output("Path", self, VALUE_TYPE.path, ""))
|
||||
.setVisible(true, true);
|
||||
|
||||
input_display_list = [ 0,
|
||||
["Data", false], 1,
|
||||
];
|
||||
|
||||
content = "";
|
||||
path_current = "";
|
||||
|
||||
edit_time = 0;
|
||||
attributes.file_checker = true;
|
||||
array_push(attributeEditors, [ "File Watcher", function() { return attributes.file_checker; },
|
||||
new checkBox(function() { attributes.file_checker = !attributes.file_checker; }) ]);
|
||||
array_push(attributeEditors, [ "File Watcher", function() /*=>*/ {return attributes.file_checker}, new checkBox(function() /*=>*/ { attributes.file_checker = !attributes.file_checker; }) ]);
|
||||
|
||||
first_update = false;
|
||||
|
||||
on_drop_file = function(path) {
|
||||
if(updatePaths(path)) {
|
||||
doUpdate();
|
||||
return true;
|
||||
}
|
||||
|
||||
if(updatePaths(path)) { doUpdate(); return true; }
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -66,13 +64,12 @@ function Node_CSV_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
|||
path = path_get(path);
|
||||
if(path == -1) return false;
|
||||
|
||||
var ext = string_lower(filename_ext(path));
|
||||
var _name = string_replace(filename_name(path), filename_ext(path), "");
|
||||
var ext = string_lower(filename_ext(path));
|
||||
var _name = filename_name_only(path);
|
||||
|
||||
if(ext != ".csv") return false;
|
||||
|
||||
outputs[1].setValue(path);
|
||||
|
||||
content = file_text_read_all_lines(path);
|
||||
|
||||
var convert = getInputData(1);
|
||||
|
|
|
@ -8,7 +8,7 @@ globalvar GROUP_IO_TYPE_NAME, GROUP_IO_TYPE_MAP, GROUP_IO_DISPLAY;
|
|||
|
||||
-1, "3D Mesh", "3D Light", "3D Camera", "3D Scene",
|
||||
"3D Material", -1, "PCX", "Audio", "Fluid Domain",
|
||||
"SDF",
|
||||
"SDF", "Gradient",
|
||||
];
|
||||
|
||||
GROUP_IO_TYPE_MAP = [ VALUE_TYPE.integer, VALUE_TYPE.float, VALUE_TYPE.boolean, VALUE_TYPE.color, VALUE_TYPE.surface,
|
||||
|
@ -18,50 +18,51 @@ globalvar GROUP_IO_TYPE_NAME, GROUP_IO_TYPE_MAP, GROUP_IO_DISPLAY;
|
|||
|
||||
noone, VALUE_TYPE.d3Mesh, VALUE_TYPE.d3Light, VALUE_TYPE.d3Camera, VALUE_TYPE.d3Scene,
|
||||
VALUE_TYPE.d3Material, noone, VALUE_TYPE.PCXnode, VALUE_TYPE.audioBit, VALUE_TYPE.fdomain,
|
||||
VALUE_TYPE.sdf,
|
||||
VALUE_TYPE.sdf, VALUE_TYPE.gradient,
|
||||
];
|
||||
|
||||
GROUP_IO_DISPLAY = [
|
||||
|
||||
/*Integer*/ [ "Default", "Range", "Rotation", "Rotation range", "Slider", "Slider range", "Padding", "Vector", "Vector range", "Area", "Enum button", "Menu scroll" ],
|
||||
/*Float*/ [ "Default", "Range", "Rotation", "Rotation range", "Slider", "Slider range", "Padding", "Vector", "Vector range", "Area" ],
|
||||
/*Boolean*/ [ "Default" ],
|
||||
/*Color*/ [ "Default", "Gradient", "Palette" ],
|
||||
/*Surface*/ [ "Default" ],
|
||||
/*Integer*/ [ "Integer", "Range", "Rotation", "Rotation range", "Slider", "Slider range", "Padding", "Vector", "Vector range", "Area", "Enum button", "Menu scroll" ],
|
||||
/*Float*/ [ "Float", "Range", "Rotation", "Rotation range", "Slider", "Slider range", "Padding", "Vector", "Vector range", "Area" ],
|
||||
/*Boolean*/ [ "Boolean" ],
|
||||
/*Color*/ [ "Color", "Palette" ],
|
||||
/*Surface*/ [ "Surface" ],
|
||||
|
||||
/*Path*/ [ "Default" ],
|
||||
/*Path*/ [ "Path" ],
|
||||
/*Curve*/ [ "Curve", ],
|
||||
/*Text*/ [ "Default" ],
|
||||
/*Object*/ [ "Default" ],
|
||||
/*Node*/ [ "Default" ],
|
||||
/*Text*/ [ "Text" ],
|
||||
/*Object*/ [ "Object" ],
|
||||
/*Node*/ [ "Node" ],
|
||||
|
||||
/*3D*/ [ "Default" ],
|
||||
/*Any*/ [ "Default" ],
|
||||
/*Pathnode*/ [ "Default" ],
|
||||
/*Particle*/ [ "Default" ],
|
||||
/*Rigid*/ [ "Default" ],
|
||||
/*3D*/ [ "-" ],
|
||||
/*Any*/ [ "Any" ],
|
||||
/*Pathnode*/ [ "Pathnode" ],
|
||||
/*Particle*/ [ "Particle" ],
|
||||
/*Rigid*/ [ "Rigidbody Object" ],
|
||||
|
||||
/*Sdomain*/ [ "Default" ],
|
||||
/*Struct*/ [ "Default" ],
|
||||
/*Strand*/ [ "Default" ],
|
||||
/*Mesh*/ [ "Default" ],
|
||||
/*Trigger*/ [ "Default" ],
|
||||
/*Sdomain*/ [ "Domain" ],
|
||||
/*Struct*/ [ "Struct" ],
|
||||
/*Strand*/ [ "Strand" ],
|
||||
/*Mesh*/ [ "Mesh" ],
|
||||
/*Trigger*/ [ "Trigger" ],
|
||||
|
||||
//=========================//
|
||||
|
||||
/*Noone*/ [ "Default" ],
|
||||
/*3D Mesh*/ [ "Default" ],
|
||||
/*3D Light*/ [ "Default" ],
|
||||
/*3D Camera*/ [ "Default" ],
|
||||
/*3D Scene*/ [ "Default" ],
|
||||
/*Noone*/ [ "-" ],
|
||||
/*3D Mesh*/ [ "3D Mesh" ],
|
||||
/*3D Light*/ [ "3D Light" ],
|
||||
/*3D Camera*/ [ "3D Camera" ],
|
||||
/*3D Scene*/ [ "3D Scene" ],
|
||||
|
||||
/*3D Material*/ [ "Default" ],
|
||||
/*noone*/ [ "Default" ],
|
||||
/*PCX*/ [ "Default" ],
|
||||
/*Audio*/ [ "Default" ],
|
||||
/*Fdomain*/ [ "Default" ],
|
||||
/*3D Material*/ [ "3D Material" ],
|
||||
/*noone*/ [ "-" ],
|
||||
/*PCX*/ [ "PCX" ],
|
||||
/*Audio*/ [ "Audio" ],
|
||||
/*Fdomain*/ [ "Fdomain" ],
|
||||
|
||||
/*SDF*/ [ "Default" ],
|
||||
/*SDF*/ [ "SDF" ],
|
||||
/*Gradient*/ [ "Gradient" ],
|
||||
|
||||
];
|
||||
#endregion
|
||||
|
@ -146,42 +147,31 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
|||
attributes.inherit_type = false;
|
||||
|
||||
var ind = array_find(GROUP_IO_TYPE_MAP, juncTo.type);
|
||||
if(ind == -1) return;
|
||||
|
||||
outputs[0].setType(juncTo.type);
|
||||
inputs[2].setValue(ind);
|
||||
|
||||
if(ind != -1) inputs[2].setValue(ind);
|
||||
|
||||
switch(instanceof(juncTo)) {
|
||||
case "__NodeValue_Vec2" :
|
||||
case "__NodeValue_Dimension" :
|
||||
inputs[0].setValue(array_find(GROUP_IO_DISPLAY[0], "Vector"));
|
||||
inputs[4].setValue(0);
|
||||
break;
|
||||
inputs[0].setValue(array_find(GROUP_IO_DISPLAY[0], "Vector")); inputs[4].setValue(0); break;
|
||||
|
||||
case "__NodeValue_Vec2_Range" :
|
||||
inputs[0].setValue(array_find(GROUP_IO_DISPLAY[0], "Vector range"));
|
||||
inputs[4].setValue(0);
|
||||
break;
|
||||
inputs[0].setValue(array_find(GROUP_IO_DISPLAY[0], "Vector range")); inputs[4].setValue(0); break;
|
||||
|
||||
case "__NodeValue_Vec3" :
|
||||
inputs[0].setValue(array_find(GROUP_IO_DISPLAY[0], "Vector"));
|
||||
inputs[4].setValue(1);
|
||||
break;
|
||||
inputs[0].setValue(array_find(GROUP_IO_DISPLAY[0], "Vector")); inputs[4].setValue(1); break;
|
||||
|
||||
case "__NodeValue_Vec3_Range" :
|
||||
inputs[0].setValue(array_find(GROUP_IO_DISPLAY[0], "Vector range"));
|
||||
inputs[4].setValue(1);
|
||||
break;
|
||||
inputs[0].setValue(array_find(GROUP_IO_DISPLAY[0], "Vector range")); inputs[4].setValue(1); break;
|
||||
|
||||
case "__NodeValue_Vec4" :
|
||||
inputs[0].setValue(array_find(GROUP_IO_DISPLAY[0], "Vector"));
|
||||
inputs[4].setValue(2);
|
||||
break;
|
||||
inputs[0].setValue(array_find(GROUP_IO_DISPLAY[0], "Vector")); inputs[4].setValue(2); break;
|
||||
|
||||
case "__NodeValue_Rotation" :
|
||||
inputs[0].setValue(array_find(GROUP_IO_DISPLAY[0], "Rotation"));
|
||||
inputs[4].setValue(2);
|
||||
break;
|
||||
inputs[0].setValue(array_find(GROUP_IO_DISPLAY[0], "Rotation")); inputs[4].setValue(2); break;
|
||||
|
||||
case "__NodeValue_Palette" : inputs[0].setValue(1); break;
|
||||
}
|
||||
|
||||
juncTo.value_from = noone;
|
||||
|
@ -274,12 +264,9 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
|||
|
||||
if(index == 2) {
|
||||
if(outputs[0].type != _val_type) {
|
||||
var _o = outputs[0];
|
||||
for(var j = 0; j < array_length(_o.value_to); j++) {
|
||||
var _to = _o.value_to[j];
|
||||
if(_to.value_from == _o)
|
||||
_to.removeFrom();
|
||||
}
|
||||
var _to = outputs[0].getJunctionTo();
|
||||
for( var i = 0, n = array_length(_to); i < n; i++ )
|
||||
_to[i].removeFrom();
|
||||
}
|
||||
|
||||
inputs[0].setValue(0);
|
||||
|
@ -307,6 +294,7 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
|||
inParent.def_val = 0;
|
||||
inParent.setDisplay(VALUE_DISPLAY.slider, { range: [_range[0], _range[1], _step] });
|
||||
break;
|
||||
|
||||
case "Slider range" :
|
||||
if(!is_array(_val) || array_length(_val) != 2)
|
||||
inParent.animator = new valueAnimator([0, 0], inParent);
|
||||
|
@ -355,12 +343,14 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
|||
|
||||
inParent.def_val = [0, 0];
|
||||
break;
|
||||
|
||||
case 1 :
|
||||
if(!is_array(_val) || array_length(_val) != 3)
|
||||
inParent.animator = new valueAnimator([0, 0, 0], inParent);
|
||||
|
||||
inParent.def_val = [0, 0, 0];
|
||||
break;
|
||||
|
||||
case 2 :
|
||||
if(!is_array(_val) || array_length(_val) != 4)
|
||||
inParent.animator = new valueAnimator([0, 0, 0, 0], inParent);
|
||||
|
@ -399,8 +389,7 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru
|
|||
outputs[0].setType(inParent.type);
|
||||
|
||||
inParent.animator = new valueAnimator(new gradientObject(cola(c_white)), inParent);
|
||||
|
||||
inParent.def_val = new gradientObject(cola(c_white));
|
||||
inParent.def_val = new gradientObject(cola(c_white));
|
||||
inParent.setDisplay(VALUE_DISPLAY._default);
|
||||
break;
|
||||
|
||||
|
|
|
@ -3,9 +3,9 @@ function Node_Stagger(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||
|
||||
newInput(0, nodeValue_Surface("Surface", self));
|
||||
|
||||
newInput(1, nodeValue_Int("Delay Step", self, 1));
|
||||
newInput(1, nodeValue_Float("Delay Step", self, 1));
|
||||
|
||||
newInput(2, nodeValue_Int("Delay Amount", self, 1));
|
||||
newInput(2, nodeValue_Float("Delay Amount", self, 1));
|
||||
|
||||
newInput(3, nodeValue_Curve("Stagger Curve", self, CURVE_DEF_01));
|
||||
|
||||
|
@ -47,22 +47,19 @@ function Node_Stagger(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
|
|||
var _sh = surface_get_height_safe(_surf);
|
||||
|
||||
surf_indexes[_array_index][_time] = surface_verify(surf_indexes[_array_index][_time], _sw, _sh);
|
||||
surface_set_target(surf_indexes[_array_index][_time]);
|
||||
DRAW_CLEAR
|
||||
surface_set_shader(surf_indexes[_array_index][_time]);
|
||||
draw_surface_safe(_surf);
|
||||
surface_reset_target();
|
||||
surface_reset_shader();
|
||||
|
||||
_output = surface_verify(_output, _sw, _sh);
|
||||
surface_set_target(_output);
|
||||
DRAW_CLEAR
|
||||
|
||||
surface_set_shader(_output);
|
||||
if(0 <= _frtm && _frtm < TOTAL_FRAMES) {
|
||||
draw_surface_safe(surf_indexes[_array_index][_frtm]);
|
||||
|
||||
surface_free(surf_indexes[_array_index][_frtm]);
|
||||
surf_indexes[_array_index][_frtm] = 0;
|
||||
}
|
||||
surface_reset_target();
|
||||
surface_reset_shader();
|
||||
|
||||
return _output;
|
||||
}
|
||||
|
|
|
@ -1012,7 +1012,7 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
|||
text_y_max = max(0, total_h - hh + 16);
|
||||
text_y = lerp_float(text_y, text_y_to, 5);
|
||||
|
||||
if(hover) {
|
||||
if(ihover) {
|
||||
if(mouse_wheel_down()) text_y_to = clamp(text_y_to - ui(64) * SCROLL_SPEED, -text_y_max, 0);
|
||||
if(mouse_wheel_up()) text_y_to = clamp(text_y_to + ui(64) * SCROLL_SPEED, -text_y_max, 0);
|
||||
}
|
||||
|
@ -1034,12 +1034,12 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
|||
}
|
||||
|
||||
if(text_y_max) {
|
||||
var hov = hover && point_in_rectangle(_m[0], _m[1], scr_x - 3, _y, _x + _w, _y + _h);
|
||||
var hov = ihover && point_in_rectangle(_m[0], _m[1], scr_x - 3, _y, _x + _w, _y + _h);
|
||||
|
||||
draw_sprite_stretched_ext(THEME.ui_scrollbar, 0, scr_x, scr_y, scr_w, scr_h, COLORS.scrollbar_bg, 1);
|
||||
draw_sprite_stretched_ext(THEME.ui_scrollbar, 0, scr_x, bar_y, scr_w, bar_h, hov || text_scrolling? COLORS.scrollbar_hover : COLORS.scrollbar_idle, 1);
|
||||
|
||||
if(mouse_press(mb_left, hov && active)) {
|
||||
if(hov && mouse_press(mb_left, iactive)) {
|
||||
text_scrolling = true;
|
||||
text_scroll_sy = text_y;
|
||||
text_scroll_my = _m[1];
|
||||
|
|
|
@ -7,10 +7,13 @@ function textArrayBox(arraySet, data, onModify = noone) : widget() constructor {
|
|||
|
||||
hide = false;
|
||||
open = false;
|
||||
mode = 0;
|
||||
|
||||
pressed = false;
|
||||
dragging = noone;
|
||||
|
||||
static drawParam = function(params) {
|
||||
setParam(params);
|
||||
|
||||
return draw(params.x, params.y, params.w, params.h, params.m, params.rx, params.ry);
|
||||
}
|
||||
|
||||
|
@ -21,67 +24,111 @@ function textArrayBox(arraySet, data, onModify = noone) : widget() constructor {
|
|||
if(getArray != noone)
|
||||
arraySet = getArray();
|
||||
|
||||
var tx = _x + ui(4);
|
||||
var ty = _y + ui(4);
|
||||
var hh = line_get_height(font, ui(4));
|
||||
var th = hh + ui(8);
|
||||
|
||||
draw_set_text(font, fa_left, fa_center, COLORS._main_text);
|
||||
for( var i = 0, n = array_length(arraySet); i < n; i++ ) {
|
||||
var ww = string_width(arraySet[i]) + ui(16);
|
||||
if(tx + ww + ui(2) > _x + _w - ui(8)) {
|
||||
tx = _x + ui(4);
|
||||
ty += hh + ui(2);
|
||||
th += hh + ui(2);
|
||||
}
|
||||
tx += ww + ui(2);
|
||||
}
|
||||
|
||||
h = th;
|
||||
|
||||
draw_sprite_stretched_ext(THEME.textbox, 3, _x, _y, _w, th, boxColor);
|
||||
draw_sprite_stretched_ext(THEME.textbox, 3, _x, _y, _w, h, boxColor);
|
||||
|
||||
if(open) {
|
||||
draw_sprite_stretched_ext(THEME.textbox, 2, _x, _y, _w, th, COLORS._main_accent, 1);
|
||||
draw_sprite_stretched_ext(THEME.textbox, 2, _x, _y, _w, h, COLORS._main_accent, 1);
|
||||
} else {
|
||||
if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + th)) {
|
||||
draw_sprite_stretched_ext(THEME.textbox, 1, _x, _y, _w, th, boxColor, 0.5 + !hide * 0.5);
|
||||
if(mouse_press(mb_left, active)) {
|
||||
with(dialogCall(o_dialog_arrayBox, _rx + _x, _ry + _y + th)) {
|
||||
if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + h)) {
|
||||
draw_sprite_stretched_ext(THEME.textbox, 1, _x, _y, _w, h, boxColor, 0.5 + !hide * 0.5);
|
||||
if(mouse_press(mb_left, active)) pressed = true;
|
||||
|
||||
if(pressed && mouse_release(mb_left, active)) {
|
||||
with(dialogCall(o_dialog_arrayBox, _rx + _x, _ry + _y + h)) {
|
||||
arrayBox = other;
|
||||
dialog_w = other.w;
|
||||
font = other.font;
|
||||
mode = other.mode;
|
||||
}
|
||||
}
|
||||
} else if(!hide)
|
||||
draw_sprite_stretched_ext(THEME.textbox, 0, _x, _y, _w, th, boxColor, 0.5 + 0.5 * interactable);
|
||||
draw_sprite_stretched_ext(THEME.textbox, 0, _x, _y, _w, h, boxColor, 0.5 + 0.5 * interactable);
|
||||
}
|
||||
|
||||
if(mouse_release(mb_left)) pressed = false;
|
||||
|
||||
var ww, hh = line_get_height(font, ui(4));
|
||||
var tx = _x + ui(4);
|
||||
var ty = _y + ui(4);
|
||||
var hh = line_get_height(font, ui(4));
|
||||
var th = hh + ui(8);
|
||||
var hovi = noone;
|
||||
|
||||
draw_set_text(font, fa_left, fa_center, COLORS._main_text);
|
||||
for( var i = 0, n = array_length(arraySet); i < n; i++ ) {
|
||||
var ww = string_width(arraySet[i]) + ui(16);
|
||||
if(tx + ww + ui(2) > _x + _w - ui(8)) {
|
||||
tx = _x + ui(4);
|
||||
ty += hh + ui(2);
|
||||
var _txt = arraySet[i];
|
||||
|
||||
switch(mode) {
|
||||
case 0 :
|
||||
ww = string_width(_txt) + ui(16);
|
||||
break;
|
||||
|
||||
case 1 :
|
||||
var _type = string_char_at(_txt, 1);
|
||||
|
||||
_txt = string_copy(_txt, 2, string_length(_txt) - 1);
|
||||
ww = ui(24) + string_width(_txt) + ui(16);
|
||||
break;
|
||||
}
|
||||
|
||||
draw_sprite_stretched_ext(THEME.box_r5_clr, 0, tx, ty, ww, hh, COLORS._main_icon, 1);
|
||||
draw_text_add(tx + ui(8), ty + hh / 2, arraySet[i]);
|
||||
if(tx + ww + ui(2) > _x + _w - ui(8)) {
|
||||
tx = _x + ui(4);
|
||||
ty += hh + ui(2);
|
||||
th += hh + ui(2);
|
||||
}
|
||||
|
||||
var _hov = hover && point_in_rectangle(_m[0], _m[1], tx, ty, tx + ww, ty + hh);
|
||||
if(_hov) hovi = [i, tx, ty, tx + ww, ty + hh];
|
||||
|
||||
draw_sprite_stretched_ext(THEME.box_r5_clr, _hov, tx, ty, ww, hh, COLORS._main_icon, 1);
|
||||
draw_set_color(dragging == i? COLORS._main_text_accent : COLORS._main_text);
|
||||
|
||||
switch(mode) {
|
||||
case 0 :
|
||||
draw_text_add(tx + ui(8), ty + hh / 2, _txt);
|
||||
break;
|
||||
|
||||
case 1 :
|
||||
if(_type == "+") draw_sprite_ext(THEME.arrow, 1, tx + ui(16), ty + hh / 2, 1, 1, 0, COLORS._main_value_positive, 1);
|
||||
else if(_type == "-") draw_sprite_ext(THEME.arrow, 3, tx + ui(16), ty + hh / 2 + ui(2), 1, 1, 0, COLORS._main_value_negative, 1);
|
||||
|
||||
draw_text_add(tx + ui(32), ty + hh / 2, _txt);
|
||||
break;
|
||||
}
|
||||
|
||||
if(_hov && mouse_press(mb_left, active)) {
|
||||
pressed = false;
|
||||
dragging = i;
|
||||
}
|
||||
|
||||
tx += ww + ui(2);
|
||||
}
|
||||
|
||||
if(dragging != noone) {
|
||||
if(hovi != noone && hovi[0] != dragging) {
|
||||
draw_set_color(COLORS._main_accent);
|
||||
var _tx = hovi[0] > dragging? hovi[3] : hovi[1];
|
||||
draw_line_width(_tx, hovi[2], _tx, hovi[4], 2);
|
||||
}
|
||||
|
||||
if(mouse_release(mb_left)) {
|
||||
if(hovi != noone && hovi[0] != dragging) {
|
||||
var _val = arraySet[dragging];
|
||||
|
||||
array_delete(arraySet, dragging, 1);
|
||||
array_insert(arraySet, hovi[0], _val);
|
||||
|
||||
onModify();
|
||||
}
|
||||
|
||||
dragging = noone;
|
||||
}
|
||||
}
|
||||
|
||||
h = th;
|
||||
|
||||
resetFocus();
|
||||
return th;
|
||||
}
|
||||
|
||||
static clone = function() {
|
||||
var cln = new textArrayBox(getArray, data, onModify);
|
||||
|
||||
return cln;
|
||||
}
|
||||
static clone = function() /*=>*/ {return new textArrayBox(getArray, data, onModify)};
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.8 KiB |
90
sprites/s_node_array_flattern/s_node_array_flattern.yy
Normal file
90
sprites/s_node_array_flattern/s_node_array_flattern.yy
Normal file
|
@ -0,0 +1,90 @@
|
|||
{
|
||||
"$GMSprite":"",
|
||||
"%Name":"s_node_array_flattern",
|
||||
"bboxMode":0,
|
||||
"bbox_bottom":61,
|
||||
"bbox_left":0,
|
||||
"bbox_right":63,
|
||||
"bbox_top":3,
|
||||
"collisionKind":1,
|
||||
"collisionTolerance":0,
|
||||
"DynamicTexturePage":false,
|
||||
"edgeFiltering":false,
|
||||
"For3D":false,
|
||||
"frames":[
|
||||
{"$GMSpriteFrame":"","%Name":"119dc552-4005-46ba-98cb-42697347e056","name":"119dc552-4005-46ba-98cb-42697347e056","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
|
||||
],
|
||||
"gridX":0,
|
||||
"gridY":0,
|
||||
"height":64,
|
||||
"HTile":false,
|
||||
"layers":[
|
||||
{"$GMImageLayer":"","%Name":"1fe4c9ea-5e40-468d-85ac-3aeacbc2e89e","blendMode":0,"displayName":"default","isLocked":false,"name":"1fe4c9ea-5e40-468d-85ac-3aeacbc2e89e","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
|
||||
],
|
||||
"name":"s_node_array_flattern",
|
||||
"nineSlice":null,
|
||||
"origin":4,
|
||||
"parent":{
|
||||
"name":"array",
|
||||
"path":"folders/nodes/icons/value/array.yy",
|
||||
},
|
||||
"preMultiplyAlpha":false,
|
||||
"resourceType":"GMSprite",
|
||||
"resourceVersion":"2.0",
|
||||
"sequence":{
|
||||
"$GMSequence":"",
|
||||
"%Name":"s_node_array_flattern",
|
||||
"autoRecord":true,
|
||||
"backdropHeight":768,
|
||||
"backdropImageOpacity":0.5,
|
||||
"backdropImagePath":"",
|
||||
"backdropWidth":1366,
|
||||
"backdropXOffset":0.0,
|
||||
"backdropYOffset":0.0,
|
||||
"events":{
|
||||
"$KeyframeStore<MessageEventKeyframe>":"",
|
||||
"Keyframes":[],
|
||||
"resourceType":"KeyframeStore<MessageEventKeyframe>",
|
||||
"resourceVersion":"2.0",
|
||||
},
|
||||
"eventStubScript":null,
|
||||
"eventToFunction":{},
|
||||
"length":1.0,
|
||||
"lockOrigin":false,
|
||||
"moments":{
|
||||
"$KeyframeStore<MomentsEventKeyframe>":"",
|
||||
"Keyframes":[],
|
||||
"resourceType":"KeyframeStore<MomentsEventKeyframe>",
|
||||
"resourceVersion":"2.0",
|
||||
},
|
||||
"name":"s_node_array_flattern",
|
||||
"playback":1,
|
||||
"playbackSpeed":30.0,
|
||||
"playbackSpeedType":0,
|
||||
"resourceType":"GMSequence",
|
||||
"resourceVersion":"2.0",
|
||||
"showBackdrop":true,
|
||||
"showBackdropImage":false,
|
||||
"timeUnits":1,
|
||||
"tracks":[
|
||||
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
|
||||
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
|
||||
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"119dc552-4005-46ba-98cb-42697347e056","path":"sprites/s_node_array_flattern/s_node_array_flattern.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
|
||||
},"Disabled":false,"id":"171cba14-8a41-4377-8a02-bbc00916c8d5","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
|
||||
],"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"2.0",},"modifiers":[],"name":"frames","resourceType":"GMSpriteFramesTrack","resourceVersion":"2.0","spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
|
||||
],
|
||||
"visibleRange":null,
|
||||
"volume":1.0,
|
||||
"xorigin":32,
|
||||
"yorigin":32,
|
||||
},
|
||||
"swatchColours":null,
|
||||
"swfPrecision":0.5,
|
||||
"textureGroupId":{
|
||||
"name":"Default",
|
||||
"path":"texturegroups/Default",
|
||||
},
|
||||
"type":0,
|
||||
"VTile":false,
|
||||
"width":64,
|
||||
}
|
Loading…
Add table
Reference in a new issue