0.9.2r2
|
@ -3,7 +3,7 @@
|
|||
"resourceVersion": "1.6",
|
||||
"name": "Pixels Composer",
|
||||
"resources": [
|
||||
{"id":{"name":"panel_function","path":"scripts/panel_function/panel_function.yy",},"order":6,},
|
||||
{"id":{"name":"panel_function","path":"scripts/panel_function/panel_function.yy",},"order":5,},
|
||||
{"id":{"name":"node_time_remap","path":"scripts/node_time_remap/node_time_remap.yy",},"order":33,},
|
||||
{"id":{"name":"sh_perlin","path":"shaders/sh_perlin/sh_perlin.yy",},"order":1,},
|
||||
{"id":{"name":"s_node_alpha_cut","path":"sprites/s_node_alpha_cut/s_node_alpha_cut.yy",},"order":7,},
|
||||
|
@ -34,7 +34,7 @@
|
|||
{"id":{"name":"s_node_image_copy","path":"sprites/s_node_image_copy/s_node_image_copy.yy",},"order":53,},
|
||||
{"id":{"name":"node_array","path":"scripts/node_array/node_array.yy",},"order":3,},
|
||||
{"id":{"name":"sh_colorize","path":"shaders/sh_colorize/sh_colorize.yy",},"order":5,},
|
||||
{"id":{"name":"s_timeline_graph","path":"sprites/s_timeline_graph/s_timeline_graph.yy",},"order":28,},
|
||||
{"id":{"name":"s_timeline_graph","path":"sprites/s_timeline_graph/s_timeline_graph.yy",},"order":1,},
|
||||
{"id":{"name":"perlin_noise","path":"scripts/perlin_noise/perlin_noise.yy",},"order":5,},
|
||||
{"id":{"name":"node_functions","path":"scripts/node_functions/node_functions.yy",},"order":2,},
|
||||
{"id":{"name":"s_inspector_area","path":"sprites/s_inspector_area/s_inspector_area.yy",},"order":7,},
|
||||
|
@ -43,7 +43,7 @@
|
|||
{"id":{"name":"node_math","path":"scripts/node_math/node_math.yy",},"order":6,},
|
||||
{"id":{"name":"array_functions","path":"scripts/array_functions/array_functions.yy",},"order":2,},
|
||||
{"id":{"name":"sh_blur_final","path":"shaders/sh_blur_final/sh_blur_final.yy",},"order":3,},
|
||||
{"id":{"name":"panel_preview","path":"scripts/panel_preview/panel_preview.yy",},"order":4,},
|
||||
{"id":{"name":"panel_preview","path":"scripts/panel_preview/panel_preview.yy",},"order":3,},
|
||||
{"id":{"name":"node_blend","path":"scripts/node_blend/node_blend.yy",},"order":13,},
|
||||
{"id":{"name":"s_refresh_16","path":"sprites/s_refresh_16/s_refresh_16.yy",},"order":19,},
|
||||
{"id":{"name":"s_node_bevel","path":"sprites/s_node_bevel/s_node_bevel.yy",},"order":13,},
|
||||
|
@ -54,6 +54,7 @@
|
|||
{"id":{"name":"sh_cell_noise","path":"shaders/sh_cell_noise/sh_cell_noise.yy",},"order":0,},
|
||||
{"id":{"name":"sh_blend_max","path":"shaders/sh_blend_max/sh_blend_max.yy",},"order":8,},
|
||||
{"id":{"name":"_3D","path":"scripts/_3D/_3D.yy",},"order":6,},
|
||||
{"id":{"name":"s_timeline_keyframe_selecting","path":"sprites/s_timeline_keyframe_selecting/s_timeline_keyframe_selecting.yy",},"order":3,},
|
||||
{"id":{"name":"s_button","path":"sprites/s_button/s_button.yy",},"order":0,},
|
||||
{"id":{"name":"node_outline","path":"scripts/node_outline/node_outline.yy",},"order":0,},
|
||||
{"id":{"name":"math_function","path":"scripts/math_function/math_function.yy",},"order":7,},
|
||||
|
@ -75,6 +76,7 @@
|
|||
{"id":{"name":"s_node_trail","path":"sprites/s_node_trail/s_node_trail.yy",},"order":100,},
|
||||
{"id":{"name":"s_node_grey_alpha","path":"sprites/s_node_grey_alpha/s_node_grey_alpha.yy",},"order":49,},
|
||||
{"id":{"name":"s_node_corner","path":"sprites/s_node_corner/s_node_corner.yy",},"order":34,},
|
||||
{"id":{"name":"s_hamburger_16","path":"sprites/s_hamburger_16/s_hamburger_16.yy",},"order":12,},
|
||||
{"id":{"name":"s_node_blur","path":"sprites/s_node_blur/s_node_blur.yy",},"order":15,},
|
||||
{"id":{"name":"sh_texture_atlas","path":"shaders/sh_texture_atlas/sh_texture_atlas.yy",},"order":0,},
|
||||
{"id":{"name":"s_node_blur_directional","path":"sprites/s_node_blur_directional/s_node_blur_directional.yy",},"order":17,},
|
||||
|
@ -105,7 +107,7 @@
|
|||
{"id":{"name":"s_cache","path":"sprites/s_cache/s_cache.yy",},"order":5,},
|
||||
{"id":{"name":"o_dialog_release_note","path":"objects/o_dialog_release_note/o_dialog_release_note.yy",},"order":16,},
|
||||
{"id":{"name":"s_inspector_text_halign","path":"sprites/s_inspector_text_halign/s_inspector_text_halign.yy",},"order":0,},
|
||||
{"id":{"name":"panel_inspector","path":"scripts/panel_inspector/panel_inspector.yy",},"order":1,},
|
||||
{"id":{"name":"panel_inspector","path":"scripts/panel_inspector/panel_inspector.yy",},"order":0,},
|
||||
{"id":{"name":"s_node_junctions_single","path":"sprites/s_node_junctions_single/s_node_junctions_single.yy",},"order":0,},
|
||||
{"id":{"name":"node_padding","path":"scripts/node_padding/node_padding.yy",},"order":10,},
|
||||
{"id":{"name":"node_noise_grid","path":"scripts/node_noise_grid/node_noise_grid.yy",},"order":12,},
|
||||
|
@ -184,6 +186,7 @@
|
|||
{"id":{"name":"s_ui_panel_bg_dark","path":"sprites/s_ui_panel_bg_dark/s_ui_panel_bg_dark.yy",},"order":5,},
|
||||
{"id":{"name":"s_node_color_adjust","path":"sprites/s_node_color_adjust/s_node_color_adjust.yy",},"order":24,},
|
||||
{"id":{"name":"s_node_junctions_array_hover","path":"sprites/s_node_junctions_array_hover/s_node_junctions_array_hover.yy",},"order":2,},
|
||||
{"id":{"name":"s_control_unpin","path":"sprites/s_control_unpin/s_control_unpin.yy",},"order":8,},
|
||||
{"id":{"name":"node_mirror","path":"scripts/node_mirror/node_mirror.yy",},"order":3,},
|
||||
{"id":{"name":"node_corner","path":"scripts/node_corner/node_corner.yy",},"order":35,},
|
||||
{"id":{"name":"vertex_function","path":"scripts/vertex_function/vertex_function.yy",},"order":0,},
|
||||
|
@ -270,7 +273,7 @@
|
|||
{"id":{"name":"s_node_draw_area","path":"sprites/s_node_draw_area/s_node_draw_area.yy",},"order":0,},
|
||||
{"id":{"name":"sh_blend_subtract","path":"shaders/sh_blend_subtract/sh_blend_subtract.yy",},"order":5,},
|
||||
{"id":{"name":"o_dialog_file_name","path":"objects/o_dialog_file_name/o_dialog_file_name.yy",},"order":12,},
|
||||
{"id":{"name":"panel_animation","path":"scripts/panel_animation/panel_animation.yy",},"order":5,},
|
||||
{"id":{"name":"panel_animation","path":"scripts/panel_animation/panel_animation.yy",},"order":4,},
|
||||
{"id":{"name":"sh_gradient","path":"shaders/sh_gradient/sh_gradient.yy",},"order":8,},
|
||||
{"id":{"name":"sh_glow","path":"shaders/sh_glow/sh_glow.yy",},"order":21,},
|
||||
{"id":{"name":"sh_posterize","path":"shaders/sh_posterize/sh_posterize.yy",},"order":23,},
|
||||
|
@ -297,6 +300,7 @@
|
|||
{"id":{"name":"s_icon_grid","path":"sprites/s_icon_grid/s_icon_grid.yy",},"order":4,},
|
||||
{"id":{"name":"node_particle","path":"scripts/node_particle/node_particle.yy",},"order":0,},
|
||||
{"id":{"name":"s_icon_grid_setting","path":"sprites/s_icon_grid_setting/s_icon_grid_setting.yy",},"order":5,},
|
||||
{"id":{"name":"level_histogram","path":"scripts/level_histogram/level_histogram.yy",},"order":1,},
|
||||
{"id":{"name":"o_dialog_inspector_grid","path":"objects/o_dialog_inspector_grid/o_dialog_inspector_grid.yy",},"order":25,},
|
||||
{"id":{"name":"s_node_array_length","path":"sprites/s_node_array_length/s_node_array_length.yy",},"order":11,},
|
||||
{"id":{"name":"append_function","path":"scripts/append_function/append_function.yy",},"order":1,},
|
||||
|
@ -306,7 +310,6 @@
|
|||
{"id":{"name":"sh_invert","path":"shaders/sh_invert/sh_invert.yy",},"order":30,},
|
||||
{"id":{"name":"save_function","path":"scripts/save_function/save_function.yy",},"order":0,},
|
||||
{"id":{"name":"node_perlin_smear","path":"scripts/node_perlin_smear/node_perlin_smear.yy",},"order":10,},
|
||||
{"id":{"name":"inspector_custom_render","path":"scripts/inspector_custom_render/inspector_custom_render.yy",},"order":0,},
|
||||
{"id":{"name":"s_node_area","path":"sprites/s_node_area/s_node_area.yy",},"order":9,},
|
||||
{"id":{"name":"node_alpha_cutoff","path":"scripts/node_alpha_cutoff/node_alpha_cutoff.yy",},"order":37,},
|
||||
{"id":{"name":"sh_channel_R","path":"shaders/sh_channel_R/sh_channel_R.yy",},"order":12,},
|
||||
|
@ -315,6 +318,7 @@
|
|||
{"id":{"name":"point_rect_overlap","path":"scripts/point_rect_overlap/point_rect_overlap.yy",},"order":2,},
|
||||
{"id":{"name":"s_node_twirl","path":"sprites/s_node_twirl/s_node_twirl.yy",},"order":102,},
|
||||
{"id":{"name":"s_icon_accept_32","path":"sprites/s_icon_accept_32/s_icon_accept_32.yy",},"order":15,},
|
||||
{"id":{"name":"s_timeline_elastic","path":"sprites/s_timeline_elastic/s_timeline_elastic.yy",},"order":6,},
|
||||
{"id":{"name":"sh_seperate_shape_counter","path":"shaders/sh_seperate_shape_counter/sh_seperate_shape_counter.yy",},"order":1,},
|
||||
{"id":{"name":"node_timeline_preview","path":"scripts/node_timeline_preview/node_timeline_preview.yy",},"order":2,},
|
||||
{"id":{"name":"sh_greyscale","path":"shaders/sh_greyscale/sh_greyscale.yy",},"order":6,},
|
||||
|
@ -373,6 +377,7 @@
|
|||
{"id":{"name":"node_pixel_cloud","path":"scripts/node_pixel_cloud/node_pixel_cloud.yy",},"order":19,},
|
||||
{"id":{"name":"sh_alpha_grey","path":"shaders/sh_alpha_grey/sh_alpha_grey.yy",},"order":9,},
|
||||
{"id":{"name":"s_transparent","path":"sprites/s_transparent/s_transparent.yy",},"order":1,},
|
||||
{"id":{"name":"s_timeline_ease","path":"sprites/s_timeline_ease/s_timeline_ease.yy",},"order":5,},
|
||||
{"id":{"name":"s_node_path","path":"sprites/s_node_path/s_node_path.yy",},"order":79,},
|
||||
{"id":{"name":"o_dialog_animation","path":"objects/o_dialog_animation/o_dialog_animation.yy",},"order":9,},
|
||||
{"id":{"name":"f_p0b","path":"fonts/f_p0b/f_p0b.yy",},"order":5,},
|
||||
|
@ -421,6 +426,7 @@
|
|||
{"id":{"name":"s_anchor_scale_hori","path":"sprites/s_anchor_scale_hori/s_anchor_scale_hori.yy",},"order":9,},
|
||||
{"id":{"name":"s_node_shape","path":"sprites/s_node_shape/s_node_shape.yy",},"order":91,},
|
||||
{"id":{"name":"gif_reader","path":"scripts/gif_reader/gif_reader.yy",},"order":4,},
|
||||
{"id":{"name":"s_circle_16","path":"sprites/s_circle_16/s_circle_16.yy",},"order":43,},
|
||||
{"id":{"name":"f_p3","path":"fonts/f_p3/f_p3.yy",},"order":7,},
|
||||
{"id":{"name":"s_loading","path":"sprites/s_loading/s_loading.yy",},"order":37,},
|
||||
{"id":{"name":"s_node_curve","path":"sprites/s_node_curve/s_node_curve.yy",},"order":37,},
|
||||
|
@ -433,6 +439,7 @@
|
|||
{"id":{"name":"node_composite","path":"scripts/node_composite/node_composite.yy",},"order":4,},
|
||||
{"id":{"name":"sh_dilate","path":"shaders/sh_dilate/sh_dilate.yy",},"order":22,},
|
||||
{"id":{"name":"node_image_sequence","path":"scripts/node_image_sequence/node_image_sequence.yy",},"order":1,},
|
||||
{"id":{"name":"s_control_pin","path":"sprites/s_control_pin/s_control_pin.yy",},"order":7,},
|
||||
{"id":{"name":"s_menu_transparent","path":"sprites/s_menu_transparent/s_menu_transparent.yy",},"order":0,},
|
||||
{"id":{"name":"key_press","path":"scripts/key_press/key_press.yy",},"order":0,},
|
||||
{"id":{"name":"sh_mirror","path":"shaders/sh_mirror/sh_mirror.yy",},"order":10,},
|
||||
|
@ -450,11 +457,12 @@
|
|||
{"id":{"name":"s_node_grid_noise","path":"sprites/s_node_grid_noise/s_node_grid_noise.yy",},"order":52,},
|
||||
{"id":{"name":"compat_path_array","path":"scripts/compat_path_array/compat_path_array.yy",},"order":0,},
|
||||
{"id":{"name":"node_export","path":"scripts/node_export/node_export.yy",},"order":1,},
|
||||
{"id":{"name":"s_timeline_keyframe","path":"sprites/s_timeline_keyframe/s_timeline_keyframe.yy",},"order":24,},
|
||||
{"id":{"name":"s_timeline_keyframe","path":"sprites/s_timeline_keyframe/s_timeline_keyframe.yy",},"order":2,},
|
||||
{"id":{"name":"s_toolbar_shadow","path":"sprites/s_toolbar_shadow/s_toolbar_shadow.yy",},"order":6,},
|
||||
{"id":{"name":"s_node_sepearte_shape","path":"sprites/s_node_sepearte_shape/s_node_sepearte_shape.yy",},"order":89,},
|
||||
{"id":{"name":"s_group_16","path":"sprites/s_group_16/s_group_16.yy",},"order":12,},
|
||||
{"id":{"name":"s_ui_panel_bg","path":"sprites/s_ui_panel_bg/s_ui_panel_bg.yy",},"order":1,},
|
||||
{"id":{"name":"controlPointBox","path":"scripts/controlPointBox/controlPointBox.yy",},"order":21,},
|
||||
{"id":{"name":"s_grad_blend","path":"sprites/s_grad_blend/s_grad_blend.yy",},"order":34,},
|
||||
{"id":{"name":"sh_vertex_pt","path":"shaders/sh_vertex_pt/sh_vertex_pt.yy",},"order":2,},
|
||||
{"id":{"name":"node_color_replacement","path":"scripts/node_color_replacement/node_color_replacement.yy",},"order":4,},
|
||||
|
@ -465,7 +473,7 @@
|
|||
{"id":{"name":"gradients_function","path":"scripts/gradients_function/gradients_function.yy",},"order":0,},
|
||||
{"id":{"name":"s_refresh_24","path":"sprites/s_refresh_24/s_refresh_24.yy",},"order":29,},
|
||||
{"id":{"name":"node_scale_algo","path":"scripts/node_scale_algo/node_scale_algo.yy",},"order":43,},
|
||||
{"id":{"name":"s_timeline_clock","path":"sprites/s_timeline_clock/s_timeline_clock.yy",},"order":25,},
|
||||
{"id":{"name":"s_timeline_clock","path":"sprites/s_timeline_clock/s_timeline_clock.yy",},"order":0,},
|
||||
{"id":{"name":"string_cut","path":"scripts/string_cut/string_cut.yy",},"order":4,},
|
||||
{"id":{"name":"node_3d_prim_cylinder","path":"scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.yy",},"order":7,},
|
||||
{"id":{"name":"node_grid","path":"scripts/node_grid/node_grid.yy",},"order":20,},
|
||||
|
@ -496,6 +504,7 @@
|
|||
{"id":{"name":"s_noti_icon_file_save","path":"sprites/s_noti_icon_file_save/s_noti_icon_file_save.yy",},"order":4,},
|
||||
{"id":{"name":"random_function","path":"scripts/random_function/random_function.yy",},"order":3,},
|
||||
{"id":{"name":"s_node_sampler","path":"sprites/s_node_sampler/s_node_sampler.yy",},"order":85,},
|
||||
{"id":{"name":"s_circle_12","path":"sprites/s_circle_12/s_circle_12.yy",},"order":44,},
|
||||
{"id":{"name":"s_workspace_1","path":"sprites/s_workspace_1/s_workspace_1.yy",},"order":1,},
|
||||
{"id":{"name":"string_decimal","path":"scripts/string_decimal/string_decimal.yy",},"order":0,},
|
||||
{"id":{"name":"f_h3","path":"fonts/f_h3/f_h3.yy",},"order":3,},
|
||||
|
@ -505,7 +514,7 @@
|
|||
{"id":{"name":"sh_ani_noise","path":"shaders/sh_ani_noise/sh_ani_noise.yy",},"order":4,},
|
||||
{"id":{"name":"rectangle_collision","path":"scripts/rectangle_collision/rectangle_collision.yy",},"order":0,},
|
||||
{"id":{"name":"sh_level","path":"shaders/sh_level/sh_level.yy",},"order":7,},
|
||||
{"id":{"name":"panel_menu","path":"scripts/panel_menu/panel_menu.yy",},"order":3,},
|
||||
{"id":{"name":"panel_menu","path":"scripts/panel_menu/panel_menu.yy",},"order":2,},
|
||||
{"id":{"name":"s_node_color_from_hsv","path":"sprites/s_node_color_from_hsv/s_node_color_from_hsv.yy",},"order":26,},
|
||||
{"id":{"name":"draw_line_round","path":"scripts/draw_line_round/draw_line_round.yy",},"order":4,},
|
||||
{"id":{"name":"s_node_image","path":"sprites/s_node_image/s_node_image.yy",},"order":54,},
|
||||
|
@ -513,6 +522,7 @@
|
|||
{"id":{"name":"sh_blend_normal_dim","path":"shaders/sh_blend_normal_dim/sh_blend_normal_dim.yy",},"order":10,},
|
||||
{"id":{"name":"s_anchor_rotate","path":"sprites/s_anchor_rotate/s_anchor_rotate.yy",},"order":1,},
|
||||
{"id":{"name":"s_node_warp","path":"sprites/s_node_warp/s_node_warp.yy",},"order":108,},
|
||||
{"id":{"name":"s_timeline_obj_halign","path":"sprites/s_timeline_obj_halign/s_timeline_obj_halign.yy",},"order":4,},
|
||||
{"id":{"name":"s_node_normal_light","path":"sprites/s_node_normal_light/s_node_normal_light.yy",},"order":72,},
|
||||
{"id":{"name":"sh_remove_black","path":"shaders/sh_remove_black/sh_remove_black.yy",},"order":37,},
|
||||
{"id":{"name":"path_parser","path":"scripts/path_parser/path_parser.yy",},"order":3,},
|
||||
|
@ -654,6 +664,7 @@
|
|||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"scritps","folderPath":"folders/main/scritps.yy","order":6,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"nodes","folderPath":"folders/nodes.yy","order":4,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"data","folderPath":"folders/nodes/data.yy","order":10,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"__base__","folderPath":"folders/nodes/data/__base__.yy","order":21,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"3D","folderPath":"folders/nodes/data/3D.yy","order":11,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"animation","folderPath":"folders/nodes/data/animation.yy","order":9,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"color","folderPath":"folders/nodes/data/color.yy","order":16,},
|
||||
|
@ -669,6 +680,7 @@
|
|||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"icons","folderPath":"folders/nodes/icons.yy","order":6,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"panels","folderPath":"folders/panels.yy","order":3,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"data","folderPath":"folders/panels/data.yy","order":9,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"inspectors","folderPath":"folders/panels/data/inspectors.yy","order":7,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"preview","folderPath":"folders/panels/preview.yy","order":7,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"shader","folderPath":"folders/shader.yy","order":9,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"3d","folderPath":"folders/shader/3d.yy","order":29,},
|
||||
|
@ -696,13 +708,12 @@
|
|||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"preview","folderPath":"folders/sprites/preview.yy","order":9,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"path","folderPath":"folders/sprites/preview/path.yy","order":8,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"texture","folderPath":"folders/sprites/texture.yy","order":2,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"timeline","folderPath":"folders/sprites/timeline.yy","order":11,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"tools","folderPath":"folders/sprites/tools.yy","order":10,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"canvas","folderPath":"folders/sprites/tools/canvas.yy","order":3,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"widget","folderPath":"folders/sprites/widget.yy","order":7,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"workspace","folderPath":"folders/sprites/workspace.yy","order":3,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"widgets","folderPath":"folders/widgets.yy","order":6,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"__base__","folderPath":"folders/nodes/data/__base__.yy","order":21,},
|
||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"inspector","folderPath":"folders/panels/inspector.yy","order":10,},
|
||||
],
|
||||
"AudioGroups": [
|
||||
{"resourceType":"GMAudioGroup","resourceVersion":"1.3","name":"audiogroup_default","targets":-1,},
|
||||
|
|
|
@ -31,18 +31,17 @@ if !ready exit;
|
|||
var key = ds_map_find_first(NODE_MAP);
|
||||
repeat(ds_map_size(NODE_MAP)) {
|
||||
var n = NODE_MAP[? key];
|
||||
if(n && n.active) {
|
||||
for(var i = 0; i < ds_list_size(n.inputs); i++) {
|
||||
var in = n.inputs[| i];
|
||||
if(in.value.is_anim) {
|
||||
for(var j = 0; j < ds_list_size(in.value.values); j++) {
|
||||
var t = in.value.values[| j];
|
||||
t.time = round(t.time * fac);
|
||||
}
|
||||
}
|
||||
key = ds_map_find_next(NODE_MAP, key);
|
||||
if(!n || !n.active) continue;
|
||||
|
||||
for(var i = 0; i < ds_list_size(n.inputs); i++) {
|
||||
var in = n.inputs[| i];
|
||||
if(!in.animator.is_anim) continue;
|
||||
for(var j = 0; j < ds_list_size(in.animator.values); j++) {
|
||||
var t = in.animator.values[| j];
|
||||
t.time = round(t.time * fac);
|
||||
}
|
||||
}
|
||||
key = ds_map_find_next(NODE_MAP, key);
|
||||
}
|
||||
ANIMATOR.frames_total = scale_to;
|
||||
instance_destroy();
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
{
|
||||
"resourceType": "GMObject",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "o_dialog_anim_time_scaler",
|
||||
"spriteId": null,
|
||||
"solid": false,
|
||||
"visible": true,
|
||||
|
@ -22,8 +25,8 @@
|
|||
"physicsKinematic": false,
|
||||
"physicsShapePoints": [],
|
||||
"eventList": [
|
||||
{"isDnD":false,"eventNum":64,"eventType":8,"collisionObjectId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",},
|
||||
{"isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",},
|
||||
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":64,"eventType":8,"collisionObjectId":null,},
|
||||
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,},
|
||||
],
|
||||
"properties": [],
|
||||
"overriddenProperties": [],
|
||||
|
@ -31,8 +34,4 @@
|
|||
"name": "dialog",
|
||||
"path": "folders/dialog.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "o_dialog_anim_time_scaler",
|
||||
"tags": [],
|
||||
"resourceType": "GMObject",
|
||||
}
|
|
@ -38,8 +38,16 @@
|
|||
for(var j = 0; j < amo; j++) {
|
||||
var _bx = _sx + j * (hght + 4);
|
||||
var _by = yy + hght + hght / 2 - 4;
|
||||
var _spr = noone, _ind = 0;
|
||||
var _ss = menu[i][1][j][0];
|
||||
|
||||
var _spr = menu[i][1][j][0];
|
||||
if(is_array(_ss)) {
|
||||
_spr = _ss[0];
|
||||
_ind = _ss[1];
|
||||
} else {
|
||||
_spr = _ss;
|
||||
_ind = 0;
|
||||
}
|
||||
|
||||
if(HOVER == self && point_in_rectangle(mouse_mx, mouse_my, _bx - 14, _by - 14, _bx + 14, _by + 14)) {
|
||||
draw_sprite_stretched(s_textbox, 1, _bx - 14, _by - 14, 28, 28);
|
||||
|
@ -50,7 +58,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
draw_sprite(_spr, 0, _bx, _by);
|
||||
draw_sprite(_spr, _ind, _bx, _by);
|
||||
}
|
||||
} else {
|
||||
draw_set_text(f_p0, fa_left, fa_center, c_white);
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMObject",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "o_dialog_menubox",
|
||||
"spriteId": null,
|
||||
"solid": false,
|
||||
"visible": true,
|
||||
"managed": true,
|
||||
"spriteMaskId": null,
|
||||
"persistent": false,
|
||||
"parentObjectId": {
|
||||
|
@ -21,8 +25,8 @@
|
|||
"physicsKinematic": false,
|
||||
"physicsShapePoints": [],
|
||||
"eventList": [
|
||||
{"isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",},
|
||||
{"isDnD":false,"eventNum":64,"eventType":8,"collisionObjectId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMEvent",},
|
||||
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":0,"eventType":0,"collisionObjectId":null,},
|
||||
{"resourceType":"GMEvent","resourceVersion":"1.0","name":"","isDnD":false,"eventNum":64,"eventType":8,"collisionObjectId":null,},
|
||||
],
|
||||
"properties": [],
|
||||
"overriddenProperties": [],
|
||||
|
@ -30,8 +34,4 @@
|
|||
"name": "dialog",
|
||||
"path": "folders/dialog.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "o_dialog_menubox",
|
||||
"tags": [],
|
||||
"resourceType": "GMObject",
|
||||
}
|
|
@ -117,6 +117,35 @@ event_inherited();
|
|||
})
|
||||
]);
|
||||
|
||||
ds_list_add(pref_node, "Levels");
|
||||
ds_list_add(pref_node, [
|
||||
"Histogram resolution",
|
||||
"level_resolution",
|
||||
new textBox(TEXTBOX_INPUT.number, function(str) {
|
||||
PREF_MAP[? "level_resolution"] = real(str);
|
||||
PREF_SAVE();
|
||||
})
|
||||
]);
|
||||
|
||||
ds_list_add(pref_node, [
|
||||
"Maximum sampling",
|
||||
"level_max_sampling",
|
||||
new textBox(TEXTBOX_INPUT.number, function(str) {
|
||||
PREF_MAP[? "level_max_sampling"] = real(str);
|
||||
PREF_SAVE();
|
||||
})
|
||||
]);
|
||||
|
||||
ds_list_add(pref_node, "Physic");
|
||||
ds_list_add(pref_node, [
|
||||
"Verlet iteration",
|
||||
"verlet_iteration",
|
||||
new textBox(TEXTBOX_INPUT.number, function(str) {
|
||||
PREF_MAP[? "verlet_iteration"] = real(str);
|
||||
PREF_SAVE();
|
||||
})
|
||||
]);
|
||||
|
||||
current_list = pref_global;
|
||||
|
||||
sp_pref = new scrollPane(dialog_w - 160 - 32, dialog_h - 64 - 28, function(_y, _m) {
|
||||
|
|
117
scripts/controlPointBox/controlPointBox.gml
Normal file
|
@ -0,0 +1,117 @@
|
|||
enum PUPPET_CONTROL {
|
||||
mode,
|
||||
cx,
|
||||
cy,
|
||||
fx,
|
||||
fy,
|
||||
width,
|
||||
height
|
||||
}
|
||||
|
||||
enum PUPPET_FORCE_MODE {
|
||||
move,
|
||||
pinch,
|
||||
inflate,
|
||||
wind,
|
||||
}
|
||||
|
||||
function controlPointBox(_onModify) constructor {
|
||||
onModify = _onModify;
|
||||
onSurfaceSize = -1;
|
||||
|
||||
active = false;
|
||||
hover = false;
|
||||
|
||||
tbCx = new textBox(TEXTBOX_INPUT.number, function(val) { onModify(PUPPET_CONTROL.cx, toNumber(val)); });
|
||||
tbCy = new textBox(TEXTBOX_INPUT.number, function(val) { onModify(PUPPET_CONTROL.cy, toNumber(val)); });
|
||||
tbFx = new textBox(TEXTBOX_INPUT.number, function(val) { onModify(PUPPET_CONTROL.fx, toNumber(val)); });
|
||||
tbFy = new textBox(TEXTBOX_INPUT.number, function(val) { onModify(PUPPET_CONTROL.fy, toNumber(val)); });
|
||||
tbW = new textBox(TEXTBOX_INPUT.number, function(val) { onModify(PUPPET_CONTROL.width, max(0, toNumber(val))); });
|
||||
tbH = new textBox(TEXTBOX_INPUT.number, function(val) { onModify(PUPPET_CONTROL.height, max(0, toNumber(val))); });
|
||||
rot = new rotator(function(val) { onModify(PUPPET_CONTROL.fy, toNumber(val)); });
|
||||
tbFx.slidable = true;
|
||||
tbFy.slidable = true;
|
||||
tbW.slidable = true;
|
||||
tbH.slidable = true;
|
||||
|
||||
sW = new slider(0, 32, 0.1, function(val) { onModify(PUPPET_CONTROL.width, toNumber(val)); });
|
||||
|
||||
sMode = ["Move", "Pinch", "Inflate", "Wind"];
|
||||
scMode = new scrollBox(
|
||||
sMode,
|
||||
function(val) { onModify(PUPPET_CONTROL.mode, toNumber(val)); }
|
||||
);
|
||||
|
||||
static draw = function(_x, _y, _w, _data, _m, _rx, _ry) {
|
||||
tbCx.hover = hover; tbCx.active = active;
|
||||
tbCy.hover = hover; tbCy.active = active;
|
||||
tbFx.hover = hover; tbFx.active = active;
|
||||
tbFy.hover = hover; tbFy.active = active;
|
||||
tbW.hover = hover; tbW.active = active;
|
||||
sW.hover = hover; sW.active = active;
|
||||
tbH.hover = hover; tbH.active = active;
|
||||
scMode.hover = hover; scMode.active = active;
|
||||
rot.hover = hover; rot.active = active;
|
||||
|
||||
var yy = _y;
|
||||
|
||||
scMode.draw(_x, yy, _w, 34, sMode[_data[PUPPET_CONTROL.mode]], _m, _rx, _ry);
|
||||
yy += 34 + 8;
|
||||
|
||||
var lw = 80;
|
||||
var w = _w / 2 - lw;
|
||||
|
||||
draw_set_text(f_p0, fa_left, fa_center, c_white);
|
||||
draw_text(_x, yy + 17, "cx");
|
||||
draw_text(_x + _w / 2 + 10, yy + 17, "cy");
|
||||
tbCx.draw(_x + lw, yy, w, 34, _data[PUPPET_CONTROL.cx], _m);
|
||||
tbCy.draw(_x + _w / 2 + lw, yy, w, 34, _data[PUPPET_CONTROL.cy], _m);
|
||||
yy += 34 + 8;
|
||||
|
||||
switch(_data[PUPPET_CONTROL.mode]) {
|
||||
case PUPPET_FORCE_MODE.move:
|
||||
draw_set_text(f_p0, fa_left, fa_center, c_white);
|
||||
draw_text(_x, yy + 17, "fx");
|
||||
draw_text(_x + _w / 2 + 10, yy + 17, "fy");
|
||||
tbFx.draw(_x + lw, yy, w, 34, _data[PUPPET_CONTROL.fx], _m);
|
||||
tbFy.draw(_x + _w / 2 + lw, yy, w, 34, _data[PUPPET_CONTROL.fy], _m);
|
||||
yy += 34 + 8;
|
||||
|
||||
draw_set_text(f_p0, fa_left, fa_center, c_white);
|
||||
draw_text(_x, yy + 17, "radius");
|
||||
sW.draw(_x + lw, yy, _w - lw, 34, _data[PUPPET_CONTROL.width], _m);
|
||||
yy += 34 + 8;
|
||||
break;
|
||||
case PUPPET_FORCE_MODE.pinch:
|
||||
case PUPPET_FORCE_MODE.inflate:
|
||||
draw_set_text(f_p0, fa_left, fa_center, c_white);
|
||||
draw_text(_x, yy + 17, "radius");
|
||||
sW.draw(_x + lw, yy, _w - lw, 34, _data[PUPPET_CONTROL.width], _m);
|
||||
yy += 34 + 8;
|
||||
|
||||
draw_text(_x, yy + 17, "strength");
|
||||
tbH.draw(_x + lw, yy, _w - lw, 34, _data[PUPPET_CONTROL.height], _m);
|
||||
yy += 34 + 8;
|
||||
break;
|
||||
case PUPPET_FORCE_MODE.wind:
|
||||
draw_set_text(f_p0, fa_left, fa_center, c_white);
|
||||
draw_text(_x, yy + 17, "stength");
|
||||
tbFx.draw(_x + lw, yy, _w - lw, 34, _data[PUPPET_CONTROL.fx], _m);
|
||||
yy += 34 + 8;
|
||||
|
||||
draw_set_text(f_p0, fa_left, fa_center, c_white);
|
||||
draw_text(_x, yy + 17, "width");
|
||||
tbW.draw(_x + lw, yy, _w - lw, 34, _data[PUPPET_CONTROL.width], _m);
|
||||
yy += 34 + 8;
|
||||
|
||||
rot.draw(_x + _w / 2, yy, _data[PUPPET_CONTROL.fy], _m);
|
||||
yy += 94 + 8;
|
||||
break;
|
||||
}
|
||||
|
||||
active = false;
|
||||
hover = false;
|
||||
|
||||
return yy - _y;
|
||||
}
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "inspector_custom_render",
|
||||
"name": "controlPointBox",
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "inspector",
|
||||
"path": "folders/panels/inspector.yy",
|
||||
"name": "widgets",
|
||||
"path": "folders/widgets.yy",
|
||||
},
|
||||
}
|
|
@ -40,3 +40,13 @@ function bezier_interpol_x(a, b, t, iteration = 16) {
|
|||
|
||||
return 3 * (1 - _x) * _x * _x + _x * _x * _x;
|
||||
}
|
||||
|
||||
function ease_cubic_in(rat) {
|
||||
return rat * rat * rat;
|
||||
}
|
||||
function ease_cubic_out(rat) {
|
||||
return 1 - power(1 - rat, 3);
|
||||
}
|
||||
function ease_cubic_inout(rat) {
|
||||
return rat < 0.5 ? 4 * power(rat, 3) : 1 - power(-2 * rat + 2, 3) / 2;
|
||||
}
|
|
@ -1,12 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "curve_bezier_function",
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "curve",
|
||||
"path": "folders/functions/curve.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "curve_bezier_function",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
|
@ -50,3 +50,24 @@ function eval_curve_bounce(curve, t) {
|
|||
function bounce_range(c0, c1, c2, c3) {
|
||||
return [ min(c0, c1, c2, c3), max(c0, c1, c2, c3) ];
|
||||
}
|
||||
|
||||
function ease_bounce_in(rat) {
|
||||
return 1 - ease_bounce_out(1 - rat);
|
||||
}
|
||||
function ease_bounce_out(rat) {
|
||||
var n1 = 7.5625;
|
||||
var d1 = 2.75;
|
||||
|
||||
if (rat < 1 / d1)
|
||||
return n1 * rat * rat;
|
||||
else if (rat < 2 / d1) {
|
||||
rat -= 1.5 / d1;
|
||||
return n1 * rat * rat + 0.75;
|
||||
} else if (rat < 2.5 / d1) {
|
||||
rat -= 2.25 / d1;
|
||||
return n1 * rat * rat + 0.9375;
|
||||
} else {
|
||||
rat -= 2.625 / d1;
|
||||
return n1 * rat * rat + 0.984375;
|
||||
}
|
||||
}
|
|
@ -1,12 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "curve_bounce_function",
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "curve",
|
||||
"path": "folders/functions/curve.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "curve_bounce_function",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
|
@ -39,3 +39,16 @@ function damp_range(c0, c1, c2, c3) {
|
|||
|
||||
return [ minn, maxx ];
|
||||
}
|
||||
|
||||
function ease_damp_in(rat, amount) {
|
||||
var c1 = amount;
|
||||
var c3 = c1 + 1;
|
||||
|
||||
return c3 * rat * rat * rat - c1 * rat * rat;
|
||||
}
|
||||
function ease_damp_out(rat, amount) {
|
||||
var c1 = amount;
|
||||
var c3 = c1 + 1;
|
||||
|
||||
return 1 + c3 * power(rat - 1, 3) + c1 * power(rat - 1, 2);
|
||||
}
|
|
@ -1,12 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "curve_damping_function",
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "curve",
|
||||
"path": "folders/functions/curve.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "curve_damping_function",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
|
@ -42,3 +42,7 @@ function ds_list_append(list, _append) {
|
|||
ds_list_add(list, _append[| i]);
|
||||
}
|
||||
}
|
||||
|
||||
function ds_list_exist(list, item) {
|
||||
return ds_list_find_index(list, item) != -1;
|
||||
}
|
|
@ -1,12 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "ds_extra",
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "ds",
|
||||
"path": "folders/functions/ds.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "ds_extra",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
|
@ -1,3 +1,14 @@
|
|||
function ds_map_clone(map) {
|
||||
var m = ds_map_create();
|
||||
var k = ds_map_find_first(map);
|
||||
|
||||
repeat(ds_map_size(map)) {
|
||||
m[? k] = map[? k];
|
||||
k = ds_map_find_next(map, k);
|
||||
}
|
||||
return m;
|
||||
}
|
||||
|
||||
function ds_map_try_get(map, key, def = 0) {
|
||||
if(ds_map_exists(map, key)) return map[? key];
|
||||
return def;
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "ds_map",
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "ds",
|
||||
"path": "folders/functions/ds.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "ds_map",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
function Script221(){
|
||||
|
||||
}
|
77
scripts/level_histogram/level_histogram.gml
Normal file
|
@ -0,0 +1,77 @@
|
|||
function histogramInit() {
|
||||
his_colors = [ c_ui_red, c_ui_lime, c_ui_cyan, c_white ];
|
||||
for( var i = 0; i < 4; i++ ) {
|
||||
hist[i] = array_create(PREF_MAP[? "level_resolution"] + 1);
|
||||
histShow[i] = true;
|
||||
}
|
||||
histMax = 0;
|
||||
}
|
||||
|
||||
function histogramDraw(_x, _y, _w, _h) {
|
||||
var _levels = array_length(hist[0]) - 1;
|
||||
var lw = _w / _levels;
|
||||
var ox, oy = array_create(4);
|
||||
|
||||
draw_set_alpha(0.5);
|
||||
BLEND_ADD
|
||||
|
||||
for( var i = 0; i < _levels; i++ ) {
|
||||
var _lx = _x + i * lw, _lh = [];
|
||||
|
||||
for( var j = 0; j < 4; j++ ) {
|
||||
_lh[@ j] = _y - hist[j][i] / histMax * _h;
|
||||
}
|
||||
|
||||
if(i) {
|
||||
for( var j = 0; j < 4; j++ ) {
|
||||
if(!histShow[j]) continue;
|
||||
|
||||
draw_set_color(his_colors[j]);
|
||||
draw_line(ox, oy[j], _lx, _lh[j]);
|
||||
}
|
||||
}
|
||||
|
||||
for( var j = 0; j < 4; j++ ) {
|
||||
oy[@ j] = _lh[j];
|
||||
}
|
||||
|
||||
ox = _lx;
|
||||
}
|
||||
|
||||
draw_set_alpha(1);
|
||||
BLEND_NORMAL
|
||||
}
|
||||
|
||||
function histogramUpdate(surface) {
|
||||
if(array_length(hist[0]) != PREF_MAP[? "level_resolution"] + 1)
|
||||
histogramInit();
|
||||
|
||||
if(!is_surface(surface)) return;
|
||||
|
||||
histMax = 0;
|
||||
var sw = surface_get_width(surface);
|
||||
var sh = surface_get_height(surface);
|
||||
var stw = max(1, sw / PREF_MAP[? "level_max_sampling"]);
|
||||
var sth = max(1, sh / PREF_MAP[? "level_max_sampling"]);
|
||||
|
||||
for( var j = 0; j < 4; j++ )
|
||||
for( var i = 0; i < array_length(hist[0]); i++ ) {
|
||||
hist[j][i] = 0;
|
||||
}
|
||||
|
||||
for( var i = 1; i <= sw; i += stw )
|
||||
for( var j = 1; j <= sh; j += sth ) {
|
||||
var col = surface_getpixel(surface, i, j);
|
||||
var colA = [];
|
||||
colA[0] = round(color_get_red(col) / 256 * PREF_MAP[? "level_resolution"]);
|
||||
colA[1] = round(color_get_green(col) / 256 * PREF_MAP[? "level_resolution"]);
|
||||
colA[2] = round(color_get_blue(col) / 256 * PREF_MAP[? "level_resolution"]);
|
||||
colA[3] = round((colA[0] + colA[1] + colA[2]) / 3);
|
||||
|
||||
for( var k = 0; k < 4; k++ ) {
|
||||
if(!colA[k]) continue
|
||||
hist[k][colA[k]]++;
|
||||
histMax = max(histMax, hist[k][colA[k]]);
|
||||
}
|
||||
}
|
||||
}
|
11
scripts/level_histogram/level_histogram.yy
Normal file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "level_histogram",
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "inspectors",
|
||||
"path": "folders/panels/data/inspectors.yy",
|
||||
},
|
||||
}
|
|
@ -25,14 +25,132 @@ function Node_Composite(_x, _y) : Node_Processor(_x, _y) constructor {
|
|||
inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, COMPOSE_OUTPUT_SCALING.first)
|
||||
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "First surface", "Largest surface", "Constant" ]);
|
||||
|
||||
inputs[| 2] = nodeValue(2, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d)
|
||||
.setDisplay(VALUE_DISPLAY.vector);
|
||||
inputs[| 2] = nodeValue(2, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d)
|
||||
.setDisplay(VALUE_DISPLAY.vector)
|
||||
.setVisible(false);
|
||||
|
||||
input_fix_len = ds_list_size(inputs);
|
||||
data_length = 4;
|
||||
|
||||
attributes[? "layer_visible"] = ds_list_create();
|
||||
|
||||
hold_visibility = true;
|
||||
layer_dragging = noone;
|
||||
layer_renderer = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus) {
|
||||
var amo = (ds_list_size(inputs) - input_fix_len) / data_length - 1;
|
||||
var lh = 32;
|
||||
var _h = 8 + max(1, amo) * (lh + 4) + 8;
|
||||
layer_renderer.h = _h;
|
||||
draw_sprite_stretched_ext(s_ui_panel_bg_dark, 0, _x, _y, _w, _h, c_ui_blue_white, 1);
|
||||
|
||||
var _vis = attributes[? "layer_visible"];
|
||||
var ly = _y + 8;
|
||||
var ssh = lh - 6;
|
||||
var hoverIndex = noone;
|
||||
draw_set_color(c_ui_blue_black);
|
||||
draw_line(_x + 16, ly, _x + _w - 16, ly);
|
||||
|
||||
for(var i = 0; i < amo; i++) {
|
||||
var ind = amo - i - 1;
|
||||
var index = input_fix_len + ind * data_length;
|
||||
var _surf = current_data[index + 0];
|
||||
var _pos = current_data[index + 1];
|
||||
if(!_surf || is_surface(_surf)) continue;
|
||||
|
||||
var aa = (ind != layer_dragging || layer_dragging == noone)? 1 : 0.5;
|
||||
var vis = _vis[| ind];
|
||||
var _cy = ly + i * (lh + 4);
|
||||
var hover = point_in_rectangle(_m[0], _m[1], _x, _cy, _x + _w, _cy + lh);
|
||||
|
||||
draw_set_color(c_ui_blue_black);
|
||||
draw_line(_x + 16, _cy + lh + 2, _x + _w - 16, _cy + lh + 2);
|
||||
|
||||
if(point_in_circle(_m[0], _m[1], _x + 24, _cy + lh / 2, 12)) {
|
||||
draw_sprite_ext(s_junc_visible, vis, _x + 24, _cy + lh / 2, 1, 1, 0, c_white, 1);
|
||||
|
||||
if(_focus) {
|
||||
if(mouse_check_button_pressed(mb_left))
|
||||
hold_visibility = !_vis[| ind];
|
||||
|
||||
if(mouse_check_button(mb_left) && _vis[| ind] != hold_visibility) {
|
||||
_vis[| ind] = hold_visibility;
|
||||
update();
|
||||
}
|
||||
}
|
||||
} else
|
||||
draw_sprite_ext(s_junc_visible, vis, _x + 24, _cy + lh / 2, 1, 1, 0, c_ui_blue_grey, 1);
|
||||
|
||||
draw_set_color(c_ui_blue_dkgrey);
|
||||
var _sx0 = 56;
|
||||
var _sx1 = _sx0 + ssh;
|
||||
var _sy0 = _cy + 3;
|
||||
var _sy1 = _sy0 + ssh;
|
||||
draw_rectangle(_sx0, _sy0, _sx1, _sy1, true);
|
||||
|
||||
var _ssw = surface_get_width(_surf);
|
||||
var _ssh = surface_get_height(_surf);
|
||||
var _sss = min(ssh / _ssw, ssh / _ssh);
|
||||
draw_surface_ext(_surf, _sx0, _sy0, _sss, _sss, 0, c_white, 1);
|
||||
|
||||
draw_set_text(f_p1, fa_left, fa_center, hover? c_white : c_ui_blue_ltgrey);
|
||||
draw_set_alpha(aa);
|
||||
draw_text(_sx1 + 12, _cy + lh / 2, inputs[| index].name);
|
||||
draw_set_alpha(1);
|
||||
|
||||
if(_hover && point_in_rectangle(_m[0], _m[1], _x, _cy, _x + _w, _cy + lh)) {
|
||||
hoverIndex = ind;
|
||||
if(layer_dragging != noone) {
|
||||
draw_set_color(c_ui_orange);
|
||||
if(layer_dragging > ind)
|
||||
draw_line_width(_x + 16, _cy + lh + 2, _x + _w - 16, _cy + lh + 2, 2);
|
||||
else if(layer_dragging < ind)
|
||||
draw_line_width(_x + 16, _cy - 2, _x + _w - 16, _cy - 2, 2);
|
||||
}
|
||||
}
|
||||
|
||||
if(layer_dragging == noone || layer_dragging == ind) {
|
||||
var _bx = _x + _w - 24;
|
||||
if(point_in_circle(_m[0], _m[1], _bx, _cy + lh / 2, 16)) {
|
||||
draw_sprite_ext(s_hamburger_16, 3, _bx, _cy + lh / 2, 1, 1, 0, c_white, 1);
|
||||
|
||||
if(_focus && mouse_check_button_pressed(mb_left))
|
||||
layer_dragging = ind;
|
||||
} else
|
||||
draw_sprite_ext(s_hamburger_16, 3, _bx, _cy + lh / 2, 1, 1, 0, c_ui_blue_grey, 1);
|
||||
}
|
||||
}
|
||||
|
||||
if(layer_dragging != noone && mouse_check_button_released(mb_left)) {
|
||||
if(layer_dragging != hoverIndex && hoverIndex != noone) {
|
||||
var index = input_fix_len + layer_dragging * data_length;
|
||||
var targt = input_fix_len + hoverIndex * data_length;
|
||||
var _vis = attributes[? "layer_visible"];
|
||||
|
||||
var ext = [];
|
||||
var vis = _vis[| layer_dragging];
|
||||
ds_list_delete(_vis, layer_dragging);
|
||||
ds_list_insert(_vis, hoverIndex, vis);
|
||||
|
||||
for( var i = 0; i < data_length; i++ ) {
|
||||
ext[i] = inputs[| index];
|
||||
ds_list_delete(inputs, index);
|
||||
//show_debug_message("remove: " + ext[i].name);
|
||||
}
|
||||
for( var i = 0; i < data_length; i++ ) {
|
||||
ds_list_insert(inputs, targt + i, ext[i]);
|
||||
//show_debug_message("place: " + ext[i].name + " at " + string(targt + i));
|
||||
}
|
||||
|
||||
update();
|
||||
}
|
||||
layer_dragging = noone;
|
||||
}
|
||||
});
|
||||
|
||||
input_display_list = [
|
||||
["Output", true], 0, 1, 2
|
||||
["Output", true], 0, 1, 2,
|
||||
["Layers", false], layer_renderer,
|
||||
["Surface", true],
|
||||
];
|
||||
|
||||
function createNewSurface() {
|
||||
|
@ -50,7 +168,14 @@ function Node_Composite(_x, _y) : Node_Processor(_x, _y) constructor {
|
|||
inputs[| index + 3] = nodeValue( index + 3, "Scale " + string(_s), self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] )
|
||||
.setDisplay(VALUE_DISPLAY.vector);
|
||||
|
||||
array_push(input_display_list, ["Surface " + string(_s), true], index + 0, index + 1, index + 2, index + 3);
|
||||
array_push(input_display_list, index + 0);
|
||||
array_push(input_display_list, index + 1);
|
||||
array_push(input_display_list, index + 2);
|
||||
array_push(input_display_list, index + 3);
|
||||
|
||||
while(_s >= ds_list_size(attributes[? "layer_visible"])) {
|
||||
ds_list_add(attributes[? "layer_visible"], true);
|
||||
}
|
||||
}
|
||||
createNewSurface();
|
||||
|
||||
|
@ -144,12 +269,16 @@ function Node_Composite(_x, _y) : Node_Processor(_x, _y) constructor {
|
|||
|
||||
var hovering = -1;
|
||||
var hovering_type = 0;
|
||||
var _vis = attributes[? "layer_visible"];
|
||||
|
||||
var amo = (ds_list_size(inputs) - input_fix_len) / data_length;
|
||||
if(array_length(current_data) < input_fix_len + amo * data_length)
|
||||
return;
|
||||
|
||||
for(var i = 0; i < amo; i++) {
|
||||
var vis = _vis[| i];
|
||||
if(!vis) continue;
|
||||
|
||||
var index = input_fix_len + i * data_length;
|
||||
var _surf = current_data[index + 0];
|
||||
var _pos = current_data[index + 1];
|
||||
|
@ -291,9 +420,13 @@ function Node_Composite(_x, _y) : Node_Processor(_x, _y) constructor {
|
|||
|
||||
var res_index = 0, bg = 0;
|
||||
var imageAmo = (ds_list_size(inputs) - input_fix_len) / data_length;
|
||||
var _vis = attributes[? "layer_visible"];
|
||||
|
||||
BLEND_OVERRIDE
|
||||
for(var i = 0; i < imageAmo; i++) {
|
||||
var vis = _vis[| i];
|
||||
if(!vis) continue;
|
||||
|
||||
var startDataIndex = input_fix_len + i * data_length;
|
||||
var _s = _data[startDataIndex + 0];
|
||||
var _pos = _data[startDataIndex + 1];
|
||||
|
@ -338,4 +471,15 @@ function Node_Composite(_x, _y) : Node_Processor(_x, _y) constructor {
|
|||
inputs[| i + 3].deserialize(_inputs[| i + 3]);
|
||||
}
|
||||
}
|
||||
|
||||
static attributeSerialize = function() {
|
||||
var att = ds_map_create();
|
||||
ds_map_add_list(att, "layer_visible", attributes[? "layer_visible"]);
|
||||
return att;
|
||||
}
|
||||
|
||||
static attributeDeserialize = function(attr) {
|
||||
attributes[? "layer_visible"] = ds_list_clone(attr[? "layer_visible"]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ function Node(_x, _y) constructor {
|
|||
junction_shift_y = 32;
|
||||
|
||||
input_display_list = -1;
|
||||
inspector_display_list = -1;
|
||||
is_dynamic_output = false;
|
||||
inputs = ds_list_create();
|
||||
outputs = ds_list_create();
|
||||
|
@ -170,6 +171,8 @@ function Node(_x, _y) constructor {
|
|||
doUpdateForward();
|
||||
}
|
||||
|
||||
static onInspect = function() {}
|
||||
|
||||
static doUpdateForward = function() {}
|
||||
|
||||
static setRenderStatus = function(result) {
|
||||
|
@ -189,14 +192,16 @@ function Node(_x, _y) constructor {
|
|||
|
||||
var _in = yy + junction_shift_y * _s;
|
||||
var jun;
|
||||
var amo = input_display_list == -1? ds_list_size(inputs) : max(ds_list_size(inputs), array_length(input_display_list));
|
||||
var amo = input_display_list == -1? ds_list_size(inputs) : array_length(input_display_list);
|
||||
|
||||
for(var i = 0; i < amo; i++) {
|
||||
if(input_display_list == -1)
|
||||
jun = inputs[| i];
|
||||
else {
|
||||
var jun_list_arr = input_display_list[i];
|
||||
if(is_array(jun_list_arr)) continue;
|
||||
var jun_disp = input_display_list[i];
|
||||
if(is_array(jun_disp)) continue;
|
||||
if(is_struct(jun_disp)) continue;
|
||||
|
||||
jun = inputs[| input_display_list[i]];
|
||||
}
|
||||
|
||||
|
@ -239,7 +244,7 @@ function Node(_x, _y) constructor {
|
|||
|
||||
static drawJunctions = function(_x, _y, _mx, _my, _s) {
|
||||
var hover = noone;
|
||||
var amo = input_display_list == -1? ds_list_size(inputs) : max(ds_list_size(inputs), array_length(input_display_list));
|
||||
var amo = input_display_list == -1? ds_list_size(inputs) : array_length(input_display_list);
|
||||
var jun;
|
||||
var _show_in = show_input_name;
|
||||
var _show_ot = show_output_name;
|
||||
|
@ -567,9 +572,7 @@ function Node(_x, _y) constructor {
|
|||
_map[? "type"] = instanceof(self);
|
||||
_map[? "group"] = group == -1? -1 : group.node_id;
|
||||
|
||||
var att = ds_map_create();
|
||||
ds_map_override(att, attributes);
|
||||
ds_map_add_map(_map, "attri", att);
|
||||
ds_map_add_map(_map, "attri", attributeSerialize());
|
||||
|
||||
var _inputs = ds_list_create();
|
||||
for(var i = 0; i < ds_list_size(inputs); i++) {
|
||||
|
@ -582,6 +585,11 @@ function Node(_x, _y) constructor {
|
|||
return _map;
|
||||
}
|
||||
|
||||
static attributeSerialize = function() {
|
||||
var att = ds_map_create();
|
||||
ds_map_override(att, attributes);
|
||||
return att;
|
||||
}
|
||||
static doSerialize = function(_map) {}
|
||||
|
||||
keyframe_scale = false;
|
||||
|
@ -604,7 +612,7 @@ function Node(_x, _y) constructor {
|
|||
y = load_map[? "y"];
|
||||
|
||||
if(ds_map_exists(load_map, "attri"))
|
||||
ds_map_override(attributes, load_map[? "attri"]);
|
||||
attributeDeserialize(load_map[? "attri"]);
|
||||
|
||||
var _inputs = load_map[? "inputs"];
|
||||
|
||||
|
@ -616,6 +624,9 @@ function Node(_x, _y) constructor {
|
|||
}
|
||||
}
|
||||
|
||||
static attributeDeserialize = function(attr) {
|
||||
ds_map_override(attributes, attr);
|
||||
}
|
||||
static postDeserialize = function() {}
|
||||
|
||||
static loadGroup = function() {
|
||||
|
|
|
@ -78,7 +78,7 @@ function Node_Group_Input(_x, _y, _group) : Node(_x, _y) constructor {
|
|||
inParent.setDisplay(_dtype, [_range[0], _range[1], 0.01]);
|
||||
case VALUE_DISPLAY.rotation_range :
|
||||
if(!is_array(_val) || array_length(_val) != 2)
|
||||
inParent.value = new animValue([0, 0], inParent);
|
||||
inParent.animator = new valueAnimator([0, 0], inParent);
|
||||
inParent.setDisplay(_dtype);
|
||||
break;
|
||||
|
||||
|
@ -89,13 +89,13 @@ function Node_Group_Input(_x, _y, _group) : Node(_x, _y) constructor {
|
|||
|
||||
case VALUE_DISPLAY.padding :
|
||||
if(!is_array(_val) || array_length(_val) != 4)
|
||||
inParent.value = new animValue([0, 0, 0, 0], inParent);
|
||||
inParent.animator = new valueAnimator([0, 0, 0, 0], inParent);
|
||||
inParent.setDisplay(_dtype);
|
||||
break;
|
||||
|
||||
case VALUE_DISPLAY.area :
|
||||
if(!is_array(_val) || array_length(_val) != 5)
|
||||
inParent.value = new animValue([0, 0, 0, 0, 5], inParent);
|
||||
inParent.animator = new valueAnimator([0, 0, 0, 0, 5], inParent);
|
||||
inParent.setDisplay(_dtype);
|
||||
break;
|
||||
|
||||
|
@ -104,15 +104,15 @@ function Node_Group_Input(_x, _y, _group) : Node(_x, _y) constructor {
|
|||
switch(_vec_size) {
|
||||
case 0 :
|
||||
if(!is_array(_val) || array_length(_val) != 2)
|
||||
inParent.value = new animValue([0, 0], inParent);
|
||||
inParent.animator = new valueAnimator([0, 0], inParent);
|
||||
break;
|
||||
case 1 :
|
||||
if(!is_array(_val) || array_length(_val) != 3)
|
||||
inParent.value = new animValue([0, 0, 0], inParent);
|
||||
inParent.animator = new valueAnimator([0, 0, 0], inParent);
|
||||
break;
|
||||
case 2 :
|
||||
if(!is_array(_val) || array_length(_val) != 4)
|
||||
inParent.value = new animValue([0, 0, 0, 0], inParent);
|
||||
inParent.animator = new valueAnimator([0, 0, 0, 0], inParent);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -121,7 +121,7 @@ function Node_Group_Input(_x, _y, _group) : Node(_x, _y) constructor {
|
|||
|
||||
case VALUE_DISPLAY.palette :
|
||||
if(!is_array(_val))
|
||||
inParent.value = new animValue([c_black], inParent);
|
||||
inParent.animator = new valueAnimator([c_black], inParent);
|
||||
inParent.setDisplay(_dtype);
|
||||
break;
|
||||
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_group_input",
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "group",
|
||||
"path": "folders/nodes/data/group.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_group_input",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
|
@ -147,8 +147,8 @@ function Node_Image_Sheet(_x, _y) : Node(_x, _y) constructor {
|
|||
draw_set_color(c_ui_orange);
|
||||
draw_rectangle(_fx0, _fy0, _fx1, _fy1, true);
|
||||
|
||||
draw_set_text(f_p1, fa_left, fa_top);
|
||||
draw_text(_fx0 + 2, _fy0 + 2, string(i));
|
||||
//draw_set_text(f_p1, fa_left, fa_top);
|
||||
//draw_text(_fx0 + 2, _fy0 + 2, string(i));
|
||||
}
|
||||
|
||||
var _tool = PANEL_PREVIEW.tool_index;
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_image_sheet",
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "input",
|
||||
"path": "folders/nodes/data/input.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_image_sheet",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
|
@ -102,7 +102,7 @@ function Node_Iterator_Input(_x, _y, _group) : Node(_x, _y) constructor {
|
|||
inParent.setDisplay(_dtype, [_range[0], _range[1], 0.01]);
|
||||
case VALUE_DISPLAY.rotation_range :
|
||||
if(!is_array(_val) || array_length(_val) != 2)
|
||||
inParent.value = new animValue([0, 0], inParent);
|
||||
inParent.animator = new valueAnimator([0, 0], inParent);
|
||||
inParent.setDisplay(_dtype);
|
||||
break;
|
||||
|
||||
|
@ -113,13 +113,13 @@ function Node_Iterator_Input(_x, _y, _group) : Node(_x, _y) constructor {
|
|||
|
||||
case VALUE_DISPLAY.padding :
|
||||
if(!is_array(_val) || array_length(_val) != 4)
|
||||
inParent.value = new animValue([0, 0, 0, 0], inParent);
|
||||
inParent.animator = new valueAnimator([0, 0, 0, 0], inParent);
|
||||
inParent.setDisplay(_dtype);
|
||||
break;
|
||||
|
||||
case VALUE_DISPLAY.area :
|
||||
if(!is_array(_val) || array_length(_val) != 5)
|
||||
inParent.value = new animValue([0, 0, 0, 0, 5], inParent);
|
||||
inParent.animator = new valueAnimator([0, 0, 0, 0, 5], inParent);
|
||||
inParent.setDisplay(_dtype);
|
||||
break;
|
||||
|
||||
|
@ -128,15 +128,15 @@ function Node_Iterator_Input(_x, _y, _group) : Node(_x, _y) constructor {
|
|||
switch(_vec_size) {
|
||||
case 0 :
|
||||
if(!is_array(_val) || array_length(_val) != 2)
|
||||
inParent.value = new animValue([0, 0], inParent);
|
||||
inParent.animator = new valueAnimator([0, 0], inParent);
|
||||
break;
|
||||
case 1 :
|
||||
if(!is_array(_val) || array_length(_val) != 3)
|
||||
inParent.value = new animValue([0, 0, 0], inParent);
|
||||
inParent.animator = new valueAnimator([0, 0, 0], inParent);
|
||||
break;
|
||||
case 2 :
|
||||
if(!is_array(_val) || array_length(_val) != 4)
|
||||
inParent.value = new animValue([0, 0, 0, 0], inParent);
|
||||
inParent.animator = new valueAnimator([0, 0, 0, 0], inParent);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -145,7 +145,7 @@ function Node_Iterator_Input(_x, _y, _group) : Node(_x, _y) constructor {
|
|||
|
||||
case VALUE_DISPLAY.palette :
|
||||
if(!is_array(_val))
|
||||
inParent.value = new animValue([c_black], inParent);
|
||||
inParent.animator = new valueAnimator([c_black], inParent);
|
||||
inParent.setDisplay(_dtype);
|
||||
break;
|
||||
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_iteration_input",
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "iterate",
|
||||
"path": "folders/nodes/data/iterate.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_iteration_input",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
|
@ -7,39 +7,70 @@ enum CURVE_TYPE {
|
|||
globalvar ON_END_NAME;
|
||||
ON_END_NAME = [ "Hold", "Loop", "Ping pong" ];
|
||||
|
||||
function valueKey(_time, _value, _in = 0, _out = 0) constructor {
|
||||
time = _time;
|
||||
value = _value;
|
||||
function valueKey(_time, _value, _anim = noone, _in = 0, _out = 0) constructor {
|
||||
time = _time;
|
||||
value = _value;
|
||||
anim = _anim;
|
||||
|
||||
ease_in = _in;
|
||||
ease_in = _in;
|
||||
ease_out = _out;
|
||||
|
||||
ease_in_type = CURVE_TYPE.bezier;
|
||||
ease_out_type = CURVE_TYPE.bezier;
|
||||
}
|
||||
|
||||
function animValue(_val, _node) constructor {
|
||||
function valueAnimator(_val, _prop) constructor {
|
||||
values = ds_list_create();
|
||||
show_graph = false;
|
||||
ds_list_add(values, new valueKey(0, _val));
|
||||
ds_list_add(values, new valueKey(0, _val, self));
|
||||
|
||||
is_anim = false;
|
||||
node = _node;
|
||||
prop = _prop;
|
||||
|
||||
static interpolate = function(from, to, rat) {
|
||||
var _lerp;
|
||||
if(from.ease_out == 0 && to.ease_in == 0)
|
||||
_lerp = rat;
|
||||
else {
|
||||
var a = from.ease_out;
|
||||
var b = 1 - to.ease_in;
|
||||
return rat;
|
||||
|
||||
_lerp = bezier_interpol_x(a, b, rat);
|
||||
var eo = rat;
|
||||
var ei = rat;
|
||||
|
||||
if(from.ease_out == 0)
|
||||
eo = rat;
|
||||
else {
|
||||
switch(from.ease_out_type) {
|
||||
case CURVE_TYPE.bezier :
|
||||
eo = ease_cubic_in(rat);
|
||||
eo = lerp(rat, eo, from.ease_out);
|
||||
break;
|
||||
case CURVE_TYPE.damping :
|
||||
eo = ease_damp_in(rat, 1 + from.ease_out * 10);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return _lerp;
|
||||
if(to.ease_in == 0)
|
||||
ei = rat;
|
||||
else {
|
||||
switch(to.ease_in_type) {
|
||||
case CURVE_TYPE.bezier :
|
||||
ei = ease_cubic_out(rat);
|
||||
ei = lerp(rat, ei, to.ease_in);
|
||||
break;
|
||||
case CURVE_TYPE.damping :
|
||||
ei = ease_damp_out(rat, 1 + to.ease_in * 10);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(from.ease_out_type == CURVE_TYPE.damping && to.ease_in_type == CURVE_TYPE.damping)
|
||||
return lerp(eo, ei, rat < 0.5 ? 4 * power(rat, 3) : 1 - power(-2 * rat + 2, 3) / 2);
|
||||
else
|
||||
return lerp(eo, ei, rat);
|
||||
}
|
||||
|
||||
static getValue = function() {
|
||||
if(node.display_type == VALUE_DISPLAY.gradient) return processType(values);
|
||||
if(node.type == VALUE_TYPE.path) return processType(values[| 0].value);
|
||||
if(prop.display_type == VALUE_DISPLAY.gradient) return processType(values);
|
||||
if(prop.type == VALUE_TYPE.path) return processType(values[| 0].value);
|
||||
|
||||
if(!is_anim) return processType(values[| 0].value);
|
||||
if(ds_list_size(values) == 0) return processType(0);
|
||||
|
@ -53,7 +84,7 @@ function animValue(_val, _node) constructor {
|
|||
var _time_dura = _time_last - _time_first;
|
||||
|
||||
if(_time > _time_last) {
|
||||
switch(node.on_end) {
|
||||
switch(prop.on_end) {
|
||||
case KEYFRAME_END.loop :
|
||||
_time = _time_first + safe_mod(_time - _time_last, _time_dura + 1);
|
||||
break;
|
||||
|
@ -79,14 +110,14 @@ function animValue(_val, _node) constructor {
|
|||
var to = values[| i];
|
||||
var _lerp = interpolate(from, to, rat);
|
||||
|
||||
if(node.type == VALUE_TYPE.color) {
|
||||
if(prop.type == VALUE_TYPE.color) {
|
||||
return processType(merge_color(from.value, to.value, _lerp));
|
||||
} else if(typeArray(node.display_type)) {
|
||||
} else if(typeArray(prop.display_type)) {
|
||||
var _vec = array_create(array_length(from.value));
|
||||
for(var i = 0; i < array_length(_vec); i++)
|
||||
_vec[i] = processType(lerp(from.value[i], to.value[i], _lerp));
|
||||
return _vec;
|
||||
} else if(node.type == VALUE_TYPE.text) {
|
||||
} else if(prop.type == VALUE_TYPE.text) {
|
||||
return processType(from.value);
|
||||
} else {
|
||||
return processType(lerp(from.value, to.value, _lerp));
|
||||
|
@ -98,7 +129,7 @@ function animValue(_val, _node) constructor {
|
|||
}
|
||||
|
||||
static processType = function(_val) {
|
||||
if(typeArray(node.display_type)) {
|
||||
if(typeArray(prop.display_type)) {
|
||||
for(var i = 0; i < array_length(_val); i++)
|
||||
_val[i] = processValue(_val[i]);
|
||||
return _val;
|
||||
|
@ -108,7 +139,7 @@ function animValue(_val, _node) constructor {
|
|||
static processValue = function(_val) {
|
||||
if(is_array(_val)) return _val;
|
||||
|
||||
switch(node.type) {
|
||||
switch(prop.type) {
|
||||
case VALUE_TYPE.integer : return round(toNumber(_val));
|
||||
case VALUE_TYPE.float : return toNumber(_val);
|
||||
case VALUE_TYPE.text : return string(_val);
|
||||
|
@ -118,6 +149,32 @@ function animValue(_val, _node) constructor {
|
|||
return _val;
|
||||
}
|
||||
|
||||
static setKeyTime = function(_key, _time, _replace = true) {
|
||||
if(!ds_list_exist(values, _key)) return 0;
|
||||
|
||||
_key.time = _time;
|
||||
ds_list_remove(values, _key);
|
||||
|
||||
if(_replace) {
|
||||
for( var i = 0; i < ds_list_size(values); i++ ) {
|
||||
if(values[| i].time == _time) {
|
||||
values[| i] = _key;
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for( var i = 0; i < ds_list_size(values); i++ ) {
|
||||
if(values[| i].time > _time) {
|
||||
ds_list_insert(values, i, _key);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
ds_list_add(values, _key);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static setValue = function(_val = 0, _record = true, _time = -999, ease_in = 0, ease_out = 0) {
|
||||
if(_time == -999) _time = ANIMATOR.current_frame;
|
||||
|
||||
|
@ -131,7 +188,7 @@ function animValue(_val, _node) constructor {
|
|||
}
|
||||
|
||||
if(ds_list_size(values) == 0) {
|
||||
var k = new valueKey(_time, _val, ease_in, ease_out);
|
||||
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 ]);
|
||||
|
@ -148,7 +205,7 @@ function animValue(_val, _node) constructor {
|
|||
}
|
||||
return false;
|
||||
} else if(_key.time > _time) {
|
||||
var k = new valueKey(_time, _val, ease_in, ease_out);
|
||||
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]);
|
||||
|
@ -156,24 +213,31 @@ function animValue(_val, _node) constructor {
|
|||
}
|
||||
}
|
||||
|
||||
var k = new valueKey(_time, _val, ease_in, ease_out);
|
||||
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 ]);
|
||||
return true;
|
||||
}
|
||||
|
||||
static removeKey = function(key) {
|
||||
if(ds_list_size(values) > 1)
|
||||
ds_list_remove(values, key);
|
||||
else
|
||||
is_anim = false;
|
||||
}
|
||||
|
||||
static serialize = function(scale = false) {
|
||||
var _list = ds_list_create();
|
||||
|
||||
for(var i = 0; i < ds_list_size(values); i++) {
|
||||
var _value_list = ds_list_create();
|
||||
if(scale && node.display_type != VALUE_DISPLAY.gradient)
|
||||
if(scale && prop.display_type != VALUE_DISPLAY.gradient)
|
||||
_value_list[| 0] = values[| i].time / ANIMATOR.frames_total;
|
||||
else
|
||||
_value_list[| 0] = values[| i].time;
|
||||
|
||||
if(typeArray(node.display_type)) {
|
||||
if(typeArray(prop.display_type)) {
|
||||
var __v = ds_list_create();
|
||||
for(var j = 0; j < array_length(values[| i].value); j++)
|
||||
ds_list_add(__v, values[| i].value[j]);
|
||||
|
@ -185,6 +249,8 @@ function animValue(_val, _node) constructor {
|
|||
|
||||
_value_list[| 2] = values[| i].ease_in;
|
||||
_value_list[| 3] = values[| i].ease_out;
|
||||
_value_list[| 4] = values[| i].ease_in_type;
|
||||
_value_list[| 5] = values[| i].ease_out_type;
|
||||
|
||||
ds_list_add(_list, _value_list);
|
||||
ds_list_mark_as_list(_list, i);
|
||||
|
@ -199,15 +265,17 @@ function animValue(_val, _node) constructor {
|
|||
for(var i = 0; i < ds_list_size(_list); i++) {
|
||||
var _key = _list[| i];
|
||||
var _time = _key[| 0];
|
||||
if(node.display_type == VALUE_DISPLAY.gradient)
|
||||
if(prop.display_type == VALUE_DISPLAY.gradient)
|
||||
_time = _key[| 0];
|
||||
else if(scale && _key[| 0] <= 1)
|
||||
_time = round(_key[| 0] * ANIMATOR.frames_total);
|
||||
|
||||
var ease_in = ds_list_get(_key, 2);
|
||||
var ease_in = ds_list_get(_key, 2);
|
||||
var ease_out = ds_list_get(_key, 3);
|
||||
var ease_in_type = ds_list_get(_key, 4, CURVE_TYPE.bezier);
|
||||
var ease_out_type = ds_list_get(_key, 5, CURVE_TYPE.bezier);
|
||||
var _val = 0;
|
||||
var t = typeArray(node.display_type);
|
||||
var t = typeArray(prop.display_type);
|
||||
|
||||
if(t) {
|
||||
if(is_string(_key[| 1])) {
|
||||
|
@ -224,7 +292,10 @@ function animValue(_val, _node) constructor {
|
|||
} else
|
||||
_val = _key[| 1];
|
||||
|
||||
ds_list_add(values, new valueKey(_time, _val, ease_in, ease_out));
|
||||
var vk = new valueKey(_time, _val, self, ease_in, ease_out);
|
||||
vk.ease_in_type = ease_in_type;
|
||||
vk.ease_out_type = ease_out_type;
|
||||
ds_list_add(values, vk);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -20,9 +20,58 @@ function Node_Level(_x, _y) : Node_Processor(_x, _y) constructor {
|
|||
|
||||
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
|
||||
|
||||
level_renderer = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus) {
|
||||
var _h = 128;
|
||||
var x0 = _x;
|
||||
var x1 = _x + _w;
|
||||
var y0 = _y;
|
||||
var y1 = _y + _h;
|
||||
level_renderer.h = 128;
|
||||
|
||||
draw_set_color(c_ui_blue_black);
|
||||
var _min = inputs[| 1].getValue();
|
||||
var _max = inputs[| 2].getValue();
|
||||
draw_rectangle(x0, y0, x0 + max(0, _min) * _w, y1, false);
|
||||
draw_rectangle(x0 + min(1, _max) * _w, y0, x1, y1, false);
|
||||
|
||||
for( var i = 0; i < 4; i++ ) {
|
||||
var _bx = x1 - 20 - i * 24;
|
||||
var _by = y0 - 24;
|
||||
|
||||
if(buttonInstant(s_button_hide, _bx, _by, 20, 20, _m, _focus, _hover) == 2)
|
||||
histShow[i] = !histShow[i];
|
||||
draw_sprite_ext(s_circle_12, 0, _bx + 10, _by + 10, 1, 1, 0, his_colors[i], 0.5 + histShow[i] * 0.5);
|
||||
}
|
||||
|
||||
if(histMax > 0)
|
||||
histogramDraw(x0, y1, _w, _h);
|
||||
|
||||
draw_set_color(c_ui_blue_dkgrey);
|
||||
draw_rectangle(x0, y0, x1, y1, true);
|
||||
});
|
||||
|
||||
input_display_list = [
|
||||
level_renderer,
|
||||
["Level", false], 0, 1, 2,
|
||||
];
|
||||
histogramInit();
|
||||
|
||||
static onInspect = function() {
|
||||
if(array_length(current_data) > 0)
|
||||
histogramUpdate(current_data[0]);
|
||||
}
|
||||
|
||||
static onValueUpdate = function(index) {
|
||||
if(index == 0) {
|
||||
update();
|
||||
if(array_length(current_data) > 0)
|
||||
histogramUpdate(current_data[0]);
|
||||
}
|
||||
}
|
||||
|
||||
static process_data = function(_outSurf, _data, _output_index) {
|
||||
var _black = _data[1];
|
||||
var _white = _data[2];
|
||||
var _black = min(_data[1], _data[2]);
|
||||
var _white = max(_data[1], _data[2]);
|
||||
|
||||
surface_set_target(_outSurf);
|
||||
draw_clear_alpha(0, 0);
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_level",
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/nodes/data/filter.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_level",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
|
@ -20,6 +20,58 @@ function Node_Level_Selector(_x, _y) : Node_Processor(_x, _y) constructor {
|
|||
|
||||
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
|
||||
|
||||
level_renderer = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus) {
|
||||
var _h = 128;
|
||||
var x0 = _x;
|
||||
var x1 = _x + _w;
|
||||
var y0 = _y;
|
||||
var y1 = _y + _h;
|
||||
level_renderer.h = 128;
|
||||
|
||||
var _middle = inputs[| 1].getValue();
|
||||
var _span = inputs[| 2].getValue();
|
||||
var _min = _middle - _span;
|
||||
var _max = _middle + _span;
|
||||
|
||||
draw_set_color(c_ui_blue_black);
|
||||
draw_rectangle(x0, y0, x0 + max(0, _min) * _w, y1, false);
|
||||
draw_rectangle(x0 + min(1, _max) * _w, y0, x1, y1, false);
|
||||
|
||||
for( var i = 0; i < 4; i++ ) {
|
||||
var _bx = x1 - 20 - i * 24;
|
||||
var _by = y0 - 24;
|
||||
|
||||
if(buttonInstant(s_button_hide, _bx, _by, 20, 20, _m, _focus, _hover) == 2)
|
||||
histShow[i] = !histShow[i];
|
||||
draw_sprite_ext(s_circle_12, 0, _bx + 10, _by + 10, 1, 1, 0, his_colors[i], 0.5 + histShow[i] * 0.5);
|
||||
}
|
||||
|
||||
if(histMax > 0)
|
||||
histogramDraw(x0, y1, _w, _h);
|
||||
|
||||
draw_set_color(c_ui_blue_dkgrey);
|
||||
draw_rectangle(x0, y0, x1, y1, true);
|
||||
});
|
||||
|
||||
input_display_list = [
|
||||
level_renderer,
|
||||
["Level", false], 0, 1, 2,
|
||||
];
|
||||
histogramInit();
|
||||
|
||||
static onInspect = function() {
|
||||
if(array_length(current_data) > 0)
|
||||
histogramUpdate(current_data[0]);
|
||||
}
|
||||
|
||||
static onValueUpdate = function(index) {
|
||||
if(index == 0) {
|
||||
update();
|
||||
if(array_length(current_data) > 0)
|
||||
histogramUpdate(current_data[0]);
|
||||
}
|
||||
}
|
||||
|
||||
static process_data = function(_outSurf, _data, _output_index) {
|
||||
var _middle = _data[1];
|
||||
var _range = _data[2];
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_level_selector",
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "filter",
|
||||
"path": "folders/nodes/data/filter.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_level_selector",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
|
@ -20,7 +20,7 @@ function Node_Outline(_x, _y) : Node_Processor(_x, _y) constructor {
|
|||
uniform_out_only = shader_get_uniform(sh_outline, "outline_only");
|
||||
|
||||
inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
|
||||
inputs[| 1] = nodeValue(1, "Width", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1);
|
||||
inputs[| 1] = nodeValue(1, "Width", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0);
|
||||
inputs[| 2] = nodeValue(2, "Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
|
||||
|
||||
inputs[| 3] = nodeValue(3, "Blend", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, 0);
|
||||
|
@ -28,7 +28,7 @@ function Node_Outline(_x, _y) : Node_Processor(_x, _y) constructor {
|
|||
inputs[| 4] = nodeValue(4, "Blend alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
|
||||
.setDisplay(VALUE_DISPLAY.slider, [0, 1, 0.01]);
|
||||
|
||||
inputs[| 5] = nodeValue(5, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
||||
inputs[| 5] = nodeValue(5, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1)
|
||||
.setDisplay(VALUE_DISPLAY.enum_button, ["Inside", "Outside"]);
|
||||
|
||||
inputs[| 6] = nodeValue(6, "Anti alising", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, 0);
|
||||
|
|
|
@ -13,7 +13,7 @@ enum OUTPUT_SCALING {
|
|||
function Node_Transform(_x, _y) : Node_Processor(_x, _y) constructor {
|
||||
name = "Transform";
|
||||
|
||||
inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
|
||||
inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone);
|
||||
|
||||
inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [1, 1], VALUE_TAG.dimension_2d)
|
||||
.setDisplay(VALUE_DISPLAY.vector)
|
||||
|
@ -48,7 +48,7 @@ function Node_Transform(_x, _y) : Node_Processor(_x, _y) constructor {
|
|||
inputs[| 9] = nodeValue(9, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, OUTPUT_SCALING.same_as_input)
|
||||
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Same as input", "Constant", "Relative to input" ]);
|
||||
|
||||
inputs[| 10] = nodeValue(10, "Exact", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
|
||||
inputs[| 10] = nodeValue(10, "Exact", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
|
||||
|
||||
inputs[| 11] = nodeValue(11, "Relative to surface", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
|
||||
|
||||
|
@ -64,6 +64,11 @@ function Node_Transform(_x, _y) : Node_Processor(_x, _y) constructor {
|
|||
vel = 0;
|
||||
prev_pos = [0, 0];
|
||||
|
||||
static onValueUpdate = function(index, prev) {
|
||||
if(index == 0 && !is_surface(prev))
|
||||
centerAnchor();
|
||||
}
|
||||
|
||||
static centerAnchor = function() {
|
||||
var _surf = inputs[| 0].getValue();
|
||||
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
{
|
||||
"resourceType": "GMScript",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_transform",
|
||||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "transform",
|
||||
"path": "folders/nodes/data/transform.yy",
|
||||
},
|
||||
"resourceVersion": "1.0",
|
||||
"name": "node_transform",
|
||||
"tags": [],
|
||||
"resourceType": "GMScript",
|
||||
}
|
|
@ -165,10 +165,10 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
modifier = VALUE_MODIFIER.none;
|
||||
accept_array = true;
|
||||
|
||||
def_val = _value;
|
||||
value = new animValue(_value, self);
|
||||
on_end = KEYFRAME_END.hold;
|
||||
extra_data = ds_list_create();
|
||||
def_val = _value;
|
||||
animator = new valueAnimator(_value, self);
|
||||
on_end = KEYFRAME_END.hold;
|
||||
extra_data = ds_list_create();
|
||||
|
||||
visible = _connect == JUNCTION_CONNECT.output || _type == VALUE_TYPE.surface || _type == VALUE_TYPE.path || ( _tag & VALUE_TAG.dimension_2d );
|
||||
show_in_inspector = true;
|
||||
|
@ -223,16 +223,16 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
break;
|
||||
case VALUE_DISPLAY.range :
|
||||
editWidget = new rangeBox(_txt, function(index, val) {
|
||||
var _val = value.getValue();
|
||||
var _val = animator.getValue();
|
||||
_val[index] = val;
|
||||
setValue(_val);
|
||||
} );
|
||||
if(display_data != -1) editWidget.extras = display_data;
|
||||
break;
|
||||
case VALUE_DISPLAY.vector :
|
||||
if(array_length(value.getValue()) <= 4) {
|
||||
editWidget = new vectorBox(array_length(value.getValue()), _txt, function(index, val) {
|
||||
var _val = value.getValue();
|
||||
if(array_length(animator.getValue()) <= 4) {
|
||||
editWidget = new vectorBox(array_length(animator.getValue()), _txt, function(index, val) {
|
||||
var _val = animator.getValue();
|
||||
if(modifier & VALUE_MODIFIER.linked) {
|
||||
for(var i = 0; i < array_length(_val); i++)
|
||||
_val[i] = val;
|
||||
|
@ -245,8 +245,8 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
}
|
||||
break;
|
||||
case VALUE_DISPLAY.vector_range :
|
||||
editWidget = new vectorRangeBox(array_length(value.getValue()), _txt, function(index, val) {
|
||||
var _val = value.getValue();
|
||||
editWidget = new vectorRangeBox(array_length(animator.getValue()), _txt, function(index, val) {
|
||||
var _val = animator.getValue();
|
||||
_val[index] = val;
|
||||
setValue(_val);
|
||||
} );
|
||||
|
@ -259,7 +259,7 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
break;
|
||||
case VALUE_DISPLAY.rotation_range :
|
||||
editWidget = new rotatorRange(function(index, val) {
|
||||
var _val = value.getValue();
|
||||
var _val = animator.getValue();
|
||||
_val[index] = round(val);
|
||||
setValue(_val);
|
||||
} );
|
||||
|
@ -271,14 +271,14 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
break;
|
||||
case VALUE_DISPLAY.slider_range :
|
||||
editWidget = new sliderRange(display_data[0], display_data[1], display_data[2], function(index, val) {
|
||||
var _val = value.getValue();
|
||||
var _val = animator.getValue();
|
||||
_val[index] = val;
|
||||
setValue(_val);
|
||||
} );
|
||||
break;
|
||||
case VALUE_DISPLAY.area :
|
||||
editWidget = new areaBox(function(index, val) {
|
||||
var _val = value.getValue();
|
||||
var _val = animator.getValue();
|
||||
_val[index] = val;
|
||||
setValue(_val);
|
||||
});
|
||||
|
@ -286,7 +286,7 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
break;
|
||||
case VALUE_DISPLAY.padding :
|
||||
editWidget = new paddingBox(function(index, val) {
|
||||
var _val = value.getValue();
|
||||
var _val = animator.getValue();
|
||||
if(modifier & VALUE_MODIFIER.linked) {
|
||||
for(var i = 0; i < array_length(_val); i++)
|
||||
_val[i] = val;
|
||||
|
@ -302,14 +302,11 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
});
|
||||
break;
|
||||
case VALUE_DISPLAY.puppet_control :
|
||||
editWidget = new textBox(_txt, function(str) {
|
||||
if(str != "") {
|
||||
var _val = value.getValue();
|
||||
_val[4] = toNumber(str);
|
||||
setValue(_val);
|
||||
}
|
||||
} );
|
||||
editWidget.slidable = true;
|
||||
editWidget = new controlPointBox(function(index, val) {
|
||||
var _val = animator.getValue();
|
||||
_val[index] = val;
|
||||
setValue(_val);
|
||||
});
|
||||
break;
|
||||
case VALUE_DISPLAY.enum_scroll :
|
||||
editWidget = new scrollBox(display_data, function(val) {
|
||||
|
@ -326,7 +323,7 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
break;
|
||||
case VALUE_TYPE.boolean :
|
||||
editWidget = new checkBox(function() {
|
||||
setValue(!value.getValue());
|
||||
setValue(!animator.getValue());
|
||||
} );
|
||||
break;
|
||||
case VALUE_TYPE.color :
|
||||
|
@ -391,12 +388,12 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
case VALUE_TYPE.path:
|
||||
switch(display_type) {
|
||||
case VALUE_DISPLAY.path_load:
|
||||
var path = value.getValue();
|
||||
var path = animator.getValue();
|
||||
if(!file_exists(path))
|
||||
value_validation = VALIDATION.error;
|
||||
break;
|
||||
case VALUE_DISPLAY.path_array:
|
||||
var paths = value.getValue();
|
||||
var paths = animator.getValue();
|
||||
if(is_array(paths)) {
|
||||
for( var i = 0; i < array_length(paths); i++ ) {
|
||||
if(!file_exists(paths[i]))
|
||||
|
@ -418,7 +415,7 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
var val = _val[0];
|
||||
var typ = _val[1];
|
||||
|
||||
var _base = value.getValue();
|
||||
var _base = animator.getValue();
|
||||
|
||||
if((tag & VALUE_TAG.dimension_2d) && typ == VALUE_TYPE.surface) {
|
||||
if(is_array(val)) {
|
||||
|
@ -450,7 +447,7 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
var val = [ -1, VALUE_TYPE.any ];
|
||||
|
||||
if(value_from == noone)
|
||||
val = [value.getValue(), type];
|
||||
val = [animator.getValue(), type];
|
||||
else if(value_from != self) {
|
||||
val = value_from.getValueRecursive();
|
||||
}
|
||||
|
@ -468,7 +465,7 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
}
|
||||
|
||||
static __anim = function() {
|
||||
return value.is_anim || node.update_on_frame;
|
||||
return animator.is_anim || node.update_on_frame;
|
||||
}
|
||||
static isAnim = function() {
|
||||
if(value_from == noone) return __anim();
|
||||
|
@ -498,9 +495,9 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
}
|
||||
|
||||
static setValue = function(val = 0, record = true, time = -999) {
|
||||
var _o = value.getValue();
|
||||
value.setValue(val, record, time);
|
||||
var _n = value.getValue();
|
||||
var _o = animator.getValue();
|
||||
animator.setValue(val, record, time);
|
||||
var _n = animator.getValue();
|
||||
var updated = false;
|
||||
|
||||
if(is_array(_o)) {
|
||||
|
@ -518,20 +515,13 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
if(node.auto_update && connect_type == JUNCTION_CONNECT.input)
|
||||
node.updateForward();
|
||||
|
||||
node.onValueUpdate(index);
|
||||
node.onValueUpdate(index, _o);
|
||||
}
|
||||
|
||||
onValidate();
|
||||
return updated;
|
||||
}
|
||||
|
||||
static removeKeyframe = function(index) {
|
||||
if(ds_list_size(value.values) > 1)
|
||||
ds_list_delete(value.values, index);
|
||||
else
|
||||
value.is_anim = false;
|
||||
}
|
||||
|
||||
static setFrom = function(_valueFrom, _update = true, checkRecur = true) {
|
||||
if(_valueFrom == -1 || _valueFrom == undefined) {
|
||||
show_debug_message("LOAD : Value from error " + string(_valueFrom))
|
||||
|
@ -577,11 +567,13 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
return false;
|
||||
}
|
||||
|
||||
var _o = animator.getValue();
|
||||
recordAction(ACTION_TYPE.junction_connect, self, value_from);
|
||||
value_from = _valueFrom;
|
||||
ds_list_add(_valueFrom.value_to, self);
|
||||
//show_debug_message("connected " + name + " to " + _valueFrom.name)
|
||||
|
||||
node.onValueUpdate(index, _o);
|
||||
if(_update) node.updateValueFrom(index);
|
||||
if(_update && node.auto_update) _valueFrom.node.updateForward();
|
||||
|
||||
|
@ -603,7 +595,7 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
}
|
||||
|
||||
static setString = function(str) {
|
||||
var _o = value.getValue();
|
||||
var _o = animator.getValue();
|
||||
|
||||
if(string_pos(",", str) > 0) {
|
||||
string_replace(str, "[", "");
|
||||
|
@ -895,10 +887,10 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
break;
|
||||
#endregion
|
||||
case VALUE_DISPLAY.puppet_control : #region
|
||||
var __ax = _val[0];
|
||||
var __ay = _val[1];
|
||||
var __ax1 = _val[2];
|
||||
var __ay1 = _val[3];
|
||||
var __ax = _val[PUPPET_CONTROL.cx];
|
||||
var __ay = _val[PUPPET_CONTROL.cy];
|
||||
var __ax1 = _val[PUPPET_CONTROL.fx];
|
||||
var __ay1 = _val[PUPPET_CONTROL.fy];
|
||||
|
||||
var _ax = __ax * _s + _x;
|
||||
var _ay = __ay * _s + _y;
|
||||
|
@ -907,11 +899,43 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
var _ay1 = (__ay + __ay1) * _s + _y;
|
||||
|
||||
draw_set_color(c_ui_orange);
|
||||
switch(_val[PUPPET_CONTROL.mode]) {
|
||||
case PUPPET_FORCE_MODE.move :
|
||||
draw_line_width2(_ax, _ay, _ax1, _ay1, 6, 1);
|
||||
|
||||
draw_line_width2(_ax, _ay, _ax1, _ay1, 6, 1);
|
||||
draw_sprite(s_anchor_selector, 0, _ax, _ay);
|
||||
draw_sprite(s_anchor_selector, 2, _ax1, _ay1);
|
||||
draw_circle(_ax, _ay, _val[PUPPET_CONTROL.width] * _s, true);
|
||||
break;
|
||||
case PUPPET_FORCE_MODE.pinch :
|
||||
case PUPPET_FORCE_MODE.inflate :
|
||||
draw_sprite(s_anchor_selector, 0, _ax, _ay);
|
||||
draw_circle(_ax, _ay, _val[PUPPET_CONTROL.width] * _s, true);
|
||||
break;
|
||||
case PUPPET_FORCE_MODE.wind :
|
||||
var dir = _val[PUPPET_CONTROL.fy];
|
||||
var rad = _val[PUPPET_CONTROL.width] * _s;
|
||||
|
||||
draw_sprite(s_anchor_selector, 0, _ax, _ay);
|
||||
draw_sprite(s_anchor_selector, 2, _ax1, _ay1);
|
||||
var _l0x = _ax + lengthdir_x(rad, dir + 90);
|
||||
var _l0y = _ay + lengthdir_y(rad, dir + 90);
|
||||
var _l1x = _ax + lengthdir_x(rad, dir - 90);
|
||||
var _l1y = _ay + lengthdir_y(rad, dir - 90);
|
||||
|
||||
var _l0x0 = _l0x + lengthdir_x(1000, dir);
|
||||
var _l0y0 = _l0y + lengthdir_y(1000, dir);
|
||||
var _l0x1 = _l0x + lengthdir_x(1000, dir + 180);
|
||||
var _l0y1 = _l0y + lengthdir_y(1000, dir + 180);
|
||||
|
||||
var _l1x0 = _l1x + lengthdir_x(1000, dir);
|
||||
var _l1y0 = _l1y + lengthdir_y(1000, dir);
|
||||
var _l1x1 = _l1x + lengthdir_x(1000, dir + 180);
|
||||
var _l1y1 = _l1y + lengthdir_y(1000, dir + 180);
|
||||
|
||||
draw_line(_l0x0, _l0y0, _l0x1, _l0y1);
|
||||
draw_line(_l1x0, _l1y0, _l1x1, _l1y1);
|
||||
draw_sprite(s_anchor_selector, 0, _ax, _ay);
|
||||
break;
|
||||
}
|
||||
|
||||
if(drag_type == 1) {
|
||||
draw_sprite(s_anchor_selector, 1, _ax, _ay);
|
||||
|
@ -919,11 +943,11 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
var _ny = drag_sy + (_my - drag_my) / _s;
|
||||
|
||||
if(keyboard_check(vk_control)) {
|
||||
_val[0] = round(_nx);
|
||||
_val[1] = round(_ny);
|
||||
_val[PUPPET_CONTROL.cx] = round(_nx);
|
||||
_val[PUPPET_CONTROL.cy] = round(_ny);
|
||||
} else {
|
||||
_val[0] = _nx;
|
||||
_val[1] = _ny;
|
||||
_val[PUPPET_CONTROL.cx] = _nx;
|
||||
_val[PUPPET_CONTROL.cy] = _ny;
|
||||
}
|
||||
|
||||
if(setValue( _val ))
|
||||
|
@ -939,11 +963,11 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
var _ny = drag_sy + (_my - drag_my) / _s;
|
||||
|
||||
if(keyboard_check(vk_control)) {
|
||||
_val[2] = round(_nx);
|
||||
_val[3] = round(_ny);
|
||||
_val[PUPPET_CONTROL.fx] = round(_nx);
|
||||
_val[PUPPET_CONTROL.fy] = round(_ny);
|
||||
} else {
|
||||
_val[2] = _nx;
|
||||
_val[3] = _ny;
|
||||
_val[PUPPET_CONTROL.fx] = _nx;
|
||||
_val[PUPPET_CONTROL.fy] = _ny;
|
||||
}
|
||||
|
||||
if(setValue( _val ))
|
||||
|
@ -956,9 +980,6 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
}
|
||||
|
||||
if(point_in_circle(_mx, _my, _ax, _ay, 8)) {
|
||||
draw_set_color(c_ui_orange);
|
||||
draw_circle(_ax, _ay, _val[4] * _s, true);
|
||||
|
||||
hover = 1;
|
||||
draw_sprite(s_anchor_selector, 1, _ax, _ay);
|
||||
if(_active && mouse_check_button_pressed(mb_left)) {
|
||||
|
@ -968,7 +989,9 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
drag_sx = __ax;
|
||||
drag_sy = __ay;
|
||||
}
|
||||
} else if(point_in_circle(_mx, _my, _ax1, _ay1, 8)) {
|
||||
}
|
||||
|
||||
if(_val[PUPPET_CONTROL.mode] == PUPPET_FORCE_MODE.move && point_in_circle(_mx, _my, _ax1, _ay1, 8)) {
|
||||
hover = 2;
|
||||
draw_sprite(s_anchor_selector, 0, _ax1, _ay1);
|
||||
if(_active && mouse_check_button_pressed(mb_left)) {
|
||||
|
@ -1025,11 +1048,11 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
static serialize = function(scale = false) {
|
||||
var _map = ds_map_create();
|
||||
|
||||
ds_map_add_list(_map, "raw value", value.serialize(scale));
|
||||
ds_map_add_list(_map, "raw value", animator.serialize(scale));
|
||||
|
||||
_map[? "on end"] = on_end;
|
||||
_map[? "visible"] = visible;
|
||||
_map[? "anim"] = value.is_anim;
|
||||
_map[? "anim"] = animator.is_anim;
|
||||
_map[? "from node"] = value_from? value_from.node.node_id : -1;
|
||||
_map[? "from index"] = value_from? value_from.index : -1;
|
||||
|
||||
|
@ -1043,8 +1066,8 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
static deserialize = function(_map, scale = false) {
|
||||
on_end = ds_map_try_get(_map, "on end", on_end);
|
||||
visible = ds_map_try_get(_map, "visible", visible);
|
||||
value.deserialize(_map[? "raw value"], scale);
|
||||
value.is_anim = _map[? "anim"];
|
||||
animator.deserialize(_map[? "raw value"], scale);
|
||||
animator.is_anim = _map[? "anim"];
|
||||
con_node = _map[? "from node"];
|
||||
con_index = _map[? "from index"];
|
||||
|
||||
|
@ -1089,7 +1112,7 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
|
|||
static cleanUp = function() {
|
||||
ds_list_destroy(value_to);
|
||||
ds_list_destroy(extra_data);
|
||||
value.cleanUp();
|
||||
delete value;
|
||||
animator.cleanUp();
|
||||
delete animator;
|
||||
}
|
||||
}
|
|
@ -12,41 +12,37 @@ function Node_Wiggler(_x, _y) : Node_Value_Processor(_x, _y) constructor {
|
|||
w = 96;
|
||||
min_h = 0;
|
||||
|
||||
inputs[| 0] = nodeValue(0, "Value", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0);
|
||||
inputs[| 0] = nodeValue(0, "Range", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [0, 1])
|
||||
.setDisplay(VALUE_DISPLAY.vector);
|
||||
|
||||
inputs[| 1] = nodeValue(1, "Range", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 );
|
||||
|
||||
inputs[| 2] = nodeValue(2, "Frequency", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 3, 5 ] )
|
||||
inputs[| 1] = nodeValue(1, "Frequency", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 3, 5 ] )
|
||||
.setDisplay(VALUE_DISPLAY.slider_range, [1, 32, 1]);
|
||||
|
||||
inputs[| 3] = nodeValue(3, "Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, irandom(9999999) );
|
||||
inputs[| 2] = nodeValue(2, "Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, irandom(9999999) );
|
||||
|
||||
inputs[| 4] = nodeValue(4, "Display", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1 )
|
||||
inputs[| 3] = nodeValue(3, "Display", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1 )
|
||||
.setDisplay(VALUE_DISPLAY.enum_scroll, ["Number", "Graph"])
|
||||
|
||||
outputs[| 0] = nodeValue(0, "Output", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0);
|
||||
|
||||
input_display_list = [
|
||||
["Display", true], 4,
|
||||
["Wiggle", false], 3, 0, 1, 2,
|
||||
["Display", true], 3,
|
||||
["Wiggle", false], 2, 0, 1,
|
||||
];
|
||||
|
||||
graph_value = array_create(64, 0);
|
||||
|
||||
static onValueUpdate = function(index) {
|
||||
var val = inputs[| 0].getValue();
|
||||
var ran = inputs[| 1].getValue();
|
||||
var fre = inputs[| 2].getValue();
|
||||
var sed = inputs[| 3].getValue();
|
||||
var ran = inputs[| 0].getValue();
|
||||
var fre = inputs[| 1].getValue();
|
||||
var sed = inputs[| 2].getValue();
|
||||
|
||||
var _min = val - ran;
|
||||
var _max = val + ran;
|
||||
var _fmin = ANIMATOR.frames_total / max(1, min(fre[0], fre[1]));
|
||||
var _fmax = ANIMATOR.frames_total / max(1, max(fre[0], fre[1]));
|
||||
var _val;
|
||||
|
||||
for( var i = 0; i < 64; i++ ) {
|
||||
_val = getWiggle(_min, _max, _fmin, _fmax, i, sed);
|
||||
_val = getWiggle(ran[0], ran[1], _fmin, _fmax, i, sed);
|
||||
graph_value[i] = _val;
|
||||
}
|
||||
}
|
||||
|
@ -56,19 +52,18 @@ function Node_Wiggler(_x, _y) : Node_Value_Processor(_x, _y) constructor {
|
|||
array_resize(graph_value, ANIMATOR.frames_total);
|
||||
|
||||
var time = ANIMATOR.current_frame;
|
||||
var _min = _data[0] - _data[1];
|
||||
var _max = _data[0] + _data[1];
|
||||
var _fmin = ANIMATOR.frames_total / max(1, min(_data[2][0], _data[2][1]));
|
||||
var _fmax = ANIMATOR.frames_total / max(1, max(_data[2][0], _data[2][1]));
|
||||
var _ran = _data[0];
|
||||
var _fmin = ANIMATOR.frames_total / max(1, min(_data[1][0], _data[1][1]));
|
||||
var _fmax = ANIMATOR.frames_total / max(1, max(_data[1][0], _data[1][1]));
|
||||
|
||||
var _val = getWiggle(_min, _max, _fmin, _fmax, time, _data[3]);
|
||||
var _val = getWiggle(_ran[0], _ran[1], _fmin, _fmax, time, _data[3]);
|
||||
return _val;
|
||||
}
|
||||
|
||||
doUpdate();
|
||||
|
||||
static onDrawNode = function(xx, yy, _mx, _my, _s) {
|
||||
var disp = inputs[| 4].getValue();
|
||||
var disp = inputs[| 3].getValue();
|
||||
var time = ANIMATOR.current_frame;
|
||||
var total_time = ANIMATOR.frames_total;
|
||||
|
||||
|
@ -84,13 +79,14 @@ function Node_Wiggler(_x, _y) : Node_Value_Processor(_x, _y) constructor {
|
|||
w = 128;
|
||||
min_h = 96;
|
||||
|
||||
var val = inputs[| 0].getValue();
|
||||
var ran = inputs[| 1].getValue();
|
||||
var fre = inputs[| 2].getValue();
|
||||
var sed = inputs[| 3].getValue();
|
||||
var ran = inputs[| 0].getValue();
|
||||
var fre = inputs[| 1].getValue();
|
||||
var sed = inputs[| 2].getValue();
|
||||
|
||||
var _min = val - ran;
|
||||
var _max = val + ran;
|
||||
var _min = ran[0];
|
||||
var _max = ran[1];
|
||||
var val = (_min + _max) / 2;
|
||||
var _ran = _max - _min;
|
||||
var _fmin = max(1, fre[0]);
|
||||
var _fmax = max(1, fre[1]);
|
||||
|
||||
|
@ -112,7 +108,7 @@ function Node_Wiggler(_x, _y) : Node_Value_Processor(_x, _y) constructor {
|
|||
var ox, oy;
|
||||
for( var i = 0; i < array_length(graph_value); i++ ) {
|
||||
var _x = x0 + i * lw;
|
||||
var _y = yc - (graph_value[i] - val) / (ran * 2) * hh;
|
||||
var _y = yc - (graph_value[i] - val) / (_ran * 2) * hh;
|
||||
if(i)
|
||||
draw_line(ox, oy, _x, _y);
|
||||
|
||||
|
|
|
@ -23,24 +23,36 @@ function Node_Mesh_Warp(_x, _y) : Node(_x, _y) constructor {
|
|||
inputs[| 3] = nodeValue(3, "Mesh", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
||||
.setDisplay(VALUE_DISPLAY.button, [ function() { setTriangle(); doUpdate(); }, "Generate"] );
|
||||
|
||||
inputs[| 4] = nodeValue(4, "Diagonal link", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
|
||||
|
||||
control_index = ds_list_size(inputs);
|
||||
|
||||
function createControl() {
|
||||
var index = ds_list_size(inputs);
|
||||
inputs[| index] = nodeValue(index, "Control point range", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 16, 16, 8, 0, 32])
|
||||
inputs[| index] = nodeValue(index, "Control point", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ PUPPET_FORCE_MODE.move, 16, 16, 8, 0, 8, 8])
|
||||
.setDisplay(VALUE_DISPLAY.puppet_control)
|
||||
|
||||
|
||||
array_push(input_display_list, index);
|
||||
return inputs[| index];
|
||||
}
|
||||
|
||||
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
|
||||
outputs[| 1] = nodeValue(1, "Mesh data", self, JUNCTION_CONNECT.output, VALUE_TYPE.object, data);
|
||||
|
||||
tools = [
|
||||
[ "Add / Remove control point", s_control_edit ]
|
||||
input_display_list = [
|
||||
["Mesh", false], 0, 1, 2, 4, 3,
|
||||
["Control points", false],
|
||||
];
|
||||
|
||||
input_display_index = array_length(input_display_list);
|
||||
|
||||
tools = [
|
||||
[ "Add / Remove control point", s_control_edit ],
|
||||
[ "Pin, unpin mesh", [s_control_pin, s_control_unpin] ]
|
||||
];
|
||||
|
||||
attributes[? "pin"] = ds_map_create();
|
||||
|
||||
static drawOverlay = function(_active, _x, _y, _s, _mx, _my) {
|
||||
for(var i = 0; i < ds_list_size(data.tris); i++) {
|
||||
data.tris[| i].drawPoints(_x, _y, _s);
|
||||
|
@ -55,11 +67,15 @@ function Node_Mesh_Warp(_x, _y) : Node(_x, _y) constructor {
|
|||
hover = i;
|
||||
}
|
||||
|
||||
if(_active && PANEL_PREVIEW.tool_index == 0) {
|
||||
var _tool = PANEL_PREVIEW.tool_index;
|
||||
var _sub_tool = PANEL_PREVIEW.tool_sub_index;
|
||||
|
||||
if(!_active) return;
|
||||
if(_tool == 0) {
|
||||
if(mouse_check_button_pressed(mb_left)) {
|
||||
if(hover == -1) {
|
||||
var i = createControl();
|
||||
i.setValue( [(_mx - _x) / _s, (_my - _y) / _s, 0, 0, 8] );
|
||||
i.setValue( [PUPPET_FORCE_MODE.move, (_mx - _x) / _s, (_my - _y) / _s, 0, 0, 8, 8] );
|
||||
i.drag_type = 2;
|
||||
i.drag_sx = 0;
|
||||
i.drag_sy = 0;
|
||||
|
@ -67,22 +83,48 @@ function Node_Mesh_Warp(_x, _y) : Node(_x, _y) constructor {
|
|||
i.drag_my = _my;
|
||||
} else {
|
||||
ds_list_delete(inputs, hover);
|
||||
array_delete(input_display_list, input_display_index + hover - control_index, 1);
|
||||
}
|
||||
|
||||
reset();
|
||||
control();
|
||||
control(input_display_list);
|
||||
}
|
||||
} else if(_tool == 1) {
|
||||
draw_set_color(c_ui_orange);
|
||||
var rad = 16;
|
||||
draw_circle(_mx, _my, rad, true);
|
||||
var _xx = (_mx - _x) / _s;
|
||||
var _yy = (_my - _y) / _s;
|
||||
|
||||
if(mouse_check_button(mb_left)) {
|
||||
for(var j = 0; j < ds_list_size(data.tris); j++) {
|
||||
var t = data.tris[| j];
|
||||
|
||||
if(point_in_circle(t.p0.x, t.p0.y, _xx, _yy, rad / _s))
|
||||
t.p0.setPin(!_sub_tool);
|
||||
if(point_in_circle(t.p1.x, t.p1.y, _xx, _yy, rad / _s))
|
||||
t.p1.setPin(!_sub_tool);
|
||||
if(point_in_circle(t.p2.x, t.p2.y, _xx, _yy, rad / _s))
|
||||
t.p2.setPin(!_sub_tool);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function point(_x, _y) constructor {
|
||||
function point(node, index, _x, _y) constructor {
|
||||
self.index = index;
|
||||
self.node = node;
|
||||
x = _x;
|
||||
y = _y;
|
||||
xp = x;
|
||||
yp = y;
|
||||
|
||||
ndx = 0;
|
||||
ndy = 0;
|
||||
|
||||
sx = x;
|
||||
sy = y;
|
||||
pin = ds_map_exists(node.attributes[? "pin"], index);
|
||||
|
||||
static reset = function() {
|
||||
x = sx;
|
||||
|
@ -91,9 +133,14 @@ function Node_Mesh_Warp(_x, _y) : Node(_x, _y) constructor {
|
|||
yp = y;
|
||||
}
|
||||
|
||||
static draw = function() {
|
||||
draw_set_color(c_white);
|
||||
draw_circle(x, y, 4, false);
|
||||
static draw = function(_x, _y, _s) {
|
||||
if(pin) {
|
||||
draw_set_color(c_ui_orange);
|
||||
draw_circle(_x + x * _s, _y + y * _s, 3, false);
|
||||
} else {
|
||||
draw_set_color(c_ui_blue_grey);
|
||||
draw_circle(_x + x * _s, _y + y * _s, 2, false);
|
||||
}
|
||||
}
|
||||
|
||||
u = 0;
|
||||
|
@ -102,6 +149,42 @@ function Node_Mesh_Warp(_x, _y) : Node(_x, _y) constructor {
|
|||
u = x / ww;
|
||||
v = y / hh;
|
||||
}
|
||||
|
||||
static move = function(dx, dy) {
|
||||
if(pin) return;
|
||||
|
||||
x += dx;
|
||||
y += dy;
|
||||
}
|
||||
|
||||
static planMove = function(dx, dy) {
|
||||
if(pin) return;
|
||||
|
||||
ndx += dx;
|
||||
ndy += dy;
|
||||
}
|
||||
|
||||
static stepMove = function(rat) {
|
||||
if(pin) return;
|
||||
|
||||
move(ndx * rat, ndy * rat);
|
||||
}
|
||||
|
||||
static clearMove = function(rat) {
|
||||
if(pin) return;
|
||||
|
||||
ndx = 0;
|
||||
ndy = 0;
|
||||
}
|
||||
|
||||
static setPin = function(pin) {
|
||||
if(!pin && ds_map_exists(node.attributes[? "pin"], index))
|
||||
ds_map_delete(node.attributes[? "pin"], index);
|
||||
if(pin && !ds_map_exists(node.attributes[? "pin"], index))
|
||||
ds_map_add(node.attributes[? "pin"], index, 1);
|
||||
|
||||
self.pin = pin;
|
||||
}
|
||||
}
|
||||
|
||||
function link(_p0, _p1) constructor {
|
||||
|
@ -119,11 +202,8 @@ function Node_Mesh_Warp(_x, _y) : Node(_x, _y) constructor {
|
|||
var dx = lengthdir_x(f, _dir);
|
||||
var dy = lengthdir_y(f, _dir);
|
||||
|
||||
p0.x += dx / 2;
|
||||
p0.y += dy / 2;
|
||||
|
||||
p1.x -= dx / 2;
|
||||
p1.y -= dy / 2;
|
||||
p0.move( dx / 2, dy / 2);
|
||||
p1.move(-dx / 2, -dy / 2);
|
||||
}
|
||||
|
||||
static draw = function(_x, _y, _s) {
|
||||
|
@ -161,15 +241,14 @@ function Node_Mesh_Warp(_x, _y) : Node(_x, _y) constructor {
|
|||
}
|
||||
|
||||
static drawPoints = function(_x, _y, _s) {
|
||||
draw_set_color(c_ui_blue_dkgrey);
|
||||
draw_line(_x + p0.x * _s, _y + p0.y * _s, _x + p1.x * _s, _y + p1.y * _s);
|
||||
draw_line(_x + p0.x * _s, _y + p0.y * _s, _x + p2.x * _s, _y + p2.y * _s);
|
||||
draw_line(_x + p1.x * _s, _y + p1.y * _s, _x + p2.x * _s, _y + p2.y * _s);
|
||||
//draw_set_color(c_ui_blue_dkgrey);
|
||||
//draw_line(_x + p0.x * _s, _y + p0.y * _s, _x + p1.x * _s, _y + p1.y * _s);
|
||||
//draw_line(_x + p0.x * _s, _y + p0.y * _s, _x + p2.x * _s, _y + p2.y * _s);
|
||||
//draw_line(_x + p1.x * _s, _y + p1.y * _s, _x + p2.x * _s, _y + p2.y * _s);
|
||||
|
||||
draw_set_color(c_ui_blue_grey);
|
||||
draw_circle(_x + p0.x * _s, _y + p0.y * _s, 2, false);
|
||||
draw_circle(_x + p1.x * _s, _y + p1.y * _s, 2, false);
|
||||
draw_circle(_x + p2.x * _s, _y + p2.y * _s, 2, false);
|
||||
p0.draw(_x, _y, _s);
|
||||
p1.draw(_x, _y, _s);
|
||||
p2.draw(_x, _y, _s);
|
||||
}
|
||||
|
||||
static contain = function(p) {
|
||||
|
@ -180,6 +259,7 @@ function Node_Mesh_Warp(_x, _y) : Node(_x, _y) constructor {
|
|||
static regularTri = function(surf) {
|
||||
var sample = inputs[| 1].getValue();
|
||||
var spring = inputs[| 2].getValue();
|
||||
var diagon = inputs[| 4].getValue();
|
||||
|
||||
if(!inputs[| 0].value_from) return;
|
||||
var ww = surface_get_width(surf);
|
||||
|
@ -204,6 +284,7 @@ function Node_Mesh_Warp(_x, _y) : Node(_x, _y) constructor {
|
|||
ds_list_clear(data.tris);
|
||||
ds_list_clear(data.links);
|
||||
|
||||
var ind = 0;
|
||||
for(var i = 0; i < gh; i++)
|
||||
for(var j = 0; j < gw; j++) {
|
||||
var c0 = surface_getpixel(cont, j * sample, i * sample);
|
||||
|
@ -212,7 +293,7 @@ function Node_Mesh_Warp(_x, _y) : Node(_x, _y) constructor {
|
|||
var c3 = surface_getpixel(cont, j * sample - 1, i * sample - 1);
|
||||
|
||||
if(c0 + c1 + c2 + c3 > 0) {
|
||||
data.points[i][j] = new point(min(j * sample, ww), min(i * sample, hh));
|
||||
data.points[i][j] = new point(self, ind++, min(j * sample, ww), min(i * sample, hh));
|
||||
if(i) {
|
||||
if(j && data.points[i - 1][j] != 0 && data.points[i][j - 1] != 0)
|
||||
ds_list_add(data.tris, new triangle(data.points[i - 1][j], data.points[i][j - 1], data.points[i][j]));
|
||||
|
@ -233,15 +314,18 @@ function Node_Mesh_Warp(_x, _y) : Node(_x, _y) constructor {
|
|||
if(j && data.points[i][j - 1] != 0) {
|
||||
ds_list_add(data.links, new link(data.points[i][j], data.points[i][j - 1]));
|
||||
}
|
||||
if(i && j && data.points[i - 1][j - 1] != 0) {
|
||||
var l = new link(data.points[i][j], data.points[i - 1][j - 1]);
|
||||
l.k = spring;
|
||||
ds_list_add(data.links, l);
|
||||
}
|
||||
if(i && j < gw - 1 && data.points[i - 1][j + 1] != 0) {
|
||||
var l = new link(data.points[i][j], data.points[i - 1][j + 1]);
|
||||
l.k = spring;
|
||||
ds_list_add(data.links, l);
|
||||
|
||||
if(diagon) {
|
||||
if(i && j && data.points[i - 1][j - 1] != 0) {
|
||||
var l = new link(data.points[i][j], data.points[i - 1][j - 1]);
|
||||
l.k = spring;
|
||||
ds_list_add(data.links, l);
|
||||
}
|
||||
if(i && j < gw - 1 && data.points[i - 1][j + 1] != 0) {
|
||||
var l = new link(data.points[i][j], data.points[i - 1][j + 1]);
|
||||
l.k = spring;
|
||||
ds_list_add(data.links, l);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -264,15 +348,49 @@ function Node_Mesh_Warp(_x, _y) : Node(_x, _y) constructor {
|
|||
}
|
||||
|
||||
static affectPoint = function(c, p) {
|
||||
var dis = point_distance(c[0], c[1], p.x, p.y);
|
||||
var range = c[4];
|
||||
var inf = clamp(1 - dis / range, 0, 1);
|
||||
var mode = c[PUPPET_CONTROL.mode];
|
||||
var cx = c[PUPPET_CONTROL.cx];
|
||||
var cy = c[PUPPET_CONTROL.cy];
|
||||
var fx = c[PUPPET_CONTROL.fx];
|
||||
var fy = c[PUPPET_CONTROL.fy];
|
||||
var cw = c[PUPPET_CONTROL.width];
|
||||
var ch = c[PUPPET_CONTROL.height];
|
||||
|
||||
var dx = c[2] * inf / 2;
|
||||
var dy = c[3] * inf / 2;
|
||||
switch(mode) {
|
||||
case PUPPET_FORCE_MODE.move:
|
||||
var dis = point_distance(cx, cy, p.x, p.y);
|
||||
var inf = clamp(1 - dis / cw, 0, 1);
|
||||
inf = ease_cubic_inout(inf);
|
||||
|
||||
p.x += dx;
|
||||
p.y += dy;
|
||||
p.planMove(fx * inf, fy * inf);
|
||||
break;
|
||||
case PUPPET_FORCE_MODE.pinch:
|
||||
var dis = point_distance(cx, cy, p.x, p.y);
|
||||
var inf = power(clamp(1 - dis / cw, 0, 1), 2) / 2;
|
||||
var dir = point_direction(p.x, p.y, cx, cy);
|
||||
|
||||
p.planMove(lengthdir_x(inf, dir) * ch, lengthdir_y(inf, dir) * ch);
|
||||
break;
|
||||
case PUPPET_FORCE_MODE.inflate:
|
||||
var dis = point_distance(cx, cy, p.x, p.y);
|
||||
var inf = power(clamp(1 - dis / cw, 0, 1), 2) / 2;
|
||||
var dir = point_direction(cx, cy, p.x, p.y);
|
||||
|
||||
p.planMove(lengthdir_x(inf, dir) * ch, lengthdir_y(inf, dir) * ch);
|
||||
break;
|
||||
case PUPPET_FORCE_MODE.wind:
|
||||
var lx0 = cx + lengthdir_x(1000, fy);
|
||||
var ly0 = cy + lengthdir_y(1000, fy);
|
||||
var lx1 = cx - lengthdir_x(1000, fy);
|
||||
var ly1 = cy - lengthdir_y(1000, fy);
|
||||
|
||||
var dist = distance_to_line(p.x, p.y, lx0, ly0, lx1, ly1);
|
||||
var inf = clamp(1 - dist / cw, 0, 1);
|
||||
inf = ease_cubic_inout(inf);
|
||||
|
||||
p.planMove(lengthdir_x(fx * inf, fy), lengthdir_y(fx * inf, fy));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static control = function() {
|
||||
|
@ -286,9 +404,30 @@ function Node_Mesh_Warp(_x, _y) : Node(_x, _y) constructor {
|
|||
}
|
||||
}
|
||||
|
||||
repeat(4)
|
||||
for(var i = 0; i < ds_list_size(data.links); i++)
|
||||
data.links[| i].resolve();
|
||||
var it = PREF_MAP[? "verlet_iteration"];
|
||||
var resit = it;
|
||||
var _rat = power(1 / it, 2);
|
||||
|
||||
repeat(it) {
|
||||
for(var j = 0; j < ds_list_size(data.tris); j++) {
|
||||
var t = data.tris[| j];
|
||||
t.p0.stepMove(_rat);
|
||||
t.p1.stepMove(_rat);
|
||||
t.p2.stepMove(_rat);
|
||||
}
|
||||
|
||||
repeat(resit) {
|
||||
for(var i = 0; i < ds_list_size(data.links); i++)
|
||||
data.links[| i].resolve();
|
||||
}
|
||||
}
|
||||
|
||||
for(var j = 0; j < ds_list_size(data.tris); j++) {
|
||||
var t = data.tris[| j];
|
||||
t.p0.clearMove();
|
||||
t.p1.clearMove();
|
||||
t.p2.clearMove();
|
||||
}
|
||||
}
|
||||
|
||||
static update = function() {
|
||||
|
@ -321,4 +460,15 @@ function Node_Mesh_Warp(_x, _y) : Node(_x, _y) constructor {
|
|||
inputs[| i].deserialize(_inputs[| i]);
|
||||
}
|
||||
}
|
||||
|
||||
static attributeSerialize = function() {
|
||||
var att = ds_map_create();
|
||||
ds_map_add_map(att, "pin", attributes[? "pin"]);
|
||||
return att;
|
||||
}
|
||||
|
||||
static attributeDeserialize = function(attr) {
|
||||
if(ds_map_exists(attr, "pin"))
|
||||
attributes[? "pin"] = ds_map_clone(attr[? "pin"]);
|
||||
}
|
||||
}
|
|
@ -33,6 +33,7 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
_scrub_frame = -1;
|
||||
|
||||
timeline_shift = 0;
|
||||
timeline_shift_to = 0;
|
||||
timeline_dragging = false;
|
||||
timeline_drag_sx = 0;
|
||||
timeline_drag_sy = 0;
|
||||
|
@ -44,7 +45,13 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
|
||||
keyframe_dragging = noone;
|
||||
keyframe_drag_type = -1;
|
||||
prop_selecting = noone;
|
||||
keyframe_selecting = ds_list_create();
|
||||
keyframe_boxing = false;
|
||||
keyframe_box_sx = -1;
|
||||
keyframe_box_sy = -1;
|
||||
|
||||
stagger_mode = 0;
|
||||
stagger_index = 0;
|
||||
|
||||
anim_properties = ds_list_create();
|
||||
|
||||
|
@ -60,10 +67,129 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
addHotkey("", "Last frame", vk_end, MOD_KEY.none, function() { ANIMATOR.real_frame = ANIMATOR.frames_total; });
|
||||
addHotkey("", "Next frame", vk_right, MOD_KEY.none, function() {
|
||||
ANIMATOR.real_frame = min(ANIMATOR.real_frame + 1, ANIMATOR.frames_total);
|
||||
ANIMATOR.frame_progress = true; });
|
||||
ANIMATOR.frame_progress = true;
|
||||
});
|
||||
addHotkey("", "Previous frame", vk_left, MOD_KEY.none, function() {
|
||||
ANIMATOR.real_frame = max(ANIMATOR.real_frame - 1, 0);
|
||||
ANIMATOR.frame_progress = true; });
|
||||
ANIMATOR.frame_progress = true;
|
||||
});
|
||||
addHotkey("Animation", "Delete keys", vk_delete, MOD_KEY.none, function() { deleteKeys(); });
|
||||
|
||||
function deleteKeys() {
|
||||
for( var i = 0; i < ds_list_size(keyframe_selecting); i++ ) {
|
||||
var k = keyframe_selecting[| i];
|
||||
k.anim.removeKey(k);
|
||||
}
|
||||
ds_list_clear(keyframe_selecting);
|
||||
}
|
||||
|
||||
function alignKeys(halign = fa_left) {
|
||||
if(ds_list_empty(keyframe_selecting)) return;
|
||||
|
||||
var tt = 0;
|
||||
|
||||
switch(halign) {
|
||||
case fa_left :
|
||||
tt = 9999;
|
||||
for( var i = 0; i < ds_list_size(keyframe_selecting); i++ )
|
||||
tt = min(tt, keyframe_selecting[| i].time);
|
||||
break;
|
||||
case fa_center :
|
||||
tt = 0;
|
||||
for( var i = 0; i < ds_list_size(keyframe_selecting); i++ )
|
||||
tt += keyframe_selecting[| i].time;
|
||||
tt = round(tt / ds_list_size(keyframe_selecting));
|
||||
break;
|
||||
case fa_right :
|
||||
tt = -9999;
|
||||
for( var i = 0; i < ds_list_size(keyframe_selecting); i++ )
|
||||
tt = max(tt, keyframe_selecting[| i].time);
|
||||
break;
|
||||
}
|
||||
|
||||
for( var i = 0; i < ds_list_size(keyframe_selecting); i++ ) {
|
||||
var k = keyframe_selecting[| i];
|
||||
k.anim.setKeyTime(k, tt);
|
||||
}
|
||||
}
|
||||
|
||||
function arrangeKeys() {
|
||||
var l = ds_list_create();
|
||||
for( var i = 0; i < ds_list_size(anim_properties); i++ ) {
|
||||
var prop = anim_properties[| i];
|
||||
for(var k = 0; k < ds_list_size(prop.animator.values); k++) {
|
||||
var keyframe = prop.animator.values[| k];
|
||||
|
||||
if(ds_list_exist(keyframe_selecting, keyframe))
|
||||
ds_list_add(l, keyframe);
|
||||
}
|
||||
}
|
||||
|
||||
ds_list_copy(keyframe_selecting, l);
|
||||
ds_list_destroy(l);
|
||||
}
|
||||
|
||||
function staggerKeys(_index, _stag) {
|
||||
var t = keyframe_selecting[| _index].time;
|
||||
for( var i = 0; i < ds_list_size(keyframe_selecting); i++ ) {
|
||||
var k = keyframe_selecting[| i];
|
||||
var _t = t + abs(i - _index) * _stag;
|
||||
|
||||
k.anim.setKeyTime(k, _t);
|
||||
}
|
||||
}
|
||||
|
||||
keyframe_menu = [
|
||||
[ "Ease in", [
|
||||
[ [s_timeline_ease, 0], function() {
|
||||
for( var i = 0; i < ds_list_size(keyframe_selecting); i++ ) {
|
||||
var k = keyframe_selecting[| i];
|
||||
k.ease_in = 0;
|
||||
}
|
||||
} ],
|
||||
[ [s_timeline_ease, 1], function() {
|
||||
for( var i = 0; i < ds_list_size(keyframe_selecting); i++ ) {
|
||||
var k = keyframe_selecting[| i];
|
||||
k.ease_in_type = CURVE_TYPE.bezier;
|
||||
}
|
||||
} ],
|
||||
[ [s_timeline_ease, 3], function() {
|
||||
for( var i = 0; i < ds_list_size(keyframe_selecting); i++ ) {
|
||||
var k = keyframe_selecting[| i];
|
||||
k.ease_in_type = CURVE_TYPE.damping;
|
||||
}
|
||||
} ],
|
||||
]],
|
||||
[ "Ease out", [
|
||||
[ [s_timeline_ease, 0], function() {
|
||||
for( var i = 0; i < ds_list_size(keyframe_selecting); i++ ) {
|
||||
var k = keyframe_selecting[| i];
|
||||
k.ease_out = 0;
|
||||
}
|
||||
} ],
|
||||
[ [s_timeline_ease, 1], function() {
|
||||
for( var i = 0; i < ds_list_size(keyframe_selecting); i++ ) {
|
||||
var k = keyframe_selecting[| i];
|
||||
k.ease_out_type = CURVE_TYPE.bezier;
|
||||
}
|
||||
} ],
|
||||
[ [s_timeline_ease, 3], function() {
|
||||
for( var i = 0; i < ds_list_size(keyframe_selecting); i++ ) {
|
||||
var k = keyframe_selecting[| i];
|
||||
k.ease_out_type = CURVE_TYPE.damping;
|
||||
}
|
||||
} ],
|
||||
]],
|
||||
-1,
|
||||
[ "Align", [
|
||||
[ [s_timeline_obj_halign, 0], function() { alignKeys(fa_left); } ],
|
||||
[ [s_timeline_obj_halign, 1], function() { alignKeys(fa_center); } ],
|
||||
[ [s_timeline_obj_halign, 2], function() { alignKeys(fa_right); } ],
|
||||
]],
|
||||
[ "Stagger", function() { stagger_mode = 1; }],
|
||||
-1,
|
||||
[ "Delete", function() { deleteKeys(); }, [ "Animation", "Delete keys" ] ],
|
||||
];
|
||||
|
||||
function onResize(dw, dh) {
|
||||
if(w - tool_width > 1) {
|
||||
|
@ -137,7 +263,7 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
|
||||
for(var j = 0; j < ds_list_size(_node.inputs); j++) {
|
||||
var jun = _node.inputs[| j];
|
||||
if(jun.value.is_anim)
|
||||
if(jun.animator.is_anim)
|
||||
ds_list_add(anim_properties, jun);
|
||||
}
|
||||
}
|
||||
|
@ -149,7 +275,6 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
var bar_w = w - tool_width;
|
||||
var bar_h = timeline_h;
|
||||
var bar_total_w = ANIMATOR.frames_total * timeline_scale;
|
||||
var key_holding = noone;
|
||||
|
||||
resetTimelineMask();
|
||||
if(!is_surface(timeline_surface) || !surface_exists(timeline_surface))
|
||||
|
@ -212,6 +337,9 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
draw_sprite_stretched(s_ui_panel_bg, 1, 0, 0, bar_w, dope_sheet_h);
|
||||
draw_sprite_stretched_ext(s_ui_panel_bg, 1, 0, 0, bar_total_w, dope_sheet_h, c_ltgray, 1);
|
||||
|
||||
draw_set_color(merge_color(c_ui_blue_dkblack, c_black, 0.4));
|
||||
draw_rectangle(0, 0, bar_total_w, 16, false);
|
||||
|
||||
dope_sheet_y_max = 0;
|
||||
var key_y = 24 + dope_sheet_y, key_y_node, _node = noone;
|
||||
for( var i = 0; i < ds_list_size(anim_properties); i++ ) {
|
||||
|
@ -233,7 +361,7 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
key_y += 18;
|
||||
dope_sheet_y_max += 18;
|
||||
|
||||
if(prop.value.show_graph) {
|
||||
if(prop.animator.show_graph) {
|
||||
draw_sprite_stretched_ext(s_ui_panel_bg, 0, 0, key_y - 4, bar_total_w, graph_h, c_ui_blue_ltgrey, 1);
|
||||
key_y += graph_h + 8;
|
||||
dope_sheet_y_max += graph_h + 8;
|
||||
|
@ -246,7 +374,7 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
for(var i = 0; i < ANIMATOR.frames_total; i += 10) {
|
||||
var bar_line_x = i * timeline_scale + timeline_shift;
|
||||
draw_set_color(c_ui_blue_black);
|
||||
draw_line(bar_line_x, 12, bar_line_x, dope_sheet_h);
|
||||
draw_line(bar_line_x, 16, bar_line_x, dope_sheet_h);
|
||||
|
||||
draw_set_text(f_p2, fa_center, fa_bottom, c_ui_blue_grey);
|
||||
draw_text(bar_line_x, 16, string(i));
|
||||
|
@ -255,7 +383,7 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
var bar_line_x = ANIMATOR.current_frame * timeline_scale + timeline_shift;
|
||||
var cc = ANIMATOR.is_playing? c_ui_lime : c_ui_orange;
|
||||
draw_set_color(cc);
|
||||
draw_line(bar_line_x, 12, bar_line_x, dope_sheet_h);
|
||||
draw_line(bar_line_x, 16, bar_line_x, dope_sheet_h);
|
||||
|
||||
draw_set_text(f_p2, fa_center, fa_bottom, cc);
|
||||
draw_text(bar_line_x, 16, string(ANIMATOR.current_frame));
|
||||
|
@ -265,6 +393,7 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
var key_sy = 24 + dope_sheet_y;
|
||||
var key_y, key_y_node, _node = noone;
|
||||
draw_set_text(f_p2, fa_left, fa_top, c_ui_blue_white);
|
||||
var key_hover = noone;
|
||||
|
||||
key_y = key_sy;
|
||||
for( var i = 0; i < ds_list_size(anim_properties); i++ ) {
|
||||
|
@ -276,7 +405,7 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
}
|
||||
|
||||
if(prop.node.anim_show && prop.on_end != KEYFRAME_END.hold) {
|
||||
var key_list = prop.value.values;
|
||||
var key_list = prop.animator.values;
|
||||
if(ds_list_size(key_list) > 1) {
|
||||
var keyframe_s = key_list[| 0].time;
|
||||
var keyframe_e = key_list[| ds_list_size(key_list) - 1].time;
|
||||
|
@ -290,7 +419,7 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
}
|
||||
|
||||
if(!prop.node.anim_show) {
|
||||
key_y += 18;
|
||||
//key_y += 18;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -300,10 +429,10 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
var _gy_top = key_y + 16;
|
||||
var _gy_bottom = _gy_top + graph_h - 8;
|
||||
|
||||
var amo = ds_list_size(prop.value.values);
|
||||
var amo = ds_list_size(prop.animator.values);
|
||||
|
||||
for(var k = 0; k < amo; k++) {
|
||||
var key_val = prop.value.values[| k].value;
|
||||
var key_val = prop.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]);
|
||||
|
@ -316,20 +445,23 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
}
|
||||
|
||||
for(var k = 0; k < amo; k++) {
|
||||
var key = prop.value.values[| k];
|
||||
var key = prop.animator.values[| k];
|
||||
var t = key.time * timeline_scale + timeline_shift;
|
||||
|
||||
#region easing line
|
||||
if(key.ease_in > 0) {
|
||||
draw_set_color(c_ui_blue_dkgrey);
|
||||
var _tx = t - key.ease_in * timeline_scale * 2;
|
||||
draw_line_width(_tx, key_y - 1, t, key_y - 1, 2);
|
||||
if(key.ease_in_type == CURVE_TYPE.bezier)
|
||||
draw_line_width(_tx, key_y - 1, t, key_y - 1, 2);
|
||||
else if(key.ease_in_type == CURVE_TYPE.damping)
|
||||
draw_sprite_stretched_ext(s_timeline_elastic, 0, _tx, key_y - 4, t - _tx, 8, c_ui_blue_dkgrey, 1);
|
||||
|
||||
if(FOCUS == panel && point_in_circle(msx, msy, _tx, key_y, 6)) {
|
||||
if(HOVER == panel && point_in_circle(msx, msy, _tx, key_y, 6)) {
|
||||
key_hover = key;
|
||||
draw_sprite_ext(s_timeline_keyframe, 2, _tx, key_y, 1, 1, 0, c_ui_blue_white, 2);
|
||||
if(mouse_check_button_pressed(mb_left)) {
|
||||
keyframe_dragging = prop.value.values[| k];
|
||||
prop_selecting = prop;
|
||||
if(FOCUS == panel && mouse_check_button_pressed(mb_left)) {
|
||||
keyframe_dragging = prop.animator.values[| k];
|
||||
keyframe_drag_type = KEYFRAME_DRAG_TYPE.ease_in;
|
||||
}
|
||||
} else
|
||||
|
@ -337,13 +469,16 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
} if(key.ease_out > 0) {
|
||||
draw_set_color(c_ui_blue_dkgrey);
|
||||
var _tx = t + key.ease_out * timeline_scale * 2;
|
||||
draw_line_width(t, key_y - 1, _tx, key_y - 1, 2);
|
||||
if(key.ease_out_type == CURVE_TYPE.bezier)
|
||||
draw_line_width(t, key_y - 1, _tx, key_y - 1, 2);
|
||||
else if(key.ease_out_type == CURVE_TYPE.damping)
|
||||
draw_sprite_stretched_ext(s_timeline_elastic, 0, t, key_y - 4, _tx - t, 8, c_ui_blue_dkgrey, 1);
|
||||
|
||||
if(FOCUS == panel && point_in_circle(msx, msy, _tx, key_y, 6)) {
|
||||
if(HOVER == panel && point_in_circle(msx, msy, _tx, key_y, 6)) {
|
||||
key_hover = key;
|
||||
draw_sprite_ext(s_timeline_keyframe, 3, _tx, key_y, 1, 1, 0, c_ui_blue_white, 2);
|
||||
if(mouse_check_button_pressed(mb_left)) {
|
||||
keyframe_dragging = prop.value.values[| k];
|
||||
prop_selecting = prop;
|
||||
if(FOCUS == panel && mouse_check_button_pressed(mb_left)) {
|
||||
keyframe_dragging = prop.animator.values[| k];
|
||||
keyframe_drag_type = KEYFRAME_DRAG_TYPE.ease_out;
|
||||
}
|
||||
} else
|
||||
|
@ -351,9 +486,9 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
}
|
||||
#endregion
|
||||
|
||||
if(prop.value.show_graph && k < amo - 1) {
|
||||
if(prop.animator.show_graph && k < amo - 1) {
|
||||
#region graph
|
||||
var key_next = prop.value.values[| k + 1];
|
||||
var key_next = prop.animator.values[| k + 1];
|
||||
var a = key.ease_out;
|
||||
var b = key_next.ease_in;
|
||||
var dx = key_next.time - key.time;
|
||||
|
@ -382,7 +517,7 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
var _step = 1 / 20;
|
||||
for( var _r = 0; _r <= 1; _r += _step ) {
|
||||
nx = t + _r * dx * timeline_scale;
|
||||
nly = bezier_interpol_x(a, b, _r);
|
||||
var nly = prop.animator.interpolate(key, key_next, _r);
|
||||
|
||||
if(is_array(key.value)) {
|
||||
for( var ki = 0; ki < array_length(key.value); ki++ ) {
|
||||
|
@ -411,12 +546,12 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
}
|
||||
}
|
||||
|
||||
if(prop.value.show_graph) {
|
||||
if(ds_list_size(prop.value.values) > 0) {
|
||||
var key_first = prop.value.values[| 0];
|
||||
#region graph pre-post line
|
||||
if(prop.animator.show_graph && ds_list_size(prop.animator.values) > 0) {
|
||||
var key_first = prop.animator.values[| 0];
|
||||
var t_first = key_first.time * timeline_scale + timeline_shift;
|
||||
|
||||
var key_last = prop.value.values[| ds_list_size(prop.value.values) - 1];
|
||||
var key_last = prop.animator.values[| ds_list_size(prop.animator.values) - 1];
|
||||
var t_last = key_last.time * timeline_scale + timeline_shift;
|
||||
|
||||
var oy = 0;
|
||||
|
@ -441,114 +576,206 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
|
||||
key_y += graph_h + 8;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
key_y += 18;
|
||||
}
|
||||
|
||||
key_y = key_sy;
|
||||
_node = noone;
|
||||
for( var i = 0; i < ds_list_size(anim_properties); i++ ) {
|
||||
var prop = anim_properties[| i];
|
||||
#region keyframes
|
||||
key_y = key_sy;
|
||||
_node = noone;
|
||||
|
||||
if(_node != prop.node) {
|
||||
_node = prop.node;
|
||||
if(keyframe_boxing) {
|
||||
draw_set_color(c_ui_orange);
|
||||
draw_rectangle(keyframe_box_sx, keyframe_box_sy, msx, msy, true);
|
||||
draw_set_alpha(0.05);
|
||||
draw_rectangle(keyframe_box_sx, keyframe_box_sy, msx, msy, false);
|
||||
draw_set_alpha(1);
|
||||
|
||||
key_y += 6;
|
||||
key_y_node = key_y;
|
||||
key_y += 22;
|
||||
if(mouse_check_button_released(mb_left))
|
||||
keyframe_boxing = false;
|
||||
}
|
||||
|
||||
var key_remove = -1;
|
||||
for(var k = 0; k < ds_list_size(prop.value.values); k++) {
|
||||
var t = prop.value.values[| k].time * timeline_scale + timeline_shift;
|
||||
for( var i = 0; i < ds_list_size(anim_properties); i++ ) {
|
||||
var prop = anim_properties[| i];
|
||||
|
||||
if(_node != prop.node) {
|
||||
_node = prop.node;
|
||||
|
||||
key_y += 6;
|
||||
key_y_node = key_y;
|
||||
key_y += 22;
|
||||
}
|
||||
|
||||
for(var k = 0; k < ds_list_size(prop.animator.values); k++) {
|
||||
var t = prop.animator.values[| k].time * timeline_scale + timeline_shift;
|
||||
var keyframe = prop.animator.values[| k];
|
||||
|
||||
if(!prop.node.anim_show) {
|
||||
draw_sprite_ext(s_timeline_keyframe, 0, t, key_y_node, 1, 1, 0, c_ui_blue_grey, 1);
|
||||
continue;
|
||||
}
|
||||
|
||||
var cc = c_ui_blue_grey;
|
||||
if(HOVER == panel && point_in_circle(msx, msy, t, key_y, 8)) {
|
||||
cc = c_ui_blue_white;
|
||||
key_hover = keyframe;
|
||||
|
||||
if(FOCUS == panel) {
|
||||
if(DOUBLE_CLICK) {
|
||||
keyframe_dragging = keyframe;
|
||||
keyframe_drag_type = KEYFRAME_DRAG_TYPE.ease_both;
|
||||
} else if(mouse_check_button_pressed(mb_left)) {
|
||||
keyframe_dragging = keyframe;
|
||||
keyframe_drag_type = KEYFRAME_DRAG_TYPE.move;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(stagger_mode == 1 && ds_list_exist(keyframe_selecting, keyframe))
|
||||
cc = c_ui_orange;
|
||||
|
||||
draw_sprite_ext(s_timeline_keyframe, 1, t, key_y, 1, 1, 0, cc, 1);
|
||||
if(ds_list_exist(keyframe_selecting, keyframe))
|
||||
draw_sprite_ext(s_timeline_keyframe_selecting, 0, t, key_y, 1, 1, 0, c_ui_orange, 1);
|
||||
|
||||
if(keyframe_boxing) {
|
||||
var box_x0 = min(keyframe_box_sx, msx);
|
||||
var box_x1 = max(keyframe_box_sx, msx);
|
||||
var box_y0 = min(keyframe_box_sy, msy);
|
||||
var box_y1 = max(keyframe_box_sy, msy);
|
||||
|
||||
if(!point_in_rectangle(t, key_y, box_x0, box_y0, box_x1, box_y1) && ds_list_exist(keyframe_selecting, keyframe))
|
||||
ds_list_remove(keyframe_selecting, keyframe);
|
||||
if(point_in_rectangle(t, key_y, box_x0, box_y0, box_x1, box_y1) && !ds_list_exist(keyframe_selecting, keyframe))
|
||||
ds_list_add(keyframe_selecting, keyframe);
|
||||
}
|
||||
}
|
||||
|
||||
if(prop.node.anim_show) {
|
||||
if(FOCUS == panel && point_in_circle(msx, msy, t, key_y, 6)) {
|
||||
draw_sprite_ext(s_timeline_keyframe, 1, t, key_y, 1, 1, 0, c_ui_blue_white, 1);
|
||||
key_holding = prop.value.values[| k];
|
||||
if(prop.animator.show_graph)
|
||||
key_y += graph_h + 8;
|
||||
|
||||
if(DOUBLE_CLICK) {
|
||||
keyframe_dragging = prop.value.values[| k];
|
||||
prop_selecting = prop;
|
||||
keyframe_drag_type = KEYFRAME_DRAG_TYPE.ease_both;
|
||||
} else if(mouse_check_button_pressed(mb_left)) {
|
||||
keyframe_dragging = prop.value.values[| k];
|
||||
prop_selecting = prop;
|
||||
keyframe_drag_type = KEYFRAME_DRAG_TYPE.move;
|
||||
} else if(mouse_check_button_pressed(mb_right)) {
|
||||
key_remove = k;
|
||||
key_y += 18;
|
||||
}
|
||||
}
|
||||
|
||||
if(FOCUS == panel && point_in_rectangle(msx, msy, 0, 16, dope_sheet_w, dope_sheet_h)) {
|
||||
if(mouse_check_button_pressed(mb_left) || mouse_check_button_pressed(mb_right)) {
|
||||
if(key_hover == noone) {
|
||||
ds_list_clear(keyframe_selecting);
|
||||
} else {
|
||||
if(keyboard_check(vk_shift)) {
|
||||
if(ds_list_exist(keyframe_selecting, key_hover))
|
||||
ds_list_remove(keyframe_selecting, key_hover);
|
||||
else
|
||||
ds_list_add(keyframe_selecting, key_hover)
|
||||
} else {
|
||||
if(!ds_list_exist(keyframe_selecting, key_hover)) {
|
||||
ds_list_clear(keyframe_selecting);
|
||||
ds_list_add(keyframe_selecting, key_hover);
|
||||
}
|
||||
}
|
||||
} else
|
||||
draw_sprite_ext(s_timeline_keyframe, 1, t, key_y, 1, 1, 0, c_ui_blue_grey, 1);
|
||||
}
|
||||
}
|
||||
|
||||
draw_sprite_ext(s_timeline_keyframe, 0, t, key_y_node, 1, 1, 0, c_ui_blue_grey, 1);
|
||||
}
|
||||
if(key_remove != -1)
|
||||
prop.removeKeyframe(key_remove);
|
||||
|
||||
if(prop.node.anim_show) {
|
||||
if(prop.value.show_graph)
|
||||
key_y += graph_h + 8;
|
||||
|
||||
key_y += 18;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region keyframes
|
||||
if(keyframe_dragging && prop_selecting) {
|
||||
key_holding = keyframe_dragging;
|
||||
|
||||
if(keyframe_drag_type == KEYFRAME_DRAG_TYPE.move) {
|
||||
var tt = clamp(round((mx - bar_x) / timeline_scale) + timeline_shift, 0, ANIMATOR.frames_total);
|
||||
keyframe_dragging.time = floor(tt);
|
||||
timeline_show_time = floor(tt);
|
||||
|
||||
var _e_in = keyframe_dragging.ease_in;
|
||||
var _e_ou = keyframe_dragging.ease_out;
|
||||
|
||||
if(mouse_check_button_released(mb_left)) {
|
||||
var _index = ds_list_find_index(prop_selecting.value.values, keyframe_dragging);
|
||||
ds_list_delete(prop_selecting.value.values, _index);
|
||||
recordAction(ACTION_TYPE.list_delete, prop_selecting.value.values, [keyframe_dragging, _index]);
|
||||
|
||||
prop_selecting.value.setValue(keyframe_dragging.value, false, keyframe_dragging.time, _e_in, _e_ou);
|
||||
|
||||
keyframe_dragging = noone;
|
||||
prop_selecting = noone;
|
||||
}
|
||||
} else {
|
||||
var dx = (keyframe_dragging.time - (mx - bar_x) / timeline_scale) * timeline_scale / 64;
|
||||
dx = clamp(abs(dx), 0, 0.9);
|
||||
if(dx < 0.1) dx = 0;
|
||||
|
||||
var _in = keyframe_dragging.ease_in;
|
||||
var _ot = keyframe_dragging.ease_out;
|
||||
switch(keyframe_drag_type) {
|
||||
case KEYFRAME_DRAG_TYPE.ease_in :
|
||||
keyframe_dragging.ease_in = dx;
|
||||
break;
|
||||
case KEYFRAME_DRAG_TYPE.ease_out :
|
||||
keyframe_dragging.ease_out = dx;
|
||||
break;
|
||||
case KEYFRAME_DRAG_TYPE.ease_both :
|
||||
keyframe_dragging.ease_in = dx;
|
||||
keyframe_dragging.ease_out = dx;
|
||||
break;
|
||||
}
|
||||
|
||||
if(mouse_check_button_released(mb_left)) {
|
||||
recordAction(ACTION_TYPE.var_modify, keyframe_dragging, [_in, "ease_in"]);
|
||||
recordAction(ACTION_TYPE.var_modify, keyframe_dragging, [_ot, "ease_out"]);
|
||||
|
||||
keyframe_dragging = noone;
|
||||
prop_selecting = noone;
|
||||
if(mouse_check_button_pressed(mb_left)) {
|
||||
if(stagger_mode == 1) {
|
||||
if(key_hover == noone || !ds_list_exist(keyframe_selecting, key_hover))
|
||||
stagger_mode = 0;
|
||||
else {
|
||||
arrangeKeys();
|
||||
stagger_index = ds_list_find_index(keyframe_selecting, key_hover);
|
||||
stagger_mode = 2;
|
||||
}
|
||||
} else if(stagger_mode == 2) {
|
||||
stagger_mode = 0;
|
||||
} else if(key_hover == noone) {
|
||||
keyframe_boxing = true;
|
||||
keyframe_box_sx = msx;
|
||||
keyframe_box_sy = msy;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(FOCUS == panel && mouse_check_button_pressed(mb_right)) {
|
||||
if(!ds_list_empty(keyframe_selecting)) {
|
||||
dialogCall(o_dialog_menubox, mouse_mx + 8, mouse_my + 8)
|
||||
.setMenu(keyframe_menu);
|
||||
}
|
||||
}
|
||||
|
||||
if(keyframe_dragging) {
|
||||
if(keyframe_drag_type == KEYFRAME_DRAG_TYPE.move) {
|
||||
var tt = clamp(round((mx - bar_x) / timeline_scale) + timeline_shift, 0, ANIMATOR.frames_total);
|
||||
var sh = tt - keyframe_dragging.time;
|
||||
|
||||
for( var i = 0; i < ds_list_size(keyframe_selecting); i++ ) {
|
||||
var k = keyframe_selecting[| i];
|
||||
var kt = k.time + sh;
|
||||
|
||||
k.anim.setKeyTime(k, kt, false);
|
||||
}
|
||||
|
||||
timeline_show_time = floor(tt);
|
||||
|
||||
if(mouse_check_button_released(mb_left)) {
|
||||
keyframe_dragging = noone;
|
||||
|
||||
for( var i = 0; i < ds_list_size(keyframe_selecting); i++ ) {
|
||||
var k = keyframe_selecting[| i];
|
||||
k.anim.setKeyTime(k, k.time);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
var dx = (keyframe_dragging.time - (mx - bar_x) / timeline_scale) / 2;
|
||||
dx = clamp(abs(dx), 0, 0.9);
|
||||
if(dx < 0.1) dx = 0;
|
||||
|
||||
var _in = keyframe_dragging.ease_in;
|
||||
var _ot = keyframe_dragging.ease_out;
|
||||
switch(keyframe_drag_type) {
|
||||
case KEYFRAME_DRAG_TYPE.ease_in :
|
||||
for( var i = 0; i < ds_list_size(keyframe_selecting); i++ ) {
|
||||
var k = keyframe_selecting[| i];
|
||||
k.ease_in = dx;
|
||||
}
|
||||
break;
|
||||
case KEYFRAME_DRAG_TYPE.ease_out :
|
||||
for( var i = 0; i < ds_list_size(keyframe_selecting); i++ ) {
|
||||
var k = keyframe_selecting[| i];
|
||||
k.ease_out = dx;
|
||||
}
|
||||
break;
|
||||
case KEYFRAME_DRAG_TYPE.ease_both :
|
||||
for( var i = 0; i < ds_list_size(keyframe_selecting); i++ ) {
|
||||
var k = keyframe_selecting[| i];
|
||||
k.ease_in = dx;
|
||||
k.ease_out = dx;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if(mouse_check_button_released(mb_left)) {
|
||||
recordAction(ACTION_TYPE.var_modify, keyframe_dragging, [_in, "ease_in"]);
|
||||
recordAction(ACTION_TYPE.var_modify, keyframe_dragging, [_ot, "ease_out"]);
|
||||
|
||||
keyframe_dragging = noone;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region stagger
|
||||
if(stagger_mode == 2) {
|
||||
var ts = keyframe_selecting[| stagger_index].time;
|
||||
var tm = clamp(round((mx - bar_x) / timeline_scale) + timeline_shift, 0, ANIMATOR.frames_total);
|
||||
|
||||
var stg = tm - ts;
|
||||
staggerKeys(stagger_index, stg);
|
||||
}
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
gpu_set_blendmode(bm_subtract);
|
||||
|
@ -611,8 +838,8 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
|
||||
if(FOCUS == panel && mouse_check_button_pressed(mb_left)) {
|
||||
var _t = -1;
|
||||
for(var j = 0; j < ds_list_size(prop.value.values); j++) {
|
||||
var _key = prop.value.values[| j];
|
||||
for(var j = 0; j < ds_list_size(prop.animator.values); j++) {
|
||||
var _key = prop.animator.values[| j];
|
||||
if(_key.time < ANIMATOR.current_frame) {
|
||||
_t = _key.time;
|
||||
}
|
||||
|
@ -628,8 +855,8 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
draw_sprite_ext(s_prop_keyframe, 2, tx, ty, 1, 1, 0, c_ui_blue_white, 1);
|
||||
|
||||
if(FOCUS == panel && mouse_check_button_pressed(mb_left)) {
|
||||
for(var j = 0; j < ds_list_size(prop.value.values); j++) {
|
||||
var _key = prop.value.values[| j];
|
||||
for(var j = 0; j < ds_list_size(prop.animator.values); j++) {
|
||||
var _key = prop.animator.values[| j];
|
||||
if(_key.time > ANIMATOR.current_frame) {
|
||||
ANIMATOR.real_frame = _key.time;
|
||||
ANIMATOR.is_scrubing = true;
|
||||
|
@ -646,20 +873,20 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
|
||||
if(FOCUS == panel && mouse_check_button_pressed(mb_left)) {
|
||||
var _add = false;
|
||||
for(var j = 0; j < ds_list_size(prop.value.values); j++) {
|
||||
var _key = prop.value.values[| j];
|
||||
for(var j = 0; j < ds_list_size(prop.animator.values); j++) {
|
||||
var _key = prop.animator.values[| j];
|
||||
if(_key.time == ANIMATOR.current_frame) {
|
||||
if(ds_list_size(prop.value.values) > 1)
|
||||
ds_list_delete(prop.value.values, j);
|
||||
if(ds_list_size(prop.animator.values) > 1)
|
||||
ds_list_delete(prop.animator.values, j);
|
||||
_add = true;
|
||||
break;
|
||||
} else if(_key.time > ANIMATOR.current_frame) {
|
||||
ds_list_insert(prop.value.values, j, new valueKey(ANIMATOR.current_frame, prop.getValue()));
|
||||
ds_list_insert(prop.animator.values, j, new valueKey(ANIMATOR.current_frame, prop.getValue(), prop.animator));
|
||||
_add = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!_add) ds_list_add(prop.value.values, new valueKey(ANIMATOR.current_frame, prop.getValue()));
|
||||
if(!_add) ds_list_add(prop.animator.values, new valueKey(ANIMATOR.current_frame, prop.getValue(), prop.animator));
|
||||
}
|
||||
} else
|
||||
draw_sprite_ext(s_prop_keyframe, 1, tx, ty, 1, 1, 0, c_ui_orange, 1);
|
||||
|
@ -667,14 +894,14 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
if(isGraphable(prop.type)) {
|
||||
var tx = tool_width - 68 - 16 * 0;
|
||||
if(HOVER == panel && point_in_circle(msx, msy, tx, ty, 8)) {
|
||||
draw_sprite_ext(s_timeline_graph, 1, tx, ty, 1, 1, 0, prop.value.show_graph? c_ui_orange_light : c_ui_blue_white, 1);
|
||||
draw_sprite_ext(s_timeline_graph, 1, tx, ty, 1, 1, 0, prop.animator.show_graph? c_ui_orange_light : c_ui_blue_white, 1);
|
||||
TOOLTIP = "Show graph";
|
||||
|
||||
if(FOCUS == panel && mouse_check_button_pressed(mb_left)) {
|
||||
prop.value.show_graph = !prop.value.show_graph;
|
||||
prop.animator.show_graph = !prop.animator.show_graph;
|
||||
}
|
||||
} else
|
||||
draw_sprite_ext(s_timeline_graph, 1, tx, ty, 1, 1, 0, prop.value.show_graph? c_ui_orange : c_ui_blue_grey, 1);
|
||||
draw_sprite_ext(s_timeline_graph, 1, tx, ty, 1, 1, 0, prop.animator.show_graph? c_ui_orange : c_ui_blue_grey, 1);
|
||||
}
|
||||
|
||||
var tx = tool_width - 72 - 16 * 4.5;
|
||||
|
@ -692,7 +919,7 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
draw_sprite_ext(s_timeline_clock, 1, 22, key_y - 1, 1, 1, 0, c_ui_blue_white, 1);
|
||||
|
||||
if(FOCUS == panel && mouse_check_button_pressed(mb_left)) {
|
||||
prop.value.is_anim = !prop.value.is_anim;
|
||||
prop.animator.is_anim = !prop.animator.is_anim;
|
||||
updatePropertyList();
|
||||
}
|
||||
} else
|
||||
|
@ -701,7 +928,7 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
draw_set_color(c_ui_blue_white);
|
||||
draw_text(32, key_y, prop.name);
|
||||
|
||||
if(prop.value.show_graph)
|
||||
if(prop.animator.show_graph)
|
||||
key_y += graph_h + 8;
|
||||
|
||||
key_y += 18;
|
||||
|
@ -760,25 +987,23 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
var inspecting = PANEL_INSPECTOR.inspecting;
|
||||
|
||||
if(inspecting && inspecting.use_cache) {
|
||||
#region cache
|
||||
for(var i = 0; i < ANIMATOR.frames_total; i++) {
|
||||
if(i >= array_length(inspecting.cached_output)) {
|
||||
for(var i = 0; i < ANIMATOR.frames_total; i++) {
|
||||
if(i >= array_length(inspecting.cached_output)) {
|
||||
//??
|
||||
} else {
|
||||
var x0 = i * timeline_scale + timeline_shift;
|
||||
var x1 = (i + 1) * timeline_scale + timeline_shift;
|
||||
|
||||
} else {
|
||||
var x0 = i * timeline_scale + timeline_shift;
|
||||
var x1 = (i + 1) * timeline_scale + timeline_shift;
|
||||
|
||||
var sh = inspecting.cached_output[i];
|
||||
if(is_surface(sh))
|
||||
draw_set_color(c_lime);
|
||||
else
|
||||
draw_set_color(c_red);
|
||||
draw_set_alpha(0.5);
|
||||
draw_rectangle(x0, bar_h - 4, x1, bar_h, false);
|
||||
draw_set_alpha(1);
|
||||
}
|
||||
var sh = inspecting.cached_output[i];
|
||||
if(is_surface(sh))
|
||||
draw_set_color(c_lime);
|
||||
else
|
||||
draw_set_color(c_red);
|
||||
draw_set_alpha(0.5);
|
||||
draw_rectangle(x0, bar_h - 4, x1, bar_h, false);
|
||||
draw_set_alpha(1);
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
@ -788,14 +1013,16 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
for( var i = 0; i < ds_list_size(anim_properties); i++ ) {
|
||||
var prop = anim_properties[| i];
|
||||
|
||||
for(var k = 0; k < ds_list_size(prop.value.values); k++) {
|
||||
var t = prop.value.values[| k].time * timeline_scale + timeline_shift;
|
||||
for(var k = 0; k < ds_list_size(prop.animator.values); k++) {
|
||||
var t = prop.animator.values[| k].time * timeline_scale + timeline_shift;
|
||||
draw_sprite_ext(s_timeline_keyframe, 1, t, key_y, 1, 1, 0, c_ui_blue_grey, 1);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region pan zoom
|
||||
timeline_shift = lerp_float(timeline_shift, timeline_shift_to, 5);
|
||||
|
||||
if(timeline_scubbing) {
|
||||
ANIMATOR.real_frame = clamp((mx - bar_x) / timeline_scale + timeline_shift, 0, ANIMATOR.frames_total);
|
||||
timeline_show_time = ANIMATOR.current_frame;
|
||||
|
@ -809,34 +1036,51 @@ function Panel_Animation(_panel) : PanelContent(_panel) constructor {
|
|||
timeline_scubbing = false;
|
||||
}
|
||||
if(timeline_dragging) {
|
||||
timeline_shift = clamp(timeline_drag_sx + mx - timeline_drag_mx, -max(bar_total_w - bar_w, 0), 0);
|
||||
timeline_shift_to = clamp(timeline_drag_sx + mx - timeline_drag_mx, -max(bar_total_w - bar_w, 0), 0);
|
||||
timeline_shift = timeline_shift_to;
|
||||
dope_sheet_y_to = clamp(timeline_drag_sy + my - timeline_drag_my, -dope_sheet_y_max, 0);
|
||||
|
||||
if(mouse_check_button_released(mb_middle))
|
||||
timeline_dragging = false;
|
||||
}
|
||||
|
||||
if(HOVER == panel && point_in_rectangle(mx, my, bar_x, 8, bar_x + bar_w, h - 8)) {
|
||||
if(mouse_wheel_down()) {
|
||||
timeline_scale = max(timeline_scale - 1, 1);
|
||||
timeline_shift = 0;
|
||||
}
|
||||
if(mouse_wheel_up()) {
|
||||
timeline_scale = min(timeline_scale + 1, 24);
|
||||
timeline_shift = 0;
|
||||
if(HOVER == panel) {
|
||||
if(point_in_rectangle(mx, my, bar_x, 16, bar_x + bar_w, bar_y - 8)) {
|
||||
if(mouse_wheel_down()) {
|
||||
timeline_scale = max(timeline_scale - 1, 1);
|
||||
timeline_shift_to = 0;
|
||||
}
|
||||
|
||||
if(mouse_wheel_up()) {
|
||||
timeline_scale = min(timeline_scale + 1, 24);
|
||||
timeline_shift_to = 0;
|
||||
}
|
||||
|
||||
if(mouse_check_button_pressed(mb_middle)) {
|
||||
timeline_dragging = true;
|
||||
|
||||
timeline_drag_sx = timeline_shift;
|
||||
timeline_drag_sy = dope_sheet_y_to;
|
||||
timeline_drag_mx = mx;
|
||||
timeline_drag_my = my;
|
||||
}
|
||||
}
|
||||
|
||||
if(mouse_check_button_pressed(mb_middle)) {
|
||||
timeline_dragging = true;
|
||||
if(point_in_rectangle(mx, my, bar_x, bar_y, bar_x + bar_w, bar_y + bar_h)) {
|
||||
if(mouse_wheel_down())
|
||||
timeline_shift_to = clamp(timeline_shift_to - 64, -max(bar_total_w - bar_w, 0), 0);
|
||||
if(mouse_wheel_up())
|
||||
timeline_shift_to = clamp(timeline_shift_to + 64, -max(bar_total_w - bar_w, 0), 0);
|
||||
|
||||
timeline_drag_sx = timeline_shift;
|
||||
timeline_drag_sy = dope_sheet_y_to;
|
||||
timeline_drag_mx = mx;
|
||||
timeline_drag_my = my;
|
||||
if(FOCUS == panel && mouse_check_button_pressed(mb_left)) {
|
||||
timeline_scubbing = true;
|
||||
timeline_scub_st = ANIMATOR.current_frame;
|
||||
_scrub_frame = timeline_scub_st;
|
||||
}
|
||||
}
|
||||
|
||||
if(FOCUS == panel && mouse_check_button_pressed(mb_left)) {
|
||||
if(key_holding == noone) {
|
||||
if(point_in_rectangle(mx, my, bar_x, 8, bar_x + bar_w, 8 + 16)) {
|
||||
if(FOCUS == panel && mouse_check_button_pressed(mb_left)) {
|
||||
timeline_scubbing = true;
|
||||
timeline_scub_st = ANIMATOR.current_frame;
|
||||
_scrub_frame = timeline_scub_st;
|
||||
|
|
|
@ -627,7 +627,7 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor {
|
|||
function doCompose() {
|
||||
if(ds_list_empty(nodes_select_list)) return;
|
||||
|
||||
var cx = 0;
|
||||
var cx = -99999;
|
||||
var cy = 0;
|
||||
|
||||
for(var i = 0; i < ds_list_size(nodes_select_list); i++) {
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
function Inspector_Custom_Renderer(draw) constructor {
|
||||
h = 64;
|
||||
self.draw = draw;
|
||||
}
|
||||
|
||||
function Panel_Inspector(_panel) : PanelContent(_panel) constructor {
|
||||
context_str = "Inspector";
|
||||
|
||||
|
@ -20,8 +25,8 @@ function Panel_Inspector(_panel) : PanelContent(_panel) constructor {
|
|||
if(inspecting) inspecting.name = txt;
|
||||
})
|
||||
|
||||
addHotkey("Inspector", "Copy property", "C", MOD_KEY.ctrl, function() {propSelectCopy(); });
|
||||
addHotkey("Inspector", "Paste property", "V", MOD_KEY.ctrl, function() {propSelectPaste(); });
|
||||
addHotkey("Inspector", "Copy property", "C", MOD_KEY.ctrl, function() { propSelectCopy(); });
|
||||
addHotkey("Inspector", "Paste property", "V", MOD_KEY.ctrl, function() { propSelectPaste(); });
|
||||
|
||||
contentPane = new scrollPane(content_w, content_h, function(_y, _m) {
|
||||
var con_w = contentPane.surface_w;
|
||||
|
@ -38,7 +43,7 @@ function Panel_Inspector(_panel) : PanelContent(_panel) constructor {
|
|||
inspecting.inspecting = true;
|
||||
prop_hover = noone;
|
||||
var jun;
|
||||
var amo = inspecting.input_display_list == -1? ds_list_size(inspecting.inputs) : max(ds_list_size(inspecting.inputs), array_length(inspecting.input_display_list));
|
||||
var amo = inspecting.input_display_list == -1? ds_list_size(inspecting.inputs) : array_length(inspecting.input_display_list);
|
||||
var hh = 16;
|
||||
|
||||
for(var i = 0; i < amo; i++) {
|
||||
|
@ -48,16 +53,16 @@ function Panel_Inspector(_panel) : PanelContent(_panel) constructor {
|
|||
if(inspecting.input_display_list == -1) {
|
||||
jun = inspecting.inputs[| i];
|
||||
} else {
|
||||
var jun_list_arr = inspecting.input_display_list[i];
|
||||
if(is_array(jun_list_arr)) {
|
||||
var txt = jun_list_arr[0];
|
||||
var coll = jun_list_arr[1];
|
||||
var jun_disp = inspecting.input_display_list[i];
|
||||
if(is_array(jun_disp)) {
|
||||
var txt = jun_disp[0];
|
||||
var coll = jun_disp[1];
|
||||
|
||||
if(HOVER == panel && point_in_rectangle(_m[0], _m[1], 0, yy, con_w, yy + 32)) {
|
||||
draw_sprite_stretched_ext(s_node_name, 0, 0, yy, con_w, 32, c_ui_blue_white, 1);
|
||||
|
||||
if(FOCUS == panel && mouse_check_button_pressed(mb_left)) {
|
||||
jun_list_arr[@ 1] = !coll;
|
||||
jun_disp[@ 1] = !coll;
|
||||
}
|
||||
} else
|
||||
draw_sprite_stretched_ext(s_node_name, 0, 0, yy, con_w, 32, c_ui_blue_ltgrey, 1);
|
||||
|
@ -66,7 +71,7 @@ function Panel_Inspector(_panel) : PanelContent(_panel) constructor {
|
|||
draw_set_text(f_p0, fa_left, fa_center, c_ui_blue_white);
|
||||
draw_text(32, yy + 32 / 2, txt);
|
||||
|
||||
hh += 32 + 8 + 24 * !coll;
|
||||
hh += 32 + 8 + 16 * !coll;
|
||||
|
||||
if(coll) {
|
||||
var j = i + 1;
|
||||
|
@ -81,8 +86,11 @@ function Panel_Inspector(_panel) : PanelContent(_panel) constructor {
|
|||
continue;
|
||||
} else
|
||||
continue;
|
||||
} else if(is_struct(jun_list_arr)) {
|
||||
|
||||
} else if(is_struct(jun_disp) && instanceof(jun_disp) == "Inspector_Custom_Renderer") {
|
||||
var hov = HOVER == panel;
|
||||
var foc = FOCUS == panel;
|
||||
jun_disp.draw(6, yy, con_w - 12, _m, hov, foc);
|
||||
hh += jun_disp.h + 20;
|
||||
continue;
|
||||
}
|
||||
jun = inspecting.inputs[| inspecting.input_display_list[i]];
|
||||
|
@ -90,25 +98,27 @@ function Panel_Inspector(_panel) : PanelContent(_panel) constructor {
|
|||
|
||||
if(!jun.show_in_inspector || jun.type == VALUE_TYPE.surface || jun.type == VALUE_TYPE.object) continue;
|
||||
|
||||
var index = jun.value_from == noone? jun.value.is_anim : 2;
|
||||
draw_sprite_ext(s_animate_clock, index, 16, yy, 1, 1, 0, c_white, 0.8);
|
||||
if(HOVER == panel && point_in_circle(_m[0], _m[1], 16, yy, 12)) {
|
||||
draw_sprite_ext(s_animate_clock, index, 16, yy, 1, 1, 0, c_white, 1);
|
||||
var butx = 16;
|
||||
var index = jun.value_from == noone? jun.animator.is_anim : 2;
|
||||
draw_sprite_ext(s_animate_clock, index, butx, yy, 1, 1, 0, c_white, 0.8);
|
||||
if(HOVER == panel && point_in_circle(_m[0], _m[1], butx, yy, 10)) {
|
||||
draw_sprite_ext(s_animate_clock, index, butx, yy, 1, 1, 0, c_white, 1);
|
||||
TOOLTIP = "Toggle animation";
|
||||
|
||||
if(mouse_check_button_pressed(mb_left)) {
|
||||
if(jun.value_from != noone)
|
||||
jun.removeFrom();
|
||||
else
|
||||
jun.value.is_anim = !jun.value.is_anim;
|
||||
jun.animator.is_anim = !jun.animator.is_anim;
|
||||
PANEL_ANIMATION.updatePropertyList();
|
||||
}
|
||||
}
|
||||
|
||||
butx += 20;
|
||||
index = jun.visible;
|
||||
draw_sprite_ext(s_junc_visible, index, 36, yy, 1, 1, 0, c_white, 0.8);
|
||||
if(HOVER == panel && point_in_circle(_m[0], _m[1], 36, yy, 12)) {
|
||||
draw_sprite_ext(s_junc_visible, index, 36, yy, 1, 1, 0, c_white, 1);
|
||||
draw_sprite_ext(s_junc_visible, index, butx, yy, 1, 1, 0, c_white, 0.8);
|
||||
if(HOVER == panel && point_in_circle(_m[0], _m[1], butx, yy, 10)) {
|
||||
draw_sprite_ext(s_junc_visible, index, butx, yy, 1, 1, 0, c_white, 1);
|
||||
TOOLTIP = "Visibility";
|
||||
|
||||
if(mouse_check_button_pressed(mb_left)) {
|
||||
|
@ -121,12 +131,12 @@ function Panel_Inspector(_panel) : PanelContent(_panel) constructor {
|
|||
var labelStringWidth = string_width(jun.name) + 32;
|
||||
|
||||
#region anim
|
||||
if(lineBreak && jun.value.is_anim) {
|
||||
if(lineBreak && jun.animator.is_anim) {
|
||||
var bx = w - 72;
|
||||
var by = yy - 12;
|
||||
if(buttonInstant(s_button_hide, bx, by, 24, 24, _m, FOCUS == panel, HOVER == panel, "", s_prop_keyframe, 2) == 2) {
|
||||
for(var j = 0; j < ds_list_size(jun.value.values); j++) {
|
||||
var _key = jun.value.values[| j];
|
||||
for(var j = 0; j < ds_list_size(jun.animator.values); j++) {
|
||||
var _key = jun.animator.values[| j];
|
||||
if(_key.time > ANIMATOR.current_frame) {
|
||||
ANIMATOR.real_frame = _key.time;
|
||||
ANIMATOR.is_scrubing = true;
|
||||
|
@ -137,8 +147,8 @@ function Panel_Inspector(_panel) : PanelContent(_panel) constructor {
|
|||
|
||||
bx -= 26;
|
||||
var cc = c_ui_blue_grey;
|
||||
for(var j = 0; j < ds_list_size(jun.value.values); j++) {
|
||||
if(jun.value.values[| j].time == ANIMATOR.current_frame) {
|
||||
for(var j = 0; j < ds_list_size(jun.animator.values); j++) {
|
||||
if(jun.animator.values[| j].time == ANIMATOR.current_frame) {
|
||||
cc = c_ui_orange;
|
||||
break;
|
||||
}
|
||||
|
@ -146,27 +156,27 @@ function Panel_Inspector(_panel) : PanelContent(_panel) constructor {
|
|||
|
||||
if(buttonInstant(s_button_hide, bx, by, 24, 24, _m, FOCUS == panel, HOVER == panel, cc == c_ui_blue_grey? "Add keyframe" : "Remove keyframe", s_prop_keyframe, 1, cc) == 2) {
|
||||
var _add = false;
|
||||
for(var j = 0; j < ds_list_size(jun.value.values); j++) {
|
||||
var _key = jun.value.values[| j];
|
||||
for(var j = 0; j < ds_list_size(jun.animator.values); j++) {
|
||||
var _key = jun.animator.values[| j];
|
||||
if(_key.time == ANIMATOR.current_frame) {
|
||||
if(ds_list_size(jun.value.values) > 1)
|
||||
ds_list_delete(jun.value.values, j);
|
||||
if(ds_list_size(jun.animator.values) > 1)
|
||||
ds_list_delete(jun.animator.values, j);
|
||||
_add = true;
|
||||
break;
|
||||
} else if(_key.time > ANIMATOR.current_frame) {
|
||||
ds_list_insert(jun.value.values, j, new valueKey(ANIMATOR.current_frame, jun.getValue()));
|
||||
ds_list_insert(jun.animator.values, j, new valueKey(ANIMATOR.current_frame, jun.getValue(), jun.animator));
|
||||
_add = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!_add) ds_list_add(jun.value.values, new valueKey(ANIMATOR.current_frame, jun.getValue()));
|
||||
if(!_add) ds_list_add(jun.animator.values, new valueKey(ANIMATOR.current_frame, jun.getValue(), jun.animator));
|
||||
}
|
||||
|
||||
bx -= 26;
|
||||
if(buttonInstant(s_button_hide, bx, by, 24, 24, _m, FOCUS == panel, HOVER == panel, "", s_prop_keyframe, 0) == 2) {
|
||||
var _t = -1;
|
||||
for(var j = 0; j < ds_list_size(jun.value.values); j++) {
|
||||
var _key = jun.value.values[| j];
|
||||
for(var j = 0; j < ds_list_size(jun.animator.values); j++) {
|
||||
var _key = jun.animator.values[| j];
|
||||
if(_key.time < ANIMATOR.current_frame) {
|
||||
_t = _key.time;
|
||||
}
|
||||
|
@ -250,7 +260,8 @@ function Panel_Inspector(_panel) : PanelContent(_panel) constructor {
|
|||
widH = 200;
|
||||
break;
|
||||
case VALUE_DISPLAY.puppet_control :
|
||||
jun.editWidget.draw(editBoxX, editBoxY, editBoxW, editBoxH, jun.showValue()[4], _m);
|
||||
widH = jun.editWidget.draw(editBoxX, editBoxY, editBoxW, jun.showValue(), _m, 16 + x, top_bar_h + y);
|
||||
padd = 48;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -338,8 +349,8 @@ function Panel_Inspector(_panel) : PanelContent(_panel) constructor {
|
|||
[ "Reset value", function() {
|
||||
__dialog_junction.setValue(__dialog_junction.def_val);
|
||||
}],
|
||||
[ __dialog_junction.value.is_anim? "Remove animation" : "Add animation", function() {
|
||||
__dialog_junction.value.is_anim = !__dialog_junction.value.is_anim;
|
||||
[ __dialog_junction.animator.is_anim? "Remove animation" : "Add animation", function() {
|
||||
__dialog_junction.animator.is_anim = !__dialog_junction.animator.is_anim;
|
||||
PANEL_ANIMATION.updatePropertyList();
|
||||
}],
|
||||
-1,
|
||||
|
@ -386,7 +397,7 @@ function Panel_Inspector(_panel) : PanelContent(_panel) constructor {
|
|||
var bx = w - 44;
|
||||
var by = 12;
|
||||
|
||||
if(buttonInstant(s_button_hide, bx, by, 32, 32, [mx, my], FOCUS == panel, HOVER == panel, "Update node", s_refresh_24) == 2)
|
||||
if(buttonInstant(s_button_hide, bx, by, 32, 32, [mx, my], FOCUS == panel, HOVER == panel, "Run node", s_sequence_control, 1) == 2)
|
||||
inspecting.doUpdate();
|
||||
}
|
||||
|
||||
|
@ -413,6 +424,8 @@ function Panel_Inspector(_panel) : PanelContent(_panel) constructor {
|
|||
|
||||
if(PANEL_GRAPH.node_focus && inspecting != PANEL_GRAPH.node_focus) {
|
||||
inspecting = PANEL_GRAPH.node_focus;
|
||||
if(inspecting != noone)
|
||||
inspecting.onInspect();
|
||||
contentPane.scroll_y = 0;
|
||||
contentPane.scroll_y_to = 0;
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"isDnD": false,
|
||||
"isCompatibility": false,
|
||||
"parent": {
|
||||
"name": "inspector",
|
||||
"path": "folders/panels/inspector.yy",
|
||||
"name": "inspectors",
|
||||
"path": "folders/panels/data/inspectors.yy",
|
||||
},
|
||||
}
|
|
@ -400,6 +400,7 @@ function Panel_Preview(_panel) : PanelContent(_panel) constructor {
|
|||
if(FOCUS == panel && point_in_rectangle(mx, my, xx, yy, xx + prev_w * ss, yy + prev_h * ss)) {
|
||||
if(mouse_check_button_pressed(mb_left)) {
|
||||
_node.preview_index = i;
|
||||
_node.onValueUpdate(0);
|
||||
do_fullView = true;
|
||||
}
|
||||
draw_surface_ext_safe(prev, xx, yy, ss, ss, 0, c_white, 1);
|
||||
|
@ -477,9 +478,14 @@ function Panel_Preview(_panel) : PanelContent(_panel) constructor {
|
|||
|
||||
if(toggle) {
|
||||
if(is_array(_node.tools[i][1])) {
|
||||
if(tool_index == i)
|
||||
tool_sub_index = (tool_sub_index + 1) % array_length(_node.tools[i][1]);
|
||||
tool_index = i;
|
||||
if(tool_index == i) {
|
||||
tool_sub_index++;
|
||||
if(tool_sub_index >= array_length(_node.tools[i][1])) {
|
||||
tool_index = -1;
|
||||
tool_sub_index = 0;
|
||||
}
|
||||
} else
|
||||
tool_index = i;
|
||||
} else
|
||||
tool_index = tool_index == i? -1 : i;
|
||||
}
|
||||
|
|
|
@ -29,6 +29,9 @@
|
|||
PREF_MAP[? "node_show_time"] = true;
|
||||
|
||||
PREF_MAP[? "shape_separation_max"] = 32;
|
||||
PREF_MAP[? "level_resolution"] = 64;
|
||||
PREF_MAP[? "level_max_sampling"] = 32;
|
||||
PREF_MAP[? "verlet_iteration"] = 4;
|
||||
|
||||
PREF_MAP[? "collection_preview_speed"] = 60;
|
||||
#endregion
|
||||
|
|
BIN
sprites/s_circle_12/6423615f-5917-453e-9374-1bcfd05b6a25.png
Normal file
After Width: | Height: | Size: 168 B |
After Width: | Height: | Size: 168 B |
73
sprites/s_circle_12/s_circle_12.yy
Normal file
|
@ -0,0 +1,73 @@
|
|||
{
|
||||
"resourceType": "GMSprite",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "s_circle_12",
|
||||
"bboxMode": 0,
|
||||
"collisionKind": 1,
|
||||
"type": 0,
|
||||
"origin": 4,
|
||||
"preMultiplyAlpha": false,
|
||||
"edgeFiltering": false,
|
||||
"collisionTolerance": 0,
|
||||
"swfPrecision": 2.525,
|
||||
"bbox_left": 2,
|
||||
"bbox_right": 9,
|
||||
"bbox_top": 2,
|
||||
"bbox_bottom": 9,
|
||||
"HTile": false,
|
||||
"VTile": false,
|
||||
"For3D": false,
|
||||
"width": 12,
|
||||
"height": 12,
|
||||
"textureGroupId": {
|
||||
"name": "Default",
|
||||
"path": "texturegroups/Default",
|
||||
},
|
||||
"swatchColours": null,
|
||||
"gridX": 0,
|
||||
"gridY": 0,
|
||||
"frames": [
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"6423615f-5917-453e-9374-1bcfd05b6a25",},
|
||||
],
|
||||
"sequence": {
|
||||
"resourceType": "GMSequence",
|
||||
"resourceVersion": "1.4",
|
||||
"name": "s_circle_12",
|
||||
"timeUnits": 1,
|
||||
"playback": 1,
|
||||
"playbackSpeed": 30.0,
|
||||
"playbackSpeedType": 0,
|
||||
"autoRecord": true,
|
||||
"volume": 1.0,
|
||||
"length": 1.0,
|
||||
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
|
||||
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
|
||||
"tracks": [
|
||||
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
|
||||
{"id":"2ad68a56-8352-49fc-8539-ea6d6a8ef953","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"6423615f-5917-453e-9374-1bcfd05b6a25","path":"sprites/s_circle_12/s_circle_12.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
|
||||
],
|
||||
"visibleRange": {"x":0.0,"y":0.0,},
|
||||
"lockOrigin": false,
|
||||
"showBackdrop": true,
|
||||
"showBackdropImage": false,
|
||||
"backdropImagePath": "",
|
||||
"backdropImageOpacity": 0.5,
|
||||
"backdropWidth": 1366,
|
||||
"backdropHeight": 768,
|
||||
"backdropXOffset": 0.0,
|
||||
"backdropYOffset": 0.0,
|
||||
"xorigin": 6,
|
||||
"yorigin": 6,
|
||||
"eventToFunction": {},
|
||||
"eventStubScript": null,
|
||||
},
|
||||
"layers": [
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"794700ff-a9f8-465d-80a1-4c6a34f7aac0","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
|
||||
],
|
||||
"nineSlice": null,
|
||||
"parent": {
|
||||
"name": "icon",
|
||||
"path": "folders/sprites/icon.yy",
|
||||
},
|
||||
}
|
BIN
sprites/s_circle_16/ac00e22e-05e7-4497-8a94-6635a0274a05.png
Normal file
After Width: | Height: | Size: 219 B |
After Width: | Height: | Size: 219 B |
73
sprites/s_circle_16/s_circle_16.yy
Normal file
|
@ -0,0 +1,73 @@
|
|||
{
|
||||
"resourceType": "GMSprite",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "s_circle_16",
|
||||
"bboxMode": 0,
|
||||
"collisionKind": 1,
|
||||
"type": 0,
|
||||
"origin": 4,
|
||||
"preMultiplyAlpha": false,
|
||||
"edgeFiltering": false,
|
||||
"collisionTolerance": 0,
|
||||
"swfPrecision": 2.525,
|
||||
"bbox_left": 2,
|
||||
"bbox_right": 13,
|
||||
"bbox_top": 2,
|
||||
"bbox_bottom": 13,
|
||||
"HTile": false,
|
||||
"VTile": false,
|
||||
"For3D": false,
|
||||
"width": 16,
|
||||
"height": 16,
|
||||
"textureGroupId": {
|
||||
"name": "Default",
|
||||
"path": "texturegroups/Default",
|
||||
},
|
||||
"swatchColours": null,
|
||||
"gridX": 0,
|
||||
"gridY": 0,
|
||||
"frames": [
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"ac00e22e-05e7-4497-8a94-6635a0274a05",},
|
||||
],
|
||||
"sequence": {
|
||||
"resourceType": "GMSequence",
|
||||
"resourceVersion": "1.4",
|
||||
"name": "s_circle_16",
|
||||
"timeUnits": 1,
|
||||
"playback": 1,
|
||||
"playbackSpeed": 30.0,
|
||||
"playbackSpeedType": 0,
|
||||
"autoRecord": true,
|
||||
"volume": 1.0,
|
||||
"length": 1.0,
|
||||
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
|
||||
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
|
||||
"tracks": [
|
||||
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
|
||||
{"id":"f266384d-8f82-423d-8e8b-ffa7fd515244","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"ac00e22e-05e7-4497-8a94-6635a0274a05","path":"sprites/s_circle_16/s_circle_16.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
|
||||
],
|
||||
"visibleRange": {"x":0.0,"y":0.0,},
|
||||
"lockOrigin": false,
|
||||
"showBackdrop": true,
|
||||
"showBackdropImage": false,
|
||||
"backdropImagePath": "",
|
||||
"backdropImageOpacity": 0.5,
|
||||
"backdropWidth": 1366,
|
||||
"backdropHeight": 768,
|
||||
"backdropXOffset": 0.0,
|
||||
"backdropYOffset": 0.0,
|
||||
"xorigin": 8,
|
||||
"yorigin": 8,
|
||||
"eventToFunction": {},
|
||||
"eventStubScript": null,
|
||||
},
|
||||
"layers": [
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"9dba13e2-3c43-4d6d-85c9-38876c29da09","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
|
||||
],
|
||||
"nineSlice": null,
|
||||
"parent": {
|
||||
"name": "icon",
|
||||
"path": "folders/sprites/icon.yy",
|
||||
},
|
||||
}
|
BIN
sprites/s_control_pin/5e3fb7ab-4e3e-4876-b3c9-078486766e1a.png
Normal file
After Width: | Height: | Size: 323 B |
After Width: | Height: | Size: 323 B |
73
sprites/s_control_pin/s_control_pin.yy
Normal file
|
@ -0,0 +1,73 @@
|
|||
{
|
||||
"resourceType": "GMSprite",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "s_control_pin",
|
||||
"bboxMode": 0,
|
||||
"collisionKind": 1,
|
||||
"type": 0,
|
||||
"origin": 4,
|
||||
"preMultiplyAlpha": false,
|
||||
"edgeFiltering": false,
|
||||
"collisionTolerance": 0,
|
||||
"swfPrecision": 2.525,
|
||||
"bbox_left": 2,
|
||||
"bbox_right": 22,
|
||||
"bbox_top": 1,
|
||||
"bbox_bottom": 21,
|
||||
"HTile": false,
|
||||
"VTile": false,
|
||||
"For3D": false,
|
||||
"width": 24,
|
||||
"height": 24,
|
||||
"textureGroupId": {
|
||||
"name": "Default",
|
||||
"path": "texturegroups/Default",
|
||||
},
|
||||
"swatchColours": null,
|
||||
"gridX": 0,
|
||||
"gridY": 0,
|
||||
"frames": [
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"5e3fb7ab-4e3e-4876-b3c9-078486766e1a",},
|
||||
],
|
||||
"sequence": {
|
||||
"resourceType": "GMSequence",
|
||||
"resourceVersion": "1.4",
|
||||
"name": "s_control_pin",
|
||||
"timeUnits": 1,
|
||||
"playback": 1,
|
||||
"playbackSpeed": 30.0,
|
||||
"playbackSpeedType": 0,
|
||||
"autoRecord": true,
|
||||
"volume": 1.0,
|
||||
"length": 1.0,
|
||||
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
|
||||
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
|
||||
"tracks": [
|
||||
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
|
||||
{"id":"c503bb0b-3f9b-4825-a0bd-1e1c93c4ecab","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"5e3fb7ab-4e3e-4876-b3c9-078486766e1a","path":"sprites/s_control_pin/s_control_pin.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
|
||||
],
|
||||
"visibleRange": {"x":0.0,"y":0.0,},
|
||||
"lockOrigin": false,
|
||||
"showBackdrop": true,
|
||||
"showBackdropImage": false,
|
||||
"backdropImagePath": "",
|
||||
"backdropImageOpacity": 0.5,
|
||||
"backdropWidth": 1366,
|
||||
"backdropHeight": 768,
|
||||
"backdropXOffset": 0.0,
|
||||
"backdropYOffset": 0.0,
|
||||
"xorigin": 12,
|
||||
"yorigin": 12,
|
||||
"eventToFunction": {},
|
||||
"eventStubScript": null,
|
||||
},
|
||||
"layers": [
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"b390e3b7-b72a-469f-bebf-9fa706f64a16","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
|
||||
],
|
||||
"nineSlice": null,
|
||||
"parent": {
|
||||
"name": "tools",
|
||||
"path": "folders/sprites/tools.yy",
|
||||
},
|
||||
}
|
BIN
sprites/s_control_unpin/e2965e71-8c59-458a-8945-aef69af2f1a4.png
Normal file
After Width: | Height: | Size: 299 B |
After Width: | Height: | Size: 299 B |
73
sprites/s_control_unpin/s_control_unpin.yy
Normal file
|
@ -0,0 +1,73 @@
|
|||
{
|
||||
"resourceType": "GMSprite",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "s_control_unpin",
|
||||
"bboxMode": 0,
|
||||
"collisionKind": 1,
|
||||
"type": 0,
|
||||
"origin": 4,
|
||||
"preMultiplyAlpha": false,
|
||||
"edgeFiltering": false,
|
||||
"collisionTolerance": 0,
|
||||
"swfPrecision": 2.525,
|
||||
"bbox_left": 2,
|
||||
"bbox_right": 22,
|
||||
"bbox_top": 1,
|
||||
"bbox_bottom": 21,
|
||||
"HTile": false,
|
||||
"VTile": false,
|
||||
"For3D": false,
|
||||
"width": 24,
|
||||
"height": 24,
|
||||
"textureGroupId": {
|
||||
"name": "Default",
|
||||
"path": "texturegroups/Default",
|
||||
},
|
||||
"swatchColours": null,
|
||||
"gridX": 0,
|
||||
"gridY": 0,
|
||||
"frames": [
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"e2965e71-8c59-458a-8945-aef69af2f1a4",},
|
||||
],
|
||||
"sequence": {
|
||||
"resourceType": "GMSequence",
|
||||
"resourceVersion": "1.4",
|
||||
"name": "s_control_unpin",
|
||||
"timeUnits": 1,
|
||||
"playback": 1,
|
||||
"playbackSpeed": 30.0,
|
||||
"playbackSpeedType": 0,
|
||||
"autoRecord": true,
|
||||
"volume": 1.0,
|
||||
"length": 1.0,
|
||||
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
|
||||
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
|
||||
"tracks": [
|
||||
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
|
||||
{"id":"4fe17b7e-6e06-404e-b7a4-7854c414b3d9","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"e2965e71-8c59-458a-8945-aef69af2f1a4","path":"sprites/s_control_unpin/s_control_unpin.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
|
||||
],
|
||||
"visibleRange": {"x":0.0,"y":0.0,},
|
||||
"lockOrigin": false,
|
||||
"showBackdrop": true,
|
||||
"showBackdropImage": false,
|
||||
"backdropImagePath": "",
|
||||
"backdropImageOpacity": 0.5,
|
||||
"backdropWidth": 1366,
|
||||
"backdropHeight": 768,
|
||||
"backdropXOffset": 0.0,
|
||||
"backdropYOffset": 0.0,
|
||||
"xorigin": 12,
|
||||
"yorigin": 12,
|
||||
"eventToFunction": {},
|
||||
"eventStubScript": null,
|
||||
},
|
||||
"layers": [
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"08994959-dcdd-4b21-b956-e70eef200465","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
|
||||
],
|
||||
"nineSlice": null,
|
||||
"parent": {
|
||||
"name": "tools",
|
||||
"path": "folders/sprites/tools.yy",
|
||||
},
|
||||
}
|
BIN
sprites/s_hamburger_16/75110183-e53f-42ea-84e7-7f16f90c2d1a.png
Normal file
After Width: | Height: | Size: 113 B |
After Width: | Height: | Size: 113 B |
73
sprites/s_hamburger_16/s_hamburger_16.yy
Normal file
|
@ -0,0 +1,73 @@
|
|||
{
|
||||
"resourceType": "GMSprite",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "s_hamburger_16",
|
||||
"bboxMode": 0,
|
||||
"collisionKind": 1,
|
||||
"type": 0,
|
||||
"origin": 4,
|
||||
"preMultiplyAlpha": false,
|
||||
"edgeFiltering": false,
|
||||
"collisionTolerance": 0,
|
||||
"swfPrecision": 2.525,
|
||||
"bbox_left": 2,
|
||||
"bbox_right": 13,
|
||||
"bbox_top": 3,
|
||||
"bbox_bottom": 12,
|
||||
"HTile": false,
|
||||
"VTile": false,
|
||||
"For3D": false,
|
||||
"width": 16,
|
||||
"height": 16,
|
||||
"textureGroupId": {
|
||||
"name": "Default",
|
||||
"path": "texturegroups/Default",
|
||||
},
|
||||
"swatchColours": null,
|
||||
"gridX": 0,
|
||||
"gridY": 0,
|
||||
"frames": [
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"75110183-e53f-42ea-84e7-7f16f90c2d1a",},
|
||||
],
|
||||
"sequence": {
|
||||
"resourceType": "GMSequence",
|
||||
"resourceVersion": "1.4",
|
||||
"name": "s_hamburger_16",
|
||||
"timeUnits": 1,
|
||||
"playback": 1,
|
||||
"playbackSpeed": 30.0,
|
||||
"playbackSpeedType": 0,
|
||||
"autoRecord": true,
|
||||
"volume": 1.0,
|
||||
"length": 1.0,
|
||||
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
|
||||
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
|
||||
"tracks": [
|
||||
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
|
||||
{"id":"a7134dc0-a9d3-451f-8f00-5f84e4ae199a","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"75110183-e53f-42ea-84e7-7f16f90c2d1a","path":"sprites/s_hamburger_16/s_hamburger_16.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
|
||||
],
|
||||
"visibleRange": {"x":0.0,"y":0.0,},
|
||||
"lockOrigin": false,
|
||||
"showBackdrop": true,
|
||||
"showBackdropImage": false,
|
||||
"backdropImagePath": "",
|
||||
"backdropImageOpacity": 0.5,
|
||||
"backdropWidth": 1366,
|
||||
"backdropHeight": 768,
|
||||
"backdropXOffset": 0.0,
|
||||
"backdropYOffset": 0.0,
|
||||
"xorigin": 8,
|
||||
"yorigin": 8,
|
||||
"eventToFunction": {},
|
||||
"eventStubScript": null,
|
||||
},
|
||||
"layers": [
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"b2bb01cb-dccd-4cd7-80d5-24a272de46e9","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
|
||||
],
|
||||
"nineSlice": null,
|
||||
"parent": {
|
||||
"name": "inspector",
|
||||
"path": "folders/sprites/inspector.yy",
|
||||
},
|
||||
}
|
|
@ -67,7 +67,7 @@
|
|||
],
|
||||
"nineSlice": null,
|
||||
"parent": {
|
||||
"name": "icon",
|
||||
"path": "folders/sprites/icon.yy",
|
||||
"name": "timeline",
|
||||
"path": "folders/sprites/timeline.yy",
|
||||
},
|
||||
}
|
BIN
sprites/s_timeline_ease/24290950-35fc-4ecc-ba0d-649f84bd31cc.png
Normal file
After Width: | Height: | Size: 349 B |
BIN
sprites/s_timeline_ease/28ea8a9d-44bd-46ed-9942-6ba74ffd0726.png
Normal file
After Width: | Height: | Size: 158 B |
BIN
sprites/s_timeline_ease/66c132f9-ae6a-429c-8cf4-30a9d47ef7a3.png
Normal file
After Width: | Height: | Size: 364 B |
BIN
sprites/s_timeline_ease/6ca25682-cb07-4b3f-b98f-993a2f6be2f2.png
Normal file
After Width: | Height: | Size: 359 B |
After Width: | Height: | Size: 349 B |
After Width: | Height: | Size: 158 B |
After Width: | Height: | Size: 364 B |
After Width: | Height: | Size: 359 B |
79
sprites/s_timeline_ease/s_timeline_ease.yy
Normal file
|
@ -0,0 +1,79 @@
|
|||
{
|
||||
"resourceType": "GMSprite",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "s_timeline_ease",
|
||||
"bboxMode": 0,
|
||||
"collisionKind": 1,
|
||||
"type": 0,
|
||||
"origin": 4,
|
||||
"preMultiplyAlpha": false,
|
||||
"edgeFiltering": false,
|
||||
"collisionTolerance": 0,
|
||||
"swfPrecision": 2.525,
|
||||
"bbox_left": 3,
|
||||
"bbox_right": 20,
|
||||
"bbox_top": 3,
|
||||
"bbox_bottom": 22,
|
||||
"HTile": false,
|
||||
"VTile": false,
|
||||
"For3D": false,
|
||||
"width": 24,
|
||||
"height": 24,
|
||||
"textureGroupId": {
|
||||
"name": "Default",
|
||||
"path": "texturegroups/Default",
|
||||
},
|
||||
"swatchColours": null,
|
||||
"gridX": 0,
|
||||
"gridY": 0,
|
||||
"frames": [
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"28ea8a9d-44bd-46ed-9942-6ba74ffd0726",},
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"6ca25682-cb07-4b3f-b98f-993a2f6be2f2",},
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"24290950-35fc-4ecc-ba0d-649f84bd31cc",},
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"66c132f9-ae6a-429c-8cf4-30a9d47ef7a3",},
|
||||
],
|
||||
"sequence": {
|
||||
"resourceType": "GMSequence",
|
||||
"resourceVersion": "1.4",
|
||||
"name": "s_timeline_ease",
|
||||
"timeUnits": 1,
|
||||
"playback": 1,
|
||||
"playbackSpeed": 30.0,
|
||||
"playbackSpeedType": 0,
|
||||
"autoRecord": true,
|
||||
"volume": 1.0,
|
||||
"length": 4.0,
|
||||
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
|
||||
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
|
||||
"tracks": [
|
||||
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
|
||||
{"id":"ee0f9ed2-76e7-4da0-90a8-8f54d08ffa87","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"28ea8a9d-44bd-46ed-9942-6ba74ffd0726","path":"sprites/s_timeline_ease/s_timeline_ease.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
{"id":"00a4ab7c-dc24-46aa-92e1-cf5c34649d70","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"6ca25682-cb07-4b3f-b98f-993a2f6be2f2","path":"sprites/s_timeline_ease/s_timeline_ease.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
{"id":"9e9a2d7f-167c-45ad-9f42-ac50d2b4adc4","Key":2.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"24290950-35fc-4ecc-ba0d-649f84bd31cc","path":"sprites/s_timeline_ease/s_timeline_ease.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
{"id":"bd5eaa76-9373-45a7-9b15-268475d1a531","Key":3.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"66c132f9-ae6a-429c-8cf4-30a9d47ef7a3","path":"sprites/s_timeline_ease/s_timeline_ease.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
|
||||
],
|
||||
"visibleRange": null,
|
||||
"lockOrigin": false,
|
||||
"showBackdrop": true,
|
||||
"showBackdropImage": false,
|
||||
"backdropImagePath": "",
|
||||
"backdropImageOpacity": 0.5,
|
||||
"backdropWidth": 1366,
|
||||
"backdropHeight": 768,
|
||||
"backdropXOffset": 0.0,
|
||||
"backdropYOffset": 0.0,
|
||||
"xorigin": 12,
|
||||
"yorigin": 12,
|
||||
"eventToFunction": {},
|
||||
"eventStubScript": null,
|
||||
},
|
||||
"layers": [
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"bb50a3b3-cd69-4d09-b7d9-e02fa14ec76b","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
|
||||
],
|
||||
"nineSlice": null,
|
||||
"parent": {
|
||||
"name": "timeline",
|
||||
"path": "folders/sprites/timeline.yy",
|
||||
},
|
||||
}
|
After Width: | Height: | Size: 185 B |
After Width: | Height: | Size: 185 B |
97
sprites/s_timeline_elastic/s_timeline_elastic.yy
Normal file
|
@ -0,0 +1,97 @@
|
|||
{
|
||||
"resourceType": "GMSprite",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "s_timeline_elastic",
|
||||
"bboxMode": 0,
|
||||
"collisionKind": 1,
|
||||
"type": 0,
|
||||
"origin": 5,
|
||||
"preMultiplyAlpha": false,
|
||||
"edgeFiltering": false,
|
||||
"collisionTolerance": 0,
|
||||
"swfPrecision": 2.525,
|
||||
"bbox_left": 0,
|
||||
"bbox_right": 15,
|
||||
"bbox_top": 1,
|
||||
"bbox_bottom": 6,
|
||||
"HTile": false,
|
||||
"VTile": false,
|
||||
"For3D": false,
|
||||
"width": 16,
|
||||
"height": 8,
|
||||
"textureGroupId": {
|
||||
"name": "Default",
|
||||
"path": "texturegroups/Default",
|
||||
},
|
||||
"swatchColours": null,
|
||||
"gridX": 0,
|
||||
"gridY": 0,
|
||||
"frames": [
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"5c54eeaa-d089-429e-a954-fbb5ccd7e7ab",},
|
||||
],
|
||||
"sequence": {
|
||||
"resourceType": "GMSequence",
|
||||
"resourceVersion": "1.4",
|
||||
"name": "s_timeline_elastic",
|
||||
"timeUnits": 1,
|
||||
"playback": 1,
|
||||
"playbackSpeed": 30.0,
|
||||
"playbackSpeedType": 0,
|
||||
"autoRecord": true,
|
||||
"volume": 1.0,
|
||||
"length": 1.0,
|
||||
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
|
||||
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
|
||||
"tracks": [
|
||||
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
|
||||
{"id":"a3732077-7d60-482b-a834-c1991ac97890","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"5c54eeaa-d089-429e-a954-fbb5ccd7e7ab","path":"sprites/s_timeline_elastic/s_timeline_elastic.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
|
||||
],
|
||||
"visibleRange": null,
|
||||
"lockOrigin": false,
|
||||
"showBackdrop": true,
|
||||
"showBackdropImage": false,
|
||||
"backdropImagePath": "",
|
||||
"backdropImageOpacity": 0.5,
|
||||
"backdropWidth": 1366,
|
||||
"backdropHeight": 768,
|
||||
"backdropXOffset": 0.0,
|
||||
"backdropYOffset": 0.0,
|
||||
"xorigin": 16,
|
||||
"yorigin": 4,
|
||||
"eventToFunction": {},
|
||||
"eventStubScript": null,
|
||||
},
|
||||
"layers": [
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"e08dafd8-6479-4081-9f2c-f460ba81c9dd","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
|
||||
],
|
||||
"nineSlice": {
|
||||
"left": 0,
|
||||
"top": 0,
|
||||
"right": 0,
|
||||
"bottom": 0,
|
||||
"guideColour": [
|
||||
4294902015,
|
||||
4294902015,
|
||||
4294902015,
|
||||
4294902015,
|
||||
],
|
||||
"highlightColour": 1728023040,
|
||||
"highlightStyle": 0,
|
||||
"enabled": true,
|
||||
"tileMode": [
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
],
|
||||
"resourceVersion": "1.0",
|
||||
"loadedVersion": null,
|
||||
"resourceType": "GMNineSliceData",
|
||||
},
|
||||
"parent": {
|
||||
"name": "timeline",
|
||||
"path": "folders/sprites/timeline.yy",
|
||||
},
|
||||
}
|
|
@ -67,7 +67,7 @@
|
|||
],
|
||||
"nineSlice": null,
|
||||
"parent": {
|
||||
"name": "icon",
|
||||
"path": "folders/sprites/icon.yy",
|
||||
"name": "timeline",
|
||||
"path": "folders/sprites/timeline.yy",
|
||||
},
|
||||
}
|
After Width: | Height: | Size: 157 B |
After Width: | Height: | Size: 121 B |
After Width: | Height: | Size: 181 B |
After Width: | Height: | Size: 171 B |
Before Width: | Height: | Size: 186 B |
Before Width: | Height: | Size: 131 B |
Before Width: | Height: | Size: 119 B |
Before Width: | Height: | Size: 124 B |
After Width: | Height: | Size: 157 B |
After Width: | Height: | Size: 121 B |
After Width: | Height: | Size: 181 B |
After Width: | Height: | Size: 171 B |
Before Width: | Height: | Size: 177 B |
Before Width: | Height: | Size: 128 B |
Before Width: | Height: | Size: 120 B |
Before Width: | Height: | Size: 122 B |
|
@ -27,10 +27,10 @@
|
|||
"gridX": 0,
|
||||
"gridY": 0,
|
||||
"frames": [
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"975854b1-f396-41f1-850b-daa3f8ca6c80",},
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"918bd556-996d-49f1-8ca1-61ec18a8f49c",},
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"95d975ac-a4aa-408d-adaf-5ae6140e38ff",},
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"c22ff608-5283-4d97-8909-2024b36933e6",},
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"391ccbea-dc4a-4f1a-a4da-ed7fb77dd32a",},
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"3d472492-94cf-4d0a-b0bb-43cad651aad9",},
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"7e409d3c-0555-4eb6-bb4e-bdcf0e885620",},
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"0d0e313c-fafe-42e5-b077-c93fc064bc25",},
|
||||
],
|
||||
"sequence": {
|
||||
"resourceType": "GMSequence",
|
||||
|
@ -47,10 +47,10 @@
|
|||
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
|
||||
"tracks": [
|
||||
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
|
||||
{"id":"69451446-354d-4403-806e-727a2a2fa4eb","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"975854b1-f396-41f1-850b-daa3f8ca6c80","path":"sprites/s_timeline_keyframe/s_timeline_keyframe.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
{"id":"9d87d17c-89e2-4c11-9486-4a56afcc6b5f","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"918bd556-996d-49f1-8ca1-61ec18a8f49c","path":"sprites/s_timeline_keyframe/s_timeline_keyframe.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
{"id":"5198804e-6382-47da-aa46-3244405bdbe6","Key":2.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"95d975ac-a4aa-408d-adaf-5ae6140e38ff","path":"sprites/s_timeline_keyframe/s_timeline_keyframe.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
{"id":"829b6f4c-5120-47e9-b360-45294463a498","Key":3.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"c22ff608-5283-4d97-8909-2024b36933e6","path":"sprites/s_timeline_keyframe/s_timeline_keyframe.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
{"id":"81d08e3d-5eb5-408a-892d-81e62481d374","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"391ccbea-dc4a-4f1a-a4da-ed7fb77dd32a","path":"sprites/s_timeline_keyframe/s_timeline_keyframe.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
{"id":"85cbd1c8-f6cf-4853-a959-e6782f57a855","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"3d472492-94cf-4d0a-b0bb-43cad651aad9","path":"sprites/s_timeline_keyframe/s_timeline_keyframe.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
{"id":"2a8845c6-a16c-40f1-a1d9-7340998a7f3e","Key":2.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"7e409d3c-0555-4eb6-bb4e-bdcf0e885620","path":"sprites/s_timeline_keyframe/s_timeline_keyframe.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
{"id":"5f94b9fa-6783-4bc2-889b-9a5769f8fcd7","Key":3.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"0d0e313c-fafe-42e5-b077-c93fc064bc25","path":"sprites/s_timeline_keyframe/s_timeline_keyframe.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
|
||||
],
|
||||
"visibleRange": null,
|
||||
|
@ -69,11 +69,11 @@
|
|||
"eventStubScript": null,
|
||||
},
|
||||
"layers": [
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"f29345e4-38e2-4f17-9134-da1226d86fa3","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"b1392cea-a152-4f40-ac82-ded33d6288af","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
|
||||
],
|
||||
"nineSlice": null,
|
||||
"parent": {
|
||||
"name": "icon",
|
||||
"path": "folders/sprites/icon.yy",
|
||||
"name": "timeline",
|
||||
"path": "folders/sprites/timeline.yy",
|
||||
},
|
||||
}
|
After Width: | Height: | Size: 278 B |
After Width: | Height: | Size: 278 B |
|
@ -0,0 +1,73 @@
|
|||
{
|
||||
"resourceType": "GMSprite",
|
||||
"resourceVersion": "1.0",
|
||||
"name": "s_timeline_keyframe_selecting",
|
||||
"bboxMode": 0,
|
||||
"collisionKind": 1,
|
||||
"type": 0,
|
||||
"origin": 4,
|
||||
"preMultiplyAlpha": false,
|
||||
"edgeFiltering": false,
|
||||
"collisionTolerance": 0,
|
||||
"swfPrecision": 2.525,
|
||||
"bbox_left": 0,
|
||||
"bbox_right": 19,
|
||||
"bbox_top": 0,
|
||||
"bbox_bottom": 19,
|
||||
"HTile": false,
|
||||
"VTile": false,
|
||||
"For3D": false,
|
||||
"width": 20,
|
||||
"height": 20,
|
||||
"textureGroupId": {
|
||||
"name": "Default",
|
||||
"path": "texturegroups/Default",
|
||||
},
|
||||
"swatchColours": null,
|
||||
"gridX": 0,
|
||||
"gridY": 0,
|
||||
"frames": [
|
||||
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"741ad96f-dd2d-4bc7-9ccf-80027d373dc5",},
|
||||
],
|
||||
"sequence": {
|
||||
"resourceType": "GMSequence",
|
||||
"resourceVersion": "1.4",
|
||||
"name": "s_timeline_keyframe_selecting",
|
||||
"timeUnits": 1,
|
||||
"playback": 1,
|
||||
"playbackSpeed": 30.0,
|
||||
"playbackSpeedType": 0,
|
||||
"autoRecord": true,
|
||||
"volume": 1.0,
|
||||
"length": 1.0,
|
||||
"events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MessageEventKeyframe>",},
|
||||
"moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore<MomentsEventKeyframe>",},
|
||||
"tracks": [
|
||||
{"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","spriteId":null,"keyframes":{"Keyframes":[
|
||||
{"id":"78310ebe-afdf-4192-9ec6-f98596db075d","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"741ad96f-dd2d-4bc7-9ccf-80027d373dc5","path":"sprites/s_timeline_keyframe_selecting/s_timeline_keyframe_selecting.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe<SpriteFrameKeyframe>",},
|
||||
],"resourceVersion":"1.0","resourceType":"KeyframeStore<SpriteFrameKeyframe>",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"modifiers":[],},
|
||||
],
|
||||
"visibleRange": null,
|
||||
"lockOrigin": false,
|
||||
"showBackdrop": true,
|
||||
"showBackdropImage": false,
|
||||
"backdropImagePath": "",
|
||||
"backdropImageOpacity": 0.5,
|
||||
"backdropWidth": 1366,
|
||||
"backdropHeight": 768,
|
||||
"backdropXOffset": 0.0,
|
||||
"backdropYOffset": 0.0,
|
||||
"xorigin": 10,
|
||||
"yorigin": 10,
|
||||
"eventToFunction": {},
|
||||
"eventStubScript": null,
|
||||
},
|
||||
"layers": [
|
||||
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"8ed37eb2-3476-40db-aba9-295147fd14b5","visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default",},
|
||||
],
|
||||
"nineSlice": null,
|
||||
"parent": {
|
||||
"name": "timeline",
|
||||
"path": "folders/sprites/timeline.yy",
|
||||
},
|
||||
}
|
After Width: | Height: | Size: 244 B |
After Width: | Height: | Size: 187 B |
After Width: | Height: | Size: 190 B |
After Width: | Height: | Size: 244 B |
After Width: | Height: | Size: 187 B |