mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-01-12 07:16:49 +01:00
- [Graph Panel] Display parameter now saved per projects.
This commit is contained in:
parent
5ce4ab19cf
commit
f285ada4d0
33 changed files with 550 additions and 204 deletions
|
@ -1073,6 +1073,7 @@
|
||||||
{"name":"node_shard_noise","order":12,"path":"scripts/node_shard_noise/node_shard_noise.yy",},
|
{"name":"node_shard_noise","order":12,"path":"scripts/node_shard_noise/node_shard_noise.yy",},
|
||||||
{"name":"node_shell","order":13,"path":"scripts/node_shell/node_shell.yy",},
|
{"name":"node_shell","order":13,"path":"scripts/node_shell/node_shell.yy",},
|
||||||
{"name":"node_skew","order":11,"path":"scripts/node_skew/node_skew.yy",},
|
{"name":"node_skew","order":11,"path":"scripts/node_skew/node_skew.yy",},
|
||||||
|
{"name":"node_slideshow","order":28,"path":"scripts/node_slideshow/node_slideshow.yy",},
|
||||||
{"name":"node_smear","order":12,"path":"scripts/node_smear/node_smear.yy",},
|
{"name":"node_smear","order":12,"path":"scripts/node_smear/node_smear.yy",},
|
||||||
{"name":"node_smoke_add_collider","order":6,"path":"scripts/node_smoke_add_collider/node_smoke_add_collider.yy",},
|
{"name":"node_smoke_add_collider","order":6,"path":"scripts/node_smoke_add_collider/node_smoke_add_collider.yy",},
|
||||||
{"name":"node_smoke_add","order":4,"path":"scripts/node_smoke_add/node_smoke_add.yy",},
|
{"name":"node_smoke_add","order":4,"path":"scripts/node_smoke_add/node_smoke_add.yy",},
|
||||||
|
|
|
@ -1653,6 +1653,7 @@
|
||||||
{"id":{"name":"node_shard_noise","path":"scripts/node_shard_noise/node_shard_noise.yy",},},
|
{"id":{"name":"node_shard_noise","path":"scripts/node_shard_noise/node_shard_noise.yy",},},
|
||||||
{"id":{"name":"node_shell","path":"scripts/node_shell/node_shell.yy",},},
|
{"id":{"name":"node_shell","path":"scripts/node_shell/node_shell.yy",},},
|
||||||
{"id":{"name":"node_skew","path":"scripts/node_skew/node_skew.yy",},},
|
{"id":{"name":"node_skew","path":"scripts/node_skew/node_skew.yy",},},
|
||||||
|
{"id":{"name":"node_slideshow","path":"scripts/node_slideshow/node_slideshow.yy",},},
|
||||||
{"id":{"name":"node_smear","path":"scripts/node_smear/node_smear.yy",},},
|
{"id":{"name":"node_smear","path":"scripts/node_smear/node_smear.yy",},},
|
||||||
{"id":{"name":"node_smoke_add_collider","path":"scripts/node_smoke_add_collider/node_smoke_add_collider.yy",},},
|
{"id":{"name":"node_smoke_add_collider","path":"scripts/node_smoke_add_collider/node_smoke_add_collider.yy",},},
|
||||||
{"id":{"name":"node_smoke_add","path":"scripts/node_smoke_add/node_smoke_add.yy",},},
|
{"id":{"name":"node_smoke_add","path":"scripts/node_smoke_add/node_smoke_add.yy",},},
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 8.3 KiB |
|
@ -233,7 +233,7 @@ event_inherited();
|
||||||
|
|
||||||
gradient.keys = [];
|
gradient.keys = [];
|
||||||
for( var i = 0, n = array_length(_p); i < n; i++ )
|
for( var i = 0, n = array_length(_p); i < n; i++ )
|
||||||
gradient.keys[i] = new gradientKey(i / (n - 1), _p[i]);
|
gradient.keys[i] = new gradientKey(i / (n - 1), cola(_p[i]));
|
||||||
}),
|
}),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -372,3 +372,15 @@
|
||||||
log_console($"Open port: {TCP_PORT}");
|
log_console($"Open port: {TCP_PORT}");
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region random debug
|
||||||
|
// var s = "1,2,23423,423,423,543,564,6,435,34,5"
|
||||||
|
|
||||||
|
// var t = get_timer();
|
||||||
|
// repeat(1000000) { string_split(s, ","); }
|
||||||
|
// print($"{(get_timer() - t) / 1000} ms");
|
||||||
|
|
||||||
|
// var t = get_timer();
|
||||||
|
// repeat(1000000) { string_splice(s, ","); }
|
||||||
|
// print($"{(get_timer() - t) / 1000} ms");
|
||||||
|
#endregion
|
|
@ -4,14 +4,13 @@ winManStep()
|
||||||
|
|
||||||
//print("===== Step start =====");
|
//print("===== Step start =====");
|
||||||
|
|
||||||
if(PROJECT.active && !PROJECT.safeMode) { #region node step
|
if(PROJECT.active && !PROJECT.safeMode) { //node step
|
||||||
PROJECT.animator.step();
|
PROJECT.step();
|
||||||
PROJECT.globalNode.step();
|
|
||||||
LIVE_UPDATE = false;
|
LIVE_UPDATE = false;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if(PANEL_MAIN != 0) PANEL_MAIN.step();
|
if(PANEL_MAIN != 0) PANEL_MAIN.step();
|
||||||
array_foreach(PROJECT.allNodes, function(_node) {
|
array_foreach(PROJECT.allNodes, function(_node) /*=>*/ {
|
||||||
if(!_node.active) return;
|
if(!_node.active) return;
|
||||||
_node.triggerCheck();
|
_node.triggerCheck();
|
||||||
_node.step();
|
_node.step();
|
||||||
|
@ -20,8 +19,9 @@ if(PROJECT.active && !PROJECT.safeMode) { #region node step
|
||||||
noti_warning("Step error: " + exception_print(e));
|
noti_warning("Step error: " + exception_print(e));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PROJECT.postStep();
|
||||||
IS_SAVING = false;
|
IS_SAVING = false;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
#region hotkey
|
#region hotkey
|
||||||
if(!instance_exists(o_dialog_preference) && !HOTKEY_BLOCK) {
|
if(!instance_exists(o_dialog_preference) && !HOTKEY_BLOCK) {
|
||||||
|
|
|
@ -191,7 +191,7 @@ _FILE_DROPPED = false;
|
||||||
dc_check -= DELTA_TIME;
|
dc_check -= DELTA_TIME;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region step
|
#region actions
|
||||||
if(array_length(action_last_frame) > 0) {
|
if(array_length(action_last_frame) > 0) {
|
||||||
ds_stack_push(UNDO_STACK, action_last_frame);
|
ds_stack_push(UNDO_STACK, action_last_frame);
|
||||||
ds_stack_clear(REDO_STACK);
|
ds_stack_clear(REDO_STACK);
|
||||||
|
|
|
@ -230,7 +230,7 @@ function color_diff(c1, c2) {
|
||||||
|
|
||||||
function merge_color_ext(c0, c1, t) {
|
function merge_color_ext(c0, c1, t) {
|
||||||
INLINE
|
INLINE
|
||||||
if(is_real(c0)) return __merge_color(c0, c1, t);
|
if(is_real(c0) && is_real(c1)) return __merge_color(c0, c1, t);
|
||||||
|
|
||||||
return make_color_rgba(
|
return make_color_rgba(
|
||||||
clamp(round(lerp(color_get_red(c0), color_get_red(c1), t)), 0, 255),
|
clamp(round(lerp(color_get_red(c0), color_get_red(c1), t)), 0, 255),
|
||||||
|
@ -240,6 +240,16 @@ function color_diff(c1, c2) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function merge_color_a(c0, c1, t) {
|
||||||
|
INLINE
|
||||||
|
return make_color_rgba(
|
||||||
|
clamp(round(lerp(color_get_red(c0), color_get_red(c1), t)), 0, 255),
|
||||||
|
clamp(round(lerp(color_get_green(c0), color_get_green(c1), t)), 0, 255),
|
||||||
|
clamp(round(lerp(color_get_blue(c0), color_get_blue(c1), t)), 0, 255),
|
||||||
|
clamp(round(lerp(color_get_alpha(c0), color_get_alpha(c1), t)), 0, 255),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function merge_color_hsv(c0, c1, t) {
|
function merge_color_hsv(c0, c1, t) {
|
||||||
INLINE
|
INLINE
|
||||||
if(is_real(c0)) return make_color_hsv(
|
if(is_real(c0)) return make_color_hsv(
|
||||||
|
|
|
@ -26,6 +26,30 @@ function draw_text_add_float(_x, _y, _text, scale = 1) {
|
||||||
BLEND_NORMAL;
|
BLEND_NORMAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function draw_text_bm_add(_x, _y, _text, scale = 1) {
|
||||||
|
INLINE
|
||||||
|
|
||||||
|
if(scale == 1) {
|
||||||
|
gpu_set_colorwriteenable(1, 1, 1, 0);
|
||||||
|
BLEND_OVERRIDE
|
||||||
|
draw_text(_x, _y, _text);
|
||||||
|
BLEND_NORMAL
|
||||||
|
|
||||||
|
gpu_set_colorwriteenable(1, 1, 1, 1);
|
||||||
|
draw_text(_x, _y, _text);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
gpu_set_colorwriteenable(1, 1, 1, 0);
|
||||||
|
BLEND_OVERRIDE
|
||||||
|
draw_text_transformed(_x, _y, _text, scale, scale, 0);
|
||||||
|
BLEND_NORMAL
|
||||||
|
|
||||||
|
gpu_set_colorwriteenable(1, 1, 1, 1);
|
||||||
|
draw_text_transformed(_x, _y, _text, scale, scale, 0);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function draw_text_lang_add(_x, _y, _text, scale = 1) {
|
function draw_text_lang_add(_x, _y, _text, scale = 1) {
|
||||||
INLINE
|
INLINE
|
||||||
BLEND_ALPHA_MULP;
|
BLEND_ALPHA_MULP;
|
||||||
|
|
|
@ -92,7 +92,7 @@ function gradientObject(color = c_black) constructor {
|
||||||
var rat = (position - _pkey.time) / (_key.time - _pkey.time);
|
var rat = (position - _pkey.time) / (_key.time - _pkey.time);
|
||||||
|
|
||||||
switch(type) {
|
switch(type) {
|
||||||
case GRADIENT_INTER.smooth : return merge_color (_pkey.value, _key.value, rat);
|
case GRADIENT_INTER.smooth : return merge_color_a (_pkey.value, _key.value, rat);
|
||||||
case GRADIENT_INTER.hue : return merge_color_hsv (_pkey.value, _key.value, rat);
|
case GRADIENT_INTER.hue : return merge_color_hsv (_pkey.value, _key.value, rat);
|
||||||
case GRADIENT_INTER.oklab : return merge_color_oklab(_pkey.value, _key.value, rat);
|
case GRADIENT_INTER.oklab : return merge_color_oklab(_pkey.value, _key.value, rat);
|
||||||
case GRADIENT_INTER.srgb : return merge_color_srgb (_pkey.value, _key.value, rat);
|
case GRADIENT_INTER.srgb : return merge_color_srgb (_pkey.value, _key.value, rat);
|
||||||
|
@ -262,8 +262,6 @@ function gradientObject(color = c_black) constructor {
|
||||||
for( var i = 0, n = array_length(keys); i < n; i++ )
|
for( var i = 0, n = array_length(keys); i < n; i++ )
|
||||||
s.keys[i] = keys[i].serialize();
|
s.keys[i] = keys[i].serialize();
|
||||||
|
|
||||||
// print(s);
|
|
||||||
|
|
||||||
return json_stringify(s, false);
|
return json_stringify(s, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -285,8 +283,6 @@ function gradientObject(color = c_black) constructor {
|
||||||
type = struct_try_get(s, "type");
|
type = struct_try_get(s, "type");
|
||||||
keys = array_create(array_length(s.keys));
|
keys = array_create(array_length(s.keys));
|
||||||
|
|
||||||
// print(s.keys);
|
|
||||||
|
|
||||||
for( var i = 0, n = array_length(s.keys); i < n; i++ ) {
|
for( var i = 0, n = array_length(s.keys); i < n; i++ ) {
|
||||||
var _time = s.keys[i].time;
|
var _time = s.keys[i].time;
|
||||||
var _value = s.keys[i].value;
|
var _value = s.keys[i].value;
|
||||||
|
|
|
@ -5,7 +5,7 @@ function __loadParams(readonly = false, override = false, apply_layout = false)
|
||||||
self.apply_layout = apply_layout;
|
self.apply_layout = apply_layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
function LOAD(safe = false) { #region
|
function LOAD(safe = false) {
|
||||||
if(DEMO) return false;
|
if(DEMO) return false;
|
||||||
|
|
||||||
var path = get_open_filename_pxc("Pixel Composer project (.pxc)|*.pxc;*.cpxc", "");
|
var path = get_open_filename_pxc("Pixel Composer project (.pxc)|*.pxc;*.cpxc", "");
|
||||||
|
@ -15,18 +15,18 @@ function LOAD(safe = false) { #region
|
||||||
|
|
||||||
gc_collect();
|
gc_collect();
|
||||||
var proj = LOAD_PATH(path, false, safe);
|
var proj = LOAD_PATH(path, false, safe);
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function TEST_PATH(path) { #region
|
function TEST_PATH(path) {
|
||||||
TESTING = true;
|
TESTING = true;
|
||||||
TEST_ERROR = true;
|
TEST_ERROR = true;
|
||||||
|
|
||||||
PROJECT.cleanup();
|
PROJECT.cleanup();
|
||||||
PROJECT = new Project();
|
PROJECT = new Project();
|
||||||
PANEL_GRAPH.setProject(PROJECT);
|
|
||||||
|
|
||||||
LOAD_AT(path);
|
LOAD_AT(path);
|
||||||
} #endregion
|
PANEL_GRAPH.setProject(PROJECT);
|
||||||
|
}
|
||||||
|
|
||||||
function LOAD_PATH(path, readonly = false, safe_mode = false) {
|
function LOAD_PATH(path, readonly = false, safe_mode = false) {
|
||||||
var _rep = false;
|
var _rep = false;
|
||||||
|
@ -44,6 +44,9 @@ function LOAD_PATH(path, readonly = false, safe_mode = false) {
|
||||||
var _PROJECT = PROJECT;
|
var _PROJECT = PROJECT;
|
||||||
PROJECT = new Project();
|
PROJECT = new Project();
|
||||||
|
|
||||||
|
var res = LOAD_AT(path, new __loadParams(readonly));
|
||||||
|
if(!res) return false;
|
||||||
|
|
||||||
if(_PROJECT == noone) {
|
if(_PROJECT == noone) {
|
||||||
PROJECTS = [ PROJECT ];
|
PROJECTS = [ PROJECT ];
|
||||||
|
|
||||||
|
@ -63,9 +66,6 @@ function LOAD_PATH(path, readonly = false, safe_mode = false) {
|
||||||
array_push(PROJECTS, PROJECT);
|
array_push(PROJECTS, PROJECT);
|
||||||
}
|
}
|
||||||
|
|
||||||
var res = LOAD_AT(path, new __loadParams(readonly));
|
|
||||||
if(!res) return false;
|
|
||||||
|
|
||||||
PROJECT.safeMode = safe_mode;
|
PROJECT.safeMode = safe_mode;
|
||||||
if(!IS_CMD) setFocus(PANEL_GRAPH.panel);
|
if(!IS_CMD) setFocus(PANEL_GRAPH.panel);
|
||||||
|
|
||||||
|
|
|
@ -177,11 +177,13 @@ function Node_Color_adjust(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro
|
||||||
var r = _color_get_red(_c);
|
var r = _color_get_red(_c);
|
||||||
var g = _color_get_green(_c);
|
var g = _color_get_green(_c);
|
||||||
var b = _color_get_blue(_c);
|
var b = _color_get_blue(_c);
|
||||||
|
var a = color_get_alpha(_c);
|
||||||
|
|
||||||
_c = make_color_rgb(
|
_c = make_color_rgba(
|
||||||
clamp((.5 + _con * 2 * (r - .5) + _bri) * _exp, 0, 1) * 255,
|
clamp((.5 + _con * 2 * (r - .5) + _bri) * _exp, 0, 1) * 255,
|
||||||
clamp((.5 + _con * 2 * (g - .5) + _bri) * _exp, 0, 1) * 255,
|
clamp((.5 + _con * 2 * (g - .5) + _bri) * _exp, 0, 1) * 255,
|
||||||
clamp((.5 + _con * 2 * (b - .5) + _bri) * _exp, 0, 1) * 255,
|
clamp((.5 + _con * 2 * (b - .5) + _bri) * _exp, 0, 1) * 255,
|
||||||
|
a
|
||||||
);
|
);
|
||||||
|
|
||||||
var h = _color_get_hue(_c);
|
var h = _color_get_hue(_c);
|
||||||
|
@ -193,8 +195,8 @@ function Node_Color_adjust(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro
|
||||||
v = clamp((v + _val) * (1 + _sat * s * 0.5), 0, 1);
|
v = clamp((v + _val) * (1 + _sat * s * 0.5), 0, 1);
|
||||||
s = clamp(s * (_sat + 1), 0, 1);
|
s = clamp(s * (_sat + 1), 0, 1);
|
||||||
|
|
||||||
_c = make_color_hsv(h * 255, s * 255, v * 255);
|
_c = make_color_hsva(h * 255, s * 255, v * 255, a);
|
||||||
_c = merge_color(_c, _bl, _bla);
|
_c = merge_color_a(_c, _bl, _bla);
|
||||||
_col[i] = _c;
|
_col[i] = _c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ function Node_Color_Mix(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) { #region
|
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
|
||||||
var bbox = drawGetBbox(xx, yy, _s);
|
var bbox = drawGetBbox(xx, yy, _s);
|
||||||
if(bbox.h < 1) return;
|
if(bbox.h < 1) return;
|
||||||
|
|
||||||
|
@ -40,5 +40,5 @@ function Node_Color_Mix(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
|
||||||
}
|
}
|
||||||
|
|
||||||
drawColor(col, bbox.x0, bbox.y0, bbox.w, bbox.h);
|
drawColor(col, bbox.x0, bbox.y0, bbox.w, bbox.h);
|
||||||
} #endregion
|
}
|
||||||
}
|
}
|
|
@ -50,9 +50,10 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
|
||||||
search_match = -9999;
|
search_match = -9999;
|
||||||
|
|
||||||
onDoubleClick = -1;
|
onDoubleClick = -1;
|
||||||
|
is_controller = false;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
static resetInternalName = function() { #region
|
static resetInternalName = function() {
|
||||||
var str = string_replace_all(name, " ", "_");
|
var str = string_replace_all(name, " ", "_");
|
||||||
str = string_replace_all(str, "/", "");
|
str = string_replace_all(str, "/", "");
|
||||||
str = string_replace_all(str, "-", "");
|
str = string_replace_all(str, "-", "");
|
||||||
|
@ -60,9 +61,9 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
|
||||||
ds_map_delete(PROJECT.nodeNameMap, internalName);
|
ds_map_delete(PROJECT.nodeNameMap, internalName);
|
||||||
internalName = str + string(irandom_range(10000, 99999));
|
internalName = str + string(irandom_range(10000, 99999));
|
||||||
PROJECT.nodeNameMap[? internalName] = self;
|
PROJECT.nodeNameMap[? internalName] = self;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
if(!LOADING && !APPENDING) { #region
|
if(!LOADING && !APPENDING) {
|
||||||
recordAction(ACTION_TYPE.node_added, self);
|
recordAction(ACTION_TYPE.node_added, self);
|
||||||
PROJECT.nodeMap[? node_id] = self;
|
PROJECT.nodeMap[? node_id] = self;
|
||||||
PROJECT.modified = true;
|
PROJECT.modified = true;
|
||||||
|
@ -76,7 +77,7 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
|
||||||
});
|
});
|
||||||
|
|
||||||
RENDER_ALL_REORDER
|
RENDER_ALL_REORDER
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
#region ---- display ----
|
#region ---- display ----
|
||||||
color = c_white;
|
color = c_white;
|
||||||
|
|
|
@ -151,9 +151,8 @@ function Node_Display_Text(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
index++;
|
index++;
|
||||||
|
|
||||||
switch(_ch) {
|
switch(_ch) {
|
||||||
case "<" :
|
case "<" : _mode = 1; continue;
|
||||||
_mode = 1;
|
|
||||||
continue;
|
|
||||||
case ">" :
|
case ">" :
|
||||||
var _c = string_splice(_cmd, " ");
|
var _c = string_splice(_cmd, " ");
|
||||||
|
|
||||||
|
@ -161,11 +160,13 @@ function Node_Display_Text(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
switch(_c[0]) {
|
switch(_c[0]) {
|
||||||
case "bt" :
|
case "bt" :
|
||||||
var _bch = "";
|
var _bch = "";
|
||||||
for( var i = 1; i < array_length(_c); i++ ) {
|
for( var i = 1; i < array_length(_c); i++ )
|
||||||
if(i > 1) _bch += " ";
|
_bch += i > 1? " " + _c[i] : _c[i];
|
||||||
_bch += _c[i];
|
|
||||||
}
|
var _bw = string_width(_bch);
|
||||||
_tw = string_width(_bch) * _s * fsize;
|
|
||||||
|
_tx += 4 * _s;
|
||||||
|
_tw = _bw * _s * fsize;
|
||||||
_th = string_height(_bch) * _s * fsize;
|
_th = string_height(_bch) * _s * fsize;
|
||||||
|
|
||||||
draw_sprite_stretched_points(THEME.ui_panel_bg, 0, _tx - 4, _y - 4, _tx + _tw + 4, _y + _th + 4, COLORS._main_icon_light);
|
draw_sprite_stretched_points(THEME.ui_panel_bg, 0, _tx - 4, _y - 4, _tx + _tw + 4, _y + _th + 4, COLORS._main_icon_light);
|
||||||
|
@ -185,9 +186,31 @@ function Node_Display_Text(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
draw_set_color(_cc);
|
draw_set_color(_cc);
|
||||||
}
|
}
|
||||||
|
|
||||||
_tx += _tw;
|
_tx += _tw + 4 * _s;
|
||||||
width += string_width(_bch) * fsize;
|
width += _bw * fsize + 8;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case "node" :
|
||||||
|
var _bch = "";
|
||||||
|
for( var i = 1; i < array_length(_c); i++ )
|
||||||
|
_bch += i > 1? " " + _c[i] : _c[i];
|
||||||
|
|
||||||
|
var _bw = string_width(_bch);
|
||||||
|
|
||||||
|
_tx += 4 * _s;
|
||||||
|
_tw = _bw * _s * fsize;
|
||||||
|
_th = string_height(_bch) * _s * fsize;
|
||||||
|
|
||||||
|
draw_sprite_stretched_ext(THEME.node_bg, 0, _tx - 4, _y - 4, _tw + 8, _th + 8, c_white, .75);
|
||||||
|
draw_sprite_stretched_add(THEME.node_bg, 0, _tx - 4, _y - 4, _tw + 8, _th + 8, c_white, .10);
|
||||||
|
|
||||||
|
draw_set_color(_cc);
|
||||||
|
draw_text_add_float(_tx, _y, _bch, _s * fsize);
|
||||||
|
|
||||||
|
_tx += _tw + 4 * _s;
|
||||||
|
width += _bw * fsize + 8;
|
||||||
|
break;
|
||||||
|
|
||||||
case "panel" :
|
case "panel" :
|
||||||
var _key = _c[1] + " panel";
|
var _key = _c[1] + " panel";
|
||||||
var _tss = 11 / 32;
|
var _tss = 11 / 32;
|
||||||
|
@ -207,7 +230,7 @@ function Node_Display_Text(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
case "preview" : FOCUSING_PANEL = PANEL_PREVIEW; break;
|
case "preview" : FOCUSING_PANEL = PANEL_PREVIEW; break;
|
||||||
case "inspector" : FOCUSING_PANEL = PANEL_INSPECTOR; break;
|
case "inspector" : FOCUSING_PANEL = PANEL_INSPECTOR; break;
|
||||||
case "animation" : FOCUSING_PANEL = PANEL_ANIMATION; break;
|
case "animation" : FOCUSING_PANEL = PANEL_ANIMATION; break;
|
||||||
case "collection" : FOCUSING_PANEL = findPanel("Panel_Collection"); break;
|
case "collection" : FOCUSING_PANEL = PANEL_COLLECTION; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -220,6 +243,7 @@ function Node_Display_Text(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
draw_set_color(_cc);
|
draw_set_color(_cc);
|
||||||
draw_set_alpha(_aa);
|
draw_set_alpha(_aa);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "spr" :
|
case "spr" :
|
||||||
var _spr_t = _c[1];
|
var _spr_t = _c[1];
|
||||||
if(!variable_struct_exists(THEME, _spr_t)) break;
|
if(!variable_struct_exists(THEME, _spr_t)) break;
|
||||||
|
@ -251,13 +275,19 @@ function Node_Display_Text(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
_tw = string_width(_ch);
|
_tw = string_width(_ch);
|
||||||
_th = string_height(_ch);
|
_th = string_height(_ch);
|
||||||
|
|
||||||
|
gpu_set_colorwriteenable(1, 1, 1, 0);
|
||||||
|
BLEND_OVERRIDE
|
||||||
draw_text_add_float(_tx, _y, _ch, _s * fsize);
|
draw_text_add_float(_tx, _y, _ch, _s * fsize);
|
||||||
|
BLEND_NORMAL
|
||||||
|
|
||||||
|
gpu_set_colorwriteenable(1, 1, 1, 1);
|
||||||
|
draw_text_add_float(_tx, _y, _ch, _s * fsize);
|
||||||
|
|
||||||
_tx += _tw * _s * fsize;
|
_tx += _tw * _s * fsize;
|
||||||
width += _tw * fsize;
|
width += _tw * fsize;
|
||||||
break;
|
break;
|
||||||
case 1 :
|
|
||||||
_cmd += _ch;
|
case 1 : _cmd += _ch; break;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -269,29 +299,29 @@ function Node_Display_Text(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
var _len = string_length(txt);
|
var _len = string_length(txt);
|
||||||
var _ch = "";
|
var _ch = "";
|
||||||
var _mode = 0;
|
var _mode = 0;
|
||||||
var ss = "";
|
|
||||||
var ch_str = "";
|
var ch_str = "";
|
||||||
|
|
||||||
|
var b = buffer_create(1, buffer_grow, 1);
|
||||||
|
|
||||||
while(index <= _len) {
|
while(index <= _len) {
|
||||||
_ch = string_char_at(txt, index);
|
_ch = string_char_at(txt, index);
|
||||||
index++;
|
index++;
|
||||||
|
|
||||||
switch(_ch) {
|
switch(_ch) {
|
||||||
case "<" :
|
case "<" : _mode = 1; continue;
|
||||||
_mode = 1; continue;
|
|
||||||
case ">" :
|
case ">" :
|
||||||
var _c = string_splice(ch_str, " ");
|
var _c = string_splice(ch_str, " ");
|
||||||
|
|
||||||
if(array_length(_c) > 1) {
|
if(array_length(_c) > 1) {
|
||||||
switch(_c[0]) {
|
switch(_c[0]) {
|
||||||
case "bt" :
|
case "bt" :
|
||||||
|
case "node" :
|
||||||
var _bch = "";
|
var _bch = "";
|
||||||
for( var i = 1; i < array_length(_c); i++ ) {
|
for( var i = 1; i < array_length(_c); i++ )
|
||||||
if(i > 1) _bch += " ";
|
_bch += i > 1? " " + _c[i] : _c[i];
|
||||||
_bch += _c[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
ss += _bch;
|
buffer_write(b, buffer_text, _bch);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -302,11 +332,15 @@ function Node_Display_Text(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(_mode) {
|
switch(_mode) {
|
||||||
case 0 : ss += _ch; break;
|
case 0 : buffer_write(b, buffer_text, _ch); break;
|
||||||
case 1 : ch_str += _ch; break;
|
case 1 : ch_str += _ch; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buffer_to_start(b);
|
||||||
|
var ss = buffer_read(b, buffer_text);
|
||||||
|
buffer_delete(b);
|
||||||
|
|
||||||
return ss;
|
return ss;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -331,12 +365,14 @@ function Node_Display_Text(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
var _ps = string_copy(_tx, 1, sp);
|
var _ps = string_copy(_tx, 1, sp);
|
||||||
_tx = string_copy(_tx, sp + 1, string_length(_tx) - sp);
|
_tx = string_copy(_tx, sp + 1, string_length(_tx) - sp);
|
||||||
|
|
||||||
if(line_width > 0 && string_width(string_raw(ss + _ps)) * fsize >= line_width) {
|
var fullStr = ss + _ps;
|
||||||
|
|
||||||
|
if(line_width > 0 && string_width(string_raw(fullStr)) * fsize >= line_width) {
|
||||||
array_push(_lines, ss);
|
array_push(_lines, ss);
|
||||||
ss = _ps;
|
ss = _ps;
|
||||||
|
|
||||||
} else if(string_length(_tx) <= 0) {
|
} else if(string_length(_tx) <= 0) {
|
||||||
array_push(_lines, ss + _ps);
|
array_push(_lines, fullStr);
|
||||||
ss = "";
|
ss = "";
|
||||||
|
|
||||||
} else
|
} else
|
||||||
|
@ -365,7 +401,10 @@ function Node_Display_Text(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
|
|
||||||
var _iny = yy + (junction_draw_hei_y * 0.5) * _s;
|
var _iny = yy + (junction_draw_hei_y * 0.5) * _s;
|
||||||
|
|
||||||
for( var i = 0, n = ds_list_size(inputs); i < n; i++ ) { inputs[| i].x = xx; inputs[| i].y = _iny; }
|
for( var i = 0, n = ds_list_size(inputs); i < n; i++ ) {
|
||||||
|
inputs[| i].x = xx;
|
||||||
|
inputs[| i].y = _iny;
|
||||||
|
}
|
||||||
|
|
||||||
for(var i = 0; i < in_cache_len; i++) {
|
for(var i = 0; i < in_cache_len; i++) {
|
||||||
jun = inputDisplayList[i];
|
jun = inputDisplayList[i];
|
||||||
|
|
|
@ -10,28 +10,24 @@ function Node_Particle(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y, _
|
||||||
.setDisplay(VALUE_DISPLAY.area, { onSurfaceSize });
|
.setDisplay(VALUE_DISPLAY.area, { onSurfaceSize });
|
||||||
|
|
||||||
inputs[| input_len + 0] = nodeValue("Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF)
|
inputs[| input_len + 0] = nodeValue("Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF)
|
||||||
.rejectArray()
|
|
||||||
.setDisplay(VALUE_DISPLAY.vector);
|
.setDisplay(VALUE_DISPLAY.vector);
|
||||||
|
|
||||||
inputs[| input_len + 1] = nodeValue("Round position", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true, "Round position to the closest integer value to avoid jittering.")
|
inputs[| input_len + 1] = nodeValue("Round position", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true, "Round position to the closest integer value to avoid jittering.");
|
||||||
.rejectArray();
|
|
||||||
|
|
||||||
inputs[| input_len + 2] = nodeValue("Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 )
|
inputs[| input_len + 2] = nodeValue("Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 )
|
||||||
.rejectArray()
|
|
||||||
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Normal", "Alpha", "Additive" ]);
|
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Normal", "Alpha", "Additive" ]);
|
||||||
|
|
||||||
inputs[| input_len + 3] = nodeValue("Background", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone )
|
inputs[| input_len + 3] = nodeValue("Background", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone );
|
||||||
.rejectArray();
|
|
||||||
|
|
||||||
inputs[| input_len + 4] = nodeValue("Render Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, PARTICLE_RENDER_TYPE.surface )
|
inputs[| input_len + 4] = nodeValue("Render Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, PARTICLE_RENDER_TYPE.surface )
|
||||||
.setDisplay(VALUE_DISPLAY.enum_button, [ "Surface", "Line" ])
|
.setDisplay(VALUE_DISPLAY.enum_button, [ "Surface", "Line" ]);
|
||||||
.rejectArray();
|
|
||||||
|
|
||||||
inputs[| input_len + 5] = nodeValue("Line life", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4 )
|
inputs[| input_len + 5] = nodeValue("Line life", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4 );
|
||||||
.rejectArray()
|
|
||||||
|
|
||||||
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
|
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
|
||||||
|
|
||||||
|
for(var i = input_len, n = ds_list_size(inputs); i < n; i++) inputs[| i].rejectArray();
|
||||||
|
|
||||||
attribute_surface_depth();
|
attribute_surface_depth();
|
||||||
attribute_interpolation();
|
attribute_interpolation();
|
||||||
|
|
||||||
|
@ -48,7 +44,7 @@ function Node_Particle(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y, _
|
||||||
|
|
||||||
static onInspector2Update = function() { clearCache(); }
|
static onInspector2Update = function() { clearCache(); }
|
||||||
|
|
||||||
static onValueUpdate = function(index = 0) { #region
|
static onValueUpdate = function(index = 0) {
|
||||||
if(index == input_len + 0) {
|
if(index == input_len + 0) {
|
||||||
var _dim = getInputData(input_len + 0);
|
var _dim = getInputData(input_len + 0);
|
||||||
var _outSurf = outputs[| 0].getValue();
|
var _outSurf = outputs[| 0].getValue();
|
||||||
|
@ -59,9 +55,9 @@ function Node_Particle(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y, _
|
||||||
|
|
||||||
if(PROJECT.animator.is_playing)
|
if(PROJECT.animator.is_playing)
|
||||||
PROJECT.animator.firstFrame();
|
PROJECT.animator.firstFrame();
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static reLoop = function() { #region
|
static reLoop = function() {
|
||||||
var _loop = getInputData(21);
|
var _loop = getInputData(21);
|
||||||
var _type = getInputData(input_len + 4);
|
var _type = getInputData(input_len + 4);
|
||||||
|
|
||||||
|
@ -73,9 +69,9 @@ function Node_Particle(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y, _
|
||||||
}
|
}
|
||||||
|
|
||||||
seed = getInputData(32);
|
seed = getInputData(32);
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static onStep = function() { #region
|
static onStep = function() {
|
||||||
var _dim = getInputData(input_len + 0);
|
var _dim = getInputData(input_len + 0);
|
||||||
var _typ = getInputData(input_len + 4);
|
var _typ = getInputData(input_len + 4);
|
||||||
|
|
||||||
|
@ -87,9 +83,9 @@ function Node_Particle(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y, _
|
||||||
curr_dimension[0] = _dim[0];
|
curr_dimension[0] = _dim[0];
|
||||||
curr_dimension[1] = _dim[1];
|
curr_dimension[1] = _dim[1];
|
||||||
}
|
}
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static onUpdate = function(frame = CURRENT_FRAME) { #region
|
static onUpdate = function(frame = CURRENT_FRAME) {
|
||||||
var _inSurf = getInputData(0);
|
var _inSurf = getInputData(0);
|
||||||
var _dim = getInputData(input_len + 0);
|
var _dim = getInputData(input_len + 0);
|
||||||
var _bg = getInputData(input_len + 3);
|
var _bg = getInputData(input_len + 3);
|
||||||
|
@ -109,9 +105,9 @@ function Node_Particle(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y, _
|
||||||
}
|
}
|
||||||
|
|
||||||
if(IS_PLAYING) runVFX(frame);
|
if(IS_PLAYING) runVFX(frame);
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function render(_time = CURRENT_FRAME) { #region
|
function render(_time = CURRENT_FRAME) {
|
||||||
var _dim = inputs[| input_len + 0].getValue(_time);
|
var _dim = inputs[| input_len + 0].getValue(_time);
|
||||||
var _exact = inputs[| input_len + 1].getValue(_time);
|
var _exact = inputs[| input_len + 1].getValue(_time);
|
||||||
var _blend = inputs[| input_len + 2].getValue(_time);
|
var _blend = inputs[| input_len + 2].getValue(_time);
|
||||||
|
@ -146,5 +142,5 @@ function Node_Particle(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y, _
|
||||||
|
|
||||||
if(PROJECT.animator.is_playing)
|
if(PROJECT.animator.is_playing)
|
||||||
cacheCurrentFrame(_outSurf);
|
cacheCurrentFrame(_outSurf);
|
||||||
} #endregion
|
}
|
||||||
}
|
}
|
|
@ -1037,6 +1037,7 @@ function __initNodes() {
|
||||||
addNodeObject(node, "Print", s_node_print, "Node_Print", [1, Node_Print], ["debug log"], "Display text to notification.").setVersion(1145);
|
addNodeObject(node, "Print", s_node_print, "Node_Print", [1, Node_Print], ["debug log"], "Display text to notification.").setVersion(1145);
|
||||||
addNodeObject(node, "Widget Test", s_node_print, "Node_Widget_Test", [1, Node_Widget_Test]);
|
addNodeObject(node, "Widget Test", s_node_print, "Node_Widget_Test", [1, Node_Widget_Test]);
|
||||||
addNodeObject(node, "Graph Preview", s_node_image, "Node_Graph_Preview", [1, Node_Graph_Preview]);
|
addNodeObject(node, "Graph Preview", s_node_image, "Node_Graph_Preview", [1, Node_Graph_Preview]);
|
||||||
|
addNodeObject(node, "Slideshow", s_node_image, "Node_Slideshow", [1, Node_Slideshow]);
|
||||||
//addNodeObject(node, "Module Test", s_node_print, "Node_Module_Test", [1, Node_Module_Test]);
|
//addNodeObject(node, "Module Test", s_node_print, "Node_Module_Test", [1, Node_Module_Test]);
|
||||||
|
|
||||||
ds_list_add(node, "Project");
|
ds_list_add(node, "Project");
|
||||||
|
|
|
@ -314,7 +314,7 @@ function Node_Repeat(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
|
||||||
var aa = _color_get_alpha(cc);
|
var aa = _color_get_alpha(cc);
|
||||||
|
|
||||||
if(_an_use) {
|
if(_an_use) {
|
||||||
cc = merge_color(cc, colorMultiply(cc, _an_bld), _inf);
|
cc = merge_color_a(cc, colorMultiply(cc, _an_bld), _inf);
|
||||||
aa += _an_alp * _inf;
|
aa += _an_alp * _inf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
12
scripts/node_slideshow/node_outline.yy
Normal file
12
scripts/node_slideshow/node_outline.yy
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"isDnD": false,
|
||||||
|
"isCompatibility": false,
|
||||||
|
"parent": {
|
||||||
|
"name": "process",
|
||||||
|
"path": "folders/nodes/data/process.yy",
|
||||||
|
},
|
||||||
|
"resourceVersion": "1.0",
|
||||||
|
"name": "node_outline",
|
||||||
|
"tags": [],
|
||||||
|
"resourceType": "GMScript",
|
||||||
|
}
|
28
scripts/node_slideshow/node_slideshow.gml
Normal file
28
scripts/node_slideshow/node_slideshow.gml
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
function Node_Slideshow(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||||
|
name = "Slideshow";
|
||||||
|
project = PROJECT;
|
||||||
|
|
||||||
|
is_controller = true;
|
||||||
|
|
||||||
|
setDimension(128, 32);
|
||||||
|
|
||||||
|
inputs[| 0] = nodeValue("Order", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0);
|
||||||
|
|
||||||
|
inputs[| 1] = nodeValue("Title", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "");
|
||||||
|
|
||||||
|
inputs[| 2] = nodeValue("Anchor", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
||||||
|
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Center", "Top left" ]);
|
||||||
|
|
||||||
|
slide_title = "";
|
||||||
|
slide_anchor = 0;
|
||||||
|
|
||||||
|
static step = function() {
|
||||||
|
var _ord = inputs[| 0].getValue();
|
||||||
|
project.slideShow[$ _ord] = self;
|
||||||
|
|
||||||
|
slide_title = inputs[| 1].getValue();
|
||||||
|
slide_anchor = inputs[| 2].getValue();
|
||||||
|
|
||||||
|
setDisplayName($"Slide-{slide_title}");
|
||||||
|
}
|
||||||
|
}
|
13
scripts/node_slideshow/node_slideshow.yy
Normal file
13
scripts/node_slideshow/node_slideshow.yy
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"$GMScript":"",
|
||||||
|
"%Name":"node_slideshow",
|
||||||
|
"isCompatibility":false,
|
||||||
|
"isDnD":false,
|
||||||
|
"name":"node_slideshow",
|
||||||
|
"parent":{
|
||||||
|
"name":"misc",
|
||||||
|
"path":"folders/nodes/data/misc.yy",
|
||||||
|
},
|
||||||
|
"resourceType":"GMScript",
|
||||||
|
"resourceVersion":"2.0",
|
||||||
|
}
|
|
@ -34,7 +34,9 @@ function Panel_Collection() : PanelContent() constructor {
|
||||||
|
|
||||||
view_tooltip = new tooltipSelector("View", [ "Grid", "List" ])
|
view_tooltip = new tooltipSelector("View", [ "Grid", "List" ])
|
||||||
|
|
||||||
static initMenu = function() { #region
|
PANEL_COLLECTION = self;
|
||||||
|
|
||||||
|
static initMenu = function() {
|
||||||
if(_menu_node == noone) return;
|
if(_menu_node == noone) return;
|
||||||
var meta = _menu_node.getMetadata();
|
var meta = _menu_node.getMetadata();
|
||||||
|
|
||||||
|
@ -131,7 +133,7 @@ function Panel_Collection() : PanelContent() constructor {
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} #endregion
|
}
|
||||||
initMenu();
|
initMenu();
|
||||||
|
|
||||||
search_string = "";
|
search_string = "";
|
||||||
|
@ -145,7 +147,7 @@ function Panel_Collection() : PanelContent() constructor {
|
||||||
grid_size_to = grid_size;
|
grid_size_to = grid_size;
|
||||||
|
|
||||||
contentView = 0;
|
contentView = 0;
|
||||||
contentPane = new scrollPane(content_w - ui(6), content_h, function(_y, _m) { #region
|
contentPane = new scrollPane(content_w - ui(6), content_h, function(_y, _m) {
|
||||||
draw_clear_alpha(c_white, 0);
|
draw_clear_alpha(c_white, 0);
|
||||||
|
|
||||||
var content;
|
var content;
|
||||||
|
@ -356,9 +358,9 @@ function Panel_Collection() : PanelContent() constructor {
|
||||||
}
|
}
|
||||||
|
|
||||||
return hh;
|
return hh;
|
||||||
}); #endregion
|
});
|
||||||
|
|
||||||
folderPane = new scrollPane(group_w - ui(8), content_h, function(_y, _m) { #region
|
folderPane = new scrollPane(group_w - ui(8), content_h, function(_y, _m) {
|
||||||
draw_clear_alpha(COLORS.panel_bg_clear, 1);
|
draw_clear_alpha(COLORS.panel_bg_clear, 1);
|
||||||
var hh = ui(8);
|
var hh = ui(8);
|
||||||
_y += ui(8);
|
_y += ui(8);
|
||||||
|
@ -386,34 +388,33 @@ function Panel_Collection() : PanelContent() constructor {
|
||||||
}
|
}
|
||||||
|
|
||||||
return hh + ui(28);
|
return hh + ui(28);
|
||||||
}); #endregion
|
});
|
||||||
|
|
||||||
function onFocusBegin() { PANEL_COLLECTION = self; }
|
function onFocusBegin() { PANEL_COLLECTION = self; }
|
||||||
|
|
||||||
function onResize() { #region
|
function onResize() {
|
||||||
initSize();
|
initSize();
|
||||||
|
|
||||||
folderPane.resize(group_w - ui(8), content_h);
|
folderPane.resize(group_w - ui(8), content_h);
|
||||||
|
|
||||||
if(mode == 2) contentPane.resize(w - ui(16), content_h);
|
if(mode == 2) contentPane.resize(w - ui(16), content_h);
|
||||||
else contentPane.resize(content_w - ui(6), content_h);
|
else contentPane.resize(content_w - ui(6), content_h);
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function setContext(cont) { #region
|
function setContext(cont) {
|
||||||
context = cont;
|
context = cont;
|
||||||
contentPane.scroll_y_raw = 0;
|
contentPane.scroll_y_raw = 0;
|
||||||
contentPane.scroll_y_to = 0;
|
contentPane.scroll_y_to = 0;
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function refreshContext() { #region
|
function refreshContext() {
|
||||||
if(mode == 0) context.scan([ ".json", ".pxcc" ]);
|
if(mode == 0) context.scan([ ".json", ".pxcc" ]);
|
||||||
else if(mode == 1) context.scan([ ".png", ".jpg", ".gif" ]);
|
else if(mode == 1) context.scan([ ".png", ".jpg", ".gif" ]);
|
||||||
|
|
||||||
if(STEAM_ENABLED)
|
if(STEAM_ENABLED) steamUCGload();
|
||||||
steamUCGload();
|
}
|
||||||
} #endregion
|
|
||||||
|
|
||||||
function drawContent(panel) { #region
|
function drawContent(panel) {
|
||||||
draw_clear_alpha(COLORS.panel_bg_clear, 1);
|
draw_clear_alpha(COLORS.panel_bg_clear, 1);
|
||||||
|
|
||||||
var content_y = ui(48);
|
var content_y = ui(48);
|
||||||
|
@ -433,7 +434,6 @@ function Panel_Collection() : PanelContent() constructor {
|
||||||
folderPane.setFocusHover(pFOCUS, pHOVER);
|
folderPane.setFocusHover(pFOCUS, pHOVER);
|
||||||
folderPane.draw(0, content_y, mx, my - content_y);
|
folderPane.draw(0, content_y, mx, my - content_y);
|
||||||
|
|
||||||
#region resize width
|
|
||||||
if(group_w_dragging) {
|
if(group_w_dragging) {
|
||||||
CURSOR = cr_size_we;
|
CURSOR = cr_size_we;
|
||||||
group_w = max(ui(128), group_w_sx + (mx - group_w_mx));
|
group_w = max(ui(128), group_w_sx + (mx - group_w_mx));
|
||||||
|
@ -452,7 +452,6 @@ function Panel_Collection() : PanelContent() constructor {
|
||||||
group_w_sx = group_w;
|
group_w_sx = group_w;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -488,7 +487,7 @@ function Panel_Collection() : PanelContent() constructor {
|
||||||
var by = ui(9);
|
var by = ui(9);
|
||||||
var bs = ui(32);
|
var bs = ui(32);
|
||||||
|
|
||||||
if(search_string == "") { #region
|
if(search_string == "") {
|
||||||
if(bx > rootx) {
|
if(bx > rootx) {
|
||||||
view_tooltip.index = contentView;
|
view_tooltip.index = contentView;
|
||||||
if(buttonInstant(THEME.button_hide, bx, by, bs, bs, [mx, my], pFOCUS, pHOVER, view_tooltip, THEME.view_mode, contentView) == 2)
|
if(buttonInstant(THEME.button_hide, bx, by, bs, bs, [mx, my], pFOCUS, pHOVER, view_tooltip, THEME.view_mode, contentView) == 2)
|
||||||
|
@ -551,14 +550,14 @@ function Panel_Collection() : PanelContent() constructor {
|
||||||
dialogPanelCall(new Panel_Collections_Setting(), x + bx, y + by - 8, { anchor: ANCHOR.bottom | ANCHOR.left });
|
dialogPanelCall(new Panel_Collections_Setting(), x + bx, y + by - 8, { anchor: ANCHOR.bottom | ANCHOR.left });
|
||||||
}
|
}
|
||||||
bx -= ui(36);
|
bx -= ui(36);
|
||||||
#endregion
|
|
||||||
} else { #region
|
} else {
|
||||||
var tb_w = ui(200);
|
var tb_w = ui(200);
|
||||||
var tb_x = w - ui(10) - tb_w;
|
var tb_x = w - ui(10) - tb_w;
|
||||||
var tb_y = ui(10);
|
var tb_y = ui(10);
|
||||||
|
|
||||||
tb_search.draw(tb_x, tb_y, tb_w, TEXTBOX_HEIGHT, search_string, [mx, my]);
|
tb_search.draw(tb_x, tb_y, tb_w, TEXTBOX_HEIGHT, search_string, [mx, my]);
|
||||||
#endregion
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} #endregion
|
|
||||||
}
|
}
|
|
@ -54,8 +54,8 @@
|
||||||
case "Panel_Animation" : var p = (create || findPanel(name))? new Panel_Animation() : PANEL_ANIMATION; if(focus) { PANEL_ANIMATION = p; } return p;
|
case "Panel_Animation" : var p = (create || findPanel(name))? new Panel_Animation() : PANEL_ANIMATION; if(focus) { PANEL_ANIMATION = p; } return p;
|
||||||
case "Panel_Preview" : var p = (create || findPanel(name))? new Panel_Preview() : PANEL_PREVIEW; if(focus) { PANEL_PREVIEW = p; } return p;
|
case "Panel_Preview" : var p = (create || findPanel(name))? new Panel_Preview() : PANEL_PREVIEW; if(focus) { PANEL_PREVIEW = p; } return p;
|
||||||
case "Panel_Graph" : var p = (create || findPanel(name))? new Panel_Graph() : PANEL_GRAPH; if(focus) { PANEL_GRAPH = p; } return p;
|
case "Panel_Graph" : var p = (create || findPanel(name))? new Panel_Graph() : PANEL_GRAPH; if(focus) { PANEL_GRAPH = p; } return p;
|
||||||
|
case "Panel_Collection" : var p = (create || findPanel(name))? new Panel_Collection(): PANEL_COLLECTION;if(focus) { PANEL_COLLECTION = p; } return p;
|
||||||
|
|
||||||
case "Panel_Collection" : return new Panel_Collection();
|
|
||||||
case "Panel_Workspace" : return new Panel_Workspace();
|
case "Panel_Workspace" : return new Panel_Workspace();
|
||||||
case "Panel_Tunnels" : return new Panel_Tunnels();
|
case "Panel_Tunnels" : return new Panel_Tunnels();
|
||||||
case "Panel_History" : return new Panel_History();
|
case "Panel_History" : return new Panel_History();
|
||||||
|
|
|
@ -162,20 +162,11 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
title = title_raw + (project.modified? "*" : "");
|
title = title_raw + (project.modified? "*" : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
static setProject = function(project) {
|
|
||||||
self.project = project;
|
|
||||||
nodes_list = project.nodes;
|
|
||||||
|
|
||||||
setTitle();
|
|
||||||
}
|
|
||||||
|
|
||||||
static reset = function() {
|
static reset = function() {
|
||||||
onFocusBegin();
|
onFocusBegin();
|
||||||
resetContext();
|
resetContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
setProject(project);
|
|
||||||
|
|
||||||
#region ---- display ----
|
#region ---- display ----
|
||||||
display_parameter = {
|
display_parameter = {
|
||||||
show_grid : true,
|
show_grid : true,
|
||||||
|
@ -185,6 +176,8 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
avoid_label : true,
|
avoid_label : true,
|
||||||
preview_scale : 100,
|
preview_scale : 100,
|
||||||
highlight : false,
|
highlight : false,
|
||||||
|
|
||||||
|
show_control : false,
|
||||||
}
|
}
|
||||||
|
|
||||||
connection_param = new connectionParameter();
|
connection_param = new connectionParameter();
|
||||||
|
@ -199,6 +192,10 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
graph_cx = 0;
|
graph_cx = 0;
|
||||||
graph_cy = 0;
|
graph_cy = 0;
|
||||||
|
|
||||||
|
graph_autopan = false;
|
||||||
|
graph_pan_x_to = 0;
|
||||||
|
graph_pan_y_to = 0;
|
||||||
|
|
||||||
scale = [ 0.01, 0.02, 0.05, 0.10, 0.15, 0.20, 0.25, 0.33, 0.50, 0.65, 0.80, 1, 1.2, 1.35, 1.5, 2.0 ];
|
scale = [ 0.01, 0.02, 0.05, 0.10, 0.15, 0.20, 0.25, 0.33, 0.50, 0.65, 0.80, 1, 1.2, 1.35, 1.5, 2.0 ];
|
||||||
graph_s = 1;
|
graph_s = 1;
|
||||||
graph_s_to = graph_s;
|
graph_s_to = graph_s;
|
||||||
|
@ -244,6 +241,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
|
|
||||||
#region ---- nodes ----
|
#region ---- nodes ----
|
||||||
node_context = [];
|
node_context = [];
|
||||||
|
nodes_list = [];
|
||||||
|
|
||||||
node_dragging = noone;
|
node_dragging = noone;
|
||||||
node_drag_mx = 0;
|
node_drag_mx = 0;
|
||||||
|
@ -371,7 +369,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
// print($"{cx}, {cy} / {graph_x}, {graph_y}");
|
// print($"{cx}, {cy} / {graph_x}, {graph_y}");
|
||||||
}
|
}
|
||||||
|
|
||||||
function initSize() { toCenterNode(); } initSize();
|
function initSize() { toCenterNode(); }
|
||||||
|
|
||||||
#region ++++ hotkeys ++++
|
#region ++++ hotkeys ++++
|
||||||
addHotkey("Graph", "Add node", "A", MOD_KEY.none, panel_graph_add_node);
|
addHotkey("Graph", "Add node", "A", MOD_KEY.none, panel_graph_add_node);
|
||||||
|
@ -759,6 +757,17 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
menu_junc_color.spacing = ui(24);
|
menu_junc_color.spacing = ui(24);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
//// ============ Project ============
|
||||||
|
|
||||||
|
static setProject = function(project) {
|
||||||
|
self.project = project;
|
||||||
|
nodes_list = project.nodes;
|
||||||
|
|
||||||
|
setTitle();
|
||||||
|
run_in(2, function() /*=>*/ { setSlideShow(0, true); });
|
||||||
|
struct_override(display_parameter, project.graph_display_parameter);
|
||||||
|
}
|
||||||
|
|
||||||
//// ============ Views ============
|
//// ============ Views ============
|
||||||
|
|
||||||
function onFocusBegin() { #region
|
function onFocusBegin() { #region
|
||||||
|
@ -778,12 +787,21 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
fullView();
|
fullView();
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
function fullView() { #region
|
function fullView() {
|
||||||
INLINE
|
INLINE
|
||||||
toCenterNode(array_empty(nodes_selecting)? nodes_list : nodes_selecting);
|
toCenterNode(array_empty(nodes_selecting)? nodes_list : nodes_selecting);
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
|
function dragGraph() {
|
||||||
|
if(graph_autopan) {
|
||||||
|
graph_x = lerp_float(graph_x, graph_pan_x_to, 16, 1);
|
||||||
|
graph_y = lerp_float(graph_y, graph_pan_y_to, 16, 1);
|
||||||
|
|
||||||
|
if(graph_x == graph_pan_x_to && graph_y == graph_pan_y_to)
|
||||||
|
graph_autopan = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
function dragGraph() { #region
|
|
||||||
if(graph_dragging) {
|
if(graph_dragging) {
|
||||||
if(!MOUSE_WRAPPING) {
|
if(!MOUSE_WRAPPING) {
|
||||||
var dx = mx - graph_drag_mx;
|
var dx = mx - graph_drag_mx;
|
||||||
|
@ -905,15 +923,53 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
graph_draggable = true;
|
graph_draggable = true;
|
||||||
graph_x = round(graph_x);
|
graph_x = round(graph_x);
|
||||||
graph_y = round(graph_y);
|
graph_y = round(graph_y);
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
|
function autoPanTo(_x, _y) {
|
||||||
|
graph_autopan = true;
|
||||||
|
graph_pan_x_to = _x;
|
||||||
|
graph_pan_y_to = _y;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setSlideShow(index, skip = false) {
|
||||||
|
var _targ = project.slideShowSet(index);
|
||||||
|
|
||||||
|
if(_targ == noone) return;
|
||||||
|
|
||||||
|
var _gx = w / 2 / graph_s;
|
||||||
|
var _gy = h / 2 / graph_s;
|
||||||
|
|
||||||
|
var _tx = _gx;
|
||||||
|
var _ty = _gy;
|
||||||
|
|
||||||
|
switch(_targ.slide_anchor) {
|
||||||
|
case 0 :
|
||||||
|
_tx = _gx - _targ.x;
|
||||||
|
_ty = _gy - _targ.y;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1 :
|
||||||
|
_tx = 64 * graph_s - _targ.x;
|
||||||
|
_ty = 64 * graph_s - _targ.y;
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(skip) {
|
||||||
|
graph_x = _tx;
|
||||||
|
graph_y = _ty;
|
||||||
|
|
||||||
|
} else
|
||||||
|
autoPanTo(_tx, _ty, skip);
|
||||||
|
}
|
||||||
|
|
||||||
//// =========== Context ==========
|
//// =========== Context ==========
|
||||||
|
|
||||||
function resetContext() { #region
|
function resetContext() {
|
||||||
node_context = [];
|
node_context = [];
|
||||||
nodes_list = project.nodes;
|
nodes_list = project.nodes;
|
||||||
toCenterNode();
|
toCenterNode();
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
function addContext(node) {
|
function addContext(node) {
|
||||||
var _node = node.getNodeBase();
|
var _node = node.getNodeBase();
|
||||||
|
@ -1105,19 +1161,21 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
frame_hovering = noone;
|
frame_hovering = noone;
|
||||||
|
|
||||||
for(var i = 0; i < array_length(nodes_list); i++) {
|
for(var i = 0; i < array_length(nodes_list); i++) {
|
||||||
var _nl = nodes_list[i];
|
var _node = nodes_list[i];
|
||||||
|
if(!display_parameter.show_control && _node.is_controller) continue;
|
||||||
|
|
||||||
_nl.cullCheck(gr_x, gr_y, graph_s, -32, -32, w + 32, h + 64);
|
_node.cullCheck(gr_x, gr_y, graph_s, -32, -32, w + 32, h + 64);
|
||||||
_nl.preDraw(gr_x, gr_y, graph_s, gr_x, gr_y);
|
_node.preDraw(gr_x, gr_y, graph_s, gr_x, gr_y);
|
||||||
}
|
}
|
||||||
printIf(log, $"Predraw time: {get_timer() - t}"); t = get_timer();
|
printIf(log, $"Predraw time: {get_timer() - t}"); t = get_timer();
|
||||||
|
|
||||||
#region draw frame
|
#region draw frame
|
||||||
for(var i = 0; i < array_length(nodes_list); i++) {
|
for(var i = 0; i < array_length(nodes_list); i++) {
|
||||||
var _nl = nodes_list[i];
|
var _node = nodes_list[i];
|
||||||
|
if(!display_parameter.show_control && _node.is_controller) continue;
|
||||||
|
|
||||||
if(_nl.drawNodeBG(gr_x, gr_y, mx, my, graph_s, display_parameter, self))
|
if(_node.drawNodeBG(gr_x, gr_y, mx, my, graph_s, display_parameter, self))
|
||||||
frame_hovering = _nl;
|
frame_hovering = _node;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
printIf(log, $"Frame draw time: {get_timer() - t}"); t = get_timer();
|
printIf(log, $"Frame draw time: {get_timer() - t}"); t = get_timer();
|
||||||
|
@ -1127,6 +1185,8 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
if(pHOVER)
|
if(pHOVER)
|
||||||
for(var i = 0; i < array_length(nodes_list); i++) {
|
for(var i = 0; i < array_length(nodes_list); i++) {
|
||||||
var _node = nodes_list[i];
|
var _node = nodes_list[i];
|
||||||
|
if(!display_parameter.show_control && _node.is_controller) continue;
|
||||||
|
|
||||||
_node.branch_drawing = false;
|
_node.branch_drawing = false;
|
||||||
|
|
||||||
if(_node.pointIn(gr_x, gr_y, mx, my, graph_s))
|
if(_node.pointIn(gr_x, gr_y, mx, my, graph_s))
|
||||||
|
@ -1192,6 +1252,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
for(var i = 0; i < array_length(nodes_list); i++) { //select content
|
for(var i = 0; i < array_length(nodes_list); i++) { //select content
|
||||||
var _node = nodes_list[i];
|
var _node = nodes_list[i];
|
||||||
if(_node == node_hovering) continue;
|
if(_node == node_hovering) continue;
|
||||||
|
if(!display_parameter.show_control && _node.is_controller) continue;
|
||||||
|
|
||||||
if(!_node.selectable) continue;
|
if(!_node.selectable) continue;
|
||||||
|
|
||||||
|
@ -1390,9 +1451,12 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
param.setDraw(aa, bg_color);
|
param.setDraw(aa, bg_color);
|
||||||
|
|
||||||
for(var i = 0; i < array_length(nodes_list); i++) {
|
for(var i = 0; i < array_length(nodes_list); i++) {
|
||||||
|
var _node = nodes_list[i];
|
||||||
|
if(!display_parameter.show_control && _node.is_controller) continue;
|
||||||
|
|
||||||
param.cur_layer = i + 1;
|
param.cur_layer = i + 1;
|
||||||
|
|
||||||
var _hov = nodes_list[i].drawConnections(param);
|
var _hov = _node.drawConnections(param);
|
||||||
if(_hov != noone && is_struct(_hov)) hov = _hov;
|
if(_hov != noone && is_struct(_hov)) hov = _hov;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1438,12 +1502,17 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
value_focus = noone;
|
value_focus = noone;
|
||||||
|
|
||||||
var t = get_timer();
|
var t = get_timer();
|
||||||
for(var i = 0; i < array_length(nodes_list); i++)
|
for(var i = 0; i < array_length(nodes_list); i++) {
|
||||||
|
var _node = nodes_list[i];
|
||||||
|
|
||||||
|
if(!display_parameter.show_control && _node.is_controller) continue;
|
||||||
nodes_list[i].drawNodeBehind(gr_x, gr_y, mx, my, graph_s);
|
nodes_list[i].drawNodeBehind(gr_x, gr_y, mx, my, graph_s);
|
||||||
|
}
|
||||||
|
|
||||||
for(var i = 0; i < array_length(nodes_list); i++) {
|
for(var i = 0; i < array_length(nodes_list); i++) {
|
||||||
var _node = nodes_list[i];
|
var _node = nodes_list[i];
|
||||||
|
|
||||||
|
if(!display_parameter.show_control && _node.is_controller) continue;
|
||||||
if(is_instanceof(_node, Node_Frame)) continue;
|
if(is_instanceof(_node, Node_Frame)) continue;
|
||||||
try {
|
try {
|
||||||
var val = _node.drawNode(gr_x, gr_y, mx, my, graph_s, display_parameter, self);
|
var val = _node.drawNode(gr_x, gr_y, mx, my, graph_s, display_parameter, self);
|
||||||
|
@ -1456,12 +1525,20 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(var i = 0; i < array_length(nodes_list); i++)
|
for(var i = 0; i < array_length(nodes_list); i++) {
|
||||||
|
var _node = nodes_list[i];
|
||||||
|
|
||||||
|
if(!display_parameter.show_control && _node.is_controller) continue;
|
||||||
if(!is_instanceof(nodes_list[i], Node_Frame))
|
if(!is_instanceof(nodes_list[i], Node_Frame))
|
||||||
nodes_list[i].drawBadge(gr_x, gr_y, graph_s);
|
nodes_list[i].drawBadge(gr_x, gr_y, graph_s);
|
||||||
|
}
|
||||||
|
|
||||||
for(var i = 0; i < array_length(nodes_list); i++)
|
for(var i = 0; i < array_length(nodes_list); i++) {
|
||||||
|
var _node = nodes_list[i];
|
||||||
|
|
||||||
|
if(!display_parameter.show_control && _node.is_controller) continue;
|
||||||
nodes_list[i].drawNodeFG(gr_x, gr_y, mx, my, graph_s, display_parameter, self);
|
nodes_list[i].drawNodeFG(gr_x, gr_y, mx, my, graph_s, display_parameter, self);
|
||||||
|
}
|
||||||
|
|
||||||
if(PANEL_INSPECTOR && PANEL_INSPECTOR.prop_hover != noone)
|
if(PANEL_INSPECTOR && PANEL_INSPECTOR.prop_hover != noone)
|
||||||
value_focus = PANEL_INSPECTOR.prop_hover;
|
value_focus = PANEL_INSPECTOR.prop_hover;
|
||||||
|
@ -1563,6 +1640,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
for(var i = 0; i < array_length(nodes_list); i++) {
|
for(var i = 0; i < array_length(nodes_list); i++) {
|
||||||
var _node = nodes_list[i];
|
var _node = nodes_list[i];
|
||||||
|
|
||||||
|
if(!display_parameter.show_control && _node.is_controller) continue;
|
||||||
if(!_node.selectable) continue;
|
if(!_node.selectable) continue;
|
||||||
if(is_instanceof(_node, Node_Frame) && !nodes_select_frame) continue;
|
if(is_instanceof(_node, Node_Frame) && !nodes_select_frame) continue;
|
||||||
|
|
||||||
|
@ -1879,8 +1957,12 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
|
|
||||||
var gr_x = graph_x * graph_s;
|
var gr_x = graph_x * graph_s;
|
||||||
var gr_y = graph_y * graph_s;
|
var gr_y = graph_y * graph_s;
|
||||||
for(var i = 0; i < array_length(nodes_list); i++)
|
for(var i = 0; i < array_length(nodes_list); i++) {
|
||||||
nodes_list[i].drawJunctionNames(gr_x, gr_y, mx, my, graph_s);
|
var _node = nodes_list[i];
|
||||||
|
|
||||||
|
if(!display_parameter.show_control && _node.is_controller) continue;
|
||||||
|
_node.drawJunctionNames(gr_x, gr_y, mx, my, graph_s);
|
||||||
|
}
|
||||||
|
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
|
@ -2212,6 +2294,70 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
draw_set_alpha(1);
|
draw_set_alpha(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function drawSlideShow() {
|
||||||
|
if(!project.useSlideShow) return;
|
||||||
|
|
||||||
|
var amo = project.slideShow_amount;
|
||||||
|
var ind = project.slideShow_index;
|
||||||
|
var cur = project.slideShow_current;
|
||||||
|
|
||||||
|
var _sl_w = (amo - 1) * ui(16) + ui(16 * 2);
|
||||||
|
var _sl_h = ui(32);
|
||||||
|
|
||||||
|
var _sl_x = w / 2 - _sl_w / 2;
|
||||||
|
var _ss_x = _sl_x;
|
||||||
|
|
||||||
|
var _sl_y = h - toolbar_height - ui(8) - _sl_h;
|
||||||
|
var _ss_y = _sl_y + _sl_h - ui(16);
|
||||||
|
|
||||||
|
if(cur != noone) {
|
||||||
|
draw_set_text(f_p2, fa_center, fa_top, COLORS._main_icon_light);
|
||||||
|
var _txtw = string_width(cur.slide_title) + ui(32);
|
||||||
|
_sl_w = max(_sl_w, _txtw);
|
||||||
|
_sl_h = _sl_h + ui(8 + 12);
|
||||||
|
|
||||||
|
_sl_x = w / 2 - _sl_w / 2;
|
||||||
|
_sl_y = h - toolbar_height - ui(8) - _sl_h;
|
||||||
|
}
|
||||||
|
|
||||||
|
draw_sprite_stretched(THEME.ui_panel_bg, 3, _sl_x, _sl_y, _sl_w, _sl_h);
|
||||||
|
|
||||||
|
if(cur != noone) draw_text_add(round(w / 2), round(_sl_y + ui(8)), cur.slide_title);
|
||||||
|
|
||||||
|
var _hv = false;
|
||||||
|
|
||||||
|
for(var i = 0; i < amo; i++) {
|
||||||
|
var _sx = _ss_x + ui(16) + i * ui(16);
|
||||||
|
var _sy = _ss_y;
|
||||||
|
|
||||||
|
var cc = i == ind? COLORS._main_accent : COLORS._main_icon;
|
||||||
|
var aa = i == ind? 1 : .5;
|
||||||
|
var ss = i == ind? 1 : .8;
|
||||||
|
|
||||||
|
if(pHOVER && point_in_circle(mx, my, _sx, _sy, ui(8))) {
|
||||||
|
_hv = true;
|
||||||
|
aa = 1;
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, pFOCUS))
|
||||||
|
setSlideShow(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
draw_sprite_ext(THEME.circle, 0, _sx, _sy, ss, ss, 0, cc, aa);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(point_in_rectangle(mx, my, _sl_x, _sl_y, _sl_x + _sl_w, _sl_y + _sl_h)) {
|
||||||
|
mouse_on_graph = false;
|
||||||
|
|
||||||
|
if(pHOVER && !_hv) {
|
||||||
|
draw_sprite_stretched_add(THEME.ui_panel_bg, 4, _sl_x, _sl_y, _sl_w, _sl_h, COLORS._main_icon, 0.05);
|
||||||
|
draw_sprite_stretched_add(THEME.ui_panel_fg, 1, _sl_x, _sl_y, _sl_w, _sl_h, c_white, 0.1);
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, pFOCUS))
|
||||||
|
setSlideShow((ind + 1) % amo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function drawContent(panel) { #region //// Main Draw
|
function drawContent(panel) { #region //// Main Draw
|
||||||
if(!project.active) return;
|
if(!project.active) return;
|
||||||
|
|
||||||
|
@ -2269,6 +2415,8 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
draw_text(w - 8, h - toolbar_height, "Live Update");
|
draw_text(w - 8, h - toolbar_height, "Live Update");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
drawSlideShow();
|
||||||
|
|
||||||
////////////////////////////////// File drop //////////////////////////////////
|
////////////////////////////////// File drop //////////////////////////////////
|
||||||
|
|
||||||
if(pHOVER) {
|
if(pHOVER) {
|
||||||
|
@ -2973,6 +3121,9 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor {
|
||||||
var dia = dialogCall(o_dialog_save);
|
var dia = dialogCall(o_dialog_save);
|
||||||
dia.project = project;
|
dia.project = project;
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
|
setProject(project);
|
||||||
|
initSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
//// ========== File Drop ==========
|
//// ========== File Drop ==========
|
||||||
|
|
|
@ -22,7 +22,7 @@ function Panel_Graph_View_Setting(graphPanel, display) : Panel_Linear_Setting()
|
||||||
true,
|
true,
|
||||||
),
|
),
|
||||||
new __Panel_Linear_Setting_Item(
|
new __Panel_Linear_Setting_Item(
|
||||||
__txtx("graph_visibility_compute", "Compute time"),
|
__txtx("graph_visibility_compute", "Compute Time"),
|
||||||
new checkBox(function() { display_parameter.show_compute = !display_parameter.show_compute; }),
|
new checkBox(function() { display_parameter.show_compute = !display_parameter.show_compute; }),
|
||||||
function() { return display_parameter.show_compute },
|
function() { return display_parameter.show_compute },
|
||||||
function(val) { display_parameter.show_compute = val; },
|
function(val) { display_parameter.show_compute = val; },
|
||||||
|
@ -35,6 +35,16 @@ function Panel_Graph_View_Setting(graphPanel, display) : Panel_Linear_Setting()
|
||||||
function(val) { display_parameter.avoid_label = val; },
|
function(val) { display_parameter.avoid_label = val; },
|
||||||
true,
|
true,
|
||||||
),
|
),
|
||||||
|
new __Panel_Linear_Setting_Item(
|
||||||
|
__txtx("graph_visibility_slideshow", "Show Controller"),
|
||||||
|
new checkBox(function() { display_parameter.show_control = !display_parameter.show_control; }),
|
||||||
|
function() { return display_parameter.show_control },
|
||||||
|
function(val) { display_parameter.show_control = val; },
|
||||||
|
false,
|
||||||
|
),
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
new __Panel_Linear_Setting_Item(
|
new __Panel_Linear_Setting_Item(
|
||||||
__txtx("graph_visibility_preview_scale", "Preview Scale"),
|
__txtx("graph_visibility_preview_scale", "Preview Scale"),
|
||||||
slider(50, 100, 1, function(val) { display_parameter.preview_scale = val; }),
|
slider(50, 100, 1, function(val) { display_parameter.preview_scale = val; }),
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
|
|
||||||
load_layout = false;
|
load_layout = false;
|
||||||
|
|
||||||
previewGrid = { #region
|
previewGrid = {
|
||||||
show : false,
|
show : false,
|
||||||
snap : false,
|
snap : false,
|
||||||
size : [ 16, 16 ],
|
size : [ 16, 16 ],
|
||||||
|
@ -46,9 +46,9 @@
|
||||||
color : COLORS.panel_preview_grid,
|
color : COLORS.panel_preview_grid,
|
||||||
|
|
||||||
pixel : false,
|
pixel : false,
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
graphGrid = { #region
|
graphGrid = {
|
||||||
show : true,
|
show : true,
|
||||||
show_origin : false,
|
show_origin : false,
|
||||||
snap : true,
|
snap : true,
|
||||||
|
@ -56,18 +56,29 @@
|
||||||
opacity : 0.05,
|
opacity : 0.05,
|
||||||
color : c_white,
|
color : c_white,
|
||||||
highlight : 12,
|
highlight : 12,
|
||||||
} #endregion
|
}
|
||||||
|
graph_display_parameter = {
|
||||||
|
show_grid : true,
|
||||||
|
show_dimension : true,
|
||||||
|
show_compute : true,
|
||||||
|
|
||||||
|
avoid_label : true,
|
||||||
|
preview_scale : 100,
|
||||||
|
highlight : false,
|
||||||
|
|
||||||
|
show_control : false,
|
||||||
|
}
|
||||||
|
|
||||||
addons = {};
|
addons = {};
|
||||||
|
|
||||||
onion_skin = { #region
|
onion_skin = {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
range: [ -1, 1 ],
|
range: [ -1, 1 ],
|
||||||
step: 1,
|
step: 1,
|
||||||
color: [ c_red, c_blue ],
|
color: [ c_red, c_blue ],
|
||||||
alpha: 0.5,
|
alpha: 0.5,
|
||||||
on_top: true,
|
on_top: true,
|
||||||
}; #endregion
|
};
|
||||||
|
|
||||||
#region =================== ATTRIBUTES ===================
|
#region =================== ATTRIBUTES ===================
|
||||||
attributes = variable_clone(PROJECT_ATTRIBUTES);
|
attributes = variable_clone(PROJECT_ATTRIBUTES);
|
||||||
|
@ -142,7 +153,42 @@
|
||||||
|
|
||||||
notes = [];
|
notes = [];
|
||||||
|
|
||||||
static cleanup = function() { #region
|
static step = function() {
|
||||||
|
slideShowPreStep();
|
||||||
|
|
||||||
|
animator.step();
|
||||||
|
globalNode.step();
|
||||||
|
}
|
||||||
|
|
||||||
|
static postStep = function() {
|
||||||
|
slideShowPostStep();
|
||||||
|
}
|
||||||
|
|
||||||
|
useSlideShow = false;
|
||||||
|
slideShow = {};
|
||||||
|
slideShow_keys = 0;
|
||||||
|
slideShow_index = 0;
|
||||||
|
slideShow_amount = 0;
|
||||||
|
slideShow_current = noone;
|
||||||
|
|
||||||
|
static slideShowPreStep = function() { slideShow = {}; }
|
||||||
|
|
||||||
|
static slideShowPostStep = function() {
|
||||||
|
slideShow_keys = variable_struct_get_names(slideShow);
|
||||||
|
array_sort(slideShow_keys, true);
|
||||||
|
|
||||||
|
slideShow_amount = array_length(slideShow_keys);
|
||||||
|
useSlideShow = slideShow_amount > 0;
|
||||||
|
slideShow_current = struct_try_get(slideShow, array_safe_get(slideShow_keys, slideShow_index, 0), noone);
|
||||||
|
}
|
||||||
|
|
||||||
|
static slideShowSet = function(index) {
|
||||||
|
slideShow_index = index;
|
||||||
|
slideShow_current = struct_try_get(slideShow, array_safe_get(slideShow_keys, slideShow_index, 0), noone);
|
||||||
|
return slideShow_current;
|
||||||
|
}
|
||||||
|
|
||||||
|
static cleanup = function() {
|
||||||
array_foreach(allNodes, function(_node) {
|
array_foreach(allNodes, function(_node) {
|
||||||
_node.active = false;
|
_node.active = false;
|
||||||
_node.cleanUp();
|
_node.cleanUp();
|
||||||
|
@ -152,7 +198,7 @@
|
||||||
ds_map_destroy(nodeNameMap);
|
ds_map_destroy(nodeNameMap);
|
||||||
|
|
||||||
gc_collect();
|
gc_collect();
|
||||||
} #endregion
|
}
|
||||||
|
|
||||||
static toString = function() { return $"ProjectObject [{path}]"; }
|
static toString = function() { return $"ProjectObject [{path}]"; }
|
||||||
|
|
||||||
|
@ -181,6 +227,8 @@
|
||||||
_map.composer = composer;
|
_map.composer = composer;
|
||||||
_map.load_layout = load_layout;
|
_map.load_layout = load_layout;
|
||||||
|
|
||||||
|
_map.graph_display_parameter = graph_display_parameter;
|
||||||
|
|
||||||
__node_list = [];
|
__node_list = [];
|
||||||
array_foreach(allNodes, function(node) { if(node.active) array_push(__node_list, node.serialize()); })
|
array_foreach(allNodes, function(node) { if(node.active) array_push(__node_list, node.serialize()); })
|
||||||
_map.nodes = __node_list;
|
_map.nodes = __node_list;
|
||||||
|
@ -215,6 +263,8 @@
|
||||||
if(struct_has(_map, "metadata")) meta.deserialize(_map.metadata);
|
if(struct_has(_map, "metadata")) meta.deserialize(_map.metadata);
|
||||||
if(struct_has(_map, "composer")) composer = _map.composer;
|
if(struct_has(_map, "composer")) composer = _map.composer;
|
||||||
|
|
||||||
|
if(struct_has(_map, "graph_display_parameter")) struct_override(graph_display_parameter, _map.graph_display_parameter);
|
||||||
|
|
||||||
load_layout = struct_try_get(_map, "load_layout", load_layout);
|
load_layout = struct_try_get(_map, "load_layout", load_layout);
|
||||||
|
|
||||||
setPalette();
|
setPalette();
|
||||||
|
|
Loading…
Reference in a new issue