spout, keyframe driver
|
@ -127,6 +127,8 @@
|
|||
{"name":"lua","order":12,"path":"folders/nodes/data/lua.yy",},
|
||||
{"name":"misc","order":10,"path":"folders/nodes/data/misc.yy",},
|
||||
{"name":"MK effects","order":24,"path":"folders/nodes/data/MK effects.yy",},
|
||||
{"name":"mk sparkle","order":8,"path":"folders/nodes/data/MK effects/mk sparkle.yy",},
|
||||
{"name":"src","order":1,"path":"folders/nodes/data/MK effects/mk sparkle/src.yy",},
|
||||
{"name":"PCX","order":15,"path":"folders/nodes/data/PCX.yy",},
|
||||
{"name":"array","order":6,"path":"folders/nodes/data/PCX/array.yy",},
|
||||
{"name":"flow control","order":7,"path":"folders/nodes/data/PCX/flow control.yy",},
|
||||
|
@ -346,6 +348,7 @@
|
|||
{"name":"s_biterator_knob","order":5,"path":"sprites/s_biterator_knob/s_biterator_knob.yy",},
|
||||
{"name":"array_functions","order":2,"path":"scripts/array_functions/array_functions.yy",},
|
||||
{"name":"sh_blur_final","order":2,"path":"shaders/sh_blur_final/sh_blur_final.yy",},
|
||||
{"name":"s_node_spout","order":23,"path":"sprites/s_node_spout/s_node_spout.yy",},
|
||||
{"name":"sh_fd_visualize_velocity_glsl","order":19,"path":"shaders/sh_fd_visualize_velocity_glsl/sh_fd_visualize_velocity_glsl.yy",},
|
||||
{"name":"node_3d_mesh_terrain","order":9,"path":"scripts/node_3d_mesh_terrain/node_3d_mesh_terrain.yy",},
|
||||
{"name":"fd_rectangle_set_material_time_step","order":8,"path":"scripts/fd_rectangle_set_material_time_step/fd_rectangle_set_material_time_step.yy",},
|
||||
|
@ -624,6 +627,7 @@
|
|||
{"name":"Obj_FirebaseFirestore_Document_Delete","order":3,"path":"objects/Obj_FirebaseFirestore_Document_Delete/Obj_FirebaseFirestore_Document_Delete.yy",},
|
||||
{"name":"node_module_test","order":19,"path":"scripts/node_module_test/node_module_test.yy",},
|
||||
{"name":"s_node_shadow","order":36,"path":"sprites/s_node_shadow/s_node_shadow.yy",},
|
||||
{"name":"Spout","order":14,"path":"extensions/Spout/Spout.yy",},
|
||||
{"name":"s_node_grid_hex_noise","order":21,"path":"sprites/s_node_grid_hex_noise/s_node_grid_hex_noise.yy",},
|
||||
{"name":"s_node_logic_opr","order":2,"path":"sprites/s_node_logic_opr/s_node_logic_opr.yy",},
|
||||
{"name":"sh_zigzag","order":11,"path":"shaders/sh_zigzag/sh_zigzag.yy",},
|
||||
|
@ -760,7 +764,6 @@
|
|||
{"name":"node_tile","order":4,"path":"scripts/node_tile/node_tile.yy",},
|
||||
{"name":"sh_rsh_rotate","order":1,"path":"shaders/sh_rsh_rotate/sh_rsh_rotate.yy",},
|
||||
{"name":"FirebaseFirestoreMainFunctions","order":1,"path":"scripts/FirebaseFirestoreMainFunctions/FirebaseFirestoreMainFunctions.yy",},
|
||||
{"name":"node_mk_sparkle","order":7,"path":"scripts/node_mk_sparkle/node_mk_sparkle.yy",},
|
||||
{"name":"node_VFX_effect_destroy","order":3,"path":"scripts/node_VFX_effect_destroy/node_VFX_effect_destroy.yy",},
|
||||
{"name":"node_cache","order":9,"path":"scripts/node_cache/node_cache.yy",},
|
||||
{"name":"sh_bw","order":3,"path":"shaders/sh_bw/sh_bw.yy",},
|
||||
|
@ -1042,6 +1045,7 @@
|
|||
{"name":"s_node_print","order":30,"path":"sprites/s_node_print/s_node_print.yy",},
|
||||
{"name":"sh_seperate_shape_counter","order":1,"path":"shaders/sh_seperate_shape_counter/sh_seperate_shape_counter.yy",},
|
||||
{"name":"s_node_stack","order":37,"path":"sprites/s_node_stack/s_node_stack.yy",},
|
||||
{"name":"s_mk_sparkle_select","order":1,"path":"sprites/s_mk_sparkle_select/s_mk_sparkle_select.yy",},
|
||||
{"name":"hlsl_server","order":2,"path":"scripts/hlsl_server/hlsl_server.yy",},
|
||||
{"name":"s_fade_up","order":3,"path":"sprites/s_fade_up/s_fade_up.yy",},
|
||||
{"name":"panel_globalvar","order":2,"path":"scripts/panel_globalvar/panel_globalvar.yy",},
|
||||
|
@ -1388,6 +1392,7 @@
|
|||
{"name":"file_dropper","order":1,"path":"extensions/file_dropper/file_dropper.yy",},
|
||||
{"name":"s_biterator_b_shape_idle","order":3,"path":"sprites/s_biterator_b_shape_idle/s_biterator_b_shape_idle.yy",},
|
||||
{"name":"sh_mirror_mask","order":8,"path":"shaders/sh_mirror_mask/sh_mirror_mask.yy",},
|
||||
{"name":"panel_keyframe_driver","order":2,"path":"scripts/panel_keyframe_driver/panel_keyframe_driver.yy",},
|
||||
{"name":"node_export","order":9,"path":"scripts/node_export/node_export.yy",},
|
||||
{"name":"controlPointBox","order":4,"path":"scripts/controlPointBox/controlPointBox.yy",},
|
||||
{"name":"sh_vertex_pt","order":5,"path":"shaders/sh_vertex_pt/sh_vertex_pt.yy",},
|
||||
|
@ -1584,6 +1589,7 @@
|
|||
{"name":"panel_history","order":7,"path":"scripts/panel_history/panel_history.yy",},
|
||||
{"name":"sh_channel_H","order":3,"path":"shaders/sh_channel_H/sh_channel_H.yy",},
|
||||
{"name":"rotatorRandom","order":1,"path":"scripts/rotatorRandom/rotatorRandom.yy",},
|
||||
{"name":"node_spout_send","order":19,"path":"scripts/node_spout_send/node_spout_send.yy",},
|
||||
{"name":"s_node_RGB","order":34,"path":"sprites/s_node_RGB/s_node_RGB.yy",},
|
||||
{"name":"fd_rectangle_draw","order":9,"path":"scripts/fd_rectangle_draw/fd_rectangle_draw.yy",},
|
||||
{"name":"FirebaseREST_Firestore_jsonEncode","order":13,"path":"scripts/FirebaseREST_Firestore_jsonEncode/FirebaseREST_Firestore_jsonEncode.yy",},
|
||||
|
|
|
@ -154,6 +154,8 @@
|
|||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"lua","folderPath":"folders/nodes/data/lua.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"misc","folderPath":"folders/nodes/data/misc.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"MK effects","folderPath":"folders/nodes/data/MK effects.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"mk sparkle","folderPath":"folders/nodes/data/MK effects/mk sparkle.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"src","folderPath":"folders/nodes/data/MK effects/mk sparkle/src.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"PCX","folderPath":"folders/nodes/data/PCX.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"array","folderPath":"folders/nodes/data/PCX/array.yy",},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"flow control","folderPath":"folders/nodes/data/PCX/flow control.yy",},
|
||||
|
@ -418,6 +420,7 @@
|
|||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Dice.pxc","CopyToMask":-1,"filePath":"datafiles/Sample Projects",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Shiny gem.png","CopyToMask":-1,"filePath":"datafiles/Sample Projects",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Shiny gem.pxc","CopyToMask":-1,"filePath":"datafiles/Sample Projects",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"spark.png","CopyToMask":-1,"filePath":"datafiles/Sample Projects",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"tile_0044.png","CopyToMask":-1,"filePath":"datafiles/Sample Projects",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"tile_0067.png","CopyToMask":-1,"filePath":"datafiles/Sample Projects",},
|
||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"tile_0126.png","CopyToMask":-1,"filePath":"datafiles/Sample Projects",},
|
||||
|
@ -547,6 +550,7 @@
|
|||
{"id":{"name":"s_biterator_knob","path":"sprites/s_biterator_knob/s_biterator_knob.yy",},},
|
||||
{"id":{"name":"array_functions","path":"scripts/array_functions/array_functions.yy",},},
|
||||
{"id":{"name":"sh_blur_final","path":"shaders/sh_blur_final/sh_blur_final.yy",},},
|
||||
{"id":{"name":"s_node_spout","path":"sprites/s_node_spout/s_node_spout.yy",},},
|
||||
{"id":{"name":"sh_fd_visualize_velocity_glsl","path":"shaders/sh_fd_visualize_velocity_glsl/sh_fd_visualize_velocity_glsl.yy",},},
|
||||
{"id":{"name":"FirebaseFirestore_operationFromSymbol","path":"scripts/FirebaseFirestore_operationFromSymbol/FirebaseFirestore_operationFromSymbol.yy",},},
|
||||
{"id":{"name":"node_3d_mesh_terrain","path":"scripts/node_3d_mesh_terrain/node_3d_mesh_terrain.yy",},},
|
||||
|
@ -863,6 +867,7 @@
|
|||
{"id":{"name":"Obj_FirebaseFirestore_Document_Delete","path":"objects/Obj_FirebaseFirestore_Document_Delete/Obj_FirebaseFirestore_Document_Delete.yy",},},
|
||||
{"id":{"name":"node_module_test","path":"scripts/node_module_test/node_module_test.yy",},},
|
||||
{"id":{"name":"s_node_shadow","path":"sprites/s_node_shadow/s_node_shadow.yy",},},
|
||||
{"id":{"name":"Spout","path":"extensions/Spout/Spout.yy",},},
|
||||
{"id":{"name":"s_node_grid_hex_noise","path":"sprites/s_node_grid_hex_noise/s_node_grid_hex_noise.yy",},},
|
||||
{"id":{"name":"sh_rsh_corner","path":"shaders/sh_rsh_corner/sh_rsh_corner.yy",},},
|
||||
{"id":{"name":"s_node_logic_opr","path":"sprites/s_node_logic_opr/s_node_logic_opr.yy",},},
|
||||
|
@ -1343,6 +1348,7 @@
|
|||
{"id":{"name":"s_node_print","path":"sprites/s_node_print/s_node_print.yy",},},
|
||||
{"id":{"name":"sh_seperate_shape_counter","path":"shaders/sh_seperate_shape_counter/sh_seperate_shape_counter.yy",},},
|
||||
{"id":{"name":"s_node_stack","path":"sprites/s_node_stack/s_node_stack.yy",},},
|
||||
{"id":{"name":"s_mk_sparkle_select","path":"sprites/s_mk_sparkle_select/s_mk_sparkle_select.yy",},},
|
||||
{"id":{"name":"hlsl_server","path":"scripts/hlsl_server/hlsl_server.yy",},},
|
||||
{"id":{"name":"s_fade_up","path":"sprites/s_fade_up/s_fade_up.yy",},},
|
||||
{"id":{"name":"panel_globalvar","path":"scripts/panel_globalvar/panel_globalvar.yy",},},
|
||||
|
@ -1696,6 +1702,7 @@
|
|||
{"id":{"name":"sh_palette_replace","path":"shaders/sh_palette_replace/sh_palette_replace.yy",},},
|
||||
{"id":{"name":"buffer_functions","path":"scripts/buffer_functions/buffer_functions.yy",},},
|
||||
{"id":{"name":"key_press","path":"scripts/key_press/key_press.yy",},},
|
||||
{"id":{"name":"s_mk_sparkle_bg","path":"sprites/s_mk_sparkle_bg/s_mk_sparkle_bg.yy",},},
|
||||
{"id":{"name":"sh_mirror","path":"shaders/sh_mirror/sh_mirror.yy",},},
|
||||
{"id":{"name":"sh_cell_noise_random","path":"shaders/sh_cell_noise_random/sh_cell_noise_random.yy",},},
|
||||
{"id":{"name":"node_iterator_input","path":"scripts/node_iterator_input/node_iterator_input.yy",},},
|
||||
|
@ -1738,6 +1745,7 @@
|
|||
{"id":{"name":"s_biterator_b_shape_idle","path":"sprites/s_biterator_b_shape_idle/s_biterator_b_shape_idle.yy",},},
|
||||
{"id":{"name":"compat_path_array","path":"scripts/compat_path_array/compat_path_array.yy",},},
|
||||
{"id":{"name":"sh_mirror_mask","path":"shaders/sh_mirror_mask/sh_mirror_mask.yy",},},
|
||||
{"id":{"name":"panel_keyframe_driver","path":"scripts/panel_keyframe_driver/panel_keyframe_driver.yy",},},
|
||||
{"id":{"name":"node_export","path":"scripts/node_export/node_export.yy",},},
|
||||
{"id":{"name":"controlPointBox","path":"scripts/controlPointBox/controlPointBox.yy",},},
|
||||
{"id":{"name":"sh_vertex_pt","path":"shaders/sh_vertex_pt/sh_vertex_pt.yy",},},
|
||||
|
@ -1964,6 +1972,7 @@
|
|||
{"id":{"name":"panel_history","path":"scripts/panel_history/panel_history.yy",},},
|
||||
{"id":{"name":"sh_channel_H","path":"shaders/sh_channel_H/sh_channel_H.yy",},},
|
||||
{"id":{"name":"rotatorRandom","path":"scripts/rotatorRandom/rotatorRandom.yy",},},
|
||||
{"id":{"name":"node_spout_send","path":"scripts/node_spout_send/node_spout_send.yy",},},
|
||||
{"id":{"name":"s_node_RGB","path":"sprites/s_node_RGB/s_node_RGB.yy",},},
|
||||
{"id":{"name":"fd_rectangle_draw","path":"scripts/fd_rectangle_draw/fd_rectangle_draw.yy",},},
|
||||
{"id":{"name":"s_node_export","path":"sprites/s_node_export/s_node_export.yy",},},
|
||||
|
|
BIN
datafiles/Sample Projects/spark.png
Normal file
After Width: | Height: | Size: 114 B |
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
|
@ -25,11 +25,17 @@ event_inherited();
|
|||
dialog_h_min = content.min_h;
|
||||
dialog_resizable = content.resizable;
|
||||
|
||||
content.panel = self;
|
||||
content.in_dialog = true;
|
||||
|
||||
if(content.auto_pin) destroy_on_click_out = false;
|
||||
} #endregion
|
||||
|
||||
function contentResize() { #region
|
||||
dialog_w = content.w + content.showHeader * padding * 2;
|
||||
dialog_h = content.h + content.showHeader * (padding * 2 + title_height);
|
||||
} #endregion
|
||||
|
||||
function resetMask() { #region
|
||||
if(!content) return;
|
||||
mask_surface = surface_verify(mask_surface, dialog_w - content.showHeader * padding * 2,
|
||||
|
|
|
@ -14,8 +14,7 @@
|
|||
window_set_min_width(960);
|
||||
window_set_min_height(600);
|
||||
|
||||
//if(OS == os_windows) gameframe_init_native();
|
||||
if(OS == os_macosx) mac_window_init();
|
||||
winManInit();
|
||||
|
||||
depth = 0;
|
||||
win_wp = WIN_W;
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
/// @description init
|
||||
if(winMan_isMinimized()) exit;
|
||||
draw_clear(COLORS.bg);
|
||||
|
||||
#region windows init
|
||||
if(OS == os_windows && winMan_isMinimized())
|
||||
exit;
|
||||
#endregion
|
||||
|
||||
#region widget scroll
|
||||
if(!WIDGET_TAB_BLOCK) {
|
||||
if(keyboard_check_pressed(vk_tab) && key_mod_press(SHIFT))
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/// @description tooltip filedrop
|
||||
if(OS == os_windows && winMan_isMinimized()) exit;
|
||||
if(winMan_isMinimized()) exit;
|
||||
|
||||
#region tooltip
|
||||
if(is_struct(TOOLTIP)) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/// @description init
|
||||
if(OS == os_windows && winMan_isMinimized()) exit;
|
||||
if(winMan_isMinimized()) exit;
|
||||
winManStep()
|
||||
|
||||
//print("===== Step start =====");
|
||||
|
|
|
@ -7,17 +7,17 @@ HOVERING_ELEMENT = _HOVERING_ELEMENT;
|
|||
_HOVERING_ELEMENT = noone;
|
||||
|
||||
#region minimize
|
||||
if(OS == os_windows) {
|
||||
if(winMan_isMinimized()) {
|
||||
if(!minimized)
|
||||
game_set_speed(1, gamespeed_fps);
|
||||
minimized = true;
|
||||
exit;
|
||||
}
|
||||
}
|
||||
if(winMan_isMinimized()) {
|
||||
if(!minimized) game_set_speed(1, gamespeed_fps);
|
||||
minimized = true;
|
||||
exit;
|
||||
} else if(!minimized)
|
||||
window_preminimize_rect = [ window_get_x(), window_get_y(), window_get_width(), window_get_height() ];
|
||||
|
||||
if(minimized) {
|
||||
game_set_speed(PREFERENCES.ui_framerate, gamespeed_fps);
|
||||
window_set_rectangle(window_preminimize_rect[0], window_preminimize_rect[1], window_preminimize_rect[2], window_preminimize_rect[3]);
|
||||
|
||||
minimized = false;
|
||||
}
|
||||
#endregion
|
||||
|
|
|
@ -34,10 +34,11 @@ enum DS_TYPE {
|
|||
list,
|
||||
}
|
||||
|
||||
function Action(_type, _object, _data) constructor {
|
||||
type = _type;
|
||||
obj = _object;
|
||||
data = _data;
|
||||
function Action(_type, _object, _data, _trigger = 0) constructor {
|
||||
type = _type;
|
||||
obj = _object;
|
||||
data = _data;
|
||||
trigger = _trigger;
|
||||
extra_data = 0;
|
||||
|
||||
clear_action = noone;
|
||||
|
@ -107,9 +108,11 @@ function Action(_type, _object, _data) constructor {
|
|||
data = _data;
|
||||
break;
|
||||
case ACTION_TYPE.custom :
|
||||
data = obj(data);
|
||||
obj(data);
|
||||
break;
|
||||
}
|
||||
|
||||
if(trigger) trigger();
|
||||
} #endregion
|
||||
|
||||
static redo = function() { #region
|
||||
|
@ -176,9 +179,11 @@ function Action(_type, _object, _data) constructor {
|
|||
data = _data;
|
||||
break;
|
||||
case ACTION_TYPE.custom :
|
||||
data = obj(data);
|
||||
obj(data);
|
||||
break;
|
||||
}
|
||||
|
||||
if(trigger) trigger();
|
||||
} #endregion
|
||||
|
||||
static toString = function() { #region
|
||||
|
@ -245,12 +250,12 @@ function Action(_type, _object, _data) constructor {
|
|||
} #endregion
|
||||
}
|
||||
|
||||
function recordAction(_type, _object, _data = -1) { #region
|
||||
function recordAction(_type, _object, _data = -1, _trigger = 0) { #region
|
||||
if(IS_UNDOING) return noone;
|
||||
if(LOADING) return noone;
|
||||
if(UNDO_HOLDING) return noone;
|
||||
|
||||
var act = new Action(_type, _object, _data);
|
||||
var act = new Action(_type, _object, _data, _trigger);
|
||||
array_push(o_main.action_last_frame, act);
|
||||
|
||||
while(!ds_stack_empty(REDO_STACK)) {
|
||||
|
|
|
@ -25,10 +25,10 @@
|
|||
globalvar VERSION, SAVE_VERSION, VERSION_STRING, BUILD_NUMBER, LATEST_VERSION;
|
||||
|
||||
LATEST_VERSION = 11500;
|
||||
VERSION = 11604;
|
||||
SAVE_VERSION = 11600.1;
|
||||
VERSION_STRING = "1.16.0.4";
|
||||
BUILD_NUMBER = 11604;
|
||||
VERSION = 11610;
|
||||
SAVE_VERSION = 11610;
|
||||
VERSION_STRING = "1.16.1.0";
|
||||
BUILD_NUMBER = 11610;
|
||||
|
||||
globalvar APPEND_MAP;
|
||||
APPEND_MAP = ds_map_create();
|
||||
|
|
|
@ -3,7 +3,7 @@ function __init_mask_modifier(_mask_index) { #region
|
|||
|
||||
inputs[| _ind + 0] = nodeValue("Invert mask", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
|
||||
|
||||
inputs[| _ind + 1] = nodeValue("Mask feather", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 16)
|
||||
inputs[| _ind + 1] = nodeValue("Mask feather", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
|
||||
.setDisplay(VALUE_DISPLAY.slider, { range: [0, 32, 1] });
|
||||
|
||||
__mask_index = _mask_index;
|
||||
|
|
|
@ -289,7 +289,8 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
|||
surface_store_buffer(data.index);
|
||||
surface_free(data.surface);
|
||||
|
||||
return { surface: _canvas, tooltip: data.tooltip, index: preview_index }
|
||||
data.surface = _canvas;
|
||||
data.index = preview_index;
|
||||
}, { surface: surface_clone(getCanvasSurface()), tooltip: "Modify canvas", index: preview_index });
|
||||
|
||||
action.clear_action = function(data) { surface_free_safe(data.surface); };
|
||||
|
|
|
@ -1,18 +1,6 @@
|
|||
function Node_Color_replace(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
|
||||
name = "Replace Palette";
|
||||
|
||||
shader = sh_palette_replace;
|
||||
uniform_from = shader_get_uniform(shader, "colorFrom");
|
||||
uniform_from_count = shader_get_uniform(shader, "colorFrom_amo");
|
||||
|
||||
uniform_to = shader_get_uniform(shader, "colorTo");
|
||||
uniform_to_count = shader_get_uniform(shader, "colorTo_amo");
|
||||
|
||||
uniform_ter = shader_get_uniform(shader, "treshold");
|
||||
uniform_alp = shader_get_uniform(shader, "alphacmp");
|
||||
uniform_inv = shader_get_uniform(shader, "inverted");
|
||||
uniform_hrd = shader_get_uniform(shader, "hardReplace");
|
||||
|
||||
inputs[| 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
|
||||
inputs[| 1] = nodeValue("Palette from", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, DEF_PALETTE, "Color to be replaced.")
|
||||
.setDisplay(VALUE_DISPLAY.palette);
|
||||
|
@ -82,29 +70,22 @@ function Node_Color_replace(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
|
|||
_colorTo[i * 4 + 3] = 1;
|
||||
}
|
||||
|
||||
surface_set_target(_outSurf);
|
||||
DRAW_CLEAR
|
||||
BLEND_OVERRIDE;
|
||||
|
||||
shader_set(shader);
|
||||
shader_set_uniform_f_array_safe(uniform_from, _colorFrom);
|
||||
shader_set_uniform_i(uniform_from_count, array_length(fr));
|
||||
shader_set_uniform_i(uniform_alp, alp);
|
||||
shader_set_uniform_i(uniform_hrd, hrd);
|
||||
surface_set_shader(_outSurf, sh_palette_replace);
|
||||
shader_set_f("colorFrom", _colorFrom);
|
||||
shader_set_i("colorFrom_amo", array_length(fr));
|
||||
shader_set_f("colorTo", _colorTo);
|
||||
shader_set_i("colorTo_amo", array_length(to));
|
||||
|
||||
shader_set_uniform_f_array_safe(uniform_to, _colorTo);
|
||||
shader_set_uniform_i(uniform_to_count, array_length(to));
|
||||
shader_set_uniform_f(uniform_ter, tr);
|
||||
shader_set_uniform_i(uniform_inv, in);
|
||||
shader_set_i("alphacmp", alp);
|
||||
shader_set_i("hardReplace", hrd);
|
||||
shader_set_f("treshold", tr);
|
||||
shader_set_i("inverted", in);
|
||||
|
||||
shader_set_i("useMask", is_surface(msk));
|
||||
shader_set_surface("mask", msk);
|
||||
|
||||
draw_surface_safe(_data[0], 0, 0);
|
||||
shader_reset();
|
||||
|
||||
BLEND_NORMAL
|
||||
surface_reset_target();
|
||||
surface_reset_shader();
|
||||
|
||||
__process_mask_modifier(_data);
|
||||
if(!in) _outSurf = mask_apply(_data[0], _outSurf, _data[7], _data[8]);
|
||||
|
|
|
@ -130,7 +130,7 @@ function Node_Colors_Replace(_x, _y, _group = noone) : Node_Processor(_x, _y, _g
|
|||
attribute_surface_depth();
|
||||
|
||||
static refreshPalette = function() { #region
|
||||
var _surf = array_safe_get(current_data, 0);
|
||||
var _surf = inputs[| 0].getValue();
|
||||
|
||||
inputs[| 1].setValue([]);
|
||||
inputs[| 2].setValue([]);
|
||||
|
@ -141,12 +141,15 @@ function Node_Colors_Replace(_x, _y, _group = noone) : Node_Processor(_x, _y, _g
|
|||
var _pall = ds_map_create();
|
||||
|
||||
for( var i = 0, n = array_length(_surf); i < n; i++ ) {
|
||||
var ww = surface_get_width_safe(_surf[i]);
|
||||
var hh = surface_get_height_safe(_surf[i]);
|
||||
var _s = _surf[i];
|
||||
if(!is_surface(_s)) continue;
|
||||
|
||||
var ww = surface_get_width_safe(_s);
|
||||
var hh = surface_get_height_safe(_s);
|
||||
|
||||
var c_buffer = buffer_create(ww * hh * 4, buffer_fixed, 2);
|
||||
|
||||
buffer_get_surface(c_buffer, _surf[i], 0);
|
||||
|
||||
buffer_get_surface(c_buffer, _s, 0);
|
||||
buffer_seek(c_buffer, buffer_seek_start, 0);
|
||||
|
||||
for( var i = 0; i < ww * hh; i++ ) {
|
||||
|
@ -168,6 +171,12 @@ function Node_Colors_Replace(_x, _y, _group = noone) : Node_Processor(_x, _y, _g
|
|||
inputs[| 2].setValue(palette);
|
||||
} #endregion
|
||||
|
||||
static onValueFromUpdate = function(index) { #region
|
||||
if(LOADING || APPENDING || CLONING) return;
|
||||
|
||||
if(index == 0) refreshPalette();
|
||||
} #endregion
|
||||
|
||||
static step = function() { #region
|
||||
__step_mask_modifier();
|
||||
} #endregion
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
enum CURVE_TYPE {
|
||||
linear,
|
||||
bezier,
|
||||
cut,
|
||||
}
|
||||
enum KEY_TYPE { normal, adder }
|
||||
enum CURVE_TYPE { linear, bezier, cut }
|
||||
enum DRIVER_TYPE { none, linear, wiggle, sine }
|
||||
|
||||
function valueKey(_time, _value, _anim = noone, _in = 0, _ot = 0) constructor {
|
||||
#region ---- main ----
|
||||
|
@ -18,8 +16,19 @@ function valueKey(_time, _value, _anim = noone, _in = 0, _ot = 0) constructor {
|
|||
var _int = anim? anim.prop.key_inter : CURVE_TYPE.linear;
|
||||
ease_in_type = _int;
|
||||
ease_out_type = _int;
|
||||
|
||||
|
||||
dopesheet_x = 0;
|
||||
|
||||
drivers = {
|
||||
seed : irandom_range(100000, 999999),
|
||||
type : DRIVER_TYPE.none,
|
||||
speed : 1,
|
||||
octave : 2,
|
||||
frequency : 4,
|
||||
amplitude : 1,
|
||||
axis_sync : false,
|
||||
phase : 0,
|
||||
};
|
||||
#endregion
|
||||
|
||||
static setTime = function(time) { #region
|
||||
|
@ -63,6 +72,19 @@ function valueKey(_time, _value, _anim = noone, _in = 0, _ot = 0) constructor {
|
|||
return key;
|
||||
} #endregion
|
||||
|
||||
static getDrawIndex = function() { #region
|
||||
if(anim.prop.type == VALUE_TYPE.trigger)
|
||||
return 1;
|
||||
|
||||
if(drivers.type)
|
||||
return 2;
|
||||
|
||||
if(ease_in_type == CURVE_TYPE.cut)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
} #endregion
|
||||
|
||||
static toString = function() { return $"[Keyframe] {time}: {value}"; }
|
||||
}
|
||||
|
||||
|
@ -253,7 +275,14 @@ function valueAnimator(_val, _prop, _sep_axis = false) constructor {
|
|||
}
|
||||
|
||||
if(ds_list_size(values) == 0) return processTypeDefault();
|
||||
if(ds_list_size(values) == 1) return processType(values[| 0].value);
|
||||
if(ds_list_size(values) == 1) {
|
||||
var _key = values[| 0];
|
||||
|
||||
if(_key.drivers.type && _time >= _key.time)
|
||||
return processType(processDriver(_time, _key));
|
||||
|
||||
return processType(_key.value);
|
||||
}
|
||||
|
||||
if(prop.type == VALUE_TYPE.path) return processType(values[| 0].value);
|
||||
if(!prop.is_anim) return processType(values[| 0].value);
|
||||
|
@ -282,7 +311,7 @@ function valueAnimator(_val, _prop, _sep_axis = false) constructor {
|
|||
var _keyIndex;
|
||||
if(_time >= _len) _keyIndex = 999_999;
|
||||
else if(_time <= 0) _keyIndex = -1;
|
||||
else _keyIndex = key_map[_time];
|
||||
else _keyIndex = array_safe_get(key_map, _time);
|
||||
|
||||
if(_keyIndex == -1) { #region Before first key
|
||||
if(prop.on_end == KEYFRAME_END.wrap) {
|
||||
|
@ -305,8 +334,13 @@ function valueAnimator(_val, _prop, _sep_axis = false) constructor {
|
|||
} #endregion
|
||||
|
||||
if(_keyIndex == 999_999) { #region After last key
|
||||
var _lstKey = values[| ds_list_size(values) - 1];
|
||||
|
||||
if(_lstKey.drivers.type)
|
||||
return processType(processDriver(_time, _lstKey));
|
||||
|
||||
if(prop.on_end == KEYFRAME_END.wrap) {
|
||||
var from = values[| ds_list_size(values) - 1];
|
||||
var from = _lstKey;
|
||||
var to = values[| 0];
|
||||
var prog = _time - from.time;
|
||||
var totl = TOTAL_FRAMES - from.time + to.time;
|
||||
|
@ -317,15 +351,19 @@ function valueAnimator(_val, _prop, _sep_axis = false) constructor {
|
|||
return lerpValue(from, to, _lrp);
|
||||
}
|
||||
|
||||
return processType(values[| ds_list_size(values) - 1].value); //Last frame
|
||||
return processType(_lstKey.value); //Last frame
|
||||
} #endregion
|
||||
|
||||
#region In between
|
||||
var from = values[| _keyIndex];
|
||||
var to = values[| _keyIndex + 1];
|
||||
|
||||
var rat = (_time - from.time) / (to.time - from.time);
|
||||
var _lrp = interpolate(from, to, rat);
|
||||
|
||||
if(from.drivers.type)
|
||||
return processDriver(_time, from, lerpValue(from, to, _lrp), rat);
|
||||
|
||||
return lerpValue(from, to, _lrp);
|
||||
#endregion
|
||||
} #endregion
|
||||
|
@ -335,6 +373,41 @@ function valueAnimator(_val, _prop, _sep_axis = false) constructor {
|
|||
return 0;
|
||||
} #endregion
|
||||
|
||||
static processDriver = function(_time, _key, _val = undefined, _intp = 0) { #region
|
||||
|
||||
static _processDriver = function(val, drivers, _t, _index = 0, _intp = 0) {
|
||||
switch(drivers.type) {
|
||||
case DRIVER_TYPE.linear :
|
||||
return val + _t * drivers.speed;
|
||||
|
||||
case DRIVER_TYPE.wiggle :
|
||||
var w = perlin1D(_t, drivers.seed + _index, drivers.frequency / 10, drivers.octave, -1, 1) * drivers.amplitude;
|
||||
return val + w;
|
||||
|
||||
case DRIVER_TYPE.sine :
|
||||
var w = sin((drivers.phase * (_index + 1) + _t * drivers.frequency / TOTAL_FRAMES) * pi * 2) * drivers.amplitude;
|
||||
return val + w;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
var _dt = _time - _key.time;
|
||||
_val = _val == undefined? _key.value : _val;
|
||||
var _res = _val;
|
||||
|
||||
if(prop.type == VALUE_TYPE.integer || prop.type == VALUE_TYPE.float) {
|
||||
if(is_array(_val)) {
|
||||
_res = array_create(array_length(_val));
|
||||
for( var i = 0, n = array_length(_val); i < n; i++ )
|
||||
_res[i] = is_numeric(_val[i])? _processDriver(_val[i], _key.drivers, _dt, _key.drivers.axis_sync? 0 : i, _intp) : _val[i];
|
||||
} else
|
||||
_res = _processDriver(_val, _key.drivers, _dt, 0, _intp);
|
||||
}
|
||||
|
||||
return _res;
|
||||
} #endregion
|
||||
|
||||
static processType = function(_val) { #region
|
||||
var _res = _val;
|
||||
if(!sep_axis && typeArray(prop.display_type) && is_array(_val)) {
|
||||
|
@ -387,7 +460,9 @@ function valueAnimator(_val, _prop, _sep_axis = false) constructor {
|
|||
if(record) {
|
||||
var act = new Action(ACTION_TYPE.custom, function(data) {
|
||||
if(data.undo) insertKey(data.overKey, data.index);
|
||||
return { overKey : data.overKey, index : data.index, undo : !data.undo };
|
||||
updateKeyMap();
|
||||
|
||||
data.undo = !data.undo;
|
||||
}, { overKey : values[| i], index : i, undo : true });
|
||||
mergeAction(act);
|
||||
}
|
||||
|
@ -397,13 +472,14 @@ function valueAnimator(_val, _prop, _sep_axis = false) constructor {
|
|||
return 2;
|
||||
}
|
||||
|
||||
for( var i = 0; i < ds_list_size(values); i++ ) {
|
||||
for( var i = 0; i < ds_list_size(values); i++ ) { //insert key before the last key
|
||||
if(values[| i].time < _time) continue;
|
||||
|
||||
if(record) recordAction(ACTION_TYPE.custom, function(data) {
|
||||
var _prevTime = data.key.time;
|
||||
setKeyTime(data.key, data.time, false);
|
||||
return { key : data.key, time : _prevTime }
|
||||
|
||||
data.time = _prevTime;
|
||||
}, { key : _key, time : _prevTime });
|
||||
|
||||
ds_list_insert(values, i, _key);
|
||||
|
@ -411,10 +487,11 @@ function valueAnimator(_val, _prop, _sep_axis = false) constructor {
|
|||
return 1;
|
||||
}
|
||||
|
||||
if(record) recordAction(ACTION_TYPE.custom, function(data) {
|
||||
if(record) recordAction(ACTION_TYPE.custom, function(data) { // insert key after the last key
|
||||
var _prevTime = data.key.time;
|
||||
setKeyTime(data.key, data.time, false);
|
||||
return { key : data.key, time : _prevTime }
|
||||
|
||||
data.time = _prevTime;
|
||||
}, { key : _key, time : _prevTime });
|
||||
|
||||
ds_list_add(values, _key);
|
||||
|
@ -462,7 +539,7 @@ function valueAnimator(_val, _prop, _sep_axis = false) constructor {
|
|||
if(ds_list_size(values) == 0) { // Should not be called normally
|
||||
var k = new valueKey(_time, _val, self, ease_in, ease_out);
|
||||
ds_list_add(values, k);
|
||||
if(_record) recordAction(ACTION_TYPE.list_insert, values, [ k, ds_list_size(values) - 1, $"add {prop.name} keyframe" ]);
|
||||
if(_record) recordAction(ACTION_TYPE.list_insert, values, [ k, ds_list_size(values) - 1, $"add {prop.name} keyframe" ], function() { updateKeyMap(); });
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -480,14 +557,14 @@ function valueAnimator(_val, _prop, _sep_axis = false) constructor {
|
|||
} else if(_key.time > _time) {
|
||||
var k = new valueKey(_time, _val, self, ease_in, ease_out);
|
||||
ds_list_insert(values, i, k);
|
||||
if(_record) recordAction(ACTION_TYPE.list_insert, values, [k, i, $"add {prop.name} keyframe" ]);
|
||||
if(_record) recordAction(ACTION_TYPE.list_insert, values, [k, i, $"add {prop.name} keyframe" ], function() { updateKeyMap(); });
|
||||
updateKeyMap();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
var k = new valueKey(_time, _val, self, ease_in, ease_out);
|
||||
if(_record) recordAction(ACTION_TYPE.list_insert, values, [ k, ds_list_size(values), $"add {prop.name} keyframe" ]);
|
||||
if(_record) recordAction(ACTION_TYPE.list_insert, values, [ k, ds_list_size(values), $"add {prop.name} keyframe" ], function() { updateKeyMap(); });
|
||||
ds_list_add(values, k);
|
||||
updateKeyMap();
|
||||
return true;
|
||||
|
@ -534,6 +611,7 @@ function valueAnimator(_val, _prop, _sep_axis = false) constructor {
|
|||
_value_list[4] = values[| i].ease_in_type;
|
||||
_value_list[5] = values[| i].ease_out_type;
|
||||
_value_list[6] = values[| i].ease_y_lock;
|
||||
_value_list[7] = values[| i].drivers;
|
||||
|
||||
array_push(_data, _value_list);
|
||||
}
|
||||
|
@ -580,6 +658,7 @@ function valueAnimator(_val, _prop, _sep_axis = false) constructor {
|
|||
var ease_in_type = array_safe_get(_keyframe, 4);
|
||||
var ease_out_type = array_safe_get(_keyframe, 5);
|
||||
var ease_y_lock = array_safe_get(_keyframe, 6, true);
|
||||
var driver = array_safe_get(_keyframe, 7, {});
|
||||
|
||||
var _val = value;
|
||||
|
||||
|
@ -608,6 +687,8 @@ function valueAnimator(_val, _prop, _sep_axis = false) constructor {
|
|||
vk.ease_in_type = ease_in_type;
|
||||
vk.ease_out_type = ease_out_type;
|
||||
vk.ease_y_lock = ease_y_lock;
|
||||
struct_override(vk.drivers, driver);
|
||||
|
||||
ds_list_add(values, vk);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,33 +1,217 @@
|
|||
enum MKSPARK_DRAW {
|
||||
dot,
|
||||
trail
|
||||
}
|
||||
enum MKSPARK_DIRR { main, diag }
|
||||
enum MKSPARK { dir, y, x, speed, length, lendel, time }
|
||||
|
||||
function Node_MK_Sparkle(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
|
||||
name = "MK Sparkle";
|
||||
dimension_index = -1;
|
||||
update_on_frame = true;
|
||||
|
||||
inputs[| 0] = nodeValue("Size", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4);
|
||||
inputs[| 0] = nodeValue("Size", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 5);
|
||||
|
||||
inputs[| 1] = nodeValue("Sparkle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [
|
||||
[ 0, 0, 2, MKSPARK_DRAW.trail, BLEND.add, 0 ],
|
||||
[ 0, -1, 1, MKSPARK_DRAW.trail, BLEND.subtract, 0 ],
|
||||
[ 1, 0, 2, MKSPARK_DRAW.trail, BLEND.add, -2 ],
|
||||
[ 1, -1, 2, MKSPARK_DRAW.trail, BLEND.subtract, -2 ],
|
||||
[ MKSPARK_DIRR.main, 0, 0, 2, 1, 0, 0 ],
|
||||
[ MKSPARK_DIRR.main, 0, -1, 1, 1, 0, 0 ],
|
||||
])
|
||||
.setArrayDepth(2);
|
||||
.setArrayDepth(2)
|
||||
.setArrayDynamic();
|
||||
|
||||
inputs[| 2] = nodeValue("Start frame", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0);
|
||||
|
||||
inputs[| 3] = nodeValue("Speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1);
|
||||
|
||||
inputs[| 4] = nodeValue("Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [])
|
||||
.setArrayDepth(1)
|
||||
.setArrayDynamic();
|
||||
|
||||
editor_rect = [ 0, 0 ];
|
||||
editor_rect_to = [ 0, 0 ];
|
||||
editor_rect_hover = 0;
|
||||
editor_hold_ind = -1;
|
||||
editor_hold_sx = -1;
|
||||
editor_timer = -1;
|
||||
editor_timer_mx = 0;
|
||||
editor_timer_sx = 0;
|
||||
|
||||
sparkleEditor = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus) { #region
|
||||
var _size = inputs[| 0].getValue();
|
||||
var _sprk = inputs[| 1].getValue();
|
||||
var h = array_length(_sprk) * 32 + 16;
|
||||
|
||||
return h;
|
||||
var _c = ceil(_size / 2);
|
||||
|
||||
var rows = array_create(_c);
|
||||
for( var i = 0; i < _c; i++ ) rows[i] = [];
|
||||
|
||||
for( var i = 0, n = array_length(_sprk); i < n; i++ ) {
|
||||
var _sp = _sprk[i];
|
||||
var _rw = _sp[MKSPARK.y];
|
||||
|
||||
array_push(rows[_rw], i);
|
||||
}
|
||||
|
||||
_y += ui(8);
|
||||
var cell_s = ui(32);
|
||||
var cell_w = (4 + _c) * cell_s;
|
||||
var cx0 = _x + _w / 2 - cell_w / 2;
|
||||
var cx1 = cx0 + cell_s;
|
||||
var cx2 = cx1 + cell_s * 3;
|
||||
var cx3 = cx2 + cell_s * _c;
|
||||
var cy = _y + ui(24);
|
||||
|
||||
var _amo = 0;
|
||||
for( var i = 0, n = array_length(rows); i < n; i++ )
|
||||
_amo += 1 + array_length(rows[i]);
|
||||
|
||||
var _h = ui(8) + _amo * cell_s + ui(48);
|
||||
|
||||
//draw_sprite_stretched(s_mk_sparkle_bg, 0, _x, _y, _w, _h);
|
||||
draw_set_circle_precision(32);
|
||||
|
||||
var _rect_hover = 0;
|
||||
var _cont_hover = -1;
|
||||
var _arr_ind = 0;
|
||||
var _arr_ins = -1;
|
||||
var _arr_del = -1;
|
||||
var _arr_insrw = -1;
|
||||
var _arr_insx = -1;
|
||||
|
||||
for( var i = 0, n = array_length(rows); i < n; i++ ) {
|
||||
var row = rows[i];
|
||||
|
||||
for( var j = 0, m = array_length(row); j <= m; j++ ) {
|
||||
var _cy = cy + cell_s / 2;
|
||||
|
||||
var _chov = 0;
|
||||
var _tx = cx0 + cell_s / 2 - 4;
|
||||
var _ty = _cy;
|
||||
if(j < m) {
|
||||
draw_set_color(#272736);
|
||||
draw_circle(_tx, _ty, cell_s / 2 - 4, false);
|
||||
}
|
||||
|
||||
if(_hover && point_in_rectangle(_m[0], _m[1], _tx - cell_s / 2, _ty - cell_s / 2, _tx + cell_s / 2, _ty + cell_s / 2)) {
|
||||
editor_rect_to = [ _tx + ui(1), _ty ];
|
||||
_rect_hover = 1;
|
||||
_chov = 2;
|
||||
}
|
||||
|
||||
var _cx = cx1;
|
||||
var _chox = 0;
|
||||
|
||||
for( var k = -3; k < _c; k++ ) {
|
||||
var cc = abs(i + (k >= 0? k : k - 1)) % 2? #272736 : #313143;
|
||||
draw_set_color(k >= 0? cc : merge_color(cc, #171723, 0.5));
|
||||
draw_rectangle(_cx, cy, _cx + cell_s, cy + cell_s, false);
|
||||
|
||||
if(_hover && point_in_rectangle(_m[0], _m[1], _cx, cy, _cx + cell_s - 1, cy + cell_s - 1)) {
|
||||
editor_rect_to = [_cx + cell_s / 2, cy + cell_s / 2];
|
||||
_rect_hover = 1;
|
||||
_cont_hover = _arr_ind;
|
||||
_chov = 1;
|
||||
_chox = k;
|
||||
_arr_insx = k;
|
||||
}
|
||||
|
||||
_cx += cell_s;
|
||||
}
|
||||
|
||||
if(mouse_press(mb_left, _chov == 1 && _focus)) {
|
||||
editor_hold_sx = _chox;
|
||||
editor_hold_ind = _cont_hover;
|
||||
}
|
||||
|
||||
if(j == m) {
|
||||
if(mouse_press(mb_left, _chov == 1 && _focus)) {
|
||||
_arr_ins = _cont_hover;
|
||||
_arr_insrw = i;
|
||||
}
|
||||
|
||||
cy += cell_s;
|
||||
break;
|
||||
}
|
||||
|
||||
var _dx = cx3 + cell_s / 2 + 4;
|
||||
draw_set_color(merge_color(#1e1e2c, c_red, 0.2));
|
||||
draw_circle(_dx, _ty, ui(6), false);
|
||||
|
||||
if(_hover && point_in_circle(_m[0], _m[1], _dx, _ty, ui(12))) {
|
||||
draw_set_color(merge_color(#1e1e2c, c_red, 0.5));
|
||||
draw_circle(_dx, _ty, ui(6), false);
|
||||
|
||||
if(mouse_press(mb_left, _focus))
|
||||
_arr_del = _arr_ind;
|
||||
}
|
||||
|
||||
_arr_ind++;
|
||||
var _id = row[j];
|
||||
var _sp = _sprk[_id];
|
||||
var _dr = _sp[MKSPARK.dir];
|
||||
var _xs = _sp[MKSPARK.x];
|
||||
var _spd = _sp[MKSPARK.speed];
|
||||
var _dr = _sp[MKSPARK.length];
|
||||
var _bl = _sp[MKSPARK.lendel];
|
||||
var _tm = _sp[MKSPARK.time];
|
||||
|
||||
if(mouse_press(mb_left, _focus)) {
|
||||
if(_chov == 2) {
|
||||
editor_timer = _id;
|
||||
editor_timer_mx = _m[0];
|
||||
editor_timer_sx = _tm;
|
||||
}
|
||||
}
|
||||
|
||||
var _lx0 = cx1 + cell_s * (3 + _xs) + ui(6);
|
||||
var _lx1 = _lx0 + _spd * cell_s;
|
||||
|
||||
draw_set_color(c_white);
|
||||
draw_line_width(_lx0, _cy, _lx1, _cy, 4);
|
||||
|
||||
if(_tm < 0) draw_set_color(COLORS._main_value_negative);
|
||||
else if(_tm > 0) draw_set_color(COLORS._main_value_positive);
|
||||
else draw_set_color(c_white);
|
||||
|
||||
draw_line_width(_tx, _ty, _tx + lengthdir_x(cell_s / 2 - 6, 90 - _tm * 90),
|
||||
_ty + lengthdir_y(cell_s / 2 - 6, 90 - _tm * 90), 4);
|
||||
|
||||
cy += cell_s;
|
||||
}
|
||||
}
|
||||
|
||||
if(_arr_ins > -1)
|
||||
array_insert(_sprk, _arr_ins, [ MKSPARK_DIRR.main, _arr_insrw, _arr_insx, 1, 1, 0, 0 ]);
|
||||
|
||||
if(_arr_del > -1)
|
||||
array_delete(_sprk, _arr_del, 1);
|
||||
|
||||
if(editor_hold_ind > -1) {
|
||||
_sprk[editor_hold_ind][2] = editor_hold_sx;
|
||||
_sprk[editor_hold_ind][3] = _arr_insx - editor_hold_sx + 1;
|
||||
|
||||
if(mouse_release(mb_left))
|
||||
editor_hold_ind = -1;
|
||||
}
|
||||
|
||||
if(editor_timer > -1) {
|
||||
var _tim = editor_timer_sx + (_m[0] - editor_timer_mx) / 32;
|
||||
_sprk[editor_timer][6] = clamp(round(_tim), -3, 3);
|
||||
|
||||
if(mouse_release(mb_left))
|
||||
editor_timer = -1;
|
||||
}
|
||||
|
||||
editor_rect_hover = lerp_float(editor_rect_hover, _rect_hover, 4);
|
||||
if(editor_rect_hover > 0) {
|
||||
editor_rect[0] = lerp_float(editor_rect[0], editor_rect_to[0], 5);
|
||||
editor_rect[1] = lerp_float(editor_rect[1], editor_rect_to[1], 5);
|
||||
|
||||
var _sels = editor_rect_hover * (cell_s / 2 - 4);
|
||||
draw_sprite_stretched_ext(s_mk_sparkle_select, 0, editor_rect[0] - _sels, editor_rect[1] - _sels, _sels * 2, _sels * 2, #6d6d84, 1);
|
||||
}
|
||||
|
||||
return _h;
|
||||
}); #endregion
|
||||
|
||||
input_display_list = [ new Inspector_Sprite(s_MKFX), 0, 2,
|
||||
input_display_list = [ new Inspector_Sprite(s_MKFX),
|
||||
["Sparkle", false], 0, 2, 3,
|
||||
sparkleEditor
|
||||
];
|
||||
|
||||
|
@ -39,18 +223,25 @@ function Node_MK_Sparkle(_x, _y, _group = noone) : Node_Processor(_x, _y, _group
|
|||
var _size = _data[0];
|
||||
var _sprk = _data[1];
|
||||
var _frme = _data[2];
|
||||
var _spd = _data[3];
|
||||
var _loop = _data[4];
|
||||
|
||||
if(array_empty(_sprk)) return _outSurf;
|
||||
|
||||
var _s = _size * 2 + 1;
|
||||
var _c = floor(_size / 2);
|
||||
|
||||
_outSurf = surface_verify(_outSurf, _s, _s);
|
||||
temp_surface[0] = surface_verify(temp_surface[0], _s, _s);
|
||||
temp_surface[1] = surface_verify(temp_surface[1], _s, _s);
|
||||
_outSurf = surface_verify(_outSurf, _size, _size);
|
||||
temp_surface[0] = surface_verify(temp_surface[0], _size, _size);
|
||||
temp_surface[1] = surface_verify(temp_surface[1], _size, _size);
|
||||
|
||||
var _s0 = temp_surface[0];
|
||||
var _s1 = temp_surface[1];
|
||||
var _fr = CURRENT_FRAME - _frme + 1;
|
||||
var _fr = round((CURRENT_FRAME - _frme + 1) * _spd);
|
||||
|
||||
if(!array_empty(_loop)) {
|
||||
var _ind = CURRENT_FRAME % array_length(_loop);
|
||||
_fr = _loop[_ind];
|
||||
}
|
||||
|
||||
surface_set_target(_s0);
|
||||
DRAW_CLEAR
|
||||
|
@ -59,21 +250,27 @@ function Node_MK_Sparkle(_x, _y, _group = noone) : Node_Processor(_x, _y, _group
|
|||
|
||||
for( var i = 0, n = array_length(_sprk); i < n; i++ ) {
|
||||
var _sk = _sprk[i];
|
||||
var sy = _size + _sk[0];
|
||||
var sx = _size + _sk[1];
|
||||
var sp = _sk[2];
|
||||
var ff = _fr + _sk[5];
|
||||
var dr = _sk[MKSPARK.dir];
|
||||
var sy = _sk[MKSPARK.y];
|
||||
var sx = _sk[MKSPARK.x];
|
||||
var sp = _sk[MKSPARK.speed];
|
||||
var ff = _sk[MKSPARK.time] + _fr;
|
||||
var lng = _sk[MKSPARK.length] + _sk[MKSPARK.lendel] - ff;
|
||||
|
||||
if(ff < 0) continue;
|
||||
|
||||
switch(_sk[4]) {
|
||||
case BLEND.add : BLEND_ADD; break;
|
||||
case BLEND.subtract : BLEND_SUBTRACT; break;
|
||||
}
|
||||
|
||||
switch(_sk[3]) {
|
||||
case MKSPARK_DRAW.dot : draw_point(sx + ff * sp, sy); break;
|
||||
case MKSPARK_DRAW.trail : draw_line(sx - 1, sy, sx - 1 + ff * sp, sy); break;
|
||||
if(ff < 0 || lng < 0) continue;
|
||||
|
||||
if(dr == MKSPARK_DIRR.main) {
|
||||
var _lx = _c + sx - 1 + sp * ff;
|
||||
var _ly = _c + sy;
|
||||
|
||||
if(lng == 0) draw_point(_lx, _ly);
|
||||
else draw_line(_lx, _ly, _lx + lng, _ly);
|
||||
} else if(dr == MKSPARK_DIRR.diag) {
|
||||
var _l0 = _c - 1 + sp * ff;
|
||||
var _l1 = _l0 + lng;
|
||||
|
||||
if(lng == 0) draw_point(_l0, _l0);
|
||||
else draw_line(_l0, _l0, _l1, _l1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -84,16 +281,16 @@ function Node_MK_Sparkle(_x, _y, _group = noone) : Node_Processor(_x, _y, _group
|
|||
DRAW_CLEAR
|
||||
|
||||
draw_surface_ext(_s0, 0, 0, 1, 1, 0, c_white, 1);
|
||||
draw_surface_ext(_s0, 0, _s, 1, -1, 0, c_white, 1);
|
||||
draw_surface_ext(_s0, 0, _size, 1, -1, 0, c_white, 1);
|
||||
surface_reset_target();
|
||||
|
||||
surface_set_target(_outSurf);
|
||||
DRAW_CLEAR
|
||||
|
||||
draw_surface_ext(_s1, 0, 0, 1, 1, 0, c_white, 1);
|
||||
draw_surface_ext(_s1, 0, _s, 1, 1, 90, c_white, 1);
|
||||
draw_surface_ext(_s1, _s, _s, 1, 1, 180, c_white, 1);
|
||||
draw_surface_ext(_s1, _s, 0, 1, 1, 270, c_white, 1);
|
||||
draw_surface_ext(_s1, 0, 0, 1, 1, 0, c_white, 1);
|
||||
draw_surface_ext(_s1, 0, _size, 1, 1, 90, c_white, 1);
|
||||
draw_surface_ext(_s1, _size, _size, 1, 1, 180, c_white, 1);
|
||||
draw_surface_ext(_s1, _size, 0, 1, 1, 270, c_white, 1);
|
||||
surface_reset_target();
|
||||
|
||||
return _outSurf;
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "MK effects",
|
||||
"path": "folders/nodes/data/MK effects.yy",
|
||||
"name": "mk sparkle",
|
||||
"path": "folders/nodes/data/MK effects/mk sparkle.yy",
|
||||
},
|
||||
}
|
|
@ -67,18 +67,18 @@ function Node_Perlin(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
|
|||
_outSurf = surface_verify(_outSurf, _dim[0], _dim[1], attrDepth());
|
||||
|
||||
surface_set_shader(_outSurf, sh_perlin_tiled);
|
||||
shader_set_f("u_resolution", _dim);
|
||||
shader_set_f("position", _pos);
|
||||
shader_set_f("scale", _sca);
|
||||
shader_set_f("seed", _sed);
|
||||
shader_set_i("tile", _til);
|
||||
shader_set_i("iteration", _ite);
|
||||
|
||||
shader_set_i("colored", _col);
|
||||
shader_set_f("colorRanR", _clr);
|
||||
shader_set_f("colorRanG", _clg);
|
||||
shader_set_f("colorRanB", _clb);
|
||||
shader_set_f("u_resolution", _dim);
|
||||
shader_set_f("position", _pos);
|
||||
shader_set_f("scale", _sca);
|
||||
shader_set_f("seed", _sed);
|
||||
shader_set_i("tile", _til);
|
||||
shader_set_i("iteration", _ite);
|
||||
|
||||
shader_set_i("colored", _col);
|
||||
shader_set_f("colorRanR", _clr);
|
||||
shader_set_f("colorRanG", _clg);
|
||||
shader_set_f("colorRanB", _clb);
|
||||
|
||||
draw_sprite_ext(s_fx_pixel, 0, 0, 0, _dim[0], _dim[1], 0, c_white, 1);
|
||||
surface_reset_shader();
|
||||
|
||||
|
|
|
@ -412,9 +412,10 @@ function __initNodes() {
|
|||
addNodeObject(input, "WAV File In", s_node_wav_file_read, "Node_WAV_File_Read", [0, Node_create_WAV_File_Read],, "Load wav audio file.").setVersion(1144);
|
||||
addNodeObject(input, "WAV File Out", s_node_wav_file_write, "Node_WAV_File_Write", [1, Node_WAV_File_Write],, "Save wav audio file.").setVersion(1145);
|
||||
|
||||
ds_list_add(input, "Network");
|
||||
ds_list_add(input, "External");
|
||||
addNodeObject(input, "Websocket Receiver", s_node_websocket_receive, "Node_Websocket_Receiver", [1, Node_Websocket_Receiver],, "Create websocket server to receive data from the network.").setVersion(1145);
|
||||
addNodeObject(input, "Websocket Sender", s_node_websocket_send, "Node_Websocket_Sender", [1, Node_Websocket_Sender],, "Create websocket server to send data to the network.").setVersion(1145);
|
||||
addNodeObject(input, "Spout Sender", s_node_spout, "Node_Spout_Send", [1, Node_Spout_Send],, "Send surface through Spout.").setVersion(11600);
|
||||
#endregion
|
||||
|
||||
var transform = ds_list_create(); #region
|
||||
|
@ -623,7 +624,7 @@ function __initNodes() {
|
|||
addNodeObject(generator, "MK Saber", s_node_mk_saber, "Node_MK_Saber", [1, Node_MK_Saber]).setVersion(11600);
|
||||
addNodeObject(generator, "MK Tile", s_node_mk_tile, "Node_MK_Tile", [1, Node_MK_Tile]).setVersion(11600);
|
||||
addNodeObject(generator, "MK Flag", s_node_mk_flag, "Node_MK_Flag", [1, Node_MK_Flag]).setVersion(11600);
|
||||
if(TESTING) addNodeObject(generator, "MK Sparkle", s_node_mk_sparkle, "Node_MK_Sparkle", [1, Node_MK_Sparkle]).setVersion(11600);
|
||||
//addNodeObject(generator, "MK Sparkle", s_node_mk_sparkle, "Node_MK_Sparkle", [1, Node_MK_Sparkle]).patreonExtra();
|
||||
#endregion
|
||||
|
||||
var compose = ds_list_create(); #region
|
||||
|
|
12
scripts/node_spout_send/node_counter.yy
Normal file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "number",
|
||||
"path": "folders/nodes/data/number.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_counter",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
35
scripts/node_spout_send/node_spout_send.gml
Normal file
|
@ -0,0 +1,35 @@
|
|||
function Node_Spout_Send(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
|
||||
name = "Spout Send";
|
||||
|
||||
inputs[| 0] = nodeValue("Sender name", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "PixelComposer");
|
||||
|
||||
inputs[| 1] = nodeValue("Surface", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone);
|
||||
|
||||
outputs[| 0] = nodeValue("Surface", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone)
|
||||
.setVisible(false);
|
||||
|
||||
spoutIndex = spoutSenderInit();
|
||||
if(spoutIndex == noone) noti_warning("Spout initialize error");
|
||||
|
||||
surf_buff = buffer_create(1, buffer_grow, 1);
|
||||
|
||||
static update = function() { #region
|
||||
if(spoutIndex == noone) return;
|
||||
|
||||
var _name = inputs[| 0].getValue();
|
||||
var _surf = inputs[| 1].getValue();
|
||||
|
||||
if(!is_surface(_surf)) return;
|
||||
|
||||
var _sw = surface_get_width_safe(_surf);
|
||||
var _sh = surface_get_height_safe(_surf);
|
||||
|
||||
buffer_resize(surf_buff, _sw * _sh * 4);
|
||||
buffer_get_surface(surf_buff, _surf, 0);
|
||||
|
||||
spoutSetSenderName(spoutIndex, _name);
|
||||
spoutSendPixels(spoutIndex, buffer_get_address(surf_buff), _sw, _sh);
|
||||
|
||||
outputs[| 0].setValue(_surf);
|
||||
} #endregion
|
||||
}
|
11
scripts/node_spout_send/node_spout_send.yy
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_spout_send",
|
||||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "IO",
|
||||
"path": "folders/nodes/data/IO.yy",
|
||||
},
|
||||
}
|
|
@ -31,7 +31,7 @@ function Node_Strand_Force_Apply(_x, _y, _group = noone) : _Node_Strand_Affector
|
|||
|
||||
inputs[| 4].setVisible(true);
|
||||
|
||||
var _strTur = _tur == 0? _stn : perlin1D(_sed + CURRENT_FRAME, _tfr, _toc, _stn - _tur, _stn + _tur);
|
||||
var _strTur = _tur == 0? _stn : perlin1D(CURRENT_FRAME, _sed, _tfr, _toc, _stn - _tur, _stn + _tur);
|
||||
var gx = lengthdir_x(_strTur, _dir);
|
||||
var gy = lengthdir_y(_strTur, _dir);
|
||||
|
||||
|
|
|
@ -1668,8 +1668,14 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
|||
return val;
|
||||
} #endregion
|
||||
|
||||
static setAnim = function(anim) { #region
|
||||
static setAnim = function(anim, record = false) { #region
|
||||
if(is_anim == anim) return;
|
||||
if(record) {
|
||||
recordAction(ACTION_TYPE.custom, function(data) {
|
||||
setAnim(data.is_anim);
|
||||
data.is_anim = !data.is_anim;
|
||||
}, { anim: is_anim });
|
||||
}
|
||||
is_anim = anim;
|
||||
|
||||
if(is_anim) {
|
||||
|
|
|
@ -267,6 +267,7 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
[ [THEME.object_halign, 2], function() { alignKeys(fa_right); } ],
|
||||
]),
|
||||
menuItem(__txtx("panel_animation_stagger", "Stagger"), function() { stagger_mode = 1; }),
|
||||
menuItem(__txtx("panel_driver", "Driver..."), function() { dialogPanelCall(new Panel_Keyframe_Driver(keyframe_selecting[0]), mouse_mx + ui(8), mouse_my + ui(8)); }),
|
||||
-1,
|
||||
menuItem(__txt("Delete"), function() { deleteKeys(); }, noone, [ "Animation", "Delete keys" ]),
|
||||
menuItem(__txt("Duplicate"), function() { doDuplicate(); }, THEME.duplicate, [ "Animation", "Duplicate" ]),
|
||||
|
@ -573,11 +574,12 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
var _anim = _anims[j];
|
||||
|
||||
for(var k = 0; k < ds_list_size(_anim.values); k++) {
|
||||
var t = (_anim.values[| k].time + 1) * ui(timeline_scale) + timeline_shift;
|
||||
_anim.values[| k].dopesheet_x = t;
|
||||
|
||||
var ind = _anim.values[| k].ease_in_type == CURVE_TYPE.cut? 4 : 1;
|
||||
draw_sprite_ui_uniform(THEME.timeline_keyframe, ind, t, key_y, 1, COLORS.panel_animation_keyframe_hide);
|
||||
var _keyframe = _anim.values[| k];
|
||||
|
||||
var t = (_keyframe.time + 1) * ui(timeline_scale) + timeline_shift;
|
||||
_keyframe.dopesheet_x = t;
|
||||
|
||||
draw_sprite_ui_uniform(THEME.timeline_keyframe, _keyframe.getDrawIndex(), t, key_y, 1, COLORS.panel_animation_keyframe_hide);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -670,146 +672,214 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
draw_surface_safe(timeline_surface, bar_x, bar_y);
|
||||
} #endregion
|
||||
|
||||
function drawDopesheetLine(animator, key_y, msx, msy, _gy_val_min = 999999, _gy_val_max = -999999) { #region
|
||||
function drawDopesheetGraphLine(animator, key_y, msx, msy, _gy_val_min = 999999, _gy_val_max = -999999) { #region
|
||||
var bar_total_w = TOTAL_FRAMES * ui(timeline_scale);
|
||||
var bar_show_w = timeline_shift + bar_total_w;
|
||||
var hovering = noone;
|
||||
var _gy_top = key_y + ui(16);
|
||||
var _gy_bottom = _gy_top + animator.prop.graph_h - ui(8);
|
||||
|
||||
var amo = ds_list_size(animator.values);
|
||||
var amo = ds_list_size(animator.values);
|
||||
|
||||
for(var k = 0; k < amo; k++) {
|
||||
var key_val = animator.values[| k].value;
|
||||
if(is_array(key_val)) {
|
||||
for( var ki = 0; ki < array_length(key_val); ki++ ) {
|
||||
_gy_val_min = min(_gy_val_min, key_val[ki]);
|
||||
_gy_val_max = max(_gy_val_max, key_val[ki]);
|
||||
}
|
||||
} else {
|
||||
_gy_val_min = min(_gy_val_min, key_val);
|
||||
_gy_val_max = max(_gy_val_max, key_val);
|
||||
}
|
||||
}
|
||||
|
||||
var valArray = is_array(animator.values[| 0].value);
|
||||
var ox = 0, oy = valArray? [] : noone, nx = 0, ny = noone, oly = 0, nly = 0;
|
||||
|
||||
for(var k = 0; k < amo - 1; k++) {
|
||||
var key = animator.values[| k];
|
||||
var t = key.dopesheet_x;
|
||||
var key_next = animator.values[| k + 1];
|
||||
var dx = key_next.time - key.time;
|
||||
#region get range
|
||||
var _prevDelt = [ 0, 0 ];
|
||||
|
||||
if(key.ease_out_type == CURVE_TYPE.linear && key_next.ease_in_type == CURVE_TYPE.linear) { //linear draw
|
||||
nx = (key_next.time + 1) * ui(timeline_scale) + timeline_shift;
|
||||
if(valArray) {
|
||||
for( var ki = 0; ki < array_length(key.value); ki++ ) {
|
||||
draw_set_color(COLORS.axis[ki]);
|
||||
ny[ki] = value_map(key.value[ki], _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
|
||||
if(array_length(oy) > ki)
|
||||
draw_line(t, oy[ki], t, ny[ki]);
|
||||
oy[ki] = ny[ki];
|
||||
|
||||
ny[ki] = value_map(key_next.value[ki], _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
draw_line(t, oy[ki], nx, ny[ki]);
|
||||
oy[ki] = ny[ki];
|
||||
for(var k = 0; k < amo; k++) {
|
||||
var key = animator.values[| k];
|
||||
var key_val = key.value;
|
||||
|
||||
var _minn = _gy_val_min;
|
||||
var _maxx = _gy_val_max;
|
||||
|
||||
if(is_array(key_val)) {
|
||||
for( var ki = 0; ki < array_length(key_val); ki++ ) {
|
||||
_minn = min(_minn, key_val[ki]);
|
||||
_maxx = max(_maxx, key_val[ki]);
|
||||
}
|
||||
} else {
|
||||
draw_set_color(animator.prop.sep_axis? COLORS.axis[animator.index] : COLORS.panel_animation_graph_line);
|
||||
ny = value_map(key.value, _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
if(oy != noone) draw_line(t, oy, t, ny);
|
||||
oy = ny;
|
||||
_minn = min(_minn, key_val);
|
||||
_maxx = max(_maxx, key_val);
|
||||
}
|
||||
|
||||
_minn += _prevDelt[0];
|
||||
_maxx += _prevDelt[1];
|
||||
_prevDelt = [ 0, 0 ];
|
||||
|
||||
switch(key.drivers.type) {
|
||||
case DRIVER_TYPE.linear :
|
||||
var nk = k + 1 < amo? animator.values[| k + 1].time : TOTAL_FRAMES;
|
||||
|
||||
ny = value_map(key_next.value, _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
draw_line(t, oy, nx, ny);
|
||||
oy = ny;
|
||||
var spd = key.drivers.speed * (nk - key.time);
|
||||
_minn += min(spd, 0);
|
||||
_maxx += max(spd, 0);
|
||||
_prevDelt = [ min(spd, 0), max(spd, 0) ];
|
||||
break;
|
||||
case DRIVER_TYPE.wiggle :
|
||||
case DRIVER_TYPE.sine :
|
||||
_minn -= abs(key.drivers.amplitude);
|
||||
_maxx += abs(key.drivers.amplitude);
|
||||
_prevDelt = [ -key.drivers.amplitude, key.drivers.amplitude ];
|
||||
break;
|
||||
}
|
||||
|
||||
_gy_val_min = min(_minn, _gy_val_min);
|
||||
_gy_val_max = max(_maxx, _gy_val_max);
|
||||
}
|
||||
#endregion
|
||||
|
||||
var valArray = is_array(animator.values[| 0].value);
|
||||
var ox = 0;
|
||||
var nx = 0;
|
||||
var ny = noone;
|
||||
var oly = 0;
|
||||
var nly = 0;
|
||||
var _kv, _kn;
|
||||
var sy;
|
||||
|
||||
var _oy = animator.values[| 0].value;
|
||||
if(!valArray) _oy = [ _oy ];
|
||||
|
||||
var oy = array_create(array_length(_oy));
|
||||
for( var ki = 0; ki < array_length(oy); ki++ )
|
||||
oy[ki] = value_map(oy[ki], _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
|
||||
for(var k = 0; k < amo - 1; k++) { #region draw line in between
|
||||
var key = animator.values[| k];
|
||||
var t = key.dopesheet_x;
|
||||
var key_next = animator.values[| k + 1];
|
||||
var dx = key_next.time - key.time;
|
||||
|
||||
if(key.drivers.type) { // driver
|
||||
nx = (key.time + 1) * ui(timeline_scale) + timeline_shift;
|
||||
|
||||
for( var _time = key.time; _time <= key_next.time; _time++ ) {
|
||||
var rat = (_time - key.time) / (key_next.time - key.time);
|
||||
var _lrp = animator.interpolate(key, key_next, rat);
|
||||
|
||||
_kv = animator.processDriver(_time, key, animator.lerpValue(key, key_next, _lrp), rat);
|
||||
|
||||
if(!valArray) _kv = [ _kv ];
|
||||
|
||||
for( var ki = 0; ki < array_length(_kv); ki++ ) {
|
||||
draw_set_color(valArray? COLORS.axis[ki] : (animator.prop.sep_axis? COLORS.axis[animator.index] : COLORS.panel_animation_graph_line));
|
||||
ny[ki] = value_map(_kv[ki], _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
|
||||
if(_time == key.time) draw_line(nx, oy[ki], nx, ny[ki]);
|
||||
else draw_line(ox, oy[ki], nx, ny[ki]);
|
||||
|
||||
oy[ki] = ny[ki];
|
||||
}
|
||||
|
||||
ox = nx;
|
||||
nx += ui(timeline_scale);
|
||||
}
|
||||
} else if(key.ease_out_type == CURVE_TYPE.linear && key_next.ease_in_type == CURVE_TYPE.linear) { //linear draw
|
||||
nx = (key_next.time + 1) * ui(timeline_scale) + timeline_shift;
|
||||
|
||||
_kv = key.value;
|
||||
_kn = key_next.value;
|
||||
|
||||
if(!valArray) {
|
||||
_kv = [ _kv ];
|
||||
_kn = [ _kn ];
|
||||
}
|
||||
|
||||
for( var ki = 0; ki < array_length(_kv); ki++ ) {
|
||||
draw_set_color(valArray? COLORS.axis[ki] : (animator.prop.sep_axis? COLORS.axis[animator.index] : COLORS.panel_animation_graph_line));
|
||||
|
||||
ny[ki] = value_map(_kv[ki], _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
|
||||
if(array_length(oy) > ki) draw_line(t, oy[ki], t, ny[ki]);
|
||||
oy[ki] = ny[ki];
|
||||
|
||||
ny[ki] = value_map(_kn[ki], _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
draw_line(t, oy[ki], nx, ny[ki]);
|
||||
oy[ki] = ny[ki];
|
||||
}
|
||||
|
||||
ox = nx;
|
||||
} else { //bezier easing
|
||||
var _step = 1 / dx;
|
||||
for( var _r = 0; _r <= 1; _r += _step ) {
|
||||
nx = t + _r * dx * ui(timeline_scale);
|
||||
nx = t + _r * dx * ui(timeline_scale);
|
||||
nly = animator.interpolate(key, key_next, _r);
|
||||
|
||||
if(valArray) {
|
||||
for( var ki = 0; ki < array_length(key.value); ki++ ) {
|
||||
draw_set_color(COLORS.axis[ki]);
|
||||
ny[ki] = value_map(lerp(key.value[ki], key_next.value[ki], nly), _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
_kv = key.value;
|
||||
_kn = key_next.value;
|
||||
|
||||
if(!valArray) {
|
||||
_kv = [ _kv ];
|
||||
_kn = [ _kn ];
|
||||
}
|
||||
|
||||
for( var ki = 0; ki < array_length(_kv); ki++ ) {
|
||||
draw_set_color(valArray? COLORS.axis[ki] : (animator.prop.sep_axis? COLORS.axis[animator.index] : COLORS.panel_animation_graph_line));
|
||||
ny[ki] = value_map(lerp(_kv[ki], _kn[ki], nly), _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
|
||||
if(array_length(oy) > ki) draw_line(ox, oy[ki], nx, ny[ki]);
|
||||
|
||||
if(array_length(oy) > ki)
|
||||
draw_line(ox, oy[ki], nx, ny[ki]);
|
||||
|
||||
oy[ki] = ny[ki];
|
||||
}
|
||||
} else {
|
||||
draw_set_color(animator.prop.sep_axis? COLORS.axis[animator.index] : COLORS.panel_animation_graph_line);
|
||||
ny = value_map(lerp(key.value, key_next.value, nly), _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
if(oy != noone)
|
||||
draw_line(ox, oy, nx, ny);
|
||||
oy = ny;
|
||||
oy[ki] = ny[ki];
|
||||
}
|
||||
|
||||
ox = nx;
|
||||
oly = nly;
|
||||
}
|
||||
}
|
||||
}
|
||||
} #endregion
|
||||
|
||||
if(animator.prop.show_graph && ds_list_size(animator.values) > 0) {
|
||||
if(ds_list_size(animator.values) == 1) { //draw graph before and after
|
||||
var key_first = animator.values[| 0];
|
||||
|
||||
if(valArray) {
|
||||
for( var ki = 0; ki < array_length(key_first.value); ki++ ) {
|
||||
draw_set_color(COLORS.axis[ki]);
|
||||
sy = value_map(key_first.value[ki], _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
draw_line(0, sy, bar_show_w, sy);
|
||||
}
|
||||
} else {
|
||||
draw_set_color(animator.prop.sep_axis? COLORS.axis[animator.index] : COLORS.panel_animation_graph_line);
|
||||
sy = value_map(key_first.value, _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
draw_line(0, sy, bar_show_w, sy);
|
||||
}
|
||||
} else { //draw graph before and after
|
||||
var key_first = animator.values[| 0];
|
||||
var t_first = (key_first.time + 1) * ui(timeline_scale) + timeline_shift;
|
||||
var sy;
|
||||
if(animator.prop.show_graph && ds_list_size(animator.values) > 0) { #region draw line outside keyframe range
|
||||
var key_first = animator.values[| 0];
|
||||
var t_first = (key_first.time + 1) * ui(timeline_scale) + timeline_shift;
|
||||
|
||||
if(valArray) {
|
||||
for( var ki = 0; ki < array_length(key_first.value); ki++ ) {
|
||||
draw_set_color(COLORS.axis[ki]);
|
||||
sy = value_map(key_first.value[ki], _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
draw_line(0, sy, t_first, sy);
|
||||
}
|
||||
} else {
|
||||
draw_set_color(animator.prop.sep_axis? COLORS.axis[animator.index] : COLORS.panel_animation_graph_line);
|
||||
sy = value_map(key_first.value, _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
draw_line(0, sy, t_first, sy);
|
||||
}
|
||||
|
||||
var key_last = animator.values[| ds_list_size(animator.values) - 1];
|
||||
var t_last = (key_last.time + 1) * ui(timeline_scale) + timeline_shift;
|
||||
_kv = key_first.value;
|
||||
if(!valArray) _kv = [ _kv ];
|
||||
|
||||
if(key_last.time < TOTAL_FRAMES) {
|
||||
if(valArray) {
|
||||
for( var ki = 0; ki < array_length(key_last.value); ki++ ) {
|
||||
draw_set_color(COLORS.axis[ki]);
|
||||
ny[ki] = value_map(key_last.value[ki], _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
draw_line(t_last, oy[ki], t_last, ny[ki]);
|
||||
draw_line(t_last, oy[ki], bar_show_w, oy[ki]);
|
||||
for( var ki = 0; ki < array_length(_kv); ki++ ) {
|
||||
draw_set_color(valArray? COLORS.axis[ki] : (animator.prop.sep_axis? COLORS.axis[animator.index] : COLORS.panel_animation_graph_line));
|
||||
sy = value_map(_kv[ki], _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
draw_line(0, sy, t_first, sy);
|
||||
|
||||
if(ds_list_size(animator.values) == 1) oy[ki] = sy;
|
||||
}
|
||||
|
||||
var key_last = animator.values[| ds_list_size(animator.values) - 1];
|
||||
var t_last = (key_last.time + 1) * ui(timeline_scale) + timeline_shift;
|
||||
|
||||
if(key_last.time < TOTAL_FRAMES) {
|
||||
if(key_last.drivers.type) {
|
||||
nx = t_last;
|
||||
|
||||
for( var _time = key_last.time; _time < TOTAL_FRAMES; _time++ ) {
|
||||
_kv = animator.processDriver(_time, key_last);
|
||||
if(!valArray) _kv = [ _kv ];
|
||||
|
||||
for( var ki = 0; ki < array_length(_kv); ki++ ) {
|
||||
draw_set_color(valArray? COLORS.axis[ki] : (animator.prop.sep_axis? COLORS.axis[animator.index] : COLORS.panel_animation_graph_line));
|
||||
ny[ki] = value_map(_kv[ki], _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
if(_time == key_last.time)
|
||||
draw_line(t_last, oy[ki], t_last, ny[ki]);
|
||||
else
|
||||
draw_line(ox, oy[ki], nx, ny[ki]);
|
||||
|
||||
oy[ki] = ny[ki];
|
||||
}
|
||||
} else {
|
||||
draw_set_color(animator.prop.sep_axis? COLORS.axis[animator.index] : COLORS.panel_animation_graph_line);
|
||||
ny = value_map(key_last.value, _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
draw_line(t_last, oy, t_last, ny);
|
||||
draw_line(t_last, ny, bar_show_w, ny);
|
||||
|
||||
ox = nx;
|
||||
nx += ui(timeline_scale);
|
||||
}
|
||||
} else {
|
||||
_kv = key_last.value;
|
||||
if(!valArray) _kv = [ _kv ];
|
||||
|
||||
for( var ki = 0; ki < array_length(_kv); ki++ ) {
|
||||
draw_set_color(valArray? COLORS.axis[ki] : (animator.prop.sep_axis? COLORS.axis[animator.index] : COLORS.panel_animation_graph_line));
|
||||
ny[ki] = value_map(_kv[ki], _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
|
||||
draw_line(t_last, oy[ki], t_last, ny[ki]);
|
||||
draw_line(t_last, ny[ki], bar_show_w, ny[ki]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} #endregion
|
||||
} #endregion
|
||||
|
||||
function drawDopesheetGraph(prop, key_y, msx, msy) { #region
|
||||
|
@ -818,7 +888,7 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
var _gy_top = key_y + ui(16);
|
||||
var _gy_bottom = _gy_top + prop.graph_h - ui(8);
|
||||
|
||||
if(prop.type == VALUE_TYPE.color) {
|
||||
if(prop.type == VALUE_TYPE.color) { #region draw color
|
||||
var amo = ds_list_size(prop.animator.values);
|
||||
var _prevKey = prop.animator.values[| 0];
|
||||
|
||||
|
@ -838,8 +908,7 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
var lrp = prop.animator.interpolate(key, key_next, _r);
|
||||
nc = merge_color(key.value, key_next.value, lrp);
|
||||
|
||||
if(_r > 0)
|
||||
draw_rectangle_color(ox, _gy_top, nx, _gy_bottom, oc, nc, nc, oc, 0);
|
||||
if(_r > 0) draw_rectangle_color(ox, _gy_top, nx, _gy_bottom, oc, nc, nc, oc, 0);
|
||||
|
||||
ox = nx;
|
||||
oc = nc;
|
||||
|
@ -852,9 +921,9 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
draw_rectangle(key_next.dopesheet_x, _gy_top, bar_show_w, _gy_bottom, 0);
|
||||
}
|
||||
return;
|
||||
}
|
||||
} #endregion
|
||||
|
||||
if(prop.sep_axis) {
|
||||
if(prop.sep_axis) { #region draw number graphs
|
||||
var _min = 999999;
|
||||
var _max = -999999;
|
||||
|
||||
|
@ -875,9 +944,10 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
}
|
||||
|
||||
for( var i = 0, n = array_length(prop.animators); i < n; i++ )
|
||||
drawDopesheetLine(prop.animators[i], key_y, msx, msy, _min, _max);
|
||||
drawDopesheetGraphLine(prop.animators[i], key_y, msx, msy, _min, _max);
|
||||
} else
|
||||
drawDopesheetLine(prop.animator, key_y, msx, msy);
|
||||
drawDopesheetGraphLine(prop.animator, key_y, msx, msy);
|
||||
#endregion
|
||||
} #endregion
|
||||
|
||||
function drawDopesheetAnimatorKeysBG(animator, msx, msy) { #region
|
||||
|
@ -909,13 +979,13 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
|
||||
if(pHOVER && point_in_circle(msx, msy, _tx, prop_dope_y, ui(6))) {
|
||||
key_hover = key;
|
||||
draw_sprite_ui_uniform(THEME.timeline_keyframe, key.ease_y_lock? 2 : 5, _tx, prop_dope_y, 1, COLORS.panel_animation_keyframe_selected);
|
||||
draw_sprite_ui_uniform(THEME.timeline_key_ease, 0, _tx, prop_dope_y, 1, COLORS.panel_animation_keyframe_selected);
|
||||
if(mouse_press(mb_left, pFOCUS) && !key_mod_press(SHIFT)) {
|
||||
keyframe_dragging = animator.values[| k];
|
||||
keyframe_drag_type = KEYFRAME_DRAG_TYPE.ease_in;
|
||||
}
|
||||
} else
|
||||
draw_sprite_ui_uniform(THEME.timeline_keyframe, key.ease_y_lock? 2 : 5, _tx, prop_dope_y, 1, COLORS.panel_animation_keyframe_unselected);
|
||||
draw_sprite_ui_uniform(THEME.timeline_key_ease, 0, _tx, prop_dope_y, 1, COLORS.panel_animation_keyframe_unselected);
|
||||
}
|
||||
|
||||
if(key.ease_out_type == CURVE_TYPE.bezier) {
|
||||
|
@ -925,13 +995,13 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
|
||||
if(pHOVER && point_in_circle(msx, msy, _tx, prop_dope_y, ui(6))) {
|
||||
key_hover = key;
|
||||
draw_sprite_ui_uniform(THEME.timeline_keyframe, key.ease_y_lock? 3 : 5, _tx, prop_dope_y, 1, COLORS.panel_animation_keyframe_selected);
|
||||
draw_sprite_ui_uniform(THEME.timeline_key_ease, 1, _tx, prop_dope_y, 1, COLORS.panel_animation_keyframe_selected);
|
||||
if(mouse_press(mb_left, pFOCUS) && !key_mod_press(SHIFT)) {
|
||||
keyframe_dragging = animator.values[| k];
|
||||
keyframe_drag_type = KEYFRAME_DRAG_TYPE.ease_out;
|
||||
}
|
||||
} else
|
||||
draw_sprite_ui_uniform(THEME.timeline_keyframe, key.ease_y_lock? 3 : 5, _tx, prop_dope_y, 1, COLORS.panel_animation_keyframe_unselected);
|
||||
draw_sprite_ui_uniform(THEME.timeline_key_ease, 1, _tx, prop_dope_y, 1, COLORS.panel_animation_keyframe_unselected);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -952,11 +1022,11 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
for( var j = 0, n = array_length(_cont.contexts); j < n; j++ ) {
|
||||
var _cxt = _cont.contexts[j];
|
||||
if(!_cxt.show) continue;
|
||||
draw_sprite_ui_uniform(THEME.timeline_keyframe, 0, t, _cxt.y + ui(10), 1, COLORS._main_icon);
|
||||
draw_sprite_ui_uniform(THEME.timeline_key_empty, 0, t, _cxt.y + ui(10), 1, COLORS._main_icon);
|
||||
}
|
||||
|
||||
if(!_cont.show) continue;
|
||||
draw_sprite_ui_uniform(THEME.timeline_keyframe, 0, t, node_y + ui(10), 1, COLORS._main_icon);
|
||||
draw_sprite_ui_uniform(THEME.timeline_key_empty, 0, t, node_y + ui(10), 1, COLORS._main_icon);
|
||||
|
||||
if(!_cont.item.show) continue;
|
||||
|
||||
|
@ -993,15 +1063,11 @@ function Panel_Animation() : PanelContent() constructor {
|
|||
if(stagger_mode == 1 && array_exists(keyframe_selecting, keyframe))
|
||||
cc = key_hover == keyframe? COLORS.panel_animation_keyframe_selected : COLORS._main_accent;
|
||||
|
||||
var ind = 1;
|
||||
if(keyframe.ease_in_type == CURVE_TYPE.cut)
|
||||
ind = 4;
|
||||
if(keyframe.anim.prop.type == VALUE_TYPE.trigger)
|
||||
ind = 4;
|
||||
var ind = keyframe.getDrawIndex();
|
||||
|
||||
draw_sprite_ui_uniform(THEME.timeline_keyframe, ind, t, prop_y, 1, cc);
|
||||
if(array_exists(keyframe_selecting, keyframe))
|
||||
draw_sprite_ui_uniform(THEME.timeline_keyframe_selecting, ind != 1, t, prop_y, 1, COLORS._main_accent);
|
||||
draw_sprite_ui_uniform(THEME.timeline_keyframe_selecting, ind, t, prop_y, 1, COLORS._main_accent);
|
||||
|
||||
if(keyframe_boxing) {
|
||||
var box_x0 = min(keyframe_box_sx, msx);
|
||||
|
|
|
@ -3,9 +3,6 @@ function Panel_History() : PanelContent() constructor {
|
|||
w = ui(400);
|
||||
h = ui(480);
|
||||
|
||||
title_height = 64;
|
||||
padding = 24;
|
||||
|
||||
anchor = ANCHOR.left | ANCHOR.top;
|
||||
hold = false;
|
||||
|
||||
|
@ -13,10 +10,9 @@ function Panel_History() : PanelContent() constructor {
|
|||
h_min = 320;
|
||||
hovering = -1;
|
||||
|
||||
redo_list = ds_list_create();
|
||||
undo_list = ds_list_create();
|
||||
redo_list = ds_list_create();
|
||||
undo_list = ds_list_create();
|
||||
click_hold = noone;
|
||||
showHeader = false;
|
||||
|
||||
function refreshList() {
|
||||
ds_list_clear(redo_list);
|
||||
|
@ -158,13 +154,10 @@ function Panel_History() : PanelContent() constructor {
|
|||
draw_clear_alpha(COLORS.panel_bg_clear, 0);
|
||||
PANEL_PADDING
|
||||
|
||||
draw_set_text(f_p0, fa_left, fa_center, COLORS._main_text);
|
||||
draw_text_add(in_dialog? ui(56) : ui(24), title_height / 2, title);
|
||||
|
||||
var px = ui(padding);
|
||||
var py = ui(title_height);
|
||||
var py = ui(padding);
|
||||
var pw = w - ui(padding + padding);
|
||||
var ph = h - ui(title_height + padding);
|
||||
var ph = h - ui(padding + padding);
|
||||
|
||||
draw_sprite_stretched(THEME.ui_panel_bg, 1, px - ui(8), py - ui(8), pw + ui(16), ph + ui(16));
|
||||
sc_history.setFocusHover(pFOCUS, pHOVER);
|
||||
|
|
73
scripts/panel_keyframe_driver/panel_console.gml
Normal file
|
@ -0,0 +1,73 @@
|
|||
function Panel_Console() : PanelContent() constructor {
|
||||
title = "Console";
|
||||
w = ui(640);
|
||||
h = ui(320);
|
||||
|
||||
command = "";
|
||||
history = [];
|
||||
cmd_history = [];
|
||||
|
||||
cmd_index = 0;
|
||||
|
||||
keyboard_string = "";
|
||||
|
||||
static submit_command = function() {
|
||||
if(command == "") return;
|
||||
array_push(history, { txt: command, color: COLORS._main_text_sub });
|
||||
array_push(cmd_history, command);
|
||||
|
||||
var cmd = string_splice(command, " ");
|
||||
|
||||
switch(cmd[0]) {
|
||||
case "flag":
|
||||
if(array_length(cmd) < 2) break;
|
||||
var flg = array_safe_get(cmd, 1, "");
|
||||
global.FLAG[$ flg] = !global.FLAG[$ flg];
|
||||
|
||||
array_push(history, { txt: $"Toggled debug flag: {flg} = {global.FLAG[$ flg]? "True" : "False"}", color: COLORS._main_value_positive });
|
||||
break;
|
||||
}
|
||||
|
||||
keyboard_string = "";
|
||||
command = "";
|
||||
}
|
||||
|
||||
function drawContent(panel) {
|
||||
HOTKEY_BLOCK = true;
|
||||
command = keyboard_string;
|
||||
|
||||
draw_clear_alpha(CDEF.main_dkblack, 1);
|
||||
|
||||
draw_set_color(c_black);
|
||||
draw_set_alpha(0.75);
|
||||
draw_rectangle(0, h - ui(28), w, h, false);
|
||||
draw_set_alpha(1);
|
||||
|
||||
draw_set_text(f_code, fa_left, fa_bottom, COLORS._main_text);
|
||||
draw_text(ui(8), h - ui(4), command);
|
||||
draw_set_color(COLORS._main_text_sub);
|
||||
draw_text(ui(8) + string_width(command), h - ui(4), "_");
|
||||
|
||||
var hy = h - ui(32);
|
||||
for( var i = 0; i < array_length(history); i++ ) {
|
||||
var his = history[array_length(history) - i - 1];
|
||||
var txt = his.txt;
|
||||
|
||||
draw_set_color(his.color);
|
||||
draw_text_ext(ui(8), hy, txt, -1, w - ui(16));
|
||||
hy -= string_height_ext(txt, -1, w - ui(16));
|
||||
|
||||
if(hy <= 0) break;
|
||||
}
|
||||
|
||||
if(keyboard_check_pressed(vk_enter))
|
||||
submit_command();
|
||||
|
||||
if(keyboard_check_pressed(vk_up)) {
|
||||
cmd_index = max(0, cmd_index - 1);
|
||||
keyboard_string = array_safe_get(cmd_history, cmd_index, "");
|
||||
command = keyboard_string;
|
||||
} else if(keyboard_check_pressed(vk_anykey))
|
||||
cmd_index = array_length(cmd_history);
|
||||
}
|
||||
}
|
92
scripts/panel_keyframe_driver/panel_keyframe_driver.gml
Normal file
|
@ -0,0 +1,92 @@
|
|||
function Panel_Keyframe_Driver(key) : Panel_Linear_Setting() constructor {
|
||||
title = __txtx("driver_settings", "Driver Settings");
|
||||
self.key = key;
|
||||
|
||||
w = ui(380);
|
||||
|
||||
#region data
|
||||
prop_default = [
|
||||
new __Panel_Linear_Setting_Item(
|
||||
__txtx("driver_type", "Type"),
|
||||
new scrollBox( [ "None", "Linear", "Wiggle", "Sine" ], function(val) { key.drivers.type = val; setProp(); }),
|
||||
function() { return key.drivers.type; }
|
||||
),
|
||||
];
|
||||
|
||||
prop_linear = [
|
||||
new __Panel_Linear_Setting_Item(
|
||||
__txt("Speed"),
|
||||
new textBox( TEXTBOX_INPUT.number, function(val) { key.drivers.speed = val; }).setSlidable(),
|
||||
function() { return key.drivers.speed; }
|
||||
),
|
||||
];
|
||||
|
||||
prop_wiggle = [
|
||||
new __Panel_Linear_Setting_Item(
|
||||
__txt("Seed"),
|
||||
new textBox( TEXTBOX_INPUT.number, function(val) { key.drivers.seed = val; }).setSlidable(),
|
||||
function() { return key.drivers.seed; }
|
||||
),
|
||||
new __Panel_Linear_Setting_Item(
|
||||
__txt("Sync axis"),
|
||||
new checkBox( function() { key.drivers.axis_sync = !key.drivers.axis_sync; }),
|
||||
function() { return key.drivers.axis_sync }
|
||||
),
|
||||
new __Panel_Linear_Setting_Item(
|
||||
__txt("Frequency"),
|
||||
new textBox( TEXTBOX_INPUT.number, function(val) { key.drivers.frequency = val; }).setSlidable(),
|
||||
function() { return key.drivers.frequency; }
|
||||
),
|
||||
new __Panel_Linear_Setting_Item(
|
||||
__txt("Amplitude"),
|
||||
new textBox( TEXTBOX_INPUT.number, function(val) { key.drivers.amplitude = val; }).setSlidable(),
|
||||
function() { return key.drivers.amplitude; }
|
||||
),
|
||||
new __Panel_Linear_Setting_Item(
|
||||
__txt("Octave"),
|
||||
new textBox( TEXTBOX_INPUT.number, function(val) { key.drivers.octave = val; }).setSlidable(),
|
||||
function() { return key.drivers.octave; }
|
||||
),
|
||||
];
|
||||
|
||||
prop_sine = [
|
||||
new __Panel_Linear_Setting_Item(
|
||||
__txt("Sync axis"),
|
||||
new checkBox( function() { key.drivers.axis_sync = !key.drivers.axis_sync; }),
|
||||
function() { return key.drivers.axis_sync }
|
||||
),
|
||||
new __Panel_Linear_Setting_Item(
|
||||
__txt("Frequency"),
|
||||
new textBox( TEXTBOX_INPUT.number, function(val) { key.drivers.frequency = val; }).setSlidable(),
|
||||
function() { return key.drivers.frequency; }
|
||||
),
|
||||
new __Panel_Linear_Setting_Item(
|
||||
__txt("Amplitude"),
|
||||
new textBox( TEXTBOX_INPUT.number, function(val) { key.drivers.amplitude = val; }).setSlidable(),
|
||||
function() { return key.drivers.amplitude; }
|
||||
),
|
||||
new __Panel_Linear_Setting_Item(
|
||||
__txt("Phase"),
|
||||
new textBox( TEXTBOX_INPUT.number, function(val) { key.drivers.phase = val; }).setSlidable(),
|
||||
function() { return key.drivers.phase ; }
|
||||
),
|
||||
];
|
||||
#endregion
|
||||
|
||||
static setProp = function() {
|
||||
properties = [];
|
||||
|
||||
array_append(properties, prop_default);
|
||||
|
||||
switch(key.drivers.type) {
|
||||
case DRIVER_TYPE.linear : array_append(properties, prop_linear); break;
|
||||
case DRIVER_TYPE.wiggle : array_append(properties, prop_wiggle); break;
|
||||
case DRIVER_TYPE.sine : array_append(properties, prop_sine); break;
|
||||
}
|
||||
|
||||
setHeight();
|
||||
panel.contentResize();
|
||||
}
|
||||
|
||||
run_in(1, function() { setProp(); });
|
||||
}
|
11
scripts/panel_keyframe_driver/panel_keyframe_driver.yy
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "panel_keyframe_driver",
|
||||
"isCompatibility": false,
|
||||
"isDnD": false,
|
||||
"parent": {
|
||||
"name": "animation",
|
||||
"path": "folders/panels/animation.yy",
|
||||
},
|
||||
}
|
|
@ -377,17 +377,17 @@ function Panel_Preview() : PanelContent() constructor {
|
|||
canvas_zooming = false;
|
||||
}
|
||||
|
||||
if(pFOCUS && pHOVER && canvas_hover) {
|
||||
if(pHOVER && canvas_hover) {
|
||||
var _doDragging = false;
|
||||
var _doZooming = false;
|
||||
|
||||
if(mouse_press(PREFERENCES.pan_mouse_key)) {
|
||||
if(mouse_press(PREFERENCES.pan_mouse_key, pFOCUS)) {
|
||||
_doDragging = true;
|
||||
canvas_drag_key = PREFERENCES.pan_mouse_key;
|
||||
} else if(mouse_press(mb_left) && canvas_dragging_key) {
|
||||
} else if(mouse_press(mb_left, pFOCUS) && canvas_dragging_key) {
|
||||
_doDragging = true;
|
||||
canvas_drag_key = mb_left;
|
||||
} else if(mouse_press(mb_left) && canvas_zooming_key) {
|
||||
} else if(mouse_press(mb_left, pFOCUS) && canvas_zooming_key) {
|
||||
_doZooming = true;
|
||||
canvas_drag_key = mb_left;
|
||||
}
|
||||
|
@ -461,17 +461,17 @@ function Panel_Preview() : PanelContent() constructor {
|
|||
canvas_zooming = false;
|
||||
}
|
||||
|
||||
if(pFOCUS && pHOVER && canvas_hover) {
|
||||
if(pHOVER && canvas_hover) {
|
||||
var _doDragging = false;
|
||||
var _doZooming = false;
|
||||
|
||||
if(mouse_press(PREFERENCES.pan_mouse_key)) {
|
||||
if(mouse_press(PREFERENCES.pan_mouse_key, pFOCUS)) {
|
||||
_doDragging = true;
|
||||
canvas_drag_key = PREFERENCES.pan_mouse_key;
|
||||
} else if(mouse_press(mb_left) && canvas_dragging_key) {
|
||||
} else if(mouse_press(mb_left, pFOCUS) && canvas_dragging_key) {
|
||||
_doDragging = true;
|
||||
canvas_drag_key = mb_left;
|
||||
} else if(mouse_press(mb_left) && canvas_zooming_key) {
|
||||
} else if(mouse_press(mb_left, pFOCUS) && canvas_zooming_key) {
|
||||
_doZooming = true;
|
||||
canvas_drag_key = mb_left;
|
||||
}
|
||||
|
|
|
@ -92,6 +92,8 @@
|
|||
PREFERENCES.collection_preview_speed = 60;
|
||||
PREFERENCES.collection_scale = 1;
|
||||
|
||||
PREFERENCES.caret_blink = 0.75;
|
||||
|
||||
PREFERENCES_DEF = variable_clone(PREFERENCES);
|
||||
#endregion
|
||||
|
||||
|
|
|
@ -64,32 +64,34 @@ function random1D(seed, startRange = 0, endRange = 1) { #region
|
|||
return lerp(f1, f2, _f);
|
||||
} #endregion
|
||||
|
||||
function perlin1D(seed, scale = 1, octave = 1, startRange = 0, endRange = 1) { #region
|
||||
function __noise(_x) { #region
|
||||
var i = floor(_x);
|
||||
var f = frac(_x);
|
||||
|
||||
var a = random1D(i);
|
||||
var b = random1D(i + 1);
|
||||
|
||||
var u = f * f * (3.0 - 2.0 * f);
|
||||
|
||||
return lerp(a, b, u);
|
||||
} #endregion
|
||||
|
||||
function perlin1D(pos, seed, scale = 1, octave = 1, startRange = 0, endRange = 1) { #region
|
||||
var amp = power(2., octave - 1.) / (power(2., octave) - 1.);
|
||||
var val = 0;
|
||||
var n = 0.;
|
||||
|
||||
repeat(octave) {
|
||||
val = random1D(seed * scale) * amp;
|
||||
scale *= 2;
|
||||
amp /= 2;
|
||||
n += __noise(seed + pos * scale) * amp;
|
||||
|
||||
amp *= .5;
|
||||
pos *= 2.;
|
||||
}
|
||||
|
||||
return lerp(startRange, endRange, val);
|
||||
return lerp(startRange, endRange, n);
|
||||
} #endregion
|
||||
|
||||
function wiggle(_min = 0, _max = 1, _freq = 1, _time = 0, _seed = 0, _octave = 1) { #region
|
||||
_freq = max(1, _freq);
|
||||
|
||||
var sdMin = floor(_time / _freq) * _freq;
|
||||
var sdMax = sdMin + _freq;
|
||||
|
||||
var _x0 = perlin1D(PROJECT.seed + _seed + sdMin, 1, _octave);
|
||||
var _x1 = perlin1D(PROJECT.seed + _seed + sdMax, 1, _octave);
|
||||
|
||||
var t = (_time - sdMin) / (sdMax - sdMin);
|
||||
t = -(cos(pi * t) - 1) / 2;
|
||||
var _lrp = lerp(_x0, _x1, t);
|
||||
return lerp(_min, _max, _lrp);
|
||||
return perlin1D(_time, _seed, _freq, _octave, _min, _max);
|
||||
} #endregion
|
||||
|
||||
function getWiggle(_min = 0, _max = 1, _freq = 1, _time = 0, _seed = 0, startTime = noone, endTime = noone) { #region
|
||||
|
|
|
@ -545,6 +545,8 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
|||
if(auto_update && (keyboard_check_pressed(vk_anykey) || modified))
|
||||
apply();
|
||||
|
||||
if(modified) typing = 100;
|
||||
|
||||
if(keyboard_check_pressed(vk_left)) onKey(vk_left);
|
||||
if(keyboard_check_pressed(vk_right)) onKey(vk_right);
|
||||
if(keyboard_check_pressed(vk_up)) onKey(vk_up);
|
||||
|
@ -603,6 +605,7 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
|||
|
||||
draw_set_text(font, fa_left, fa_top, color);
|
||||
draw_set_alpha(0.5 + 0.5 * interactable);
|
||||
_y += ui(1);
|
||||
|
||||
var ch_x = _x;
|
||||
var ch_y = _y;
|
||||
|
@ -860,13 +863,17 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
|||
|
||||
if(cursor_pos_y != 0 && cursor_pos_x != 0) {
|
||||
draw_set_color(COLORS._main_text_accent);
|
||||
draw_set_alpha(typing || current_time % (PREFERENCES.caret_blink * 2000) > PREFERENCES.caret_blink * 1000);
|
||||
draw_line_width(cursor_pos_x, cursor_pos_y, cursor_pos_x, cursor_pos_y + c_h, 2);
|
||||
draw_set_alpha(1);
|
||||
}
|
||||
|
||||
if(o_dialog_textbox_autocomplete.textbox == self) {
|
||||
o_dialog_textbox_autocomplete.dialog_x = rx + cursor_pos_x + 1;
|
||||
o_dialog_textbox_autocomplete.dialog_y = ry + cursor_pos_y + line_get_height() + 1;
|
||||
}
|
||||
|
||||
if(typing) typing--;
|
||||
#endregion
|
||||
|
||||
if(autocomplete_modi && PREFERENCES.widget_autocomplete_delay >= 0 && autocomplete_delay >= PREFERENCES.widget_autocomplete_delay) {
|
||||
|
|
|
@ -43,6 +43,8 @@ function textBox(_input, _onModify) : textInput(_input, _onModify) constructor {
|
|||
range_min = 0;
|
||||
range_max = 0;
|
||||
|
||||
disp_text_fx = [];
|
||||
|
||||
sprite_index = -1;
|
||||
|
||||
text_surface = surface_create(1, 1);
|
||||
|
@ -246,7 +248,7 @@ function textBox(_input, _onModify) : textInput(_input, _onModify) constructor {
|
|||
}
|
||||
}
|
||||
|
||||
KEYBOARD_STRING = "";
|
||||
KEYBOARD_STRING = "";
|
||||
keyboard_lastkey = -1;
|
||||
#endregion
|
||||
|
||||
|
@ -262,6 +264,8 @@ function textBox(_input, _onModify) : textInput(_input, _onModify) constructor {
|
|||
if(KEYBOARD_PRESSED == vk_down || keyboard_check_pressed(vk_down)) { _input_text = string(toNumber(_input_text) - _inc); apply(); }
|
||||
}
|
||||
|
||||
if(edited) typing = 100;
|
||||
|
||||
if(keyboard_check_pressed(vk_home)) {
|
||||
if(key_mod_press(SHIFT)) {
|
||||
if(cursor_select == -1)
|
||||
|
@ -287,18 +291,10 @@ function textBox(_input, _onModify) : textInput(_input, _onModify) constructor {
|
|||
|
||||
static display_text = function(_x, _y, _text, _w, _m = -1) { #region
|
||||
draw_set_alpha(0.5 + 0.5 * interactable);
|
||||
_y += ui(1);
|
||||
|
||||
switch(format) {
|
||||
case TEXT_AREA_FORMAT._default :
|
||||
draw_set_text(font == noone? f_p0 : font, fa_left, fa_top, color);
|
||||
draw_text_add(_x + disp_x, _y, _text);
|
||||
break;
|
||||
case TEXT_AREA_FORMAT.node_title :
|
||||
draw_set_text(font == noone? f_p0 : font, fa_left, fa_top, color);
|
||||
draw_text_add(_x + disp_x, _y, _text);
|
||||
break;
|
||||
}
|
||||
|
||||
draw_set_text(font == noone? f_p0 : font, fa_left, fa_top, color);
|
||||
draw_text_add(_x + disp_x, _y, _text);
|
||||
draw_set_alpha(1);
|
||||
|
||||
var _xx = _x + disp_x;
|
||||
|
@ -479,7 +475,11 @@ function textBox(_input, _onModify) : textInput(_input, _onModify) constructor {
|
|||
BLEND_NORMAL
|
||||
|
||||
draw_set_color(COLORS._main_text_accent);
|
||||
draw_set_alpha(typing || current_time % (PREFERENCES.caret_blink * 2000) > PREFERENCES.caret_blink * 1000);
|
||||
draw_line_width(cursor_pos, c_y0, cursor_pos, c_y1, 2);
|
||||
draw_set_alpha(1);
|
||||
|
||||
if(typing) typing--;
|
||||
#endregion
|
||||
|
||||
disp_x_to = clamp(disp_x_to, disp_x_min, disp_x_max);
|
||||
|
|
|
@ -4,6 +4,8 @@ function textInput(_input, _onModify) : widget() constructor {
|
|||
side_button = noone;
|
||||
selecting = false;
|
||||
|
||||
typing = false;
|
||||
|
||||
static _resetFocus = function() { resetFocus(); }
|
||||
|
||||
static onKey = function(key) {}
|
||||
|
|
|
@ -15,9 +15,17 @@
|
|||
globalvar window_min_w; window_min_w = 960;
|
||||
globalvar window_min_h; window_min_h = 600;
|
||||
|
||||
globalvar window_preminimize_rect; window_preminimize_rect = [ 0, 0, 1, 1 ];
|
||||
|
||||
#macro DISPLAY_REFRESH CURRENT_PANEL = panelSerialize(); display_refresh();
|
||||
#endregion
|
||||
|
||||
function winManInit() { #region
|
||||
if(OS == os_macosx) mac_window_init();
|
||||
|
||||
window_preminimize_rect = [ 0, 0, 1, 1 ];
|
||||
} #endregion
|
||||
|
||||
function winMan_getData(curr = true) { #region
|
||||
INLINE
|
||||
var _monitors = display_measure_all();
|
||||
|
@ -55,6 +63,7 @@ function winMan_setRect(_x, _y, _w, _h) { #region
|
|||
|
||||
function winMan_isMinimized() { #region
|
||||
INLINE
|
||||
if(OS == os_macosx) return false;
|
||||
return gameframe_is_natively_minimized();
|
||||
} #endregion
|
||||
|
||||
|
|
|
@ -22,7 +22,8 @@ vec3 hsv2rgb(vec3 c) { #region
|
|||
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||
} #endregion
|
||||
|
||||
float random (in vec2 st, float seed) { return fract(sin(dot(st.xy + vec2(21.4564, 46.8564), vec2(12.9898, 78.233))) * (43758.5453123 + seed)); }
|
||||
float random (in vec2 st, float seed) { return fract(sin(dot(st.xy + vec2(21.456, 46.856), vec2(12.989, 78.233))) * (43758.545 + seed)); }
|
||||
|
||||
float randomFloat (in vec2 st, float seed) { #region
|
||||
float sedSt = floor(seed);
|
||||
float sedFr = fract(seed);
|
||||
|
@ -30,7 +31,7 @@ float randomFloat (in vec2 st, float seed) { #region
|
|||
return mix(random(st, sedSt), random(st, sedSt + 1.), sedFr);
|
||||
} #endregion
|
||||
|
||||
vec2 random2 (in vec2 st, float seed) { return vec2(random(st, seed), random(st, seed + 1.864354564)); }
|
||||
vec2 random2 (in vec2 st, float seed) { return vec2(random(st, seed), random(st, seed + 1.864)); }
|
||||
|
||||
float noise (in vec2 st, in vec2 scale) { #region
|
||||
vec2 cellMin = floor(st);
|
||||
|
|
BIN
sprites/s_mk_sparkle_bg/98733043-f051-40f2-8689-df0bdcdfde2c.png
Normal file
After Width: | Height: | Size: 309 B |
After Width: | Height: | Size: 309 B |
97
sprites/s_mk_sparkle_bg/s_mk_sparkle_bg.yy
Normal file
|
@ -0,0 +1,97 @@
|
|||
{
|
||||
"resourceType": "GMSprite",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "s_mk_sparkle_bg",
|
||||
"bbox_bottom": 15,
|
||||
"bbox_left": 0,
|
||||
"bbox_right": 15,
|
||||
"bbox_top": 0,
|
||||
"bboxMode": 0,
|
||||
"collisionKind": 1,
|
||||
"collisionTolerance": 0,
|
||||
"DynamicTexturePage": false,
|
||||
"edgeFiltering": false,
|
||||
"For3D": false,
|
||||
"frames": [
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"98733043-f051-40f2-8689-df0bdcdfde2c",},
|
||||
],
|
||||
"gridX": 0,
|
||||
"gridY": 0,
|
||||
"height": 16,
|
||||
"HTile": false,
|
||||
"layers": [
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"ed23f74d-9aa2-4686-8fba-e7707265ee05","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,},
|
||||
],
|
||||
"nineSlice": {
|
||||
"resourceType": "GMNineSliceData",
|
||||
"resourceVersion": "1.0",
|
||||
"bottom": 2,
|
||||
"enabled": true,
|
||||
"guideColour": [
|
||||
4294902015,
|
||||
4294902015,
|
||||
4294902015,
|
||||
4294902015,
|
||||
],
|
||||
"highlightColour": 1728023040,
|
||||
"highlightStyle": 0,
|
||||
"left": 2,
|
||||
"right": 2,
|
||||
"tileMode": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
],
|
||||
"top": 2,
|
||||
},
|
||||
"origin": 4,
|
||||
"parent": {
|
||||
"name": "src",
|
||||
"path": "folders/nodes/data/MK effects/mk sparkle/src.yy",
|
||||
},
|
||||
"preMultiplyAlpha": false,
|
||||
"sequence": {
|
||||
"resourceType": "GMSequence",
|
||||
"resourceVersion": "1.4",
|
||||
"name": "s_mk_sparkle_bg",
|
||||
"autoRecord": true,
|
||||
"backdropHeight": 768,
|
||||
"backdropImageOpacity": 0.5,
|
||||
"backdropImagePath": "",
|
||||
"backdropWidth": 1366,
|
||||
"backdropXOffset": 0.0,
|
||||
"backdropYOffset": 0.0,
|
||||
"events": {"resourceType":"KeyframeStore<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
|
||||
"eventStubScript": null,
|
||||
"eventToFunction": {},
|
||||
"length": 1.0,
|
||||
"lockOrigin": false,
|
||||
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
|
||||
"playback": 1,
|
||||
"playbackSpeed": 30.0,
|
||||
"playbackSpeedType": 0,
|
||||
"showBackdrop": true,
|
||||
"showBackdropImage": false,
|
||||
"timeUnits": 1,
|
||||
"tracks": [
|
||||
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
|
||||
{"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"98733043-f051-40f2-8689-df0bdcdfde2c","path":"sprites/s_mk_sparkle_bg/s_mk_sparkle_bg.yy",},},},"Disabled":false,"id":"c885660b-2ef9-4a21-898b-00a58fa0a02b","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,},
|
||||
],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
|
||||
],
|
||||
"visibleRange": null,
|
||||
"volume": 1.0,
|
||||
"xorigin": 8,
|
||||
"yorigin": 8,
|
||||
},
|
||||
"swatchColours": null,
|
||||
"swfPrecision": 2.525,
|
||||
"textureGroupId": {
|
||||
"name": "Default",
|
||||
"path": "texturegroups/Default",
|
||||
},
|
||||
"type": 0,
|
||||
"VTile": false,
|
||||
"width": 16,
|
||||
}
|
After Width: | Height: | Size: 335 B |
After Width: | Height: | Size: 335 B |
97
sprites/s_mk_sparkle_select/s_mk_sparkle_select.yy
Normal file
|
@ -0,0 +1,97 @@
|
|||
{
|
||||
"resourceType": "GMSprite",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "s_mk_sparkle_select",
|
||||
"bbox_bottom": 15,
|
||||
"bbox_left": 0,
|
||||
"bbox_right": 15,
|
||||
"bbox_top": 0,
|
||||
"bboxMode": 0,
|
||||
"collisionKind": 1,
|
||||
"collisionTolerance": 0,
|
||||
"DynamicTexturePage": false,
|
||||
"edgeFiltering": false,
|
||||
"For3D": false,
|
||||
"frames": [
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"cacdc029-4de5-4c88-aa92-e2321237da8a",},
|
||||
],
|
||||
"gridX": 0,
|
||||
"gridY": 0,
|
||||
"height": 16,
|
||||
"HTile": false,
|
||||
"layers": [
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"0400363c-8794-4415-9f8b-f26332acc5e3","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,},
|
||||
],
|
||||
"nineSlice": {
|
||||
"resourceType": "GMNineSliceData",
|
||||
"resourceVersion": "1.0",
|
||||
"bottom": 4,
|
||||
"enabled": true,
|
||||
"guideColour": [
|
||||
4294902015,
|
||||
4294902015,
|
||||
4294902015,
|
||||
4294902015,
|
||||
],
|
||||
"highlightColour": 1728023040,
|
||||
"highlightStyle": 0,
|
||||
"left": 4,
|
||||
"right": 4,
|
||||
"tileMode": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
],
|
||||
"top": 4,
|
||||
},
|
||||
"origin": 4,
|
||||
"parent": {
|
||||
"name": "src",
|
||||
"path": "folders/nodes/data/MK effects/mk sparkle/src.yy",
|
||||
},
|
||||
"preMultiplyAlpha": false,
|
||||
"sequence": {
|
||||
"resourceType": "GMSequence",
|
||||
"resourceVersion": "1.4",
|
||||
"name": "s_mk_sparkle_select",
|
||||
"autoRecord": true,
|
||||
"backdropHeight": 768,
|
||||
"backdropImageOpacity": 0.5,
|
||||
"backdropImagePath": "",
|
||||
"backdropWidth": 1366,
|
||||
"backdropXOffset": 0.0,
|
||||
"backdropYOffset": 0.0,
|
||||
"events": {"resourceType":"KeyframeStore<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
|
||||
"eventStubScript": null,
|
||||
"eventToFunction": {},
|
||||
"length": 1.0,
|
||||
"lockOrigin": false,
|
||||
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
|
||||
"playback": 1,
|
||||
"playbackSpeed": 30.0,
|
||||
"playbackSpeedType": 0,
|
||||
"showBackdrop": true,
|
||||
"showBackdropImage": false,
|
||||
"timeUnits": 1,
|
||||
"tracks": [
|
||||
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
|
||||
{"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"cacdc029-4de5-4c88-aa92-e2321237da8a","path":"sprites/s_mk_sparkle_select/s_mk_sparkle_select.yy",},},},"Disabled":false,"id":"0ad5bc0c-0f1d-4297-a1ab-5d38fa507c30","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,},
|
||||
],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
|
||||
],
|
||||
"visibleRange": null,
|
||||
"volume": 1.0,
|
||||
"xorigin": 8,
|
||||
"yorigin": 8,
|
||||
},
|
||||
"swatchColours": null,
|
||||
"swfPrecision": 2.525,
|
||||
"textureGroupId": {
|
||||
"name": "Default",
|
||||
"path": "texturegroups/Default",
|
||||
},
|
||||
"type": 0,
|
||||
"VTile": false,
|
||||
"width": 16,
|
||||
}
|
BIN
sprites/s_node_spout/01274803-f988-488b-ae38-4ba029f38033.png
Normal file
After Width: | Height: | Size: 2 KiB |
After Width: | Height: | Size: 2 KiB |
74
sprites/s_node_spout/s_node_spout.yy
Normal file
|
@ -0,0 +1,74 @@
|
|||
{
|
||||
"resourceType": "GMSprite",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "s_node_spout",
|
||||
"bbox_bottom": 59,
|
||||
"bbox_left": 5,
|
||||
"bbox_right": 60,
|
||||
"bbox_top": 4,
|
||||
"bboxMode": 0,
|
||||
"collisionKind": 1,
|
||||
"collisionTolerance": 0,
|
||||
"DynamicTexturePage": false,
|
||||
"edgeFiltering": false,
|
||||
"For3D": false,
|
||||
"frames": [
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"01274803-f988-488b-ae38-4ba029f38033",},
|
||||
],
|
||||
"gridX": 0,
|
||||
"gridY": 0,
|
||||
"height": 64,
|
||||
"HTile": false,
|
||||
"layers": [
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"1cced84d-f046-475d-b8f6-7af2b8ff62df","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,},
|
||||
],
|
||||
"nineSlice": null,
|
||||
"origin": 4,
|
||||
"parent": {
|
||||
"name": "IO",
|
||||
"path": "folders/nodes/icons/IO.yy",
|
||||
},
|
||||
"preMultiplyAlpha": false,
|
||||
"sequence": {
|
||||
"resourceType": "GMSequence",
|
||||
"resourceVersion": "1.4",
|
||||
"name": "s_node_spout",
|
||||
"autoRecord": true,
|
||||
"backdropHeight": 768,
|
||||
"backdropImageOpacity": 0.5,
|
||||
"backdropImagePath": "",
|
||||
"backdropWidth": 1366,
|
||||
"backdropXOffset": 0.0,
|
||||
"backdropYOffset": 0.0,
|
||||
"events": {"resourceType":"KeyframeStore<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
|
||||
"eventStubScript": null,
|
||||
"eventToFunction": {},
|
||||
"length": 1.0,
|
||||
"lockOrigin": false,
|
||||
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
|
||||
"playback": 1,
|
||||
"playbackSpeed": 30.0,
|
||||
"playbackSpeedType": 0,
|
||||
"showBackdrop": true,
|
||||
"showBackdropImage": false,
|
||||
"timeUnits": 1,
|
||||
"tracks": [
|
||||
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
|
||||
{"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"01274803-f988-488b-ae38-4ba029f38033","path":"sprites/s_node_spout/s_node_spout.yy",},},},"Disabled":false,"id":"a15d36a8-8986-4e69-a4e2-a7599974b5fb","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,},
|
||||
],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
|
||||
],
|
||||
"visibleRange": null,
|
||||
"volume": 1.0,
|
||||
"xorigin": 32,
|
||||
"yorigin": 32,
|
||||
},
|
||||
"swatchColours": null,
|
||||
"swfPrecision": 2.525,
|
||||
"textureGroupId": {
|
||||
"name": "Default",
|
||||
"path": "texturegroups/Default",
|
||||
},
|
||||
"type": 0,
|
||||
"VTile": false,
|
||||
"width": 64,
|
||||
}
|