From 1a8f2553a3255481d9e4c3d863fdab120fe4aa31 Mon Sep 17 00:00:00 2001 From: MakhamDev Date: Tue, 30 Aug 2022 12:36:37 +0700 Subject: [PATCH] 0.9.1 Panel tool bar, edge detect, etc. --- Pixels Composer.yyp | 16 +- objects/o_main/Create_0.gml | 2 +- objects/o_main/o_main.yy | 1 + scripts/button/button.gml | 27 +- scripts/collection_data/collection_data.gml | 13 +- scripts/coltovec4/coltovec4.gml | 3 + scripts/coltovec4/coltovec4.yy | 12 + scripts/node_canvas/node_canvas.gml | 23 +- scripts/node_data/node_data.gml | 35 +- .../node_edge_detect/node_alpha_to_grey.yy | 12 + scripts/node_edge_detect/node_bw.yy | 12 + .../node_edge_detect/node_color_adjustment.yy | 12 + .../node_color_replacement.yy | 12 + scripts/node_edge_detect/node_edge_detect.gml | 37 ++ scripts/node_edge_detect/node_edge_detect.yy | 12 + scripts/node_edge_detect/node_greyscale.yy | 12 + scripts/node_edge_detect/node_outline.yy | 12 + scripts/node_registry/node_registry.gml | 2 +- .../node_simple_shape/node_simple_shape.gml | 17 +- scripts/node_value/node_value.gml | 40 ++ scripts/panel_graph/panel_graph.gml | 19 +- scripts/panel_inspector/panel_inspector.gml | 20 +- scripts/panel_preview/panel_preview.gml | 403 ++++++++++++++---- scripts/surface_modify/surface_modify.gml | 3 + shaders/sh_edge_detect/sh_edge_detect.fsh | 58 +++ shaders/sh_edge_detect/sh_edge_detect.vsh | 19 + shaders/sh_edge_detect/sh_edge_detect.yy | 11 + shaders/sh_shape/sh_shape.fsh | 7 +- shaders/sh_texture_remap/sh_texture_remap.fsh | 2 +- .../20bf0b30-087f-41ea-9f65-bab0ad8f6cf6.png | Bin 0 -> 478 bytes .../43bd08bf-5a27-4723-8af6-0df84c346384.png | Bin 0 -> 478 bytes .../s_button_path_not_found_icon.yy | 79 ++++ .../531efc3e-504c-45a6-9725-1ba64f8e23ac.png | Bin 0 -> 305 bytes .../6ce7236a-cc07-4536-8c2e-8a75a8a043b5.png | Bin 0 -> 305 bytes .../s_icon_center_canvas.yy | 79 ++++ .../47100fae-7582-4a97-81bb-508596d10bae.png | Bin 0 -> 177 bytes .../bc00b74e-b598-40aa-91a5-2cc0057c98f3.png | Bin 0 -> 241 bytes .../3edb7d08-3473-4cdf-988b-26184f73125e.png | Bin 0 -> 177 bytes .../3edb7d08-3473-4cdf-988b-26184f73125e.png | Bin 0 -> 241 bytes .../s_icon_reset_when_preview.yy | 83 ++++ .../bc27d796-84c8-44f4-aa64-6435547b8859.png | Bin 0 -> 188 bytes .../d1fe4196-5f92-4cb6-81d4-14e195d537f0.png | Bin 0 -> 174 bytes .../ec4f9441-8a68-4767-98e2-fcb8b1e4b808.png | Bin 0 -> 142 bytes .../4e82b6b0-c703-47fb-a44b-7cbec89788b7.png | Bin 0 -> 188 bytes .../4e82b6b0-c703-47fb-a44b-7cbec89788b7.png | Bin 0 -> 174 bytes .../4e82b6b0-c703-47fb-a44b-7cbec89788b7.png | Bin 0 -> 142 bytes .../s_icon_split_view/s_icon_split_view.yy | 87 ++++ .../73c31b10-c743-452c-bbde-8561c3d7c7e5.png | Bin 0 -> 921 bytes .../83e03dba-03e5-4450-aae1-595c8fbfadb3.png | Bin 0 -> 921 bytes .../s_node_edge_detect/s_node_edge_detect.yy | 79 ++++ .../b19f5ed9-3e7e-4707-a86e-2cd903191a15.png | Bin 0 -> 828 bytes .../4dbd65a2-8ab2-46af-83dc-299a290af3a8.png | Bin 0 -> 828 bytes sprites/s_node_error/s_node_error.yy | 103 +++++ sprites/s_node_shape/s_node_shape.yy | 10 +- .../0903a56b-a604-44e6-9f20-66b30b67e2df.png | Bin 0 -> 434 bytes .../e7831c37-1aa9-4d98-aee9-be99c7a88c0d.png | Bin 0 -> 369 bytes .../bcf8f0af-39e1-47ae-8330-c997b5275637.png | Bin 0 -> 434 bytes .../bcf8f0af-39e1-47ae-8330-c997b5275637.png | Bin 0 -> 369 bytes sprites/s_node_val/s_node_val.yy | 83 ++++ .../7642bca8-ad08-4054-afe3-57f6f31ffbd3.png | Bin 0 -> 204 bytes .../c7806bd3-2a3d-4425-9830-87c7beac5e59.png | Bin 0 -> 204 bytes .../s_panel_active_split.yy | 79 ++++ .../1e22b6d2-03c6-43ce-9309-853a1c4dc37e.png | Bin 0 -> 110 bytes .../3f73e0a2-39cf-4a1c-bcf9-9b8a04ac11f6.png | Bin 0 -> 110 bytes sprites/s_toolbar_shadow/s_toolbar_shadow.yy | 79 ++++ 65 files changed, 1477 insertions(+), 138 deletions(-) create mode 100644 scripts/coltovec4/coltovec4.gml create mode 100644 scripts/coltovec4/coltovec4.yy create mode 100644 scripts/node_edge_detect/node_alpha_to_grey.yy create mode 100644 scripts/node_edge_detect/node_bw.yy create mode 100644 scripts/node_edge_detect/node_color_adjustment.yy create mode 100644 scripts/node_edge_detect/node_color_replacement.yy create mode 100644 scripts/node_edge_detect/node_edge_detect.gml create mode 100644 scripts/node_edge_detect/node_edge_detect.yy create mode 100644 scripts/node_edge_detect/node_greyscale.yy create mode 100644 scripts/node_edge_detect/node_outline.yy create mode 100644 shaders/sh_edge_detect/sh_edge_detect.fsh create mode 100644 shaders/sh_edge_detect/sh_edge_detect.vsh create mode 100644 shaders/sh_edge_detect/sh_edge_detect.yy create mode 100644 sprites/s_button_path_not_found_icon/20bf0b30-087f-41ea-9f65-bab0ad8f6cf6.png create mode 100644 sprites/s_button_path_not_found_icon/layers/20bf0b30-087f-41ea-9f65-bab0ad8f6cf6/43bd08bf-5a27-4723-8af6-0df84c346384.png create mode 100644 sprites/s_button_path_not_found_icon/s_button_path_not_found_icon.yy create mode 100644 sprites/s_icon_center_canvas/531efc3e-504c-45a6-9725-1ba64f8e23ac.png create mode 100644 sprites/s_icon_center_canvas/layers/531efc3e-504c-45a6-9725-1ba64f8e23ac/6ce7236a-cc07-4536-8c2e-8a75a8a043b5.png create mode 100644 sprites/s_icon_center_canvas/s_icon_center_canvas.yy create mode 100644 sprites/s_icon_reset_when_preview/47100fae-7582-4a97-81bb-508596d10bae.png create mode 100644 sprites/s_icon_reset_when_preview/bc00b74e-b598-40aa-91a5-2cc0057c98f3.png create mode 100644 sprites/s_icon_reset_when_preview/layers/47100fae-7582-4a97-81bb-508596d10bae/3edb7d08-3473-4cdf-988b-26184f73125e.png create mode 100644 sprites/s_icon_reset_when_preview/layers/bc00b74e-b598-40aa-91a5-2cc0057c98f3/3edb7d08-3473-4cdf-988b-26184f73125e.png create mode 100644 sprites/s_icon_reset_when_preview/s_icon_reset_when_preview.yy create mode 100644 sprites/s_icon_split_view/bc27d796-84c8-44f4-aa64-6435547b8859.png create mode 100644 sprites/s_icon_split_view/d1fe4196-5f92-4cb6-81d4-14e195d537f0.png create mode 100644 sprites/s_icon_split_view/ec4f9441-8a68-4767-98e2-fcb8b1e4b808.png create mode 100644 sprites/s_icon_split_view/layers/bc27d796-84c8-44f4-aa64-6435547b8859/4e82b6b0-c703-47fb-a44b-7cbec89788b7.png create mode 100644 sprites/s_icon_split_view/layers/d1fe4196-5f92-4cb6-81d4-14e195d537f0/4e82b6b0-c703-47fb-a44b-7cbec89788b7.png create mode 100644 sprites/s_icon_split_view/layers/ec4f9441-8a68-4767-98e2-fcb8b1e4b808/4e82b6b0-c703-47fb-a44b-7cbec89788b7.png create mode 100644 sprites/s_icon_split_view/s_icon_split_view.yy create mode 100644 sprites/s_node_edge_detect/73c31b10-c743-452c-bbde-8561c3d7c7e5.png create mode 100644 sprites/s_node_edge_detect/layers/73c31b10-c743-452c-bbde-8561c3d7c7e5/83e03dba-03e5-4450-aae1-595c8fbfadb3.png create mode 100644 sprites/s_node_edge_detect/s_node_edge_detect.yy create mode 100644 sprites/s_node_error/b19f5ed9-3e7e-4707-a86e-2cd903191a15.png create mode 100644 sprites/s_node_error/layers/b19f5ed9-3e7e-4707-a86e-2cd903191a15/4dbd65a2-8ab2-46af-83dc-299a290af3a8.png create mode 100644 sprites/s_node_error/s_node_error.yy create mode 100644 sprites/s_node_val/0903a56b-a604-44e6-9f20-66b30b67e2df.png create mode 100644 sprites/s_node_val/e7831c37-1aa9-4d98-aee9-be99c7a88c0d.png create mode 100644 sprites/s_node_val/layers/0903a56b-a604-44e6-9f20-66b30b67e2df/bcf8f0af-39e1-47ae-8330-c997b5275637.png create mode 100644 sprites/s_node_val/layers/e7831c37-1aa9-4d98-aee9-be99c7a88c0d/bcf8f0af-39e1-47ae-8330-c997b5275637.png create mode 100644 sprites/s_node_val/s_node_val.yy create mode 100644 sprites/s_panel_active_split/7642bca8-ad08-4054-afe3-57f6f31ffbd3.png create mode 100644 sprites/s_panel_active_split/layers/7642bca8-ad08-4054-afe3-57f6f31ffbd3/c7806bd3-2a3d-4425-9830-87c7beac5e59.png create mode 100644 sprites/s_panel_active_split/s_panel_active_split.yy create mode 100644 sprites/s_toolbar_shadow/1e22b6d2-03c6-43ce-9309-853a1c4dc37e.png create mode 100644 sprites/s_toolbar_shadow/layers/1e22b6d2-03c6-43ce-9309-853a1c4dc37e/3f73e0a2-39cf-4a1c-bcf9-9b8a04ac11f6.png create mode 100644 sprites/s_toolbar_shadow/s_toolbar_shadow.yy diff --git a/Pixels Composer.yyp b/Pixels Composer.yyp index 3f4f1ca85..c7ea068f6 100644 --- a/Pixels Composer.yyp +++ b/Pixels Composer.yyp @@ -54,6 +54,7 @@ {"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,}, {"id":{"name":"scrollBox","path":"scripts/scrollBox/scrollBox.yy",},"order":13,}, + {"id":{"name":"colToVec4","path":"scripts/colToVec4/colToVec4.yy",},"order":0,}, {"id":{"name":"draw_surface_blend","path":"scripts/draw_surface_blend/draw_surface_blend.yy",},"order":1,}, {"id":{"name":"blurSurface","path":"scripts/blurSurface/blurSurface.yy",},"order":0,}, {"id":{"name":"s_animate_node_go","path":"sprites/s_animate_node_go/s_animate_node_go.yy",},"order":26,}, @@ -206,6 +207,7 @@ {"id":{"name":"node_crop","path":"scripts/node_crop/node_crop.yy",},"order":8,}, {"id":{"name":"buttonPalette","path":"scripts/buttonPalette/buttonPalette.yy",},"order":6,}, {"id":{"name":"s_node_zigzag","path":"sprites/s_node_zigzag/s_node_zigzag.yy",},"order":0,}, + {"id":{"name":"sh_edge_detect","path":"shaders/sh_edge_detect/sh_edge_detect.yy",},"order":35,}, {"id":{"name":"s_node_timeline_preview","path":"sprites/s_node_timeline_preview/s_node_timeline_preview.yy",},"order":99,}, {"id":{"name":"type_conversion","path":"scripts/type_conversion/type_conversion.yy",},"order":8,}, {"id":{"name":"node_keyframe","path":"scripts/node_keyframe/node_keyframe.yy",},"order":7,}, @@ -248,6 +250,7 @@ {"id":{"name":"sh_blend_screen_alpha","path":"shaders/sh_blend_screen_alpha/sh_blend_screen_alpha.yy",},"order":6,}, {"id":{"name":"node_color_remove","path":"scripts/node_color_remove/node_color_remove.yy",},"order":38,}, {"id":{"name":"s_node_3d_cylinder","path":"sprites/s_node_3d_cylinder/s_node_3d_cylinder.yy",},"order":3,}, + {"id":{"name":"s_panel_active_split","path":"sprites/s_panel_active_split/s_panel_active_split.yy",},"order":2,}, {"id":{"name":"node_perlin","path":"scripts/node_perlin/node_perlin.yy",},"order":2,}, {"id":{"name":"s_node_transform","path":"sprites/s_node_transform/s_node_transform.yy",},"order":101,}, {"id":{"name":"o_dialog_add_multiple_images","path":"objects/o_dialog_add_multiple_images/o_dialog_add_multiple_images.yy",},"order":18,}, @@ -324,6 +327,7 @@ {"id":{"name":"collection_data","path":"scripts/collection_data/collection_data.yy",},"order":1,}, {"id":{"name":"safe_operation","path":"scripts/safe_operation/safe_operation.yy",},"order":6,}, {"id":{"name":"node_shadow","path":"scripts/node_shadow/node_shadow.yy",},"order":17,}, + {"id":{"name":"s_node_edge_detect","path":"sprites/s_node_edge_detect/s_node_edge_detect.yy",},"order":116,}, {"id":{"name":"s_group_24","path":"sprites/s_group_24/s_group_24.yy",},"order":30,}, {"id":{"name":"s_prop_on_end","path":"sprites/s_prop_on_end/s_prop_on_end.yy",},"order":5,}, {"id":{"name":"s_node_warp_mesh","path":"sprites/s_node_warp_mesh/s_node_warp_mesh.yy",},"order":109,}, @@ -333,6 +337,7 @@ {"id":{"name":"node_glow","path":"scripts/node_glow/node_glow.yy",},"order":14,}, {"id":{"name":"sh_blend_min","path":"shaders/sh_blend_min/sh_blend_min.yy",},"order":9,}, {"id":{"name":"s_animation_timing","path":"sprites/s_animation_timing/s_animation_timing.yy",},"order":27,}, + {"id":{"name":"s_node_val","path":"sprites/s_node_val/s_node_val.yy",},"order":16,}, {"id":{"name":"s_node_RGB","path":"sprites/s_node_RGB/s_node_RGB.yy",},"order":84,}, {"id":{"name":"node_polar","path":"scripts/node_polar/node_polar.yy",},"order":5,}, {"id":{"name":"s_node_name","path":"sprites/s_node_name/s_node_name.yy",},"order":3,}, @@ -369,6 +374,7 @@ {"id":{"name":"panel_collection","path":"scripts/panel_collection/panel_collection.yy",},"order":0,}, {"id":{"name":"lerp_float","path":"scripts/lerp_float/lerp_float.yy",},"order":1,}, {"id":{"name":"vectorRangeBox","path":"scripts/vectorRangeBox/vectorRangeBox.yy",},"order":19,}, + {"id":{"name":"s_node_error","path":"sprites/s_node_error/s_node_error.yy",},"order":17,}, {"id":{"name":"sh_draw_vertex_aa","path":"shaders/sh_draw_vertex_aa/sh_draw_vertex_aa.yy",},"order":0,}, {"id":{"name":"sh_outline_only","path":"shaders/sh_outline_only/sh_outline_only.yy",},"order":25,}, {"id":{"name":"node_color_sampler","path":"scripts/node_color_sampler/node_color_sampler.yy",},"order":1,}, @@ -407,6 +413,7 @@ {"id":{"name":"s_node_export","path":"sprites/s_node_export/s_node_export.yy",},"order":44,}, {"id":{"name":"s_node_text","path":"sprites/s_node_text/s_node_text.yy",},"order":96,}, {"id":{"name":"node_group_input","path":"scripts/node_group_input/node_group_input.yy",},"order":1,}, + {"id":{"name":"s_icon_split_view","path":"sprites/s_icon_split_view/s_icon_split_view.yy",},"order":3,}, {"id":{"name":"draw_rect_border","path":"scripts/draw_rect_border/draw_rect_border.yy",},"order":6,}, {"id":{"name":"s_node_particle_effector","path":"sprites/s_node_particle_effector/s_node_particle_effector.yy",},"order":78,}, {"id":{"name":"node_composite","path":"scripts/node_composite/node_composite.yy",},"order":4,}, @@ -429,6 +436,7 @@ {"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_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,}, @@ -446,7 +454,9 @@ {"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,}, + {"id":{"name":"node_edge_detect","path":"scripts/node_edge_detect/node_edge_detect.yy",},"order":44,}, {"id":{"name":"s_texture_default","path":"sprites/s_texture_default/s_texture_default.yy",},"order":1,}, + {"id":{"name":"s_icon_reset_when_preview","path":"sprites/s_icon_reset_when_preview/s_icon_reset_when_preview.yy",},"order":1,}, {"id":{"name":"node_dilate","path":"scripts/node_dilate/node_dilate.yy",},"order":34,}, {"id":{"name":"s_node_statistic","path":"sprites/s_node_statistic/s_node_statistic.yy",},"order":115,}, {"id":{"name":"sh_stripe","path":"shaders/sh_stripe/sh_stripe.yy",},"order":10,}, @@ -511,6 +521,7 @@ {"id":{"name":"node_group_output","path":"scripts/node_group_output/node_group_output.yy",},"order":2,}, {"id":{"name":"s_node_junctions_array","path":"sprites/s_node_junctions_array/s_node_junctions_array.yy",},"order":1,}, {"id":{"name":"f_p2","path":"fonts/f_p2/f_p2.yy",},"order":4,}, + {"id":{"name":"s_button_path_not_found_icon","path":"sprites/s_button_path_not_found_icon/s_button_path_not_found_icon.yy",},"order":41,}, {"id":{"name":"button","path":"scripts/button/button.yy",},"order":2,}, {"id":{"name":"sh_blur_gaussian","path":"shaders/sh_blur_gaussian/sh_blur_gaussian.yy",},"order":1,}, {"id":{"name":"paddingBox","path":"scripts/paddingBox/paddingBox.yy",},"order":9,}, @@ -573,6 +584,7 @@ {"id":{"name":"sh_perlin_tiled","path":"shaders/sh_perlin_tiled/sh_perlin_tiled.yy",},"order":2,}, {"id":{"name":"sh_time_remap","path":"shaders/sh_time_remap/sh_time_remap.yy",},"order":33,}, {"id":{"name":"s_node_array","path":"sprites/s_node_array/s_node_array.yy",},"order":10,}, + {"id":{"name":"s_icon_center_canvas","path":"sprites/s_icon_center_canvas/s_icon_center_canvas.yy",},"order":0,}, {"id":{"name":"rm_main","path":"rooms/rm_main/rm_main.yy",},"order":0,}, ], "Options": [ @@ -667,6 +679,8 @@ {"folderPath":"folders/nodes/data/iterate.yy","order":19,"resourceVersion":"1.0","name":"iterate","tags":[],"resourceType":"GMFolder",}, {"folderPath":"folders/nodes/data/node.yy","order":20,"resourceVersion":"1.0","name":"node","tags":[],"resourceType":"GMFolder",}, {"folderPath":"folders/sprites/nodes/pin.yy","order":15,"resourceVersion":"1.0","name":"pin","tags":[],"resourceType":"GMFolder",}, + {"folderPath":"folders/functions/shader.yy","order":17,"resourceVersion":"1.0","name":"shader","tags":[],"resourceType":"GMFolder",}, + {"folderPath":"folders/sprites/panels/preview.yy","order":9,"resourceVersion":"1.0","name":"preview","tags":[],"resourceType":"GMFolder",}, ], "AudioGroups": [ {"targets":-1,"resourceVersion":"1.3","name":"audiogroup_default","resourceType":"GMAudioGroup",}, @@ -737,7 +751,7 @@ {"CopyToMask":-1,"filePath":"datafiles/Getting started","resourceVersion":"1.0","name":"4 Looping operation.png","resourceType":"GMIncludedFile",}, ], "MetaData": { - "IDEVersion": "2022.3.0.625", + "IDEVersion": "2022.6.1.26", }, "resourceVersion": "1.5", "name": "Pixels Composer", diff --git a/objects/o_main/Create_0.gml b/objects/o_main/Create_0.gml index 065ad992e..4f36d9c02 100644 --- a/objects/o_main/Create_0.gml +++ b/objects/o_main/Create_0.gml @@ -18,7 +18,7 @@ depth = 0; win_wp = WIN_W; win_hp = WIN_H; - + room_width = WIN_W; room_height = WIN_H; diff --git a/objects/o_main/o_main.yy b/objects/o_main/o_main.yy index 92cd5d814..edf0a3d82 100644 --- a/objects/o_main/o_main.yy +++ b/objects/o_main/o_main.yy @@ -2,6 +2,7 @@ "spriteId": null, "solid": false, "visible": true, + "managed": true, "spriteMaskId": null, "persistent": false, "parentObjectId": null, diff --git a/scripts/button/button.gml b/scripts/button/button.gml index 2a4d69b91..bbacddde9 100644 --- a/scripts/button/button.gml +++ b/scripts/button/button.gml @@ -14,25 +14,34 @@ function buttonClass(_onClick) constructor { onClick = _onClick; - static setIcon = function(_icon, _index = 0) { icon = _icon; icon_index = _index return self; } - static setText = function(_text) { text = _text; return self; } - static setTooltip = function(_tip) { tooltip = _tip; return self; } + static setIcon = function(_icon, _index = 0) { + icon = _icon; icon_index = _index + return self; + } - static draw = function(_x, _y, _w, _h, _m) { - var spr = argument_count > 5? argument[5] : s_button; - + static setText = function(_text) { + text = _text; + return self; + } + + static setTooltip = function(_tip) { + tooltip = _tip; + return self; + } + + static draw = function(_x, _y, _w, _h, _m, spr = s_button, blend = c_white) { var click = false; if(hover && point_in_rectangle(_m[0], _m[1], _x, _y, _x + _w, _y + _h)) { - draw_sprite_stretched(spr, 1, _x, _y, _w, _h); + draw_sprite_stretched_ext(spr, 1, _x, _y, _w, _h, blend, 1); if(active && mouse_check_button_pressed(mb_left)) { if(onClick) onClick(); click = true; } if(mouse_check_button(mb_left)) - draw_sprite_stretched(spr, 2, _x, _y, _w, _h); + draw_sprite_stretched_ext(spr, 2, _x, _y, _w, _h, blend, 1); if(tooltip != "") TOOLTIP = tooltip; } else { - draw_sprite_stretched(spr, 0, _x, _y, _w, _h); + draw_sprite_stretched_ext(spr, 0, _x, _y, _w, _h, blend, 1); } if(icon) draw_sprite(icon, icon_index, _x + _w / 2, _y + _h / 2); if(text != "") { diff --git a/scripts/collection_data/collection_data.gml b/scripts/collection_data/collection_data.gml index b0634f765..d525242c1 100644 --- a/scripts/collection_data/collection_data.gml +++ b/scripts/collection_data/collection_data.gml @@ -57,13 +57,18 @@ function DirectoryObject(name, path) constructor { var hh = 0; if(path == PANEL_COLLECTION.context.path) - draw_sprite_stretched_ext(s_ui_panel_bg, 0, _x, _y, _w, hg, c_ui_blue_ltgrey, 1); + draw_sprite_stretched_ext(s_ui_panel_bg, 0, _x + 28, _y, _w - 28, hg, c_ui_blue_ltgrey, 1); - if(HOVER == PANEL_COLLECTION.panel && point_in_rectangle(_m[0], _m[1], 0, _y, _w, _y + hg - 1)) { - draw_sprite_stretched_ext(s_ui_panel_bg, 0, _x, _y, _w, hg, c_ui_blue_white, 1); + if(!ds_list_empty(subDir) && HOVER == PANEL_COLLECTION.panel && point_in_rectangle(_m[0], _m[1], _x, _y, 32, _y + hg - 1)) { + draw_sprite_stretched_ext(s_ui_panel_bg, 0, _x, _y, 32, hg, c_ui_blue_white, 1); if(FOCUS == PANEL_COLLECTION.panel && mouse_check_button_pressed(mb_left)) { open = !open; - + } + } + + if(HOVER == PANEL_COLLECTION.panel && point_in_rectangle(_m[0], _m[1], _x + 32, _y, _w, _y + hg - 1)) { + draw_sprite_stretched_ext(s_ui_panel_bg, 0, _x + 28, _y, _w - 28, hg, c_ui_blue_white, 1); + if(FOCUS == PANEL_COLLECTION.panel && mouse_check_button_pressed(mb_left)) { if(PANEL_COLLECTION.context == self) PANEL_COLLECTION.setContext(COLLECTIONS); else diff --git a/scripts/coltovec4/coltovec4.gml b/scripts/coltovec4/coltovec4.gml new file mode 100644 index 000000000..0df9329b6 --- /dev/null +++ b/scripts/coltovec4/coltovec4.gml @@ -0,0 +1,3 @@ +function colToVec4(color, alpha = 1) { + return [ color_get_red(color) / 255, color_get_green(color) / 255, color_get_blue(color) / 255, alpha ]; +} \ No newline at end of file diff --git a/scripts/coltovec4/coltovec4.yy b/scripts/coltovec4/coltovec4.yy new file mode 100644 index 000000000..7c877b7dc --- /dev/null +++ b/scripts/coltovec4/coltovec4.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "shader", + "path": "folders/functions/shader.yy", + }, + "resourceVersion": "1.0", + "name": "colToVec4", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_canvas/node_canvas.gml b/scripts/node_canvas/node_canvas.gml index 8b651296f..f38535ace 100644 --- a/scripts/node_canvas/node_canvas.gml +++ b/scripts/node_canvas/node_canvas.gml @@ -113,9 +113,13 @@ function Node_Canvas(_x, _y) : Node(_x, _y) constructor { draw_point_size(_x0, _y0, _siz, _brush); return; } else if(_x0 == _x1) { + draw_point_size(_x0, _y0, _siz, _brush); + draw_point_size(_x1, _y1, _siz, _brush); draw_line_size(_x0, _y0, _x0, _y1, _siz, _brush); return; } else if(_y0 == _y1) { + draw_point_size(_x0, _y0, _siz, _brush); + draw_point_size(_x1, _y1, _siz, _brush); draw_line_size(_x0, _y0, _x1, _y0, _siz, _brush); return; } @@ -142,23 +146,28 @@ function Node_Canvas(_x, _y) : Node(_x, _y) constructor { draw_point_size(_x0, _y0, _siz, _brush); return; } else if(_x0 == _x1) { + draw_point_size(_x0, _y0, _siz, _brush); + draw_point_size(_x1, _y1, _siz, _brush); draw_line_size(_x0, _y0, _x0, _y1, _siz, _brush); return; } else if(_y0 == _y1) { + draw_point_size(_x0, _y0, _siz, _brush); + draw_point_size(_x1, _y1, _siz, _brush); draw_line_size(_x0, _y0, _x1, _y0, _siz, _brush); return; } - var _min_x = min(_x0, _x1); + var _min_x = min(_x0, _x1) - 1; var _max_x = max(_x0, _x1); - var _min_y = min(_y0, _y1); - var _may_y = max(_y0, _y1); + var _min_y = min(_y0, _y1) - 1; + var _max_y = max(_y0, _y1); + + draw_point_size(_min_x, _min_y, _siz, _brush); + draw_point_size(_max_x, _max_y, _siz, _brush); if(_fill) { - draw_ellipse(_min_x, _min_y, _max_x, _may_y, 0); - } else if(_siz == 1 && _brush == -1) - draw_ellipse(_min_x + 1, _min_y + 1, _max_x - 1, _may_y - 1, 1); - else { + draw_ellipse(_min_x, _min_y, _max_x, _max_y, 0); + } else { var samp = 64; var cx = (_x0 + _x1) / 2; var cy = (_y0 + _y1) / 2; diff --git a/scripts/node_data/node_data.gml b/scripts/node_data/node_data.gml index bbee03fbf..cbd2856bd 100644 --- a/scripts/node_data/node_data.gml +++ b/scripts/node_data/node_data.gml @@ -34,7 +34,7 @@ function Node(_x, _y) constructor { always_output = false; inspecting = false; - previewing = false; + previewing = 0; previewable = true; preview_speed = 0; @@ -57,6 +57,8 @@ function Node(_x, _y) constructor { anim_show = true; + value_validation = [0, 0]; + static setHeight = function() { var _hi = 32, _ho = 32; for( var i = 0; i < ds_list_size(inputs); i++ ) { @@ -378,14 +380,19 @@ function Node(_x, _y) constructor { var xx = x * _s + _x; var yy = y * _s + _y; + + if(value_validation[1]) { + draw_sprite_stretched(s_node_error, 0, xx - 9, yy - 9, w * _s + 18, h * _s + 18); + } + drawNodeBase(xx, yy, _s); if(previewable && ds_list_size(outputs) > 0) drawPreview(outputs[| preview_channel], xx, yy, _s); drawNodeName(xx, yy, _s); onDrawNode(xx, yy, _mx, _my, _s); - + if(active_draw_index > -1) { - draw_sprite_stretched(bg_sel_spr, active_draw_index, x * _s + _x, y * _s + _y, w * _s, h * _s); + draw_sprite_stretched(bg_sel_spr, active_draw_index, xx, yy, w * _s, h * _s); active_draw_index = -1; } @@ -406,7 +413,7 @@ function Node(_x, _y) constructor { } inspecting = false; - previewing = false; + previewing = 0; } active_draw_index = -1; @@ -418,10 +425,11 @@ function Node(_x, _y) constructor { static destroy = function(_merge = false) { active = false; - if(PANEL_GRAPH.node_hover == self) PANEL_GRAPH.node_hover = noone; - if(PANEL_GRAPH.node_focus == self) PANEL_GRAPH.node_focus = noone; - if(PANEL_GRAPH.node_previewing == self) PANEL_GRAPH.node_previewing = noone; - if(PANEL_INSPECTOR.inspecting == self) PANEL_INSPECTOR.inspecting = noone; + if(PANEL_GRAPH.node_hover == self) PANEL_GRAPH.node_hover = noone; + if(PANEL_GRAPH.node_focus == self) PANEL_GRAPH.node_focus = noone; + if(PANEL_PREVIEW.preview_node[0] == self) PANEL_PREVIEW.preview_node[0] = noone; + if(PANEL_PREVIEW.preview_node[1] == self) PANEL_PREVIEW.preview_node[1] = noone; + if(PANEL_INSPECTOR.inspecting == self) PANEL_INSPECTOR.inspecting = noone; PANEL_ANIMATION.updatePropertyList(); for(var i = 0; i < ds_list_size(outputs); i++) { @@ -447,6 +455,17 @@ function Node(_x, _y) constructor { onDestroy(); } + static onValidate = function() { + value_validation[0] = 0; + value_validation[1] = 0; + + for( var i = 0; i < ds_list_size(inputs); i++ ) { + var jun = inputs[| i]; + if(jun.value_validation) + value_validation[jun.value_validation - 1]++; + } + } + static onDestroy = function() {} static cacheCurrentFrame = function(_frame) { diff --git a/scripts/node_edge_detect/node_alpha_to_grey.yy b/scripts/node_edge_detect/node_alpha_to_grey.yy new file mode 100644 index 000000000..fde448fca --- /dev/null +++ b/scripts/node_edge_detect/node_alpha_to_grey.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "filter", + "path": "folders/nodes/data/filter.yy", + }, + "resourceVersion": "1.0", + "name": "node_alpha_to_grey", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_edge_detect/node_bw.yy b/scripts/node_edge_detect/node_bw.yy new file mode 100644 index 000000000..6d2681493 --- /dev/null +++ b/scripts/node_edge_detect/node_bw.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "filter", + "path": "folders/nodes/data/filter.yy", + }, + "resourceVersion": "1.0", + "name": "node_bw", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_edge_detect/node_color_adjustment.yy b/scripts/node_edge_detect/node_color_adjustment.yy new file mode 100644 index 000000000..8df16cc8c --- /dev/null +++ b/scripts/node_edge_detect/node_color_adjustment.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "filter", + "path": "folders/nodes/data/filter.yy", + }, + "resourceVersion": "1.0", + "name": "node_color_adjustment", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_edge_detect/node_color_replacement.yy b/scripts/node_edge_detect/node_color_replacement.yy new file mode 100644 index 000000000..024aa6a80 --- /dev/null +++ b/scripts/node_edge_detect/node_color_replacement.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "process", + "path": "folders/nodes/data/process.yy", + }, + "resourceVersion": "1.0", + "name": "node_color_replacement", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_edge_detect/node_edge_detect.gml b/scripts/node_edge_detect/node_edge_detect.gml new file mode 100644 index 000000000..b90b0aa15 --- /dev/null +++ b/scripts/node_edge_detect/node_edge_detect.gml @@ -0,0 +1,37 @@ +function Node_create_Edge_Detect(_x, _y) { + var node = new Node_Edge_Detect(_x, _y); + ds_list_add(PANEL_GRAPH.nodes_list, node); + return node; +} + +function Node_Edge_Detect(_x, _y) : Node_Processor(_x, _y) constructor { + name = "Edge detect"; + + uniform_dim = shader_get_uniform(sh_edge_detect, "dimension"); + uniform_filter = shader_get_uniform(sh_edge_detect, "filter"); + + inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); + inputs[| 1] = nodeValue(1, "Filter", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) + .setDisplay(VALUE_DISPLAY.enum_scroll, ["Sobel", "Prewitt", "Laplacian"] ); + + outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1)); + + static process_data = function(_outSurf, _data, _output_index) { + var ft = _data[1]; + + surface_set_target(_outSurf); + draw_clear_alpha(0, 0); + BLEND_ADD + + shader_set(sh_edge_detect); + shader_set_uniform_f_array(uniform_dim, [surface_get_width(_data[0]), surface_get_height(_data[0])]); + shader_set_uniform_i(uniform_filter, ft); + draw_surface_safe(_data[0], 0, 0); + shader_reset(); + + BLEND_NORMAL + surface_reset_target(); + + return _outSurf; + } +} \ No newline at end of file diff --git a/scripts/node_edge_detect/node_edge_detect.yy b/scripts/node_edge_detect/node_edge_detect.yy new file mode 100644 index 000000000..fed8ff100 --- /dev/null +++ b/scripts/node_edge_detect/node_edge_detect.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "filter", + "path": "folders/nodes/data/filter.yy", + }, + "resourceVersion": "1.0", + "name": "node_edge_detect", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_edge_detect/node_greyscale.yy b/scripts/node_edge_detect/node_greyscale.yy new file mode 100644 index 000000000..ee372977e --- /dev/null +++ b/scripts/node_edge_detect/node_greyscale.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "filter", + "path": "folders/nodes/data/filter.yy", + }, + "resourceVersion": "1.0", + "name": "node_greyscale", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_edge_detect/node_outline.yy b/scripts/node_edge_detect/node_outline.yy new file mode 100644 index 000000000..86468bc09 --- /dev/null +++ b/scripts/node_edge_detect/node_outline.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "process", + "path": "folders/nodes/data/process.yy", + }, + "resourceVersion": "1.0", + "name": "node_outline", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_registry/node_registry.gml b/scripts/node_registry/node_registry.gml index 5d98eb794..90e6dc4a6 100644 --- a/scripts/node_registry/node_registry.gml +++ b/scripts/node_registry/node_registry.gml @@ -44,7 +44,6 @@ function NodeObject(_name, _spr, _create, tags = []) constructor { var _node = nodeFind(_name).build(_x, _y); if(!_node) return noone; PANEL_GRAPH.node_focus = _node; - PANEL_GRAPH.previewing = _node; return _node; } @@ -122,6 +121,7 @@ function NodeObject(_name, _spr, _create, tags = []) constructor { addNodeObject(filter, "Atlas", s_node_atlas, "Node_Atlas", Node_create_Atlas); addNodeObject(filter, "Scale algorithm", s_node_scale_algo, "Node_Scale_Algo", Node_create_Scale_Algo, ["scale2x", "scale3x"]); addNodeObject(filter, "Pixel cloud", s_node_pixel_cloud, "Node_Pixel_Cloud", Node_create_Pixel_Cloud); + addNodeObject(filter, "Edge detect", s_node_edge_detect, "Node_Edge_Detect", Node_create_Edge_Detect); //addNodeObject(filter, "Corner", s_node_corner, "Node_Corner", Node_create_Corner); var threeD = ds_list_create(); diff --git a/scripts/node_simple_shape/node_simple_shape.gml b/scripts/node_simple_shape/node_simple_shape.gml index 6dd5d4c38..1117365b1 100644 --- a/scripts/node_simple_shape/node_simple_shape.gml +++ b/scripts/node_simple_shape/node_simple_shape.gml @@ -25,9 +25,9 @@ function Node_Shape(_x, _y) : Node_Processor(_x, _y) constructor { uniform_inner = shader_get_uniform(shader, "inner"); uniform_corner = shader_get_uniform(shader, "corner"); uniform_arange = shader_get_uniform(shader, "angle_range"); - uniform_bg = shader_get_uniform(shader, "bg"); uniform_aa = shader_get_uniform(shader, "aa"); uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_bgCol = shader_get_uniform(shader, "bgColor"); inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d ) .setDisplay(VALUE_DISPLAY.vector); @@ -58,14 +58,16 @@ function Node_Shape(_x, _y) : Node_Processor(_x, _y) constructor { inputs[| 9] = nodeValue(9, "Corner radius", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) .setDisplay(VALUE_DISPLAY.slider, [0, 0.5, 0.01]); - inputs[| 10] = nodeValue(10, "Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white); + inputs[| 10] = nodeValue(10, "Shape color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white); + + inputs[| 11] = nodeValue(11, "Background color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_black); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1)); input_display_list = [ ["Surface", false], 0, 6, ["Shape", false], 2, 3, 9, 4, 5, 7, 8, - ["Render", true], 1, 10 + ["Render", true], 10, 1, 11 ]; static drawOverlay = function(_active, _x, _y, _s, _mx, _my) { @@ -79,7 +81,10 @@ function Node_Shape(_x, _y) : Node_Processor(_x, _y) constructor { var _posit = _data[3]; var _aa = _data[6]; var _corner = _data[9]; - var _color = _data[10] + var _color = _data[10]; + var _bgcol = _bg? colToVec4(_data[11]) : [0, 0, 0, 0]; + + inputs[| 11].setVisible(_bg); if(!is_surface(_outSurf)) { _outSurf = surface_create(surface_valid(_dim[0]), surface_valid(_dim[1])); @@ -147,13 +152,13 @@ function Node_Shape(_x, _y) : Node_Processor(_x, _y) constructor { shader_set_uniform_f_array(uniform_dim, _dim); shader_set_uniform_i(uniform_shape, _shape); - shader_set_uniform_i(uniform_bg, _bg); + shader_set_uniform_f_array(uniform_bgCol, _bgcol); shader_set_uniform_i(uniform_aa, _aa); shader_set_uniform_f(uniform_corner, _corner); shader_set_uniform_f_array(uniform_cent, [ _posit[0] / _dim[0], _posit[1] / _dim[1] ]); shader_set_uniform_f_array(uniform_scal, [ _posit[2] / _dim[0], _posit[3] / _dim[1] ]); - + draw_sprite_ext(s_fx_pixel, 0, 0, 0, _dim[0], _dim[1], 0, _color, 1); shader_reset(); surface_reset_target(); diff --git a/scripts/node_value/node_value.gml b/scripts/node_value/node_value.gml index f7dbae7c3..4455a1f1b 100644 --- a/scripts/node_value/node_value.gml +++ b/scripts/node_value/node_value.gml @@ -124,6 +124,12 @@ enum KEYFRAME_END { ping } +enum VALIDATION { + pass, + warning, + error +} + function isGraphable(type) { switch(type) { case VALUE_TYPE.integer : @@ -163,6 +169,8 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T display_type = VALUE_DISPLAY._default; display_data = -1; + value_validation = VALIDATION.pass; + static setVisible = function(inspector) { show_in_inspector = inspector; visible = argument_count > 1? argument[1] : visible; @@ -369,6 +377,35 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T } resetDisplay(); + static onValidate = function() { + value_validation = VALIDATION.pass; + + switch(type) { + case VALUE_TYPE.path: + switch(display_type) { + case VALUE_DISPLAY.path_load: + var path = value.getValue(); + if(!file_exists(path)) + value_validation = VALIDATION.error; + break; + case VALUE_DISPLAY.path_array: + var paths = value.getValue(); + if(isArray(paths)) { + for( var i = 0; i < array_length(paths); i++ ) { + if(!file_exists(paths[i])) + value_validation = VALIDATION.error; + } + } else + value_validation = VALIDATION.error; + break; + } + break; + } + node.onValidate(); + + return self; + } + static getValue = function() { var _val = getValueRecursive(); var val = _val[0]; @@ -477,6 +514,7 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T node.onValueUpdate(index); } + onValidate(); return updated; } @@ -1005,6 +1043,8 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T if(ds_map_exists(_map, "data")) ds_list_copy(extra_data, _map[? "data"]); + + onValidate(); } static connect = function() { diff --git a/scripts/panel_graph/panel_graph.gml b/scripts/panel_graph/panel_graph.gml index abaebe9ba..ca2b51839 100644 --- a/scripts/panel_graph/panel_graph.gml +++ b/scripts/panel_graph/panel_graph.gml @@ -45,7 +45,6 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor { node_hovering = noone; node_hover = noone; node_focus = noone; - node_previewing = noone; junction_hovering = noone; @@ -265,9 +264,7 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor { } ds_list_add(nodes_select_list, node_focus); } else if(node_focus.previewable && DOUBLE_CLICK) { - node_previewing = node_focus; - if(PREF_MAP[? "reset_display"]) - PANEL_PREVIEW.do_fullView = true; + PANEL_PREVIEW.setNodePreview(node_focus); } else { var hover_selected = false; for( var i = 0; i < ds_list_size(nodes_select_list); i++ ) { @@ -689,11 +686,9 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor { } function setCurrentPreview(_node = node_focus) { - if(_node) { - node_previewing = _node; - if(PREF_MAP[? "reset_display"]) - PANEL_PREVIEW.do_fullView = true; - } + if(!_node) return; + + PANEL_PREVIEW.setNodePreview(_node); } function setCurrentExport(_node = node_focus) { @@ -861,7 +856,8 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor { nodes_list = NODES; node_hover = noone; node_focus = noone; - node_previewing = noone; + PANEL_PREVIEW.preview_node[0] = noone; + PANEL_PREVIEW.preview_node[1] = noone; toOrigin(); PANEL_ANIMATION.updatePropertyList(); @@ -871,7 +867,8 @@ function Panel_Graph(_panel) : PanelContent(_panel) constructor { nodes_list = node_context[| i].nodes; node_hover = noone; node_focus = noone; - node_previewing = noone; + PANEL_PREVIEW.preview_node[0] = noone; + PANEL_PREVIEW.preview_node[1] = noone; toOrigin(); PANEL_ANIMATION.updatePropertyList(); diff --git a/scripts/panel_inspector/panel_inspector.gml b/scripts/panel_inspector/panel_inspector.gml index 1884a303b..1a6214788 100644 --- a/scripts/panel_inspector/panel_inspector.gml +++ b/scripts/panel_inspector/panel_inspector.gml @@ -267,18 +267,24 @@ function Panel_Inspector(_panel) : PanelContent(_panel) constructor { hh += 34 + padd; break; case VALUE_TYPE.path : - jun.editWidget.draw(32, _hsy, w - 80, 34, _m); - - draw_sprite_ext(s_button_path_icon, 0, w - 72, _hsy + 17, 1, 1, 0, c_white, 1); - draw_set_text(f_p0, fa_left, fa_center, c_white); - var val = jun.showValue(), txt; + var pathExist = jun.value_validation == VALIDATION.pass; + if(is_array(val)) { txt = "[" + string(array_length(val)) + "] " + val[0]; - } else + } else { txt = val; - + } + + jun.editWidget.draw(32, _hsy, w - 80, 34, _m,, pathExist? c_white : c_ui_red); + draw_sprite_ext(pathExist? s_button_path_icon : s_button_path_not_found_icon, 0, w - 72, _hsy + 17, 1, 1, 0, c_white, 1); + draw_set_text(f_p0, fa_left, fa_center, c_white); draw_text_cut(40, _hsy + 17, txt, w - 140); + + if(!pathExist && point_in_rectangle(_m[0], _m[1], w - 72 - 17, _hsy, w - 72 + 17, _hsy + 34)) { + TOOLTIP = "File not exist"; + } + _hey = _hsy + 34; hh += 34 + padd; break; diff --git a/scripts/panel_preview/panel_preview.gml b/scripts/panel_preview/panel_preview.gml index 0bd27553d..6cfa75060 100644 --- a/scripts/panel_preview/panel_preview.gml +++ b/scripts/panel_preview/panel_preview.gml @@ -20,14 +20,15 @@ function Panel_Preview(_panel) : PanelContent(_panel) constructor { canvas_drag_sx = 0; canvas_drag_sy = 0; - preview_channel = 0; - preview_surface = 0; + preview_node = [ noone, noone ]; + preview_channel = [ 0, 0 ]; + preview_surface = [ 0, 0 ]; preview_x = 0; preview_x_to = 0; preview_x_max = 0; - preview_sequence = 0; - _preview_sequence = 0; + preview_sequence = [ 0, 0 ]; + _preview_sequence = preview_sequence; preview_rate = 10; grid_show = false; @@ -38,6 +39,48 @@ function Panel_Preview(_panel) : PanelContent(_panel) constructor { tool_sub_index = 0; right_menu_y = 8; + mouse_on_preview = false; + + resetViewOnDoubleClick = true; + + splitView = 0; + splitPosition = 0.5; + splitSelection = 0; + + splitViewDragging = false; + splitViewStart = 0; + splitViewMouse = 0; + + toolbar_height = 40; + toolbars = [ + [ + s_icon_reset_when_preview, + function() { return resetViewOnDoubleClick; }, + function() { return resetViewOnDoubleClick? "Center canvas on preview" : "Keep canvas on preview" }, + function() { resetViewOnDoubleClick = !resetViewOnDoubleClick; } + ], + [ + s_icon_split_view, + function() { return splitView; }, + function() { + switch(splitView) { + case 0 : return "Split view off"; + case 1 : return "Horizontal split view"; + case 2 : return "Vertical split view"; + } + return "Split view"; + }, + function() { splitView = (splitView + 1) % 3; } + ], + ]; + + actions = [ + [ + s_icon_center_canvas, + "Center canvas", + function() { fullView(); } + ], + ] tb_framerate = new textBox(TEXTBOX_INPUT.number, function(val) { preview_rate = real(val); }) @@ -46,6 +89,50 @@ function Panel_Preview(_panel) : PanelContent(_panel) constructor { addHotkey("Preview", "Toggle grid", "G", MOD_KEY.ctrl, function() { grid_show = !grid_show; }); + function setNodePreview(node) { + if(resetViewOnDoubleClick) + do_fullView = true; + + preview_node[splitView? splitSelection : 0] = node; + } + + function getNodePreview() { return preview_node[splitView? splitSelection : 0]; } + function getNodePreviewSurface() { return preview_surface[splitView? splitSelection : 0]; } + function getNodePreviewSequence() { return preview_sequence[splitView? splitSelection : 0]; } + + function getPreviewData() { + preview_surface = [ 0, 0 ]; + preview_sequence = [ 0, 0 ]; + + for( var i = 0; i < 2; i++ ) { + var node = preview_node[i]; + + if(node == noone) continue; + if(node.preview_channel >= ds_list_size(node.outputs)) continue; + + var _prev_val = node.outputs[| node.preview_channel]; + if(_prev_val.type != VALUE_TYPE.surface) return; + + var value = _prev_val.getValue(); + + if(is_array(value)) + preview_sequence[i] = value; + else + preview_surface[i] = value; + + if(preview_sequence[i] != 0) { + if(array_length(preview_sequence[i]) == 0) return; + preview_surface[i] = preview_sequence[i][safe_mod(node.preview_index, array_length(preview_sequence[i]))]; + } + } + + var prevS = getNodePreviewSurface(); + if(is_surface(prevS)) { + canvas_w = surface_get_width(prevS); + canvas_h = surface_get_height(prevS); + } + } + function dragCanvas() { if(canvas_dragging) { var dx = mx - canvas_drag_mx; @@ -87,11 +174,13 @@ function Panel_Preview(_panel) : PanelContent(_panel) constructor { } function fullView() { - if(!is_surface(preview_surface)) return; + var prevS = getNodePreviewSurface(); + if(!is_surface(prevS)) return; + + canvas_w = surface_get_width(prevS); + canvas_h = surface_get_height(prevS); + - canvas_w = surface_get_width(preview_surface); - canvas_h = surface_get_height(preview_surface); - var ss = min((w - 32) / canvas_w, (h - 32) / canvas_h); canvas_s = ss; canvas_x = w / 2 - canvas_w * canvas_s / 2; @@ -103,13 +192,22 @@ function Panel_Preview(_panel) : PanelContent(_panel) constructor { } } - sbChannel = new scrollBox([], function(index) { PANEL_GRAPH.node_previewing.preview_channel = index; }); + sbChannel = new scrollBox([], function(index) { + var node = getNodePreview(); + if(node == noone) return; + + node.preview_channel = index; + }); + sbChannel.align = fa_left; - function drawNodeChannel(_node) { + function drawNodeChannel(_x, _y) { + var _node = getNodePreview(); + if(_node == noone) return; if(ds_list_size(_node.outputs) < 2) return; var chName = []; var ww = 40; + var hh = 28; draw_set_text(f_p0, fa_center, fa_center, c_white); for( var i = 0; i < ds_list_size(_node.outputs); i++ ) { @@ -120,57 +218,94 @@ function Panel_Preview(_panel) : PanelContent(_panel) constructor { sbChannel.hover = HOVER == panel; sbChannel.active = FOCUS == panel; - sbChannel.draw(w - 8 - ww, right_menu_y, ww, 34, _node.outputs[| _node.preview_channel].name, [mx, my], panel.x, panel.y); + sbChannel.draw(_x - ww, _y - hh / 2, ww, hh, _node.outputs[| _node.preview_channel].name, [mx, my], panel.x, panel.y); right_menu_y += 40; } - function drawNodePreview(_node) { - preview_surface = 0; - preview_sequence = 0; - if(_node.preview_channel >= ds_list_size(_node.outputs)) return; + function drawNodePreview() { + var ss = canvas_s; - var _prev_val = _node.outputs[| _node.preview_channel]; - if(_prev_val.type != VALUE_TYPE.surface) return; - - var value = _prev_val.getValue(); - - if(is_array(value)) { - preview_sequence = value; - } else { - preview_surface = value; - canvas_w = surface_get_width(preview_surface); - canvas_h = surface_get_height(preview_surface); + if(is_surface(preview_surface[0])) { + var psx = canvas_x + preview_node[0].preview_x * ss; + var psy = canvas_y + preview_node[0].preview_y * ss; + + var psw = surface_get_width(preview_surface[0]); + var psh = surface_get_height(preview_surface[0]); + var pswd = psw * ss; + var pshd = psh * ss; + + var psx1 = psx + pswd; + var psy1 = psy + pshd; } - if(preview_sequence != 0) { - if(array_length(preview_sequence) == 0) return; - preview_surface = preview_sequence[safe_mod(_node.preview_index, array_length(preview_sequence))]; + if(is_surface(preview_surface[1])) { + var ssx = canvas_x + preview_node[1].preview_x * ss; + var ssy = canvas_y + preview_node[1].preview_y * ss; - canvas_w = surface_get_width(preview_surface); - canvas_h = surface_get_height(preview_surface); + var ssw = surface_get_width(preview_surface[1]); + var ssh = surface_get_height(preview_surface[1]); } - if(is_surface(preview_surface)) { - draw_surface_ext_safe(preview_surface, canvas_x + _node.preview_x * canvas_s, canvas_y + _node.preview_y * canvas_s, canvas_s, canvas_s, 0, c_white, 1); - - if(FOCUS == panel) { - if(mouse_check_button_pressed(mb_right)) { - var dia = dialogCall(o_dialog_menubox, mouse_mx + 8, mouse_my + 8); - dia.setMenu([ - [ "Save current preview as...", function() { PANEL_PREVIEW.saveCurrentFrame(); } ], - [ "Save all current previews as...", function() { PANEL_PREVIEW.saveAllCurrentFrames(); } ], - ]); + switch(splitView) { + case 0 : + if(is_surface(preview_surface[0])) { + preview_node[0].previewing = 1; + draw_surface_ext_safe(preview_surface[0], psx, psy, ss, ss, 0, c_white, 1); } - } - - if(do_fullView) { - do_fullView = false; - fullView(); - } + break; + case 1 : + var sp = splitPosition * w; + + if(is_surface(preview_surface[0])) { + preview_node[0].previewing = 2; + var maxX = min(sp, psx1); + var sW = min(psw, (maxX - psx) / ss); + + if(sW > 0) + draw_surface_part_ext_safe(preview_surface[0], 0, 0, sW, psh, psx, psy, ss, ss, 0, c_white, 1); + } + + if(is_surface(preview_surface[1])) { + preview_node[1].previewing = 3; + var minX = max(ssx, sp); + var sX = (minX - ssx) / ss; + var spx = max(sp, ssx); + + if(sX >= 0 && sX < ssw) + draw_surface_part_ext_safe(preview_surface[1], sX, 0, ssw - sX, ssh, spx, ssy, ss, ss, 0, c_white, 1); + } + break; + case 2 : + var sp = splitPosition * h; + + if(is_surface(preview_surface[0])) { + preview_node[0].previewing = 4; + var maxY = min(sp, psy1); + var sH = min(psh, (maxY - psy) / ss); + + if(sH > 0) + draw_surface_part_ext_safe(preview_surface[0], 0, 0, psw, sH, psx, psy, ss, ss, 0, c_white, 1); + } + + if(is_surface(preview_surface[1])) { + preview_node[1].previewing = 5; + var minY = max(ssy, sp); + var sY = (minY - ssy) / ss; + var spy = max(sp, ssy); + + if(sY >= 0 && sY < ssh) + draw_surface_part_ext_safe(preview_surface[1], 0, sY, ssw, ssh - sY, ssx, spy, ss, ss, 0, c_white, 1); + } + break; } } function drawPreviewOverlay(_node) { + right_menu_y = 8; + draw_set_text(f_p0, fa_right, fa_top, c_ui_blue_ltgrey); + draw_text(w - 8, right_menu_y, "fps " + string(fps)); + right_menu_y += 20; + draw_set_text(f_p0, fa_right, fa_top, c_ui_blue_ltgrey); draw_text(w - 8, right_menu_y, "frame " + string(ANIMATOR.current_frame) + "/" + string(ANIMATOR.frames_total)); right_menu_y += 20; @@ -182,9 +317,10 @@ function Panel_Preview(_panel) : PanelContent(_panel) constructor { var prev_size = 48; preview_x = lerp_float(preview_x, preview_x_to, 5); - if(preview_sequence != 0) { - if(preview_sequence != _preview_sequence) { - _preview_sequence = preview_sequence; + var pseq = getNodePreviewSequence(); + if(pseq != 0) { + if(pseq != _preview_sequence) { + _preview_sequence = pseq; preview_x = 0; preview_x_to = 0; } @@ -196,15 +332,15 @@ function Panel_Preview(_panel) : PanelContent(_panel) constructor { } preview_x_max = 0; - for(var i = 0; i < array_length(preview_sequence); i++) { + for(var i = 0; i < array_length(pseq); i++) { var xx = preview_x + 8 + (prev_size + 8) * i; var yy = h - prev_size - 8; - var prev = preview_sequence[i]; + var prev = pseq[i]; if(!is_surface(prev)) continue; var prev_w = surface_get_width(prev); - var prev_h = surface_get_height(prev); + var prev_h = surface_get_height(prev); var ss = prev_size / max(prev_w, prev_h); draw_set_color(c_ui_blue_grey); @@ -282,12 +418,15 @@ function Panel_Preview(_panel) : PanelContent(_panel) constructor { function drawNodeOverlay(_active, _node) { var active = _active; + var _mx = mouse_on_preview? mx : -99999; + var _my = mouse_on_preview? my : -99999; + if(_node.tools != -1) { var xx = 16; var yy = 16; for(var i = 0; i < array_length(_node.tools); i++) { - var b = buttonInstant(s_button, xx, yy, 40, 40, [mx, my], FOCUS == panel, HOVER == panel); + var b = buttonInstant(s_button, xx, yy, 40, 40, [_mx, _my], FOCUS == panel, HOVER == panel); var toggle = false; if(b == 1) { TOOLTIP = _node.tools[i][0]; @@ -321,11 +460,115 @@ function Panel_Preview(_panel) : PanelContent(_panel) constructor { } } - _node.drawOverlay(active, canvas_x + _node.preview_x * canvas_s, canvas_y + _node.preview_y * canvas_s, canvas_s, mx, my); + _node.drawOverlay(active, canvas_x + _node.preview_x * canvas_s, canvas_y + _node.preview_y * canvas_s, canvas_s, _mx, _my); + } + + function drawToolBar() { + var ty = h - toolbar_height; + //draw_sprite_stretched_ext(s_toolbar_shadow, 0, 0, ty - 12 + 4, w, 12, c_white, 0.5); + draw_set_color(c_ui_blue_black); + draw_rectangle(0, ty, w, h, false); + + draw_set_color(c_ui_blue_dkgrey); + draw_line(0, ty, w, ty); + + var tbx = toolbar_height / 2; + var tby = ty + toolbar_height / 2; + + for( var i = 0; i < array_length(toolbars); i++ ) { + var tb = toolbars[i]; + var tbSpr = tb[0]; + var tbInd = tb[1](); + var tbTooltip = tb[2](); + + var b = buttonInstant(s_button_hide, tbx - 14, tby - 14, 28, 28, [mx, my], FOCUS == panel, HOVER == panel, tbTooltip, tbSpr, tbInd); + if(b == 2) tb[3](); + + tbx += 32; + } + + tbx = w - toolbar_height / 2; + for( var i = 0; i < array_length(actions); i++ ) { + var tb = actions[i]; + var tbSpr = tb[0]; + var tbTooltip = tb[1]; + + var b = buttonInstant(s_button_hide, tbx - 14, tby - 14, 28, 28, [mx, my], FOCUS == panel, HOVER == panel, tbTooltip, tbSpr, 0); + if(b == 2) tb[2](); + + tbx -= 32; + } + + draw_set_color(c_ui_blue_dkblack); + draw_line_width(tbx + 12, tby - toolbar_height / 2 + 8, tbx + 12, tby + toolbar_height / 2 - 8, 2); + drawNodeChannel(tbx, tby); + } + + function drawSplitView() { + if(splitView == 0) return; + + draw_set_color(c_ui_blue_grey); + + if(splitViewDragging) { + if(splitView == 1) { + var cx = splitViewStart + (mx - splitViewMouse); + splitPosition = clamp(cx / w, .1, .9); + } else if(splitView == 2) { + var cy = splitViewStart + (my - splitViewMouse); + splitPosition = clamp(cy / h, .1, .9); + } + + if(mouse_check_button_released(mb_left)) + splitViewDragging = false; + } + + if(splitView == 1) { + var sx = w * splitPosition; + + if(mouse_on_preview && point_in_rectangle(mx, my, sx - 2, 0, sx + 2, h)) { + draw_line_width(sx, 0, sx, h, 2); + if(mouse_check_button_pressed(mb_left)) { + splitViewDragging = true; + splitViewStart = sx; + splitViewMouse = mx; + } + } else + draw_line_width(sx, 0, sx, h, 1); + + + draw_sprite(s_panel_active_split, 0, splitSelection? sx + 16 : sx - 16, 16); + + if(mouse_on_preview && mouse_check_button_pressed(mb_left)) { + if(point_in_rectangle(mx, my, 0, 0, sx, h)) + splitSelection = 0; + else if(point_in_rectangle(mx, my, sx, 0, w, h)) + splitSelection = 1; + } + } else { + var sy = h * splitPosition; + + if(mouse_on_preview && point_in_rectangle(mx, my, 0, sy - 2, w, sy + 2)) { + draw_line_width(0, sy, w, sy, 2); + if(mouse_check_button_pressed(mb_left)) { + splitViewDragging = true; + splitViewStart = sy; + splitViewMouse = my; + } + } else + draw_line_width(0, sy, w, sy, 1); + draw_sprite(s_panel_active_split, 0, 16, splitSelection? sy + 16 : sy - 16); + + if(mouse_on_preview && mouse_check_button_pressed(mb_left)) { + if(point_in_rectangle(mx, my, 0, 0, w, sy)) + splitSelection = 0; + else if(point_in_rectangle(mx, my, 0, sy, w, h)) + splitSelection = 1; + } + } } function drawContent() { - right_menu_y = 8; + mouse_on_preview = point_in_rectangle(mx, my, 0, 0, w, h - toolbar_height); draw_clear(c_ui_blue_black); if(canvas_bg == -1) { @@ -335,38 +578,51 @@ function Panel_Preview(_panel) : PanelContent(_panel) constructor { } dragCanvas(); - if(PANEL_GRAPH.node_previewing) { - PANEL_GRAPH.node_previewing.previewing = true; - drawNodePreview(PANEL_GRAPH.node_previewing); - drawNodeChannel(PANEL_GRAPH.node_previewing); - } - draw_set_text(f_p0, fa_right, fa_top, c_ui_blue_ltgrey); - draw_text(w - 8, right_menu_y, "fps " + string(fps)); - right_menu_y += 20; + getPreviewData(); + drawNodePreview(); - if(PANEL_GRAPH.node_previewing) { - drawPreviewOverlay(PANEL_GRAPH.node_previewing); - } - - if(PANEL_GRAPH.node_focus) { + if(PANEL_GRAPH.node_focus) drawNodeOverlay(FOCUS == panel, PANEL_GRAPH.node_focus); + + var viewNode = getNodePreview(); + if(viewNode) { + drawPreviewOverlay(viewNode); } if(last_focus != PANEL_GRAPH.node_focus) { last_focus = PANEL_GRAPH.node_focus; tool_index = -1; } + + if(do_fullView) { + do_fullView = false; + fullView(); + } + + if(FOCUS == panel) { + if(mouse_check_button_pressed(mb_right)) { + var dia = dialogCall(o_dialog_menubox, mouse_mx + 8, mouse_my + 8); + dia.setMenu([ + [ "Save current preview as...", function() { PANEL_PREVIEW.saveCurrentFrame(); } ], + [ "Save all current previews as...", function() { PANEL_PREVIEW.saveAllCurrentFrames(); } ], + ]); + } + } + + drawSplitView(); + drawToolBar(); } function saveCurrentFrame() { - if(!is_surface(preview_surface)) return; + var prevS = getNodePreviewSurface(); + if(!is_surface(prevS)) return; var path = get_save_filename(".png", "export"); if(path == "") return; if(filename_ext(path) == "") path += ".png"; - surface_save(preview_surface, path); + surface_save(prevS, path); } function saveAllCurrentFrames() { @@ -378,8 +634,9 @@ function Panel_Preview(_panel) : PanelContent(_panel) constructor { var name = string_replace_all(path, ext, ""); var ind = 0; - for(var i = 0; i < array_length(preview_sequence); i++) { - var prev = preview_sequence[i]; + var pseq = getNodePreviewSequence(); + for(var i = 0; i < array_length(pseq); i++) { + var prev = pseq[i]; if(!is_surface(prev)) continue; var _name = name + string(ind) + ext; surface_save(prev, _name); diff --git a/scripts/surface_modify/surface_modify.gml b/scripts/surface_modify/surface_modify.gml index 7ac7271b5..7a28d358f 100644 --- a/scripts/surface_modify/surface_modify.gml +++ b/scripts/surface_modify/surface_modify.gml @@ -7,6 +7,9 @@ function draw_surface_ext_safe(surface, _x, _y, _xs, _ys, _rot, _col, _alpha) { function draw_surface_tiled_ext_safe(surface, _x, _y, _xs, _ys, _col, _alpha) { if(is_surface(surface)) draw_surface_tiled_ext(surface, _x, _y, _xs, _ys, _col, _alpha); } +function draw_surface_part_ext_safe(surface, _l, _t, _w, _h, _x, _y, _xs, _ys, _rot, _col, _alpha) { + if(is_surface(surface)) draw_surface_part_ext(surface, _l, _t, _w, _h, _x, _y, _xs, _ys, _col, _alpha); +} function surface_size_to(surface, width, height) { if(width <= 1 || height <= 1) return false; diff --git a/shaders/sh_edge_detect/sh_edge_detect.fsh b/shaders/sh_edge_detect/sh_edge_detect.fsh new file mode 100644 index 000000000..1bff8ab31 --- /dev/null +++ b/shaders/sh_edge_detect/sh_edge_detect.fsh @@ -0,0 +1,58 @@ +// +// Simple passthrough fragment shader +// +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +uniform vec2 dimension; +uniform int filter; + +const mat3 sobel = mat3( -1., -2., -1., + 0., 0., 0., + 1., 2., 1); + +const mat3 prewit = mat3( -1., -1., -1., + 0., 0., 0., + 1., 1., 1); + +const mat3 laplac = mat3( 1., 1., 1., + 1., -8., 1., + 1., 1., 1); + +#define TAU 6.28318 + +float bright(in vec4 col) { + return dot(col.rgb, vec3(0.2126, 0.7152, 0.0722)) * col.a; +} + +void main() { + vec2 texel = vec2(1.) / dimension; + vec4 point = texture2D( gm_BaseTexture, v_vTexcoord ); + vec4 hColor = vec4(0.); + vec4 vColor = vec4(0.); + + for(float i = -1.; i <= 1.; i++) { + for(float j = -1.; j <= 1.; j++) { + vec2 pxs = v_vTexcoord + vec2(texel.x * i, texel.y * j); + pxs = clamp(pxs, vec2(0.), vec2(1.)); + + int ii = int(1. + i); + int jj = int(1. + j); + + if(filter == 0) { + hColor += texture2D( gm_BaseTexture, pxs ) * sobel[jj][ii]; + vColor += texture2D( gm_BaseTexture, pxs ) * sobel[ii][jj]; + } else if(filter == 1) { + hColor += texture2D( gm_BaseTexture, pxs ) * prewit[jj][ii]; + vColor += texture2D( gm_BaseTexture, pxs ) * prewit[ii][jj]; + } else if(filter == 2) { + hColor += texture2D( gm_BaseTexture, pxs ) * laplac[jj][ii]; + } + } + } + + if(filter == 2) + gl_FragColor = vec4(vec3(hColor), point.a); + else + gl_FragColor = vec4(vec3(distance(hColor, vColor)), point.a); +} diff --git a/shaders/sh_edge_detect/sh_edge_detect.vsh b/shaders/sh_edge_detect/sh_edge_detect.vsh new file mode 100644 index 000000000..3900c20f4 --- /dev/null +++ b/shaders/sh_edge_detect/sh_edge_detect.vsh @@ -0,0 +1,19 @@ +// +// Simple passthrough vertex shader +// +attribute vec3 in_Position; // (x,y,z) +//attribute vec3 in_Normal; // (x,y,z) unused in this shader. +attribute vec4 in_Colour; // (r,g,b,a) +attribute vec2 in_TextureCoord; // (u,v) + +varying vec2 v_vTexcoord; +varying vec4 v_vColour; + +void main() +{ + vec4 object_space_pos = vec4( in_Position.x, in_Position.y, in_Position.z, 1.0); + gl_Position = gm_Matrices[MATRIX_WORLD_VIEW_PROJECTION] * object_space_pos; + + v_vColour = in_Colour; + v_vTexcoord = in_TextureCoord; +} diff --git a/shaders/sh_edge_detect/sh_edge_detect.yy b/shaders/sh_edge_detect/sh_edge_detect.yy new file mode 100644 index 000000000..00657fc51 --- /dev/null +++ b/shaders/sh_edge_detect/sh_edge_detect.yy @@ -0,0 +1,11 @@ +{ + "type": 1, + "parent": { + "name": "filter", + "path": "folders/shader/filter.yy", + }, + "resourceVersion": "1.0", + "name": "sh_edge_detect", + "tags": [], + "resourceType": "GMShader", +} \ No newline at end of file diff --git a/shaders/sh_shape/sh_shape.fsh b/shaders/sh_shape/sh_shape.fsh index f8f4dda51..bd2b2abe3 100644 --- a/shaders/sh_shape/sh_shape.fsh +++ b/shaders/sh_shape/sh_shape.fsh @@ -19,6 +19,8 @@ uniform vec2 dimension; uniform vec2 center; uniform vec2 scale; +uniform vec4 bgColor; + #define PI 3.14159265359 #define TAU 6.28318530718 @@ -125,8 +127,5 @@ void main() { color = smoothstep(0.05, 0., d); } - if(bg == 0) - gl_FragColor = vec4(vec3(1.), color); - else - gl_FragColor = vec4(vec3(v_vColour.rgb * color), 1.0); + gl_FragColor = mix(bgColor, v_vColour, color); } diff --git a/shaders/sh_texture_remap/sh_texture_remap.fsh b/shaders/sh_texture_remap/sh_texture_remap.fsh index fd2ced381..568d4b89b 100644 --- a/shaders/sh_texture_remap/sh_texture_remap.fsh +++ b/shaders/sh_texture_remap/sh_texture_remap.fsh @@ -8,5 +8,5 @@ uniform sampler2D map; void main() { vec2 pos = texture2D( map, v_vTexcoord ).rg; - gl_FragColor = texture2D( gm_BaseTexture, pos ); + gl_FragColor = texture2D( gm_BaseTexture, vec2(1. - pos.x, pos.y) ); } diff --git a/sprites/s_button_path_not_found_icon/20bf0b30-087f-41ea-9f65-bab0ad8f6cf6.png b/sprites/s_button_path_not_found_icon/20bf0b30-087f-41ea-9f65-bab0ad8f6cf6.png new file mode 100644 index 0000000000000000000000000000000000000000..8ad318f281544ce651a8372025b6270716813ca7 GIT binary patch literal 478 zcmV<40U`d0P)=B%5LDrgBIzi@@Bye&(`8)6KY-K}@ehPrnwS^hAK;G3&`_shhMsXsI(|TQu?3Pq zKpe=<+{ilJ-TF?a3%1*>xF>?UM*nvLDU(Mm38Z_*=Nl3!6)%2G0L&q+3qDV@!_V|U zl3h(ehbw|>JU}M!8DZUMC6IzN_hry94}doqr=|h{Q>T3Ij*o$NPksF+Vu7?0D z~{SJg1yxA<))kz?u6%w;)Yqr7NKR+Kw~$*U zDhJuTe4Rctc8`dCu1OC4Zw5d8(3lC9-QigjBrGf2R(BSEF1yXBC`cHHlaz82KWlB5 U5-!pN7ytkO07*qoM6N<$f;GX`$N&HU literal 0 HcmV?d00001 diff --git a/sprites/s_button_path_not_found_icon/layers/20bf0b30-087f-41ea-9f65-bab0ad8f6cf6/43bd08bf-5a27-4723-8af6-0df84c346384.png b/sprites/s_button_path_not_found_icon/layers/20bf0b30-087f-41ea-9f65-bab0ad8f6cf6/43bd08bf-5a27-4723-8af6-0df84c346384.png new file mode 100644 index 0000000000000000000000000000000000000000..8ad318f281544ce651a8372025b6270716813ca7 GIT binary patch literal 478 zcmV<40U`d0P)=B%5LDrgBIzi@@Bye&(`8)6KY-K}@ehPrnwS^hAK;G3&`_shhMsXsI(|TQu?3Pq zKpe=<+{ilJ-TF?a3%1*>xF>?UM*nvLDU(Mm38Z_*=Nl3!6)%2G0L&q+3qDV@!_V|U zl3h(ehbw|>JU}M!8DZUMC6IzN_hry94}doqr=|h{Q>T3Ij*o$NPksF+Vu7?0D z~{SJg1yxA<))kz?u6%w;)Yqr7NKR+Kw~$*U zDhJuTe4Rctc8`dCu1OC4Zw5d8(3lC9-QigjBrGf2R(BSEF1yXBC`cHHlaz82KWlB5 U5-!pN7ytkO07*qoM6N<$f;GX`$N&HU literal 0 HcmV?d00001 diff --git a/sprites/s_button_path_not_found_icon/s_button_path_not_found_icon.yy b/sprites/s_button_path_not_found_icon/s_button_path_not_found_icon.yy new file mode 100644 index 000000000..0330b8da7 --- /dev/null +++ b/sprites/s_button_path_not_found_icon/s_button_path_not_found_icon.yy @@ -0,0 +1,79 @@ +{ + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 4, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 2, + "bbox_right": 23, + "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": [ + {"compositeImage":{"FrameId":{"name":"20bf0b30-087f-41ea-9f65-bab0ad8f6cf6","path":"sprites/s_button_path_not_found_icon/s_button_path_not_found_icon.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ + {"FrameId":{"name":"20bf0b30-087f-41ea-9f65-bab0ad8f6cf6","path":"sprites/s_button_path_not_found_icon/s_button_path_not_found_icon.yy",},"LayerId":{"name":"43bd08bf-5a27-4723-8af6-0df84c346384","path":"sprites/s_button_path_not_found_icon/s_button_path_not_found_icon.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, + ],"parent":{"name":"s_button_path_not_found_icon","path":"sprites/s_button_path_not_found_icon/s_button_path_not_found_icon.yy",},"resourceVersion":"1.0","name":"20bf0b30-087f-41ea-9f65-bab0ad8f6cf6","tags":[],"resourceType":"GMSpriteFrame",}, + ], + "sequence": { + "spriteId": {"name":"s_button_path_not_found_icon","path":"sprites/s_button_path_not_found_icon/s_button_path_not_found_icon.yy",}, + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "autoRecord": true, + "volume": 1.0, + "length": 1.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore`1","elementType":"MessageEventKeyframe",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore`1","elementType":"MomentsEventKeyframe",}, + "tracks": [ + {"name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"fcd0eae0-37d1-464b-8779-bdd09d91ae56","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"20bf0b30-087f-41ea-9f65-bab0ad8f6cf6","path":"sprites/s_button_path_not_found_icon/s_button_path_not_found_icon.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe`1","elementType":"SpriteFrameKeyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore`1","elementType":"SpriteFrameKeyframe",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack","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, + "parent": {"name":"s_button_path_not_found_icon","path":"sprites/s_button_path_not_found_icon/s_button_path_not_found_icon.yy",}, + "resourceVersion": "1.4", + "name": "s_button_path_not_found_icon", + "tags": [], + "resourceType": "GMSequence", + }, + "layers": [ + {"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"43bd08bf-5a27-4723-8af6-0df84c346384","tags":[],"resourceType":"GMImageLayer",}, + ], + "nineSlice": null, + "parent": { + "name": "icon", + "path": "folders/sprites/icon.yy", + }, + "resourceVersion": "1.0", + "name": "s_button_path_not_found_icon", + "tags": [], + "resourceType": "GMSprite", +} \ No newline at end of file diff --git a/sprites/s_icon_center_canvas/531efc3e-504c-45a6-9725-1ba64f8e23ac.png b/sprites/s_icon_center_canvas/531efc3e-504c-45a6-9725-1ba64f8e23ac.png new file mode 100644 index 0000000000000000000000000000000000000000..2fc30686ed9404886c6a2a98dbe1cc38729f0725 GIT binary patch literal 305 zcmV-10nYx3P)K;3X+^4B)IRYO33 zt-M|5Fl-0BU8{DmX}JXi%_TUr$Pz&QO=u<1sC|PkVVN_P3rS@+00000NkvXXu0mjf D0lK;3X+^4B)IRYO33 zt-M|5Fl-0BU8{DmX}JXi%_TUr$Pz&QO=u<1sC|PkVVN_P3rS@+00000NkvXXu0mjf D0l`ZX+t*i~ zgIkYbqg`uS97_^&j95UHMVsV~rVhb&3&juhKirL$CMd4e^;oc#m1oPQ0}LI^3*PWv z_~T;AEyhr2BeY*mN}Th`h6Ri#3nEyWe<=K6P&x0k)Wf&s7Yhp?!^fHxGDpQuIA_jy zXz;CO#+?OzuACW#jiJ1%Vj>Hc%B;yMh-_Fb7u)fysHuU~JJqq*ig7vX0vXTH15S`ZX+t*i~ zgIkYbqg`uS97_^&j95UHMVsV~rVhb&3&juhKirL$CMd4e^;oc#m1oPQ0}LI^3*PWv z_~T;AEyhr2BeY*mN}Th`h6Ri#3nEyWe<=K6P&x0k)Wf&s7Yhp?!^fHxGDpQuIA_jy zXz;CO#+?OzuACW#jiJ1%Vj>Hc%B;yMh-_Fb7u)fysHuU~JJqq*ig7vX0vXTH15SPaQNaeaO5BA-M6!dv0V{9HJ5+#(U3V!EV+CCzh>bbqW7wz`(%v XU+~YA@*DL)2QYZL`njxgN@xNAz?eFr literal 0 HcmV?d00001 diff --git a/sprites/s_icon_split_view/ec4f9441-8a68-4767-98e2-fcb8b1e4b808.png b/sprites/s_icon_split_view/ec4f9441-8a68-4767-98e2-fcb8b1e4b808.png new file mode 100644 index 0000000000000000000000000000000000000000..79c2140025da3c0f12db7a11fd0c90a16a18b92c GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjp`I>|Ar*6yfBye(&#cSH?dvPQ zwPBLQ4u&JYjz~1H=rL_%+$c67%fipLB}h=2u~Oo|%xmtGH60D4ToyaJ{0{jtKTIq} pW%CB*TTDGc6Jrc!U1YQCU@*_--1GFXyd}^A22WQ%mvv4FO#oJ?Eqnj~ literal 0 HcmV?d00001 diff --git a/sprites/s_icon_split_view/layers/bc27d796-84c8-44f4-aa64-6435547b8859/4e82b6b0-c703-47fb-a44b-7cbec89788b7.png b/sprites/s_icon_split_view/layers/bc27d796-84c8-44f4-aa64-6435547b8859/4e82b6b0-c703-47fb-a44b-7cbec89788b7.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e346fd0c4f9a75b678513565bf2a3e6977c753 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gj&7LlfAr*7pPPxe0V8G*|T_S&1 zL-K51ih7r*h>PaQNaeaO5BA-M6!dv0V{9HJ5+#(U3V!EV+CCzh>bbqW7wz`(%v XU+~YA@*DL)2QYZL`njxgN@xNAz?eFr literal 0 HcmV?d00001 diff --git a/sprites/s_icon_split_view/layers/ec4f9441-8a68-4767-98e2-fcb8b1e4b808/4e82b6b0-c703-47fb-a44b-7cbec89788b7.png b/sprites/s_icon_split_view/layers/ec4f9441-8a68-4767-98e2-fcb8b1e4b808/4e82b6b0-c703-47fb-a44b-7cbec89788b7.png new file mode 100644 index 0000000000000000000000000000000000000000..79c2140025da3c0f12db7a11fd0c90a16a18b92c GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjp`I>|Ar*6yfBye(&#cSH?dvPQ zwPBLQ4u&JYjz~1H=rL_%+$c67%fipLB}h=2u~Oo|%xmtGH60D4ToyaJ{0{jtKTIq} pW%CB*TTDGc6Jrc!U1YQCU@*_--1GFXyd}^A22WQ%mvv4FO#oJ?Eqnj~ literal 0 HcmV?d00001 diff --git a/sprites/s_icon_split_view/s_icon_split_view.yy b/sprites/s_icon_split_view/s_icon_split_view.yy new file mode 100644 index 000000000..5b613940c --- /dev/null +++ b/sprites/s_icon_split_view/s_icon_split_view.yy @@ -0,0 +1,87 @@ +{ + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 4, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 1, + "bbox_right": 22, + "bbox_top": 1, + "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": [ + {"compositeImage":{"FrameId":{"name":"ec4f9441-8a68-4767-98e2-fcb8b1e4b808","path":"sprites/s_icon_split_view/s_icon_split_view.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ + {"FrameId":{"name":"ec4f9441-8a68-4767-98e2-fcb8b1e4b808","path":"sprites/s_icon_split_view/s_icon_split_view.yy",},"LayerId":{"name":"4e82b6b0-c703-47fb-a44b-7cbec89788b7","path":"sprites/s_icon_split_view/s_icon_split_view.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, + ],"parent":{"name":"s_icon_split_view","path":"sprites/s_icon_split_view/s_icon_split_view.yy",},"resourceVersion":"1.0","name":"ec4f9441-8a68-4767-98e2-fcb8b1e4b808","tags":[],"resourceType":"GMSpriteFrame",}, + {"compositeImage":{"FrameId":{"name":"d1fe4196-5f92-4cb6-81d4-14e195d537f0","path":"sprites/s_icon_split_view/s_icon_split_view.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ + {"FrameId":{"name":"d1fe4196-5f92-4cb6-81d4-14e195d537f0","path":"sprites/s_icon_split_view/s_icon_split_view.yy",},"LayerId":{"name":"4e82b6b0-c703-47fb-a44b-7cbec89788b7","path":"sprites/s_icon_split_view/s_icon_split_view.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, + ],"parent":{"name":"s_icon_split_view","path":"sprites/s_icon_split_view/s_icon_split_view.yy",},"resourceVersion":"1.0","name":"d1fe4196-5f92-4cb6-81d4-14e195d537f0","tags":[],"resourceType":"GMSpriteFrame",}, + {"compositeImage":{"FrameId":{"name":"bc27d796-84c8-44f4-aa64-6435547b8859","path":"sprites/s_icon_split_view/s_icon_split_view.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ + {"FrameId":{"name":"bc27d796-84c8-44f4-aa64-6435547b8859","path":"sprites/s_icon_split_view/s_icon_split_view.yy",},"LayerId":{"name":"4e82b6b0-c703-47fb-a44b-7cbec89788b7","path":"sprites/s_icon_split_view/s_icon_split_view.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, + ],"parent":{"name":"s_icon_split_view","path":"sprites/s_icon_split_view/s_icon_split_view.yy",},"resourceVersion":"1.0","name":"bc27d796-84c8-44f4-aa64-6435547b8859","tags":[],"resourceType":"GMSpriteFrame",}, + ], + "sequence": { + "spriteId": {"name":"s_icon_split_view","path":"sprites/s_icon_split_view/s_icon_split_view.yy",}, + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "autoRecord": true, + "volume": 1.0, + "length": 3.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore`1","elementType":"MessageEventKeyframe",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore`1","elementType":"MomentsEventKeyframe",}, + "tracks": [ + {"name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"25a1854a-56f0-49f7-a98c-01bd26245b05","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"ec4f9441-8a68-4767-98e2-fcb8b1e4b808","path":"sprites/s_icon_split_view/s_icon_split_view.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe`1","elementType":"SpriteFrameKeyframe",}, + {"id":"694d489a-3042-40ba-aa6f-a361520578a5","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"d1fe4196-5f92-4cb6-81d4-14e195d537f0","path":"sprites/s_icon_split_view/s_icon_split_view.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe`1","elementType":"SpriteFrameKeyframe",}, + {"id":"7e82c627-a6c0-468f-a4b7-e645269d86d3","Key":2.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"bc27d796-84c8-44f4-aa64-6435547b8859","path":"sprites/s_icon_split_view/s_icon_split_view.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe`1","elementType":"SpriteFrameKeyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore`1","elementType":"SpriteFrameKeyframe",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack","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, + "parent": {"name":"s_icon_split_view","path":"sprites/s_icon_split_view/s_icon_split_view.yy",}, + "resourceVersion": "1.4", + "name": "s_icon_split_view", + "tags": [], + "resourceType": "GMSequence", + }, + "layers": [ + {"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"4e82b6b0-c703-47fb-a44b-7cbec89788b7","tags":[],"resourceType":"GMImageLayer",}, + ], + "nineSlice": null, + "parent": { + "name": "preview", + "path": "folders/sprites/panels/preview.yy", + }, + "resourceVersion": "1.0", + "name": "s_icon_split_view", + "tags": [], + "resourceType": "GMSprite", +} \ No newline at end of file diff --git a/sprites/s_node_edge_detect/73c31b10-c743-452c-bbde-8561c3d7c7e5.png b/sprites/s_node_edge_detect/73c31b10-c743-452c-bbde-8561c3d7c7e5.png new file mode 100644 index 0000000000000000000000000000000000000000..87d7e12f6cb8b27d667bf1a0beedd3b234f38c77 GIT binary patch literal 921 zcmV;K17`e*P)a@F~hdYWQU^-y<{rlG?nmgeA z+jkj9_U*g*7;?|T4D?dmtKUYT+F*f9rIHr5|3 ztgMGXmeVC0!W;plJV0z>0MNk(KuQ2f{{dq4f&hjCNU%77ot=FS8yg$Hl&mb+oVRaY z|7t2N`wuKjCRDYzRnWu%b%jL&T-@C2ftK5O1qCs|(h3x?-M@2(Vc+)c#a(svv0pxa z_6CN?1*$oq4r2KwIYmX;pr}X&4o*%CHK2kkIX9PO|Bjtfzyy5~sK*?iBUnhW9BAQn z4h{|pMHOX+5AWVFNJvZLR1eC^0zyJ;Th^?>>j)MiEqCDJ;@ZN@!otNTAi!|_@)d?7 z`}Q;Z`}dE*FD#TnQ&$(OK4|o?ZC<_l1kel#Y&nUAkmY^NElb(h*~8ua{h86?n*ms8 zF|1p4N>{)hp+LTt$)`(B06miHnQdD=9mR85o>c4cFAwVVFC4 z3d8bw^Km)?lwPKGb<6fNHccq0uPY$R0o_o`lXG*Ju_ZPb0LcN>5OhRvbQJTnp5A<5 zR4hPF4=mUe1G7-puV25sQuFfgT8{3B-o_?|!+ZBK*g897r~xHdM|XFIvnNlk0CF{O zI-m~NC}Cw~?T<-I#Tx8{90BwtgQ|uG)*J%L8D~$NPzKr&01Slew13!~&2nuU@*uuxZsQ z23;c~6uIr|H!!?-_6)>?*B2~k`m4QzgII`(cYMIv(}Q92>NUTwUAlY?S)84N{RNQf zK(4S@&@}^#P;hZdi6cM-)t}$LzW^&FP*CFqEGQfnma;dmUd?T*s%9tKc8EDYfgY$K vN-YBt04AKJKnjHE23Y86*{A~sWe5NO3|%~|R%pj?00000NkvXXu0mjfg)XH| literal 0 HcmV?d00001 diff --git a/sprites/s_node_edge_detect/layers/73c31b10-c743-452c-bbde-8561c3d7c7e5/83e03dba-03e5-4450-aae1-595c8fbfadb3.png b/sprites/s_node_edge_detect/layers/73c31b10-c743-452c-bbde-8561c3d7c7e5/83e03dba-03e5-4450-aae1-595c8fbfadb3.png new file mode 100644 index 0000000000000000000000000000000000000000..87d7e12f6cb8b27d667bf1a0beedd3b234f38c77 GIT binary patch literal 921 zcmV;K17`e*P)a@F~hdYWQU^-y<{rlG?nmgeA z+jkj9_U*g*7;?|T4D?dmtKUYT+F*f9rIHr5|3 ztgMGXmeVC0!W;plJV0z>0MNk(KuQ2f{{dq4f&hjCNU%77ot=FS8yg$Hl&mb+oVRaY z|7t2N`wuKjCRDYzRnWu%b%jL&T-@C2ftK5O1qCs|(h3x?-M@2(Vc+)c#a(svv0pxa z_6CN?1*$oq4r2KwIYmX;pr}X&4o*%CHK2kkIX9PO|Bjtfzyy5~sK*?iBUnhW9BAQn z4h{|pMHOX+5AWVFNJvZLR1eC^0zyJ;Th^?>>j)MiEqCDJ;@ZN@!otNTAi!|_@)d?7 z`}Q;Z`}dE*FD#TnQ&$(OK4|o?ZC<_l1kel#Y&nUAkmY^NElb(h*~8ua{h86?n*ms8 zF|1p4N>{)hp+LTt$)`(B06miHnQdD=9mR85o>c4cFAwVVFC4 z3d8bw^Km)?lwPKGb<6fNHccq0uPY$R0o_o`lXG*Ju_ZPb0LcN>5OhRvbQJTnp5A<5 zR4hPF4=mUe1G7-puV25sQuFfgT8{3B-o_?|!+ZBK*g897r~xHdM|XFIvnNlk0CF{O zI-m~NC}Cw~?T<-I#Tx8{90BwtgQ|uG)*J%L8D~$NPzKr&01Slew13!~&2nuU@*uuxZsQ z23;c~6uIr|H!!?-_6)>?*B2~k`m4QzgII`(cYMIv(}Q92>NUTwUAlY?S)84N{RNQf zK(4S@&@}^#P;hZdi6cM-)t}$LzW^&FP*CFqEGQfnma;dmUd?T*s%9tKc8EDYfgY$K vN-YBt04AKJKnjHE23Y86*{A~sWe5NO3|%~|R%pj?00000NkvXXu0mjfg)XH| literal 0 HcmV?d00001 diff --git a/sprites/s_node_edge_detect/s_node_edge_detect.yy b/sprites/s_node_edge_detect/s_node_edge_detect.yy new file mode 100644 index 000000000..212c201d7 --- /dev/null +++ b/sprites/s_node_edge_detect/s_node_edge_detect.yy @@ -0,0 +1,79 @@ +{ + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 4, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 3, + "bbox_right": 29, + "bbox_top": 3, + "bbox_bottom": 26, + "HTile": false, + "VTile": false, + "For3D": false, + "width": 32, + "height": 32, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "swatchColours": null, + "gridX": 0, + "gridY": 0, + "frames": [ + {"compositeImage":{"FrameId":{"name":"73c31b10-c743-452c-bbde-8561c3d7c7e5","path":"sprites/s_node_edge_detect/s_node_edge_detect.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ + {"FrameId":{"name":"73c31b10-c743-452c-bbde-8561c3d7c7e5","path":"sprites/s_node_edge_detect/s_node_edge_detect.yy",},"LayerId":{"name":"83e03dba-03e5-4450-aae1-595c8fbfadb3","path":"sprites/s_node_edge_detect/s_node_edge_detect.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, + ],"parent":{"name":"s_node_edge_detect","path":"sprites/s_node_edge_detect/s_node_edge_detect.yy",},"resourceVersion":"1.0","name":"73c31b10-c743-452c-bbde-8561c3d7c7e5","tags":[],"resourceType":"GMSpriteFrame",}, + ], + "sequence": { + "spriteId": {"name":"s_node_edge_detect","path":"sprites/s_node_edge_detect/s_node_edge_detect.yy",}, + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "autoRecord": true, + "volume": 1.0, + "length": 1.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore`1","elementType":"MessageEventKeyframe",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore`1","elementType":"MomentsEventKeyframe",}, + "tracks": [ + {"name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"e45a69fe-359d-4a7b-8750-d52f2a06bcc1","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"73c31b10-c743-452c-bbde-8561c3d7c7e5","path":"sprites/s_node_edge_detect/s_node_edge_detect.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe`1","elementType":"SpriteFrameKeyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore`1","elementType":"SpriteFrameKeyframe",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack","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": 16, + "yorigin": 16, + "eventToFunction": {}, + "eventStubScript": null, + "parent": {"name":"s_node_edge_detect","path":"sprites/s_node_edge_detect/s_node_edge_detect.yy",}, + "resourceVersion": "1.4", + "name": "s_node_edge_detect", + "tags": [], + "resourceType": "GMSequence", + }, + "layers": [ + {"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"83e03dba-03e5-4450-aae1-595c8fbfadb3","tags":[],"resourceType":"GMImageLayer",}, + ], + "nineSlice": null, + "parent": { + "name": "icons", + "path": "folders/nodes/icons.yy", + }, + "resourceVersion": "1.0", + "name": "s_node_edge_detect", + "tags": [], + "resourceType": "GMSprite", +} \ No newline at end of file diff --git a/sprites/s_node_error/b19f5ed9-3e7e-4707-a86e-2cd903191a15.png b/sprites/s_node_error/b19f5ed9-3e7e-4707-a86e-2cd903191a15.png new file mode 100644 index 0000000000000000000000000000000000000000..c9eb5df471d30dcb9e49d191a71397ac9db3a5f6 GIT binary patch literal 828 zcmV-C1H=4@P)~2Dp|lc0?rCz90C=DpeMqx&jhEwOpDnAnSk$ldB5u0s?VzK8U*%L&#RtRy%G;) zIiTZbnpZr)Bpz2iTLFgH_zNd_T=i0R-aE$Rg-isL#MZ$d5V-B|Q`K)(zq?_0@2KjN zs;_+R$Eq)@{%(Y1^iC!NdJt{Q$~Of5uIf($W-&q+Rlin!?`te%Cj`zUM%+vUqHo>w zsn4;U{~|!dlGi6EXmekCDA=o-Ws?zz(lC=j+%FoLE>T=T-n@}~ttPHn8qYMqB(yJi z+!K-L>B2#b;gKJKJx${?0=I!fW)}+8H*y2+1Do7l9KsTmsQ*{VL7$RQVK+8oyJ8QU zDZ1mMg=aI>hu}gf9?u;S02mw7&kF?hvXKReEKC_3sq@^^ zt7W(^lnd15Xg~D1$=9;2vKE3u6IoB`0{S4S7-D0OeCJ5TdtVDX{7x{eQFCMWz2Dc|nXbv+*Ic+^>lY`ph0QDFJ>urywlhoz4bnr+om9{sjRTNj?c} zCJ_A}u<*{<-K{TRlx%+|{&T_vP%rX?igq6nfDMlK!u{i)QD9{8bS47bfqzC3nHl)x zfmDUOV1h~foHmJet^~Lqk(p%nbIKjJ5NW*=RFuR581fh7C7O5SsX$Z!0000~2Dp|lc0?rCz90C=DpeMqx&jhEwOpDnAnSk$ldB5u0s?VzK8U*%L&#RtRy%G;) zIiTZbnpZr)Bpz2iTLFgH_zNd_T=i0R-aE$Rg-isL#MZ$d5V-B|Q`K)(zq?_0@2KjN zs;_+R$Eq)@{%(Y1^iC!NdJt{Q$~Of5uIf($W-&q+Rlin!?`te%Cj`zUM%+vUqHo>w zsn4;U{~|!dlGi6EXmekCDA=o-Ws?zz(lC=j+%FoLE>T=T-n@}~ttPHn8qYMqB(yJi z+!K-L>B2#b;gKJKJx${?0=I!fW)}+8H*y2+1Do7l9KsTmsQ*{VL7$RQVK+8oyJ8QU zDZ1mMg=aI>hu}gf9?u;S02mw7&kF?hvXKReEKC_3sq@^^ zt7W(^lnd15Xg~D1$=9;2vKE3u6IoB`0{S4S7-D0OeCJ5TdtVDX{7x{eQFCMWz2Dc|nXbv+*Ic+^>lY`ph0QDFJ>urywlhoz4bnr+om9{sjRTNj?c} zCJ_A}u<*{<-K{TRlx%+|{&T_vP%rX?igq6nfDMlK!u{i)QD9{8bS47bfqzC3nHl)x zfmDUOV1h~foHmJet^~Lqk(p%nbIKjJ5NW*=RFuR581fh7C7O5SsX$Z!0000",}, - "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore",}, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore`1","elementType":"MessageEventKeyframe",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore`1","elementType":"MomentsEventKeyframe",}, "tracks": [ {"name":"frames","spriteId":null,"keyframes":{"Keyframes":[ - {"id":"d27ecddf-066e-43e9-9c26-57ec1e936289","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"1ec8ab99-b9e9-4b28-8dd0-9494d6b1f07e","path":"sprites/s_node_shape/s_node_shape.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe",}, - ],"resourceVersion":"1.0","resourceType":"KeyframeStore",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack","modifiers":[],}, + {"id":"d27ecddf-066e-43e9-9c26-57ec1e936289","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"1ec8ab99-b9e9-4b28-8dd0-9494d6b1f07e","path":"sprites/s_node_shape/s_node_shape.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe`1","elementType":"SpriteFrameKeyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore`1","elementType":"SpriteFrameKeyframe",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack","modifiers":[],}, ], - "visibleRange": {"x":0.0,"y":0.0,}, + "visibleRange": null, "lockOrigin": false, "showBackdrop": true, "showBackdropImage": false, diff --git a/sprites/s_node_val/0903a56b-a604-44e6-9f20-66b30b67e2df.png b/sprites/s_node_val/0903a56b-a604-44e6-9f20-66b30b67e2df.png new file mode 100644 index 0000000000000000000000000000000000000000..15bbe8268b4556491b07fc58ebc29bb3b400b5a0 GIT binary patch literal 434 zcmV;j0ZsmiP)OSF0t-MmK?hleG^$C8!fsJK?y`)qKm=kh> z8qaxix97S^L}5CX;>8?Z(W?yM)!zP@2n`7ToSkTD5HTbfbiLM8TOFtjGVXrALMhUg-vAeu2!RMv cfXW8^0^bj$56rupV*mgE07*qoM6N<$g3o@u=Kufz literal 0 HcmV?d00001 diff --git a/sprites/s_node_val/e7831c37-1aa9-4d98-aee9-be99c7a88c0d.png b/sprites/s_node_val/e7831c37-1aa9-4d98-aee9-be99c7a88c0d.png new file mode 100644 index 0000000000000000000000000000000000000000..9b28aa2ef58ea1e95c23a817f3e757b5cbf972e7 GIT binary patch literal 369 zcmV-%0gnEOP)pC+07wS_4SIku z;3-)11t8{!ss8fyFGK6JXJB?xs3?P~0tZYAWWfcX9s`geEKtD>$eKX_r1|if&tUfR z*S{GSbSWWA^F#F*ut5Ec;q1@f{=(T`kl08-AEcKB$N(9D0YFZ^aP1qIEg{N^O$i7j zuwV&oFpv~wgR_maxN#X^4>ABNP*q@uv+=lq0k;A2@K8sN0pbnd;bsQg42n)d1{}l{ z4huS!fU)rpr)H2|7LYnz225P|lHvA)9}H9K<-sn(W(Ny6Z9|eLMp^)A#se;b^nzRf z0s%mbl9WLJWHSh0vHc@d4>S-#83UBI(J~VbXI}(sM#)StLx5?U)a(oZQv6>_U!c(> P00000NkvXXu0mjf3W1G# literal 0 HcmV?d00001 diff --git a/sprites/s_node_val/layers/0903a56b-a604-44e6-9f20-66b30b67e2df/bcf8f0af-39e1-47ae-8330-c997b5275637.png b/sprites/s_node_val/layers/0903a56b-a604-44e6-9f20-66b30b67e2df/bcf8f0af-39e1-47ae-8330-c997b5275637.png new file mode 100644 index 0000000000000000000000000000000000000000..15bbe8268b4556491b07fc58ebc29bb3b400b5a0 GIT binary patch literal 434 zcmV;j0ZsmiP)OSF0t-MmK?hleG^$C8!fsJK?y`)qKm=kh> z8qaxix97S^L}5CX;>8?Z(W?yM)!zP@2n`7ToSkTD5HTbfbiLM8TOFtjGVXrALMhUg-vAeu2!RMv cfXW8^0^bj$56rupV*mgE07*qoM6N<$g3o@u=Kufz literal 0 HcmV?d00001 diff --git a/sprites/s_node_val/layers/e7831c37-1aa9-4d98-aee9-be99c7a88c0d/bcf8f0af-39e1-47ae-8330-c997b5275637.png b/sprites/s_node_val/layers/e7831c37-1aa9-4d98-aee9-be99c7a88c0d/bcf8f0af-39e1-47ae-8330-c997b5275637.png new file mode 100644 index 0000000000000000000000000000000000000000..9b28aa2ef58ea1e95c23a817f3e757b5cbf972e7 GIT binary patch literal 369 zcmV-%0gnEOP)pC+07wS_4SIku z;3-)11t8{!ss8fyFGK6JXJB?xs3?P~0tZYAWWfcX9s`geEKtD>$eKX_r1|if&tUfR z*S{GSbSWWA^F#F*ut5Ec;q1@f{=(T`kl08-AEcKB$N(9D0YFZ^aP1qIEg{N^O$i7j zuwV&oFpv~wgR_maxN#X^4>ABNP*q@uv+=lq0k;A2@K8sN0pbnd;bsQg42n)d1{}l{ z4huS!fU)rpr)H2|7LYnz225P|lHvA)9}H9K<-sn(W(Ny6Z9|eLMp^)A#se;b^nzRf z0s%mbl9WLJWHSh0vHc@d4>S-#83UBI(J~VbXI}(sM#)StLx5?U)a(oZQv6>_U!c(> P00000NkvXXu0mjf3W1G# literal 0 HcmV?d00001 diff --git a/sprites/s_node_val/s_node_val.yy b/sprites/s_node_val/s_node_val.yy new file mode 100644 index 000000000..b787536c5 --- /dev/null +++ b/sprites/s_node_val/s_node_val.yy @@ -0,0 +1,83 @@ +{ + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 4, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 0, + "bbox_right": 15, + "bbox_top": 0, + "bbox_bottom": 15, + "HTile": false, + "VTile": false, + "For3D": false, + "width": 16, + "height": 16, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "swatchColours": null, + "gridX": 0, + "gridY": 0, + "frames": [ + {"compositeImage":{"FrameId":{"name":"e7831c37-1aa9-4d98-aee9-be99c7a88c0d","path":"sprites/s_node_val/s_node_val.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ + {"FrameId":{"name":"e7831c37-1aa9-4d98-aee9-be99c7a88c0d","path":"sprites/s_node_val/s_node_val.yy",},"LayerId":{"name":"bcf8f0af-39e1-47ae-8330-c997b5275637","path":"sprites/s_node_val/s_node_val.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, + ],"parent":{"name":"s_node_val","path":"sprites/s_node_val/s_node_val.yy",},"resourceVersion":"1.0","name":"e7831c37-1aa9-4d98-aee9-be99c7a88c0d","tags":[],"resourceType":"GMSpriteFrame",}, + {"compositeImage":{"FrameId":{"name":"0903a56b-a604-44e6-9f20-66b30b67e2df","path":"sprites/s_node_val/s_node_val.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ + {"FrameId":{"name":"0903a56b-a604-44e6-9f20-66b30b67e2df","path":"sprites/s_node_val/s_node_val.yy",},"LayerId":{"name":"bcf8f0af-39e1-47ae-8330-c997b5275637","path":"sprites/s_node_val/s_node_val.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, + ],"parent":{"name":"s_node_val","path":"sprites/s_node_val/s_node_val.yy",},"resourceVersion":"1.0","name":"0903a56b-a604-44e6-9f20-66b30b67e2df","tags":[],"resourceType":"GMSpriteFrame",}, + ], + "sequence": { + "spriteId": {"name":"s_node_val","path":"sprites/s_node_val/s_node_val.yy",}, + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "autoRecord": true, + "volume": 1.0, + "length": 2.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore`1","elementType":"MessageEventKeyframe",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore`1","elementType":"MomentsEventKeyframe",}, + "tracks": [ + {"name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"9c64e0d5-6473-4830-88bc-c943fc66d388","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"e7831c37-1aa9-4d98-aee9-be99c7a88c0d","path":"sprites/s_node_val/s_node_val.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe`1","elementType":"SpriteFrameKeyframe",}, + {"id":"b6aa06c9-c04f-4cb6-ae92-4026e8bcc91e","Key":1.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"0903a56b-a604-44e6-9f20-66b30b67e2df","path":"sprites/s_node_val/s_node_val.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe`1","elementType":"SpriteFrameKeyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore`1","elementType":"SpriteFrameKeyframe",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack","modifiers":[],}, + ], + "visibleRange": null, + "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, + "parent": {"name":"s_node_val","path":"sprites/s_node_val/s_node_val.yy",}, + "resourceVersion": "1.4", + "name": "s_node_val", + "tags": [], + "resourceType": "GMSequence", + }, + "layers": [ + {"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"bcf8f0af-39e1-47ae-8330-c997b5275637","tags":[],"resourceType":"GMImageLayer",}, + ], + "nineSlice": null, + "parent": { + "name": "nodes", + "path": "folders/sprites/nodes.yy", + }, + "resourceVersion": "1.0", + "name": "s_node_val", + "tags": [], + "resourceType": "GMSprite", +} \ No newline at end of file diff --git a/sprites/s_panel_active_split/7642bca8-ad08-4054-afe3-57f6f31ffbd3.png b/sprites/s_panel_active_split/7642bca8-ad08-4054-afe3-57f6f31ffbd3.png new file mode 100644 index 0000000000000000000000000000000000000000..394c9cd21e6e9d005a80f9b048d4a4649480e44f GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a)4$(}BbAr*6yfBye(&n)5N70xh; z*FlEi$R7d6wtj~_j5_noKQnqXu&%nn;34M_#KEjkXLDnM=Sw~ZU-5_qYRSPp>pn7^ zNDy0L{6W+0+LZ%LrN$c-8d^OrKiuYE)aMwmpn7^ zNDy0L{6W+0+LZ%LrN$c-8d^OrKiuYE)aMwm=iBf z@4H$%;eU%!?(~~`a#>kaCdg!Vm_A_Gqqyl{+^>#p3@h5WySB2F{8iNS0~)~K>FVdQ I&MBb@056mw^#A|> literal 0 HcmV?d00001 diff --git a/sprites/s_toolbar_shadow/layers/1e22b6d2-03c6-43ce-9309-853a1c4dc37e/3f73e0a2-39cf-4a1c-bcf9-9b8a04ac11f6.png b/sprites/s_toolbar_shadow/layers/1e22b6d2-03c6-43ce-9309-853a1c4dc37e/3f73e0a2-39cf-4a1c-bcf9-9b8a04ac11f6.png new file mode 100644 index 0000000000000000000000000000000000000000..4aeaf61819af910f992803115df441a3f6e48ad1 GIT binary patch literal 110 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&kQ%@Jikcv5T`w#LmC=iBf z@4H$%;eU%!?(~~`a#>kaCdg!Vm_A_Gqqyl{+^>#p3@h5WySB2F{8iNS0~)~K>FVdQ I&MBb@056mw^#A|> literal 0 HcmV?d00001 diff --git a/sprites/s_toolbar_shadow/s_toolbar_shadow.yy b/sprites/s_toolbar_shadow/s_toolbar_shadow.yy new file mode 100644 index 000000000..7cd86e95f --- /dev/null +++ b/sprites/s_toolbar_shadow/s_toolbar_shadow.yy @@ -0,0 +1,79 @@ +{ + "bboxMode": 0, + "collisionKind": 1, + "type": 0, + "origin": 4, + "preMultiplyAlpha": false, + "edgeFiltering": false, + "collisionTolerance": 0, + "swfPrecision": 2.525, + "bbox_left": 0, + "bbox_right": 11, + "bbox_top": 1, + "bbox_bottom": 11, + "HTile": false, + "VTile": false, + "For3D": false, + "width": 12, + "height": 12, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "swatchColours": null, + "gridX": 0, + "gridY": 0, + "frames": [ + {"compositeImage":{"FrameId":{"name":"1e22b6d2-03c6-43ce-9309-853a1c4dc37e","path":"sprites/s_toolbar_shadow/s_toolbar_shadow.yy",},"LayerId":null,"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",},"images":[ + {"FrameId":{"name":"1e22b6d2-03c6-43ce-9309-853a1c4dc37e","path":"sprites/s_toolbar_shadow/s_toolbar_shadow.yy",},"LayerId":{"name":"3f73e0a2-39cf-4a1c-bcf9-9b8a04ac11f6","path":"sprites/s_toolbar_shadow/s_toolbar_shadow.yy",},"resourceVersion":"1.0","name":"","tags":[],"resourceType":"GMSpriteBitmap",}, + ],"parent":{"name":"s_toolbar_shadow","path":"sprites/s_toolbar_shadow/s_toolbar_shadow.yy",},"resourceVersion":"1.0","name":"1e22b6d2-03c6-43ce-9309-853a1c4dc37e","tags":[],"resourceType":"GMSpriteFrame",}, + ], + "sequence": { + "spriteId": {"name":"s_toolbar_shadow","path":"sprites/s_toolbar_shadow/s_toolbar_shadow.yy",}, + "timeUnits": 1, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "autoRecord": true, + "volume": 1.0, + "length": 1.0, + "events": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore`1","elementType":"MessageEventKeyframe",}, + "moments": {"Keyframes":[],"resourceVersion":"1.0","resourceType":"KeyframeStore`1","elementType":"MomentsEventKeyframe",}, + "tracks": [ + {"name":"frames","spriteId":null,"keyframes":{"Keyframes":[ + {"id":"29c729d2-ee39-4e03-82e9-ad5ede09fb39","Key":0.0,"Length":1.0,"Stretch":false,"Disabled":false,"IsCreationKey":false,"Channels":{"0":{"Id":{"name":"1e22b6d2-03c6-43ce-9309-853a1c4dc37e","path":"sprites/s_toolbar_shadow/s_toolbar_shadow.yy",},"resourceVersion":"1.0","resourceType":"SpriteFrameKeyframe",},},"resourceVersion":"1.0","resourceType":"Keyframe`1","elementType":"SpriteFrameKeyframe",}, + ],"resourceVersion":"1.0","resourceType":"KeyframeStore`1","elementType":"SpriteFrameKeyframe",},"trackColour":0,"inheritsTrackColour":true,"builtinName":0,"traits":0,"interpolation":1,"tracks":[],"events":[],"isCreationTrack":false,"resourceVersion":"1.0","tags":[],"resourceType":"GMSpriteFramesTrack","modifiers":[],}, + ], + "visibleRange": null, + "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, + "parent": {"name":"s_toolbar_shadow","path":"sprites/s_toolbar_shadow/s_toolbar_shadow.yy",}, + "resourceVersion": "1.4", + "name": "s_toolbar_shadow", + "tags": [], + "resourceType": "GMSequence", + }, + "layers": [ + {"visible":true,"isLocked":false,"blendMode":0,"opacity":100.0,"displayName":"default","resourceVersion":"1.0","name":"3f73e0a2-39cf-4a1c-bcf9-9b8a04ac11f6","tags":[],"resourceType":"GMImageLayer",}, + ], + "nineSlice": null, + "parent": { + "name": "panels", + "path": "folders/sprites/panels.yy", + }, + "resourceVersion": "1.0", + "name": "s_toolbar_shadow", + "tags": [], + "resourceType": "GMSprite", +} \ No newline at end of file