mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-02-03 08:45:17 +01:00
pcx cleanup
This commit is contained in:
parent
a4496bdbe5
commit
df54b2f492
5 changed files with 121 additions and 122 deletions
|
@ -836,13 +836,13 @@
|
|||
"name": "Animation",
|
||||
"nodes": [
|
||||
{ "label": "Animations" },
|
||||
"Node_Counter",
|
||||
"Node_Rate_Remap",
|
||||
"Node_Delay",
|
||||
"Node_Stagger",
|
||||
"Node_Revert",
|
||||
|
||||
{ "label": "Value" },
|
||||
"Node_Counter",
|
||||
"Node_Anim_Curve",
|
||||
"Node_Fn_WaveTable",
|
||||
"Node_Wiggler",
|
||||
|
|
|
@ -130,7 +130,7 @@ function drawWidget(xx, yy, ww, _m, jun, global_var = true, _hover = false, _foc
|
|||
var tx = xx + ui(40) + string_width(_name) + ui(16);
|
||||
var ty = lb_y - ui(1);
|
||||
|
||||
if(point_in_circle(_m[0], _m[1], tx, ty, ui(10))) {
|
||||
if(_hover && point_in_circle(_m[0], _m[1], tx, ty, ui(10))) {
|
||||
cHov = true;
|
||||
|
||||
TOOLTIP = jun.active_tooltip;
|
||||
|
@ -150,7 +150,7 @@ function drawWidget(xx, yy, ww, _m, jun, global_var = true, _hover = false, _foc
|
|||
var tx = xx + ui(40) + string_width(_name) + ui(16);
|
||||
var ty = lb_y - ui(1);
|
||||
|
||||
if(point_in_circle(_m[0], _m[1], tx, ty, ui(10))) {
|
||||
if(_hover && point_in_circle(_m[0], _m[1], tx, ty, ui(10))) {
|
||||
cHov = true;
|
||||
|
||||
if(is_string(jun.tooltip))
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
|
||||
function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
|
||||
|
||||
|
||||
#region ---- main & active ----
|
||||
project = PROJECT;
|
||||
|
||||
|
|
|
@ -2,36 +2,36 @@
|
|||
global.EVALUATE_HEAD = noone;
|
||||
|
||||
global.PCX_FUNCTIONS = ds_map_create();
|
||||
global.PCX_FUNCTIONS[? "sin"] = [ ["radian"], function(val) { return sin(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "cos"] = [ ["radian"], function(val) { return cos(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "tan"] = [ ["radian"], function(val) { return tan(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "sin"] = [ ["radian"], function(val) /*=>*/ {return sin(array_safe_get_fast(val, 0))} ];
|
||||
global.PCX_FUNCTIONS[? "cos"] = [ ["radian"], function(val) /*=>*/ {return cos(array_safe_get_fast(val, 0))} ];
|
||||
global.PCX_FUNCTIONS[? "tan"] = [ ["radian"], function(val) /*=>*/ {return tan(array_safe_get_fast(val, 0))} ];
|
||||
|
||||
global.PCX_FUNCTIONS[? "dsin"] = [ ["degree"], function(val) { return dsin(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "dcos"] = [ ["degree"], function(val) { return dcos(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "dtan"] = [ ["degree"], function(val) { return dtan(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "dsin"] = [ ["degree"], function(val) /*=>*/ {return dsin(array_safe_get_fast(val, 0))} ];
|
||||
global.PCX_FUNCTIONS[? "dcos"] = [ ["degree"], function(val) /*=>*/ {return dcos(array_safe_get_fast(val, 0))} ];
|
||||
global.PCX_FUNCTIONS[? "dtan"] = [ ["degree"], function(val) /*=>*/ {return dtan(array_safe_get_fast(val, 0))} ];
|
||||
|
||||
global.PCX_FUNCTIONS[? "arcsin"] = [ ["x"], function(val) { return arcsin(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "arccos"] = [ ["x"], function(val) { return arccos(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "arctan"] = [ ["x"], function(val) { return arctan(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "arctan2"] = [ ["y", "x"], function(val) { return arctan2(array_safe_get_fast(val, 0), array_safe_get_fast(val, 1)); } ];
|
||||
global.PCX_FUNCTIONS[? "arcsin"] = [ ["x"], function(val) /*=>*/ {return arcsin(array_safe_get_fast(val, 0))} ];
|
||||
global.PCX_FUNCTIONS[? "arccos"] = [ ["x"], function(val) /*=>*/ {return arccos(array_safe_get_fast(val, 0))} ];
|
||||
global.PCX_FUNCTIONS[? "arctan"] = [ ["x"], function(val) /*=>*/ {return arctan(array_safe_get_fast(val, 0))} ];
|
||||
global.PCX_FUNCTIONS[? "arctan2"] = [ ["y", "x"], function(val) /*=>*/ {return arctan2(array_safe_get_fast(val, 0), array_safe_get_fast(val, 1))} ];
|
||||
|
||||
global.PCX_FUNCTIONS[? "darcsin"] = [ ["x"], function(val) { return darcsin(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "darccos"] = [ ["x"], function(val) { return darccos(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "darctan"] = [ ["x"], function(val) { return darctan(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "darctan2"] = [ ["y", "x"], function(val) { return darctan2(array_safe_get_fast(val, 0), array_safe_get_fast(val, 1)); } ];
|
||||
global.PCX_FUNCTIONS[? "darcsin"] = [ ["x"], function(val) /*=>*/ {return darcsin(array_safe_get_fast(val, 0))} ];
|
||||
global.PCX_FUNCTIONS[? "darccos"] = [ ["x"], function(val) /*=>*/ {return darccos(array_safe_get_fast(val, 0))} ];
|
||||
global.PCX_FUNCTIONS[? "darctan"] = [ ["x"], function(val) /*=>*/ {return darctan(array_safe_get_fast(val, 0))} ];
|
||||
global.PCX_FUNCTIONS[? "darctan2"] = [ ["y", "x"], function(val) /*=>*/ {return darctan2(array_safe_get_fast(val, 0), array_safe_get_fast(val, 1))} ];
|
||||
|
||||
global.PCX_FUNCTIONS[? "abs"] = [ ["x"], function(val) { return abs(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "round"] = [ ["x"], function(val) { return round(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "ceil"] = [ ["x"], function(val) { return ceil(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "floor"] = [ ["x"], function(val) { return floor(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "fract"] = [ ["x"], function(val) { return frac(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "sign"] = [ ["x"], function(val) { return sign(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "abs"] = [ ["x"], function(val) /*=>*/ {return abs(array_safe_get_fast(val, 0))} ];
|
||||
global.PCX_FUNCTIONS[? "round"] = [ ["x"], function(val) /*=>*/ {return round(array_safe_get_fast(val, 0))} ];
|
||||
global.PCX_FUNCTIONS[? "ceil"] = [ ["x"], function(val) /*=>*/ {return ceil(array_safe_get_fast(val, 0))} ];
|
||||
global.PCX_FUNCTIONS[? "floor"] = [ ["x"], function(val) /*=>*/ {return floor(array_safe_get_fast(val, 0))} ];
|
||||
global.PCX_FUNCTIONS[? "fract"] = [ ["x"], function(val) /*=>*/ {return frac(array_safe_get_fast(val, 0))} ];
|
||||
global.PCX_FUNCTIONS[? "sign"] = [ ["x"], function(val) /*=>*/ {return sign(array_safe_get_fast(val, 0))} ];
|
||||
|
||||
global.PCX_FUNCTIONS[? "min"] = [ ["x", "y"], function(val) { return min(array_safe_get_fast(val, 0), array_safe_get_fast(val, 1)); } ];
|
||||
global.PCX_FUNCTIONS[? "max"] = [ ["x", "y"], function(val) { return max(array_safe_get_fast(val, 0), array_safe_get_fast(val, 1)); } ];
|
||||
global.PCX_FUNCTIONS[? "clamp"] = [ ["x", "min = 0", "max = 1"], function(val) { return clamp(array_safe_get_fast(val, 0), array_safe_get_fast(val, 1, 0), array_safe_get_fast(val, 2, 1)); } ];
|
||||
global.PCX_FUNCTIONS[? "min"] = [ ["x", "y"], function(val) /*=>*/ {return min(array_safe_get_fast(val, 0), array_safe_get_fast(val, 1))} ];
|
||||
global.PCX_FUNCTIONS[? "max"] = [ ["x", "y"], function(val) /*=>*/ {return max(array_safe_get_fast(val, 0), array_safe_get_fast(val, 1))} ];
|
||||
global.PCX_FUNCTIONS[? "clamp"] = [ ["x", "min = 0", "max = 1"], function(val) /*=>*/ {return clamp(array_safe_get_fast(val, 0), array_safe_get_fast(val, 1, 0), array_safe_get_fast(val, 2, 1))} ];
|
||||
|
||||
global.PCX_FUNCTIONS[? "lerp"] = [ ["x", "y", "amount"], function(val) { return lerp(array_safe_get_fast(val, 0), array_safe_get_fast(val, 1), array_safe_get_fast(val, 2)); } ];
|
||||
global.PCX_FUNCTIONS[? "lerp"] = [ ["x", "y", "amount"], function(val) /*=>*/ {return lerp(array_safe_get_fast(val, 0), array_safe_get_fast(val, 1), array_safe_get_fast(val, 2))} ];
|
||||
|
||||
global.PCX_FUNCTIONS[? "wiggle"] = [ ["time", "frequency", "octave = 1", "seed = 0"], function(val) {
|
||||
return wiggle(0, 1, TOTAL_FRAMES / array_safe_get_fast(val, 1),
|
||||
|
@ -39,32 +39,26 @@
|
|||
array_safe_get_fast(val, 3, 0),
|
||||
array_safe_get_fast(val, 2, 1));
|
||||
} ];
|
||||
global.PCX_FUNCTIONS[? "random"] = [ ["min = 0", "max = 1"], function(val) {
|
||||
return random_range(array_safe_get_fast(val, 0, 0),
|
||||
array_safe_get_fast(val, 1, 1));
|
||||
} ];
|
||||
global.PCX_FUNCTIONS[? "irandom"] = [ ["min = 0", "max = 1"], function(val) {
|
||||
return irandom_range(array_safe_get_fast(val, 0, 0),
|
||||
array_safe_get_fast(val, 1, 1));
|
||||
} ];
|
||||
global.PCX_FUNCTIONS[? "random"] = [ ["min = 0", "max = 1"], function(val) /*=>*/ {return random_range(array_safe_get_fast(val, 0, 0), array_safe_get_fast(val, 1, 1))} ];
|
||||
global.PCX_FUNCTIONS[? "irandom"] = [ ["min = 0", "max = 1"], function(val) /*=>*/ {return irandom_range(array_safe_get_fast(val, 0, 0), array_safe_get_fast(val, 1, 1))} ];
|
||||
|
||||
global.PCX_FUNCTIONS[? "range"] = [ ["length", "start = 0", "step = 1"], function(val) {
|
||||
var arr = array_create(array_safe_get_fast(val, 0, 0));
|
||||
for( var i = 0, n = array_length(arr); i < n; i++ )
|
||||
arr[i] = array_safe_get_fast(val, 1, 0) + i * array_safe_get_fast(val, 2, 1);
|
||||
return arr;
|
||||
} ];
|
||||
var arr = array_create(array_safe_get_fast(val, 0, 0));
|
||||
for( var i = 0, n = array_length(arr); i < n; i++ )
|
||||
arr[i] = array_safe_get_fast(val, 1, 0) + i * array_safe_get_fast(val, 2, 1);
|
||||
return arr;
|
||||
} ];
|
||||
|
||||
global.PCX_FUNCTIONS[? "length"] = [ ["value"], function(val) {
|
||||
if(is_array(val)) return array_length(val);
|
||||
if(is_string(val)) return string_length(val);
|
||||
return 0;
|
||||
} ];
|
||||
if(is_array(val)) return array_length(val);
|
||||
if(is_string(val)) return string_length(val);
|
||||
return 0;
|
||||
} ];
|
||||
|
||||
global.PCX_FUNCTIONS[? "string"] = [ ["value"], function(val) { return string(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "number"] = [ ["value"], function(val) { return toNumber(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "chr"] = [ ["x"], function(val) { return chr(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "ord"] = [ ["char"], function(val) { return ord(array_safe_get_fast(val, 0)); } ];
|
||||
global.PCX_FUNCTIONS[? "string"] = [ ["value"], function(val) /*=>*/ {return string(array_safe_get_fast(val, 0))} ];
|
||||
global.PCX_FUNCTIONS[? "number"] = [ ["value"], function(val) /*=>*/ {return toNumber(array_safe_get_fast(val, 0))} ];
|
||||
global.PCX_FUNCTIONS[? "chr"] = [ ["x"], function(val) /*=>*/ {return chr(array_safe_get_fast(val, 0))} ];
|
||||
global.PCX_FUNCTIONS[? "ord"] = [ ["char"], function(val) /*=>*/ {return ord(array_safe_get_fast(val, 0))} ];
|
||||
|
||||
global.PCX_FUNCTIONS[? "draw"] = [ ["surface", "x = 0", "y = 0", "xs = 1", "ys = 1", "rot = 0", "color = white", "alpha = 1"],
|
||||
function(val) {
|
||||
|
@ -100,25 +94,25 @@
|
|||
PROJECT_VARIABLES = {};
|
||||
|
||||
PROJECT_VARIABLES.Project = {};
|
||||
PROJECT_VARIABLES.Project.frame = [ function() { return CURRENT_FRAME }, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Project.progress = [ function() { return CURRENT_FRAME / (TOTAL_FRAMES - 1) }, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Project.frameTotal = [ function() { return TOTAL_FRAMES }, EXPRESS_TREE_ANIM.none ];
|
||||
PROJECT_VARIABLES.Project.FPS = [ function() { return PROJECT.animator.framerate }, EXPRESS_TREE_ANIM.none ];
|
||||
PROJECT_VARIABLES.Project.time = [ function() { return CURRENT_FRAME / PROJECT.animator.framerate }, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Project.name = [ function() { return filename_name_only(PROJECT.path) }, EXPRESS_TREE_ANIM.none ];
|
||||
PROJECT_VARIABLES.Project.dimension = [ function() { return PROJECT.attributes.surface_dimension; }, EXPRESS_TREE_ANIM.none ];
|
||||
PROJECT_VARIABLES.Project.frame = [ function() /*=>*/ {return CURRENT_FRAME}, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Project.progress = [ function() /*=>*/ {return CURRENT_FRAME / (TOTAL_FRAMES - 1)}, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Project.frameTotal = [ function() /*=>*/ {return TOTAL_FRAMES}, EXPRESS_TREE_ANIM.none ];
|
||||
PROJECT_VARIABLES.Project.FPS = [ function() /*=>*/ {return PROJECT.animator.framerate}, EXPRESS_TREE_ANIM.none ];
|
||||
PROJECT_VARIABLES.Project.time = [ function() /*=>*/ {return CURRENT_FRAME / PROJECT.animator.framerate}, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Project.name = [ function() /*=>*/ {return filename_name_only(PROJECT.path)}, EXPRESS_TREE_ANIM.none ];
|
||||
PROJECT_VARIABLES.Project.dimension = [ function() /*=>*/ {return PROJECT.attributes.surface_dimension}, EXPRESS_TREE_ANIM.none ];
|
||||
|
||||
PROJECT_VARIABLES.Program = {};
|
||||
PROJECT_VARIABLES.Program.time = [ function() { return current_time / 1000 }, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Program.time = [ function() /*=>*/ {return current_time / 1000}, EXPRESS_TREE_ANIM.animated ];
|
||||
|
||||
PROJECT_VARIABLES.Device = {};
|
||||
PROJECT_VARIABLES.Device.timeSecond = [ function() { return current_second }, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Device.timeMinute = [ function() { return current_minute }, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Device.timeHour = [ function() { return current_hour }, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Device.timeDay = [ function() { return current_day }, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Device.timeDayInWeek = [ function() { return current_weekday }, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Device.timeMonth = [ function() { return current_month }, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Device.timeYear = [ function() { return current_year }, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Device.timeSecond = [ function() /*=>*/ {return current_second}, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Device.timeMinute = [ function() /*=>*/ {return current_minute}, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Device.timeHour = [ function() /*=>*/ {return current_hour}, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Device.timeDay = [ function() /*=>*/ {return current_day}, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Device.timeDayInWeek = [ function() /*=>*/ {return current_weekday}, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Device.timeMonth = [ function() /*=>*/ {return current_month}, EXPRESS_TREE_ANIM.animated ];
|
||||
PROJECT_VARIABLES.Device.timeYear = [ function() /*=>*/ {return current_year}, EXPRESS_TREE_ANIM.animated ];
|
||||
#endregion
|
||||
|
||||
#region evaluator
|
||||
|
@ -151,7 +145,6 @@
|
|||
}
|
||||
|
||||
static eval = function(params = {}) {
|
||||
//var _params = variable_clone(params);
|
||||
var val = 0;
|
||||
|
||||
for( var i = 0, n = array_length(funcTrees); i < n; i++ )
|
||||
|
@ -389,63 +382,73 @@
|
|||
getRaw = true;
|
||||
}
|
||||
|
||||
var v1 = getVal(l, params, getRaw || isLeft);
|
||||
var v2 = getVal(r, params);
|
||||
|
||||
var v1 = getVal(l, params, getRaw || isLeft);
|
||||
var v2 = getVal(r, params);
|
||||
var res = 0;
|
||||
|
||||
if(symbol == "") {
|
||||
res = v1;
|
||||
} else if(symbol == "【") { // array builder
|
||||
res = array_create(array_length(v1));
|
||||
for( var i = 0, n = array_length(v1); i < n; i++ )
|
||||
res[i] = getVal(v1[i], params);
|
||||
} else if(symbol == "@") { // array getter
|
||||
if(isLeft)
|
||||
res = [ v1, v2 ];
|
||||
else if(is_real(v2)) {
|
||||
if(is_array(v1)) {
|
||||
if(v2 < 0) v2 = array_length(v1) + v2;
|
||||
res = array_safe_get_fast(v1, v2);
|
||||
} else if(is_string(v1)) {
|
||||
if(v2 < 0) v2 = string_length(v1) + v2;
|
||||
res = string_char_at(v1, v2 + 1);
|
||||
switch(symbol) {
|
||||
case "" :
|
||||
res = v1;
|
||||
break;
|
||||
|
||||
case "【" : // array builder
|
||||
res = array_create(array_length(v1));
|
||||
for( var i = 0, n = array_length(v1); i < n; i++ )
|
||||
res[i] = getVal(v1[i], params);
|
||||
break;
|
||||
|
||||
case "@" : // array getter
|
||||
if(isLeft)
|
||||
res = [ v1, v2 ];
|
||||
else if(is_real(v2)) {
|
||||
if(is_array(v1)) {
|
||||
if(v2 < 0) v2 = array_length(v1) + v2;
|
||||
res = array_safe_get_fast(v1, v2);
|
||||
} else if(is_string(v1)) {
|
||||
if(v2 < 0) v2 = string_length(v1) + v2;
|
||||
res = string_char_at(v1, v2 + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//print($"Array getter {v1}, {v2} = {res}");
|
||||
} else if(symbol == "=") { // value assignment
|
||||
if(is_array(v1)) {
|
||||
var val = params[$ v1[0]];
|
||||
val = array_safe_set(val, v1[1], v2);
|
||||
params[$ v1[0]] = val;
|
||||
res = val;
|
||||
} else {
|
||||
params[$ v1] = v2;
|
||||
res = v2;
|
||||
}
|
||||
} else if(symbol == "≔") { // function default replacement
|
||||
if(!struct_exists(params, v1))
|
||||
params[$ v1] = v2;
|
||||
res = params[$ v1];
|
||||
|
||||
} else if(is_array(v1) && !is_array(v2)) { // evaluate value
|
||||
res = array_create(array_length(v1));
|
||||
for( var i = 0, n = array_length(res); i < n; i++ )
|
||||
res[i] = eval_real(array_safe_get_fast(v1, i), v2);
|
||||
break;
|
||||
|
||||
} else if(!is_array(v1) && is_array(v2)) {
|
||||
res = array_create(array_length(v2));
|
||||
for( var i = 0, n = array_length(res); i < n; i++ )
|
||||
res[i] = eval_real(v1, array_safe_get_fast(v2, i));
|
||||
case "=" : // value assignment
|
||||
if(is_array(v1)) {
|
||||
var val = params[$ v1[0]];
|
||||
val = array_safe_set(val, v1[1], v2);
|
||||
params[$ v1[0]] = val;
|
||||
res = val;
|
||||
} else {
|
||||
params[$ v1] = v2;
|
||||
res = v2;
|
||||
}
|
||||
break;
|
||||
|
||||
} else if(is_array(v1) && is_array(v2)) {
|
||||
res = array_create(max(array_length(v1), array_length(v2)));
|
||||
for( var i = 0, n = array_length(res); i < n; i++ )
|
||||
res[i] = eval_real(array_safe_get_fast(v1, i), array_safe_get_fast(v2, i));
|
||||
case "≔" : // function default replacement
|
||||
if(!struct_exists(params, v1))
|
||||
params[$ v1] = v2;
|
||||
res = params[$ v1];
|
||||
break;
|
||||
|
||||
} else
|
||||
res = eval_real(v1, v2);
|
||||
default :
|
||||
if(is_array(v1) && !is_array(v2)) { // evaluate value
|
||||
res = array_create(array_length(v1));
|
||||
for( var i = 0, n = array_length(res); i < n; i++ )
|
||||
res[i] = eval_real(array_safe_get_fast(v1, i), v2);
|
||||
|
||||
} else if(!is_array(v1) && is_array(v2)) {
|
||||
res = array_create(array_length(v2));
|
||||
for( var i = 0, n = array_length(res); i < n; i++ )
|
||||
res[i] = eval_real(v1, array_safe_get_fast(v2, i));
|
||||
|
||||
} else if(is_array(v1) && is_array(v2)) {
|
||||
res = array_create(max(array_length(v1), array_length(v2)));
|
||||
for( var i = 0, n = array_length(res); i < n; i++ )
|
||||
res[i] = eval_real(array_safe_get_fast(v1, i), array_safe_get_fast(v2, i));
|
||||
|
||||
} else
|
||||
res = eval_real(v1, v2);
|
||||
break;
|
||||
}
|
||||
|
||||
var _v1_var = getVal(l, params, true);
|
||||
switch(symbol) {
|
||||
|
|
|
@ -51,6 +51,7 @@
|
|||
|
||||
if(ch == " ") {
|
||||
if(str) _fx += ch;
|
||||
|
||||
} else {
|
||||
if(ch == "-" && _prevSym)
|
||||
_fx += $"0∸";
|
||||
|
@ -129,13 +130,9 @@
|
|||
|
||||
for( var i = 0, n = array_length(fxs); i < n; i++ ) {
|
||||
var _fx = functionStringClean(fxs[i]);
|
||||
//print($"Eval line {i}: {_fx} [stack size = {ds_stack_size(call_st)}]");
|
||||
|
||||
if(_fx == "" || _fx == "{") continue;
|
||||
if(_fx == "}") {
|
||||
ds_stack_pop(call_st);
|
||||
continue;
|
||||
}
|
||||
if(_fx == "}") { ds_stack_pop(call_st); continue; }
|
||||
|
||||
var _fx_sp = string_split(_fx, "(");
|
||||
var _cmd = string_trim(_fx_sp[0]);
|
||||
|
@ -167,7 +164,6 @@
|
|||
continue;
|
||||
|
||||
case "for":
|
||||
|
||||
var con_for = new __funcFor();
|
||||
var cond = string_splice(_cond, ":");
|
||||
if(array_length(cond) == 2) {
|
||||
|
@ -195,6 +191,7 @@
|
|||
|
||||
if(ds_stack_empty(call_st)) {
|
||||
print("Block stack empty, how?");
|
||||
|
||||
} else {
|
||||
var _top = ds_stack_top(call_st);
|
||||
_top.addFunction(evaluateFunctionTree(_fx));
|
||||
|
|
Loading…
Reference in a new issue