diff --git a/PixelComposer.resource_order b/PixelComposer.resource_order index 6870f5ec7..5e7eca1b6 100644 --- a/PixelComposer.resource_order +++ b/PixelComposer.resource_order @@ -240,12 +240,12 @@ {"name":"node","order":5,"path":"folders/shader/UI/node.yy",}, {"name":"palette mixer","order":2,"path":"folders/shader/UI/palette mixer.yy",}, {"name":"sprites","order":336,"path":"folders/sprites.yy",}, - {"name":"gameframe","order":1,"path":"folders/sprites/gameframe.yy",}, - {"name":"misc","order":2,"path":"folders/sprites/misc.yy",}, - {"name":"nodes","order":3,"path":"folders/sprites/nodes.yy",}, - {"name":"profiler","order":5,"path":"folders/sprites/profiler.yy",}, - {"name":"texture","order":4,"path":"folders/sprites/texture.yy",}, - {"name":"theme","order":6,"path":"folders/sprites/theme.yy",}, + {"name":"bs","order":1,"path":"folders/sprites/bs.yy",}, + {"name":"gameframe","order":2,"path":"folders/sprites/gameframe.yy",}, + {"name":"misc","order":3,"path":"folders/sprites/misc.yy",}, + {"name":"nodes","order":4,"path":"folders/sprites/nodes.yy",}, + {"name":"profiler","order":6,"path":"folders/sprites/profiler.yy",}, + {"name":"texture","order":5,"path":"folders/sprites/texture.yy",}, {"name":"font","order":9,"path":"folders/sprites/theme/font.yy",}, {"name":"inspector","order":1,"path":"folders/sprites/theme/inspector.yy",}, {"name":"meta","order":2,"path":"folders/sprites/theme/meta.yy",}, @@ -258,7 +258,11 @@ {"name":"UI","order":7,"path":"folders/sprites/theme/UI.yy",}, {"name":"widget","order":8,"path":"folders/sprites/theme/widget.yy",}, {"name":"widgets","order":334,"path":"folders/widgets.yy",}, - {"name":"object","order":18,"path":"folders/widgets/object.yy",}, + {"name":"button","order":1,"path":"folders/widgets/button.yy",}, + {"name":"object","order":5,"path":"folders/widgets/object.yy",}, + {"name":"rotator","order":2,"path":"folders/widgets/rotator.yy",}, + {"name":"sliders","order":3,"path":"folders/widgets/sliders.yy",}, + {"name":"text","order":4,"path":"folders/widgets/text.yy",}, ], "ResourceOrderSettings":[ {"name":"ac_disappear","order":2,"path":"animcurves/ac_disappear/ac_disappear.yy",}, @@ -510,8 +514,8 @@ {"name":"canvas_tool_selection","order":7,"path":"scripts/canvas_tool_selection/canvas_tool_selection.yy",}, {"name":"canvas_tool_skew","order":6,"path":"scripts/canvas_tool_skew/canvas_tool_skew.yy",}, {"name":"canvas_tool_with_selector","order":5,"path":"scripts/canvas_tool_with_selector/canvas_tool_with_selector.yy",}, - {"name":"checkboxActive","order":11,"path":"scripts/checkboxActive/checkboxActive.yy",}, - {"name":"checkboxGroup","order":6,"path":"scripts/checkboxGroup/checkboxGroup.yy",}, + {"name":"checkboxActive","order":13,"path":"scripts/checkboxActive/checkboxActive.yy",}, + {"name":"checkboxGroup","order":11,"path":"scripts/checkboxGroup/checkboxGroup.yy",}, {"name":"collection_data","order":9,"path":"scripts/collection_data/collection_data.yy",}, {"name":"color_function","order":9,"path":"scripts/color_function/color_function.yy",}, {"name":"color_loader","order":13,"path":"scripts/color_loader/color_loader.yy",}, @@ -523,7 +527,7 @@ {"name":"cross_product","order":3,"path":"scripts/cross_product/cross_product.yy",}, {"name":"curve_bounce_function","order":1,"path":"scripts/curve_bounce_function/curve_bounce_function.yy",}, {"name":"curve_damping_function","order":2,"path":"scripts/curve_damping_function/curve_damping_function.yy",}, - {"name":"curveBox","order":1,"path":"scripts/curveBox/curveBox.yy",}, + {"name":"curveBox","order":6,"path":"scripts/curveBox/curveBox.yy",}, {"name":"d3d_bbox","order":8,"path":"scripts/d3d_bbox/d3d_bbox.yy",}, {"name":"d3d_camera_object","order":1,"path":"scripts/d3d_camera_object/d3d_camera_object.yy",}, {"name":"d3d_cone","order":5,"path":"scripts/d3d_cone/d3d_cone.yy",}, @@ -625,7 +629,7 @@ {"name":"font_data","order":10,"path":"scripts/font_data/font_data.yy",}, {"name":"font_loader","order":8,"path":"scripts/font_loader/font_loader.yy",}, {"name":"font_sprite_loader","order":10,"path":"scripts/font_sprite_loader/font_sprite_loader.yy",}, - {"name":"fontScrollBox","order":13,"path":"scripts/fontScrollBox/fontScrollBox.yy",}, + {"name":"fontScrollBox","order":14,"path":"scripts/fontScrollBox/fontScrollBox.yy",}, {"name":"FriebaseREST_Firestore_urlUpdateMask","order":20,"path":"scripts/FriebaseREST_Firestore_urlUpdateMask/FriebaseREST_Firestore_urlUpdateMask.yy",}, {"name":"function_register","order":2,"path":"scripts/function_register/function_register.yy",}, {"name":"fx_controller","order":1,"path":"scripts/fx_controller/fx_controller.yy",}, @@ -654,7 +658,7 @@ {"name":"luaHighlight","order":1,"path":"scripts/luaHighlight/luaHighlight.yy",}, {"name":"mac_window_step","order":1,"path":"scripts/mac_window_step/mac_window_step.yy",}, {"name":"mask_function","order":1,"path":"scripts/mask_function/mask_function.yy",}, - {"name":"materialBox","order":14,"path":"scripts/materialBox/materialBox.yy",}, + {"name":"materialBox","order":15,"path":"scripts/materialBox/materialBox.yy",}, {"name":"math_function","order":3,"path":"scripts/math_function/math_function.yy",}, {"name":"matrixGrid","order":6,"path":"scripts/matrixGrid/matrixGrid.yy",}, {"name":"meshBox","order":3,"path":"scripts/meshBox/meshBox.yy",}, @@ -1272,7 +1276,7 @@ {"name":"number_function","order":14,"path":"scripts/number_function/number_function.yy",}, {"name":"obj_reader","order":2,"path":"scripts/obj_reader/obj_reader.yy",}, {"name":"okhsl_function","order":18,"path":"scripts/okhsl_function/okhsl_function.yy",}, - {"name":"outputBox","order":15,"path":"scripts/outputBox/outputBox.yy",}, + {"name":"outputBox","order":16,"path":"scripts/outputBox/outputBox.yy",}, {"name":"pack_bottom_left","order":2,"path":"scripts/pack_bottom_left/pack_bottom_left.yy",}, {"name":"pack_corner","order":3,"path":"scripts/pack_corner/pack_corner.yy",}, {"name":"pack_shelf","order":1,"path":"scripts/pack_shelf/pack_shelf.yy",}, @@ -1359,8 +1363,8 @@ {"name":"safe_operation","order":6,"path":"scripts/safe_operation/safe_operation.yy",}, {"name":"sample_projects","order":6,"path":"scripts/sample_projects/sample_projects.yy",}, {"name":"save_function","order":1,"path":"scripts/save_function/save_function.yy",}, - {"name":"scrollBox","order":2,"path":"scripts/scrollBox/scrollBox.yy",}, - {"name":"scrollPane","order":3,"path":"scripts/scrollPane/scrollPane.yy",}, + {"name":"scrollBox","order":7,"path":"scripts/scrollBox/scrollBox.yy",}, + {"name":"scrollPane","order":8,"path":"scripts/scrollPane/scrollPane.yy",}, {"name":"shell_functions","order":42,"path":"scripts/shell_functions/shell_functions.yy",}, {"name":"sliderRange","order":2,"path":"scripts/sliderRange/sliderRange.yy",}, {"name":"SnapBufferWriteXML","order":1,"path":"scripts/SnapBufferWriteXML/SnapBufferWriteXML.yy",}, @@ -1379,8 +1383,8 @@ {"name":"surface_draw_functions","order":6,"path":"scripts/surface_draw_functions/surface_draw_functions.yy",}, {"name":"surface_functions","order":4,"path":"scripts/surface_functions/surface_functions.yy",}, {"name":"surface_get_palette","order":2,"path":"scripts/surface_get_palette/surface_get_palette.yy",}, - {"name":"surfaceBox","order":4,"path":"scripts/surfaceBox/surfaceBox.yy",}, - {"name":"surfaceDynaBox","order":19,"path":"scripts/surfaceDynaBox/surfaceDynaBox.yy",}, + {"name":"surfaceBox","order":9,"path":"scripts/surfaceBox/surfaceBox.yy",}, + {"name":"surfaceDynaBox","order":17,"path":"scripts/surfaceDynaBox/surfaceDynaBox.yy",}, {"name":"svg_objects","order":1,"path":"scripts/svg_objects/svg_objects.yy",}, {"name":"text_file","order":5,"path":"scripts/text_file/text_file.yy",}, {"name":"textArrayBox","order":1,"path":"scripts/textArrayBox/textArrayBox.yy",}, @@ -1395,7 +1399,7 @@ {"name":"tilesetBox","order":1,"path":"scripts/tilesetBox/tilesetBox.yy",}, {"name":"time_source","order":43,"path":"scripts/time_source/time_source.yy",}, {"name":"timeline_data","order":18,"path":"scripts/timeline_data/timeline_data.yy",}, - {"name":"toggleGroup","order":7,"path":"scripts/toggleGroup/toggleGroup.yy",}, + {"name":"toggleGroup","order":12,"path":"scripts/toggleGroup/toggleGroup.yy",}, {"name":"tooltip_hotkey","order":2,"path":"scripts/tooltip_hotkey/tooltip_hotkey.yy",}, {"name":"tooltip_recent_files","order":3,"path":"scripts/tooltip_recent_files/tooltip_recent_files.yy",}, {"name":"tooltip_selector_object","order":1,"path":"scripts/tooltip_selector_object/tooltip_selector_object.yy",}, @@ -1413,7 +1417,7 @@ {"name":"vectorRangeBox","order":11,"path":"scripts/vectorRangeBox/vectorRangeBox.yy",}, {"name":"version_checker","order":11,"path":"scripts/version_checker/version_checker.yy",}, {"name":"wav_file_object","order":2,"path":"scripts/wav_file_object/wav_file_object.yy",}, - {"name":"widget","order":5,"path":"scripts/widget/widget.yy",}, + {"name":"widget","order":10,"path":"scripts/widget/widget.yy",}, {"name":"window_functions","order":2,"path":"scripts/window_functions/window_functions.yy",}, {"name":"winwin_extras","order":6,"path":"scripts/winwin_extras/winwin_extras.yy",}, {"name":"winwin_utils","order":7,"path":"scripts/winwin_utils/winwin_utils.yy",}, @@ -2045,7 +2049,7 @@ {"name":"s_info","order":118,"path":"sprites/s_info/s_info.yy",}, {"name":"s_inspector_channel","order":1,"path":"sprites/s_inspector_channel/s_inspector_channel.yy",}, {"name":"s_inspector_checkbox","order":2,"path":"sprites/s_inspector_checkbox/s_inspector_checkbox.yy",}, - {"name":"s_inspector_corner","order":3,"path":"sprites/s_inspector_corner/s_inspector_corner.yy",}, + {"name":"s_inspector_corner","order":28,"path":"sprites/s_inspector_corner/s_inspector_corner.yy",}, {"name":"s_inspector_curve_presets","order":4,"path":"sprites/s_inspector_curve_presets/s_inspector_curve_presets.yy",}, {"name":"s_inspector_direction","order":5,"path":"sprites/s_inspector_direction/s_inspector_direction.yy",}, {"name":"s_inspector_draw_line","order":6,"path":"sprites/s_inspector_draw_line/s_inspector_draw_line.yy",}, diff --git a/fonts/_f_sdf/_f_sdf.old.png b/fonts/_f_sdf/_f_sdf.old.png index 82c30feca..d08b24b7e 100644 Binary files a/fonts/_f_sdf/_f_sdf.old.png and b/fonts/_f_sdf/_f_sdf.old.png differ diff --git a/fonts/_f_sdf/_f_sdf.old.yy b/fonts/_f_sdf/_f_sdf.old.yy index a51e8681a..f60017ccc 100644 --- a/fonts/_f_sdf/_f_sdf.old.yy +++ b/fonts/_f_sdf/_f_sdf.old.yy @@ -13,70 +13,70 @@ "glyphOperations":0, "glyphs":{ "32":{"character":32,"h":68,"offset":0,"shift":11,"w":11,"x":2,"y":2,}, - "33":{"character":33,"h":68,"offset":2,"shift":12,"w":24,"x":623,"y":142,}, - "34":{"character":34,"h":68,"offset":2,"shift":20,"w":32,"x":589,"y":142,}, - "35":{"character":35,"h":68,"offset":0,"shift":28,"w":43,"x":544,"y":142,}, - "36":{"character":36,"h":68,"offset":1,"shift":24,"w":38,"x":504,"y":142,}, - "37":{"character":37,"h":68,"offset":1,"shift":38,"w":53,"x":449,"y":142,}, - "38":{"character":38,"h":68,"offset":1,"shift":32,"w":47,"x":400,"y":142,}, - "39":{"character":39,"h":68,"offset":2,"shift":11,"w":23,"x":375,"y":142,}, - "40":{"character":40,"h":68,"offset":1,"shift":14,"w":29,"x":344,"y":142,}, - "41":{"character":41,"h":68,"offset":1,"shift":14,"w":28,"x":314,"y":142,}, - "42":{"character":42,"h":68,"offset":1,"shift":23,"w":37,"x":649,"y":142,}, - "43":{"character":43,"h":68,"offset":1,"shift":24,"w":38,"x":274,"y":142,}, - "44":{"character":44,"h":68,"offset":1,"shift":12,"w":25,"x":208,"y":142,}, - "45":{"character":45,"h":68,"offset":1,"shift":14,"w":28,"x":178,"y":142,}, - "46":{"character":46,"h":68,"offset":2,"shift":12,"w":24,"x":152,"y":142,}, - "47":{"character":47,"h":68,"offset":0,"shift":18,"w":34,"x":116,"y":142,}, - "48":{"character":48,"h":68,"offset":1,"shift":24,"w":38,"x":76,"y":142,}, - "49":{"character":49,"h":68,"offset":2,"shift":24,"w":32,"x":42,"y":142,}, - "50":{"character":50,"h":68,"offset":1,"shift":24,"w":38,"x":2,"y":142,}, - "51":{"character":51,"h":68,"offset":1,"shift":24,"w":38,"x":960,"y":72,}, - "52":{"character":52,"h":68,"offset":0,"shift":24,"w":40,"x":918,"y":72,}, - "53":{"character":53,"h":68,"offset":2,"shift":24,"w":37,"x":235,"y":142,}, - "54":{"character":54,"h":68,"offset":1,"shift":24,"w":38,"x":688,"y":142,}, - "55":{"character":55,"h":68,"offset":1,"shift":24,"w":38,"x":728,"y":142,}, - "56":{"character":56,"h":68,"offset":1,"shift":24,"w":38,"x":768,"y":142,}, - "57":{"character":57,"h":68,"offset":1,"shift":24,"w":38,"x":605,"y":212,}, - "58":{"character":58,"h":68,"offset":2,"shift":12,"w":24,"x":579,"y":212,}, - "59":{"character":59,"h":68,"offset":1,"shift":12,"w":25,"x":552,"y":212,}, - "60":{"character":60,"h":68,"offset":1,"shift":24,"w":38,"x":512,"y":212,}, - "61":{"character":61,"h":68,"offset":1,"shift":24,"w":38,"x":472,"y":212,}, - "62":{"character":62,"h":68,"offset":1,"shift":24,"w":38,"x":432,"y":212,}, - "63":{"character":63,"h":68,"offset":0,"shift":20,"w":36,"x":394,"y":212,}, - "64":{"character":64,"h":68,"offset":2,"shift":38,"w":51,"x":341,"y":212,}, - "65":{"character":65,"h":68,"offset":0,"shift":29,"w":46,"x":293,"y":212,}, - "66":{"character":66,"h":68,"offset":3,"shift":29,"w":40,"x":251,"y":212,}, - "67":{"character":67,"h":68,"offset":2,"shift":27,"w":40,"x":209,"y":212,}, - "68":{"character":68,"h":68,"offset":3,"shift":32,"w":43,"x":164,"y":212,}, - "69":{"character":69,"h":68,"offset":3,"shift":24,"w":35,"x":127,"y":212,}, - "70":{"character":70,"h":68,"offset":3,"shift":23,"w":35,"x":90,"y":212,}, - "71":{"character":71,"h":68,"offset":2,"shift":31,"w":42,"x":46,"y":212,}, - "72":{"character":72,"h":68,"offset":3,"shift":33,"w":42,"x":2,"y":212,}, - "73":{"character":73,"h":68,"offset":1,"shift":17,"w":31,"x":975,"y":142,}, - "74":{"character":74,"h":68,"offset":-4,"shift":14,"w":31,"x":942,"y":142,}, - "75":{"character":75,"h":68,"offset":3,"shift":28,"w":42,"x":898,"y":142,}, - "76":{"character":76,"h":68,"offset":3,"shift":24,"w":36,"x":860,"y":142,}, - "77":{"character":77,"h":68,"offset":3,"shift":40,"w":50,"x":808,"y":142,}, - "78":{"character":78,"h":68,"offset":3,"shift":35,"w":44,"x":872,"y":72,}, - "79":{"character":79,"h":68,"offset":2,"shift":34,"w":46,"x":824,"y":72,}, - "80":{"character":80,"h":68,"offset":3,"shift":27,"w":38,"x":784,"y":72,}, + "33":{"character":33,"h":68,"offset":2,"shift":12,"w":24,"x":625,"y":142,}, + "34":{"character":34,"h":68,"offset":2,"shift":20,"w":32,"x":591,"y":142,}, + "35":{"character":35,"h":68,"offset":0,"shift":28,"w":43,"x":546,"y":142,}, + "36":{"character":36,"h":68,"offset":1,"shift":25,"w":38,"x":506,"y":142,}, + "37":{"character":37,"h":68,"offset":1,"shift":39,"w":53,"x":451,"y":142,}, + "38":{"character":38,"h":68,"offset":1,"shift":32,"w":48,"x":401,"y":142,}, + "39":{"character":39,"h":68,"offset":2,"shift":11,"w":23,"x":376,"y":142,}, + "40":{"character":40,"h":68,"offset":1,"shift":15,"w":29,"x":345,"y":142,}, + "41":{"character":41,"h":68,"offset":1,"shift":15,"w":28,"x":315,"y":142,}, + "42":{"character":42,"h":68,"offset":1,"shift":23,"w":38,"x":651,"y":142,}, + "43":{"character":43,"h":68,"offset":1,"shift":25,"w":38,"x":275,"y":142,}, + "44":{"character":44,"h":68,"offset":1,"shift":12,"w":25,"x":209,"y":142,}, + "45":{"character":45,"h":68,"offset":1,"shift":14,"w":28,"x":179,"y":142,}, + "46":{"character":46,"h":68,"offset":2,"shift":12,"w":24,"x":153,"y":142,}, + "47":{"character":47,"h":68,"offset":0,"shift":18,"w":34,"x":117,"y":142,}, + "48":{"character":48,"h":68,"offset":1,"shift":25,"w":38,"x":77,"y":142,}, + "49":{"character":49,"h":68,"offset":2,"shift":25,"w":32,"x":43,"y":142,}, + "50":{"character":50,"h":68,"offset":1,"shift":25,"w":39,"x":2,"y":142,}, + "51":{"character":51,"h":68,"offset":1,"shift":25,"w":38,"x":965,"y":72,}, + "52":{"character":52,"h":68,"offset":0,"shift":25,"w":40,"x":923,"y":72,}, + "53":{"character":53,"h":68,"offset":2,"shift":25,"w":37,"x":236,"y":142,}, + "54":{"character":54,"h":68,"offset":1,"shift":25,"w":39,"x":691,"y":142,}, + "55":{"character":55,"h":68,"offset":1,"shift":25,"w":39,"x":732,"y":142,}, + "56":{"character":56,"h":68,"offset":1,"shift":25,"w":39,"x":773,"y":142,}, + "57":{"character":57,"h":68,"offset":1,"shift":25,"w":39,"x":606,"y":212,}, + "58":{"character":58,"h":68,"offset":2,"shift":12,"w":24,"x":580,"y":212,}, + "59":{"character":59,"h":68,"offset":1,"shift":12,"w":25,"x":553,"y":212,}, + "60":{"character":60,"h":68,"offset":1,"shift":25,"w":38,"x":513,"y":212,}, + "61":{"character":61,"h":68,"offset":1,"shift":25,"w":38,"x":473,"y":212,}, + "62":{"character":62,"h":68,"offset":1,"shift":25,"w":38,"x":433,"y":212,}, + "63":{"character":63,"h":68,"offset":0,"shift":21,"w":36,"x":395,"y":212,}, + "64":{"character":64,"h":68,"offset":2,"shift":39,"w":51,"x":342,"y":212,}, + "65":{"character":65,"h":68,"offset":0,"shift":30,"w":46,"x":294,"y":212,}, + "66":{"character":66,"h":68,"offset":3,"shift":29,"w":40,"x":252,"y":212,}, + "67":{"character":67,"h":68,"offset":2,"shift":27,"w":40,"x":210,"y":212,}, + "68":{"character":68,"h":68,"offset":3,"shift":32,"w":43,"x":165,"y":212,}, + "69":{"character":69,"h":68,"offset":3,"shift":24,"w":35,"x":128,"y":212,}, + "70":{"character":70,"h":68,"offset":3,"shift":24,"w":35,"x":91,"y":212,}, + "71":{"character":71,"h":68,"offset":2,"shift":31,"w":42,"x":47,"y":212,}, + "72":{"character":72,"h":68,"offset":3,"shift":33,"w":43,"x":2,"y":212,}, + "73":{"character":73,"h":68,"offset":1,"shift":17,"w":31,"x":981,"y":142,}, + "74":{"character":74,"h":68,"offset":-4,"shift":14,"w":31,"x":948,"y":142,}, + "75":{"character":75,"h":68,"offset":3,"shift":29,"w":42,"x":904,"y":142,}, + "76":{"character":76,"h":68,"offset":3,"shift":24,"w":36,"x":866,"y":142,}, + "77":{"character":77,"h":68,"offset":3,"shift":41,"w":50,"x":814,"y":142,}, + "78":{"character":78,"h":68,"offset":3,"shift":35,"w":45,"x":876,"y":72,}, + "79":{"character":79,"h":68,"offset":2,"shift":34,"w":46,"x":828,"y":72,}, + "80":{"character":80,"h":68,"offset":3,"shift":27,"w":39,"x":787,"y":72,}, "81":{"character":81,"h":68,"offset":2,"shift":34,"w":46,"x":866,"y":2,}, - "82":{"character":82,"h":68,"offset":3,"shift":28,"w":42,"x":792,"y":2,}, - "83":{"character":83,"h":68,"offset":1,"shift":24,"w":37,"x":753,"y":2,}, - "84":{"character":84,"h":68,"offset":0,"shift":25,"w":40,"x":711,"y":2,}, - "85":{"character":85,"h":68,"offset":3,"shift":32,"w":42,"x":667,"y":2,}, + "82":{"character":82,"h":68,"offset":3,"shift":28,"w":42,"x":793,"y":2,}, + "83":{"character":83,"h":68,"offset":1,"shift":24,"w":37,"x":754,"y":2,}, + "84":{"character":84,"h":68,"offset":0,"shift":25,"w":41,"x":711,"y":2,}, + "85":{"character":85,"h":68,"offset":3,"shift":33,"w":42,"x":667,"y":2,}, "86":{"character":86,"h":68,"offset":0,"shift":28,"w":44,"x":621,"y":2,}, - "87":{"character":87,"h":68,"offset":0,"shift":41,"w":58,"x":561,"y":2,}, - "88":{"character":88,"h":68,"offset":0,"shift":28,"w":45,"x":514,"y":2,}, + "87":{"character":87,"h":68,"offset":0,"shift":42,"w":58,"x":561,"y":2,}, + "88":{"character":88,"h":68,"offset":0,"shift":29,"w":45,"x":514,"y":2,}, "89":{"character":89,"h":68,"offset":0,"shift":27,"w":43,"x":469,"y":2,}, "90":{"character":90,"h":68,"offset":1,"shift":25,"w":39,"x":428,"y":2,}, - "91":{"character":91,"h":68,"offset":2,"shift":14,"w":28,"x":836,"y":2,}, + "91":{"character":91,"h":68,"offset":3,"shift":14,"w":27,"x":837,"y":2,}, "92":{"character":92,"h":68,"offset":0,"shift":18,"w":34,"x":392,"y":2,}, "93":{"character":93,"h":68,"offset":1,"shift":14,"w":27,"x":326,"y":2,}, - "94":{"character":94,"h":68,"offset":0,"shift":24,"w":40,"x":284,"y":2,}, + "94":{"character":94,"h":68,"offset":0,"shift":25,"w":40,"x":284,"y":2,}, "95":{"character":95,"h":68,"offset":-1,"shift":18,"w":35,"x":247,"y":2,}, - "96":{"character":96,"h":68,"offset":1,"shift":15,"w":29,"x":216,"y":2,}, + "96":{"character":96,"h":68,"offset":1,"shift":16,"w":29,"x":216,"y":2,}, "97":{"character":97,"h":68,"offset":1,"shift":26,"w":38,"x":176,"y":2,}, "98":{"character":98,"h":68,"offset":3,"shift":27,"w":39,"x":135,"y":2,}, "99":{"character":99,"h":68,"offset":1,"shift":22,"w":36,"x":97,"y":2,}, @@ -84,19 +84,19 @@ "101":{"character":101,"h":68,"offset":1,"shift":25,"w":39,"x":15,"y":2,}, "102":{"character":102,"h":68,"offset":0,"shift":17,"w":35,"x":355,"y":2,}, "103":{"character":103,"h":68,"offset":1,"shift":27,"w":39,"x":914,"y":2,}, - "104":{"character":104,"h":68,"offset":3,"shift":28,"w":38,"x":321,"y":72,}, - "105":{"character":105,"h":68,"offset":3,"shift":13,"w":23,"x":955,"y":2,}, - "106":{"character":106,"h":68,"offset":-3,"shift":13,"w":29,"x":716,"y":72,}, - "107":{"character":107,"h":68,"offset":3,"shift":26,"w":40,"x":674,"y":72,}, - "108":{"character":108,"h":68,"offset":3,"shift":13,"w":23,"x":649,"y":72,}, - "109":{"character":109,"h":68,"offset":3,"shift":42,"w":52,"x":595,"y":72,}, - "110":{"character":110,"h":68,"offset":3,"shift":28,"w":38,"x":555,"y":72,}, - "111":{"character":111,"h":68,"offset":1,"shift":26,"w":40,"x":513,"y":72,}, - "112":{"character":112,"h":68,"offset":3,"shift":27,"w":39,"x":472,"y":72,}, - "113":{"character":113,"h":68,"offset":1,"shift":27,"w":39,"x":431,"y":72,}, - "114":{"character":114,"h":68,"offset":3,"shift":19,"w":32,"x":397,"y":72,}, - "115":{"character":115,"h":68,"offset":1,"shift":21,"w":35,"x":747,"y":72,}, - "116":{"character":116,"h":68,"offset":0,"shift":19,"w":34,"x":361,"y":72,}, + "104":{"character":104,"h":68,"offset":3,"shift":28,"w":39,"x":321,"y":72,}, + "105":{"character":105,"h":68,"offset":3,"shift":13,"w":24,"x":955,"y":2,}, + "106":{"character":106,"h":68,"offset":-3,"shift":13,"w":30,"x":718,"y":72,}, + "107":{"character":107,"h":68,"offset":3,"shift":27,"w":40,"x":676,"y":72,}, + "108":{"character":108,"h":68,"offset":3,"shift":13,"w":23,"x":651,"y":72,}, + "109":{"character":109,"h":68,"offset":3,"shift":42,"w":52,"x":597,"y":72,}, + "110":{"character":110,"h":68,"offset":3,"shift":28,"w":39,"x":556,"y":72,}, + "111":{"character":111,"h":68,"offset":1,"shift":27,"w":40,"x":514,"y":72,}, + "112":{"character":112,"h":68,"offset":3,"shift":27,"w":39,"x":473,"y":72,}, + "113":{"character":113,"h":68,"offset":1,"shift":27,"w":39,"x":432,"y":72,}, + "114":{"character":114,"h":68,"offset":3,"shift":20,"w":32,"x":398,"y":72,}, + "115":{"character":115,"h":68,"offset":1,"shift":21,"w":35,"x":750,"y":72,}, + "116":{"character":116,"h":68,"offset":0,"shift":19,"w":34,"x":362,"y":72,}, "117":{"character":117,"h":68,"offset":3,"shift":28,"w":38,"x":281,"y":72,}, "118":{"character":118,"h":68,"offset":0,"shift":24,"w":41,"x":238,"y":72,}, "119":{"character":119,"h":68,"offset":0,"shift":37,"w":53,"x":183,"y":72,}, @@ -105,9 +105,9 @@ "122":{"character":122,"h":68,"offset":1,"shift":21,"w":35,"x":60,"y":72,}, "123":{"character":123,"h":68,"offset":0,"shift":17,"w":32,"x":26,"y":72,}, "124":{"character":124,"h":68,"offset":9,"shift":24,"w":22,"x":2,"y":72,}, - "125":{"character":125,"h":68,"offset":1,"shift":17,"w":32,"x":980,"y":2,}, - "126":{"character":126,"h":68,"offset":1,"shift":24,"w":38,"x":645,"y":212,}, - "9647":{"character":9647,"h":68,"offset":8,"shift":42,"w":42,"x":685,"y":212,}, + "125":{"character":125,"h":68,"offset":1,"shift":17,"w":32,"x":981,"y":2,}, + "126":{"character":126,"h":68,"offset":1,"shift":25,"w":38,"x":647,"y":212,}, + "9647":{"character":9647,"h":68,"offset":8,"shift":42,"w":42,"x":687,"y":212,}, }, "hinting":0, "includeTTF":false, @@ -120,14 +120,14 @@ "name":"_f_sdf", "parent":{ "name":"font", - "path":"folders/font.yy", + "path":"folders/sprites/theme/font.yy", }, "pointRounding":0, "ranges":[ {"lower":32,"upper":127,}, {"lower":9647,"upper":9647,}, ], - "regenerateBitmap":true, + "regenerateBitmap":false, "resourceType":"GMFont", "resourceVersion":"2.0", "sampleText":"abcdef ABCDEF\n0123456789 .,<>\"'&!?\nthe quick brown fox jumps over the lazy dog\nTHE QUICK BROWN FOX JUMPS OVER THE LAZY DOG\nDefault character: ▯ (9647)", diff --git a/fonts/_f_sdf/_f_sdf.png b/fonts/_f_sdf/_f_sdf.png index d08b24b7e..8202236e4 100644 Binary files a/fonts/_f_sdf/_f_sdf.png and b/fonts/_f_sdf/_f_sdf.png differ diff --git a/fonts/_f_sdf_medium/_f_sdf_medium.old.png b/fonts/_f_sdf_medium/_f_sdf_medium.old.png index 8fe942146..ac7fd9545 100644 Binary files a/fonts/_f_sdf_medium/_f_sdf_medium.old.png and b/fonts/_f_sdf_medium/_f_sdf_medium.old.png differ diff --git a/fonts/_f_sdf_medium/_f_sdf_medium.old.yy b/fonts/_f_sdf_medium/_f_sdf_medium.old.yy index c672a1924..029232e54 100644 --- a/fonts/_f_sdf_medium/_f_sdf_medium.old.yy +++ b/fonts/_f_sdf_medium/_f_sdf_medium.old.yy @@ -120,14 +120,14 @@ "name":"_f_sdf_medium", "parent":{ "name":"font", - "path":"folders/font.yy", + "path":"folders/sprites/theme/font.yy", }, "pointRounding":0, "ranges":[ {"lower":32,"upper":127,}, {"lower":9647,"upper":9647,}, ], - "regenerateBitmap":true, + "regenerateBitmap":false, "resourceType":"GMFont", "resourceVersion":"2.0", "sampleText":"abcdef ABCDEF\n0123456789 .,<>\"'&!?\nthe quick brown fox jumps over the lazy dog\nTHE QUICK BROWN FOX JUMPS OVER THE LAZY DOG\nDefault character: ▯ (9647)", diff --git a/fonts/_f_sdf_medium/_f_sdf_medium.png b/fonts/_f_sdf_medium/_f_sdf_medium.png index ac7fd9545..1d90e88ff 100644 Binary files a/fonts/_f_sdf_medium/_f_sdf_medium.png and b/fonts/_f_sdf_medium/_f_sdf_medium.png differ diff --git a/objects/o_dialog_add_node/Create_0.gml b/objects/o_dialog_add_node/Create_0.gml index 3c6b4edb2..5bafe4627 100644 --- a/objects/o_dialog_add_node/Create_0.gml +++ b/objects/o_dialog_add_node/Create_0.gml @@ -547,10 +547,11 @@ event_inherited(); content_pane.hover_content = true; draw_sprite_stretched_ext(THEME.node_bg, 1, _boxx, yy, grid_size, grid_size, COLORS._main_accent, 1); - if(mouse_release(mb_left, sFOCUS)) - buildNode(_node); - else if(mouse_release(mb_right, right_free && sFOCUS)) - rightClick(_node); + + if(sFOCUS) { + if(mouse_release(mb_left)) buildNode(_node); + if(mouse_release(mb_right, right_free)) rightClick(_node); + } } if(_node.getTooltip() != "" || _node.tooltip_spr != noone) { @@ -672,9 +673,9 @@ event_inherited(); if(is_string(_node)) { if(!PREFERENCES.dialog_add_node_grouping) continue; - - hh += ui(8); - yy += ui(8); + + hh += ui(4) * (i > 0); + yy += ui(4) * (i > 0); var _key = $"{ADD_NODE_PAGE}:{i}"; diff --git a/objects/o_dialog_add_node/Draw_64.gml b/objects/o_dialog_add_node/Draw_64.gml index 640b44463..b91e56263 100644 --- a/objects/o_dialog_add_node/Draw_64.gml +++ b/objects/o_dialog_add_node/Draw_64.gml @@ -6,7 +6,7 @@ if !ready exit; if(DIALOG_SHOW_FOCUS) DIALOG_DRAW_FOCUS #endregion -#region search +#region content WIDGET_CURRENT = tb_search; tb_search.setFocusHover(sFOCUS, sHOVER); diff --git a/scripts/__vec2/__vec2.gml b/scripts/__vec2/__vec2.gml index 4c7a32296..04b0d2d87 100644 --- a/scripts/__vec2/__vec2.gml +++ b/scripts/__vec2/__vec2.gml @@ -1,5 +1,5 @@ function __vec2(_x = 0, _y = _x) constructor { - static set = function(_x = 0, _y = _x) { #region + static set = function(_x = 0, _y = _x) { if(is_struct(_x) && is_instanceof(_x, __vec2)) { x = _x.x; y = _x.y; @@ -21,162 +21,162 @@ function __vec2(_x = 0, _y = _x) constructor { x = _x; y = _y; return self; - } set(_x, _y); #endregion + } set(_x, _y); ref = noone; - static setRef = function(ref = noone) { #region + static setRef = function(ref = noone) { self.ref = ref; return self; - } #endregion + } - static setIndex = function(index, value) { #region + static setIndex = function(index, value) { INLINE switch(index) { case 0 : x = value; break; case 1 : y = value; break; } return self; - } #endregion + } - static getIndex = function(index) { #region + static getIndex = function(index) { switch(index) { case 0 : return x; case 1 : return y; } return 0; - } #endregion + } - static addElement = function(_x, _y) { #region + static addElement = function(_x, _y) { INLINE return new __vec2(x + _x, y + _y); - } #endregion - static _addElement = function(_x, _y) { #region + } + static _addElement = function(_x, _y) { INLINE x += _x; y += _y; return self; - } #endregion + } - static add = function(_vec2) { #region + static add = function(_vec2) { INLINE return new __vec2(x + _vec2.x, y + _vec2.y); - } #endregion - static _add = function(_vec2) { #region + } + static _add = function(_vec2) { INLINE x += _vec2.x; y += _vec2.y; return self; - } #endregion + } - static addElement = function(_x, _y) { #region + static addElement = function(_x, _y) { INLINE return new __vec2(x + _x, y + _y); - } #endregion - static _addElement = function(_x, _y) { #region + } + static _addElement = function(_x, _y) { INLINE x += _x; y += _y; return self; - } #endregion + } - static subtract = function(_vec2) { #region + static subtract = function(_vec2) { INLINE return new __vec2(x - _vec2.x, y - _vec2.y); - } #endregion - static _subtract = function(_vec2) { #region + } + static _subtract = function(_vec2) { INLINE x -= _vec2.x; y -= _vec2.y; return self; - } #endregion + } - static subtractElement = function(_x, _y) { #region + static subtractElement = function(_x, _y) { INLINE return new __vec2(x - _x, y - _y); - } #endregion - static _subtractElement = function(_x, _y) { #region + } + static _subtractElement = function(_x, _y) { INLINE x -= _x; y -= _y; return self; - } #endregion + } - static multiply = function(_scalar) { #region + static multiply = function(_scalar) { INLINE return new __vec2(x * _scalar, y * _scalar); - } #endregion - static _multiply = function(_scalar) { #region + } + static _multiply = function(_scalar) { INLINE x *= _scalar; y *= _scalar; return self; - } #endregion + } - static multiplyVec = function(_vec) { #region + static multiplyVec = function(_vec) { INLINE return new __vec2(x * _vec.x, y * _vec.y); - } #endregion - static _multiplyVec = function(_vec) { #region + } + static _multiplyVec = function(_vec) { INLINE x *= _vec.x; y *= _vec.y; return self; - } #endregion + } - static multiplyElement = function(_x, _y) { #region + static multiplyElement = function(_x, _y) { INLINE return new __vec2(x * _x, y * _y); - } #endregion - static _multiplyElement = function(_x, _y) { #region + } + static _multiplyElement = function(_x, _y) { INLINE x *= _x; y *= _y; return self; - } #endregion + } - static divide = function(_scalar) { #region + static divide = function(_scalar) { INLINE if (_scalar != 0) return new __vec2(x / _scalar, y / _scalar); return new __vec2(x, y, z); // Avoid division by zero - } #endregion - static _divide = function(_scalar) { #region + } + static _divide = function(_scalar) { INLINE if (_scalar != 0) { x /= _scalar; y /= _scalar; } return self; - } #endregion + } - static dot = function(_vec2) { #region + static dot = function(_vec2) { INLINE return x * _vec2.x + y * _vec2.y; - } #endregion + } - static distance = function(_vec2) { #region + static distance = function(_vec2) { INLINE var dx = _vec2.x - x; var dy = _vec2.y - y; return sqrt(dx * dx + dy * dy); - } #endregion + } - static directionTo = function(_vec2) { #region + static directionTo = function(_vec2) { INLINE return point_direction(x, y, _vec2.x, _vec2.y); - } #endregion + } - static length = function() { #region + static length = function() { INLINE return sqrt(x * x + y * y); - } #endregion + } - static normalize = function() { #region + static normalize = function() { INLINE return clone()._normalize(); - } #endregion - static _normalize = function() { #region + } + static _normalize = function() { INLINE var _length = length(); if (_length != 0) { @@ -184,33 +184,33 @@ function __vec2(_x = 0, _y = _x) constructor { y /= _length; } return self; - } #endregion + } - static lerpTo = function(to, speed = 0.3) { #region + static lerpTo = function(to, speed = 0.3) { INLINE return new __vec2(lerp(x, to.x, speed), lerp(y, to.y, speed)); - } #endregion - static _lerpTo = function(to, speed = 0.3) { #region + } + static _lerpTo = function(to, speed = 0.3) { INLINE x = lerp(x, to.x, speed); y = lerp(y, to.y, speed); - } #endregion + } - static _lerp_float = function(to, speed = 5, pre = 0.01) { #region + static _lerp_float = function(to, speed = 5, pre = 0.01) { INLINE x = lerp_float(x, to.x, speed, pre); y = lerp_float(y, to.y, speed, pre); - } #endregion + } - static equal = function(to) { #region + static equal = function(to) { INLINE return x == to.x && y == to.y; - } #endregion + } - static clone = function() { #region + static clone = function() { INLINE return new __vec2(x, y); - } #endregion + } static toString = function() { return $"[__vec2] ({x}, {y})"; } diff --git a/scripts/cornerBox/cornerBox.gml b/scripts/cornerBox/cornerBox.gml index 4a0149d10..9a1289fb8 100644 --- a/scripts/cornerBox/cornerBox.gml +++ b/scripts/cornerBox/cornerBox.gml @@ -21,15 +21,19 @@ function cornerBox(_onModify, _unit = noone) : widget() constructor { onModifySingle[2] = function(val) { onModifyIndex(val, 2); } onModifySingle[3] = function(val) { onModifyIndex(val, 3); } - labels = [ "r", "t", "l", "b" ]; - for(var i = 0; i < 4; i++) { tb[i] = new textBox(TEXTBOX_INPUT.number, onModifySingle[i]); - tb[i].label = labels[i]; - tb[i].slidable = true; - tb[i].hide = true; + + tb[i].labelSpr = s_inspector_corner; + tb[i].labelSprIndex = i; + tb[i].labelColor = COLORS._main_icon; + tb[i].slidable = true; + tb[i].hide = true; } + tb[1].labelAlign = fa_right; + tb[2].labelAlign = fa_right; + static setInteract = function(interactable = noone) { self.interactable = interactable; b_link.interactable = interactable; @@ -43,8 +47,8 @@ function cornerBox(_onModify, _unit = noone) : widget() constructor { tb[0].register(parent); tb[1].register(parent); - tb[2].register(parent); tb[3].register(parent); + tb[2].register(parent); } static isHovering = function() { @@ -104,11 +108,11 @@ function cornerBox(_onModify, _unit = noone) : widget() constructor { var tb_bx = _x + tb_w; var tb_by = _y + _h + ui(4); - tb[2].draw(tb_lx, tb_ly, tb_w, tb_h, array_safe_get_fast(_data, 2), _m); - tb[0].draw(tb_rx, tb_ry, tb_w, tb_h, array_safe_get_fast(_data, 0), _m); + tb[0].draw(tb_lx, tb_ly, tb_w, tb_h, array_safe_get_fast(_data, 0), _m); + tb[1].draw(tb_rx, tb_ry, tb_w, tb_h, array_safe_get_fast(_data, 1), _m); - tb[1].draw(tb_tx, tb_ty, tb_w, tb_h, array_safe_get_fast(_data, 1), _m); - tb[3].draw(tb_bx, tb_by, tb_w, tb_h, array_safe_get_fast(_data, 3), _m); + tb[3].draw(tb_tx, tb_ty, tb_w, tb_h, array_safe_get_fast(_data, 3), _m); + tb[2].draw(tb_bx, tb_by, tb_w, tb_h, array_safe_get_fast(_data, 2), _m); resetFocus(); diff --git a/scripts/node_greyscale/node_greyscale.gml b/scripts/node_greyscale/node_greyscale.gml index c03c083f5..376ec256a 100644 --- a/scripts/node_greyscale/node_greyscale.gml +++ b/scripts/node_greyscale/node_greyscale.gml @@ -38,14 +38,14 @@ function Node_Greyscale(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) attribute_surface_depth(); - static step = function() { #region + static step = function() { __step_mask_modifier(); inputs[1].mappableStep(); inputs[2].mappableStep(); - } #endregion + } - static processData = function(_outSurf, _data, _output_index, _array_index) { #region + static processData = function(_outSurf, _data, _output_index, _array_index) { surface_set_shader(_outSurf, sh_greyscale); shader_set_f_map("brightness", _data[1], _data[ 9], inputs[1]); @@ -58,5 +58,5 @@ function Node_Greyscale(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) _outSurf = channel_apply(_data[0], _outSurf, _data[6]); return _outSurf; - } #endregion + } } \ No newline at end of file diff --git a/scripts/node_path_blend/node_path_blend.gml b/scripts/node_path_blend/node_path_blend.gml index 8fbe43e28..100a46b88 100644 --- a/scripts/node_path_blend/node_path_blend.gml +++ b/scripts/node_path_blend/node_path_blend.gml @@ -117,7 +117,7 @@ function Node_Path_Blend(_x, _y, _group = noone) : Node(_x, _y, _group) construc static getPointRatio = function(_rat, ind = 0, out = undefined) { #region if(out == undefined) out = new __vec2(); else { out.x = 0; out.y = 0; } - var _cKey = $"{_rat},{ind}"; + var _cKey = $"{string_format(_rat, 0, 6)},{ind}"; if(ds_map_exists(cached_pos, _cKey)) { var _p = cached_pos[? _cKey]; out.x = _p.x; diff --git a/scripts/node_path_bridge/node_path_bridge.gml b/scripts/node_path_bridge/node_path_bridge.gml index 11409d919..b4bc68984 100644 --- a/scripts/node_path_bridge/node_path_bridge.gml +++ b/scripts/node_path_bridge/node_path_bridge.gml @@ -86,7 +86,7 @@ function Node_Path_Bridge(_x, _y, _group = noone) : Node(_x, _y, _group) constru static getPointDistance = function(_dist, ind = 0, out = undefined) { #region if(out == undefined) out = new __vec2(); else { out.x = 0; out.y = 0; } - var _cKey = $"{_dist},{ind}"; + var _cKey = $"{string_format(_dist, 0, 6)},{ind}"; if(ds_map_exists(cached_pos, _cKey)) { var _p = cached_pos[? _cKey]; out.x = _p.x; diff --git a/scripts/node_path_builder/node_path_builder.gml b/scripts/node_path_builder/node_path_builder.gml index e4d6eeb50..098af28ff 100644 --- a/scripts/node_path_builder/node_path_builder.gml +++ b/scripts/node_path_builder/node_path_builder.gml @@ -112,7 +112,7 @@ function Node_Path_Builder(_x, _y, _group = noone) : Node(_x, _y, _group) constr static getPointDistance = function(_dist, ind = 0, out = undefined) { if(out == undefined) out = new __vec2(); else { out.x = 0; out.y = 0; } - var _cKey = $"{ind}, {_dist}"; + var _cKey = $"{ind}, {string_format(_dist, 0, 6)}"; if(ds_map_exists(cached_pos, _cKey)) { var _p = cached_pos[? _cKey]; out.x = _p.x; diff --git a/scripts/node_path_fill/node_path_fill.gml b/scripts/node_path_fill/node_path_fill.gml index 66aa0c36a..65c7a310c 100644 --- a/scripts/node_path_fill/node_path_fill.gml +++ b/scripts/node_path_fill/node_path_fill.gml @@ -13,11 +13,13 @@ function Node_Path_Fill(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) newInput(4, nodeValue_Bool("Inverted", self, false)) + newInput(5, nodeValue_Color("Bachground", self, cola(c_black, 0))) + newOutput(0, nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone)); input_display_list = [ 0, ["Path", false], 1, 2, - ["COlor", false], 3, 4, + ["Color", false], 3, 4, 5, ] temp_surface = [ 0 ]; @@ -36,6 +38,7 @@ function Node_Path_Fill(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) var _reso = _data[2]; var _colr = _data[3]; var _invt = _data[4]; + var _bg = _data[5]; _outSurf = surface_verify(_outSurf, _dim[0], _dim[1]); if(!struct_has(_path, "getPointRatio")) return _outSurf; @@ -46,7 +49,7 @@ function Node_Path_Fill(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) surface_set_target(_outSurf); if(_invt) { draw_clear(_colr); BLEND_SUBTRACT } - else { DRAW_CLEAR } + else { draw_clear(_bg); } draw_set_color(_invt? c_white : _colr); array_map_ext(path_points, function(p, i) /*=>*/ {return __tpath.getPointRatio(i * __step, 0, p)}); diff --git a/scripts/node_path_from_mask/node_path_from_mask.gml b/scripts/node_path_from_mask/node_path_from_mask.gml index 2ff9f26e9..8b744a5bd 100644 --- a/scripts/node_path_from_mask/node_path_from_mask.gml +++ b/scripts/node_path_from_mask/node_path_from_mask.gml @@ -30,7 +30,7 @@ function Node_Path_From_Mask(_x, _y, _group = noone) : Node(_x, _y, _group) cons static getPointDistance = function(_dist, _ind = 0, out = undefined) { #region if(out == undefined) out = new __vec2(); else { out.x = 0; out.y = 0; } - var _cKey = $"{_dist},{_ind}"; + var _cKey = $"{string_format(_dist, 0, 6)},{_ind}"; if(ds_map_exists(cached_pos, _cKey)) { var _p = cached_pos[? _cKey]; out.x = _p.x; diff --git a/scripts/node_path_morph/node_path_morph.gml b/scripts/node_path_morph/node_path_morph.gml index 9f61477d1..3f587e28f 100644 --- a/scripts/node_path_morph/node_path_morph.gml +++ b/scripts/node_path_morph/node_path_morph.gml @@ -1,5 +1,6 @@ -function Node_Path_Morph(_x, _y, _group = noone) : Node(_x, _y, _group) constructor { +function Node_Path_Morph(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { name = "Morph Path"; + dimension_index = 2; newInput(0, nodeValue_PathNode("Path 1", self, noone)) .setVisible(true, true) @@ -11,16 +12,25 @@ function Node_Path_Morph(_x, _y, _group = noone) : Node(_x, _y, _group) construc newInput(2, nodeValue_Dimension(self)); - newInput(3, nodeValue_Int("Subdivision", self, 512)) + newInput(3, nodeValue_Int("Subdivision", self, 128)) .setValidator(VV_min(2)) .rejectArray(); + newInput(4, nodeValue_Bool("Clip In-Out", self, false)) + + newInput(5, nodeValue_Curve("Curve", self, CURVE_DEF_01)); + + newInput(6, nodeValue_Bool("Match index", self, false)) + newOutput(0, nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone)); input_display_list = [ 0, 1, - ["Morphing", false], 2, 3, + ["Morphing", false], 2, 3, 6, + ["Rendering", false], 5, 4, ] + attribute_surface_depth(); + temp_surface = [ 0 ]; static drawOverlay = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) { @@ -31,13 +41,16 @@ function Node_Path_Morph(_x, _y, _group = noone) : Node(_x, _y, _group) construc if(_path && struct_has(_path, "drawOverlay")) _path.drawOverlay(hover, active, _x, _y, _s, _mx, _my, _snx, _sny); } - static update = function() { - var _path1 = getInputData(0); - var _path2 = getInputData(1); - if(_path1 == noone || _path2 == noone) return; + static processData = function(_outSurf, _data, _output_index, _array_index) { + var _path1 = _data[0]; + var _path2 = _data[1]; + if(_path1 == noone || _path2 == noone) return _outSurf; - var _dim = getInputData(2); - var _sub = getInputData(3); + var _dim = _data[2]; + var _sub = _data[3] + 1; + var _clp = _data[4]; + var _cur = _data[5]; + var _mid = _data[6]; var _p1 = array_create(_sub * 2); var _p2 = array_create(_sub * 2); @@ -57,18 +70,20 @@ function Node_Path_Morph(_x, _y, _group = noone) : Node(_x, _y, _group) construc _p2[i * 2 + 1] = _pp.y; } - var _out = outputs[0].getValue(); - _out = surface_verify(_out, _dim[0], _dim[1]) - - surface_set_shader(_out, sh_path_morph); + surface_set_shader(_outSurf, sh_path_morph); shader_set_2("dimension", _dim); shader_set_i("subdivision", _sub); + shader_set_i("clip", _clp); + shader_set_i("matchIndex", _mid); shader_set_f("point1", _p1); shader_set_f("point2", _p2); + shader_set_f("w_curve", _cur); + shader_set_i("w_amount", array_length(_cur)); + draw_empty(); surface_reset_shader(); - outputs[0].setValue(_out); + return _outSurf; } } \ No newline at end of file diff --git a/scripts/node_path_shape/node_path_shape.gml b/scripts/node_path_shape/node_path_shape.gml index 8ee71656b..5a5e651b5 100644 --- a/scripts/node_path_shape/node_path_shape.gml +++ b/scripts/node_path_shape/node_path_shape.gml @@ -25,7 +25,7 @@ function Node_Path_Shape(_x, _y, _group = noone) : Node(_x, _y, _group) construc new scrollItem("Line", s_node_shape_type, 16), new scrollItem("Curve", s_shape_curve, 0), ]; - newInput(3, nodeValue_Enum_Scroll("Shape", self, 0, shapeScroll)); + newInput(3, nodeValue_Enum_Scroll("Shape", self, 0, { data: shapeScroll, horizontal: true, text_pad: ui(16) })); newInput(4, nodeValue_Float("Skew", self, .5)) .setDisplay(VALUE_DISPLAY.slider, { range: [ -1, 1, 0.01] }); @@ -38,11 +38,13 @@ function Node_Path_Shape(_x, _y, _group = noone) : Node(_x, _y, _group) construc newInput(8, nodeValue_Float("Inner Radius", self, .5)); + newInput(9, nodeValue_Corner("Corner Radius", self, [ 0, 0, 0, 0 ])); + newOutput(0, nodeValue_Output("Path data", self, VALUE_TYPE.pathnode, self)); input_display_list = [ ["Transform", false], 0, 2, 1, - ["Shape", false], 3, 4, 5, 6, 7, 8, + ["Shape", false], 3, 4, 5, 6, 7, 8, 9, ]; points = []; @@ -62,6 +64,8 @@ function Node_Path_Shape(_x, _y, _group = noone) : Node(_x, _y, _group) construc pa2x = 0; pa2y = 0; pa3 = 0; + corners = [ 0, 0, 0, 0 ]; + preview_surf = noone; static getLineCount = function() /*=>*/ {return 1}; @@ -78,23 +82,11 @@ function Node_Path_Shape(_x, _y, _group = noone) : Node(_x, _y, _group) construc case "Rectangle" : case "Trapezoid" : case "Parallelogram" : - if(_rat <= .25) { - var r = _rat * 4; - out.x = lerp(points[0][0], points[1][0], r); - out.y = lerp(points[0][1], points[1][1], r); - } else if(_rat <= .50) { - var r = (_rat - .25) * 4; - out.x = lerp(points[1][0], points[2][0], r); - out.y = lerp(points[1][1], points[2][1], r); - } else if(_rat <= .75) { - var r = (_rat - .50) * 4; - out.x = lerp(points[2][0], points[3][0], r); - out.y = lerp(points[2][1], points[3][1], r); - } else { - var r = (_rat - .75) * 4; - out.x = lerp(points[3][0], points[0][0], r); - out.y = lerp(points[3][1], points[0][1], r); - } + var i = floor(_rat * 4); + var r = (_rat - i * .25) * 4; + + out.x = lerp(points[i * 2][0], points[i * 2 + 1][0], r); + out.y = lerp(points[i * 2][1], points[i * 2 + 1][1], r); break; case "Ellipse" : @@ -128,7 +120,7 @@ function Node_Path_Shape(_x, _y, _group = noone) : Node(_x, _y, _group) construc point_vec2_rotate(out, posx, posy, rot); return out; } - + static getPointDistance = function(_dist, _ind = 0, out = undefined) { if(out == undefined) out = new __vec2(); _dist = safe_mod(_dist, lengthTotal); @@ -148,7 +140,6 @@ function Node_Path_Shape(_x, _y, _group = noone) : Node(_x, _y, _group) construc break; } - // point_vec2_rotate(out, posx, posy, rot); return out; } @@ -190,6 +181,7 @@ function Node_Path_Shape(_x, _y, _group = noone) : Node(_x, _y, _group) construc var _pa3 = inputs[6].getValue(); var _sid = inputs[7].getValue(); var _inn = inputs[8].getValue(); + var _c = inputs[9].getValue(); shape = inputs[3].getValue(); posx = _pos[0]; @@ -203,6 +195,8 @@ function Node_Path_Shape(_x, _y, _group = noone) : Node(_x, _y, _group) construc pa2y = _aran[1]; pa3 = _pa3; + corners = _c; + var ox, oy, nx, ny, x0, y0; inputs[4].setVisible(false); @@ -210,15 +204,31 @@ function Node_Path_Shape(_x, _y, _group = noone) : Node(_x, _y, _group) construc inputs[6].setVisible(false); inputs[7].setVisible(false); inputs[8].setVisible(false); + inputs[9].setVisible(false); switch(shapeScroll[shape].name) { case "Rectangle" : + inputs[9].setVisible(true); + loop = true; + var x0 = posx - scax; + var y0 = posy - scay; + + var x1 = posx + scax; + var y1 = posy + scay; + points = [ - [ posx - scax, posy - scay ], - [ posx + scax, posy - scay ], - [ posx + scax, posy + scay ], - [ posx - scax, posy + scay ], + [ x0 + _c[0], y0 ], + [ x1 - _c[1], y0 ], + + [ x1, y0 + _c[1] ], + [ x1, y1 - _c[2] ], + + [ x1 - _c[2], y1 ], + [ x0 + _c[3], y1 ], + + [ x0, y1 - _c[3] ], + [ x0, y0 + _c[0] ], ]; break; @@ -229,8 +239,15 @@ function Node_Path_Shape(_x, _y, _group = noone) : Node(_x, _y, _group) construc points = [ [ posx - scax * saturate(1 - _pa1), posy - scay ], [ posx + scax * saturate(1 - _pa1), posy - scay ], + + [ posx + scax * saturate(1 - _pa1), posy - scay ], + [ posx + scax * saturate(1 + _pa1), posy + scay ], + [ posx + scax * saturate(1 + _pa1), posy + scay ], [ posx - scax * saturate(1 + _pa1), posy + scay ], + + [ posx - scax * saturate(1 + _pa1), posy + scay ], + [ posx - scax * saturate(1 - _pa1), posy - scay ], ]; break; @@ -241,8 +258,15 @@ function Node_Path_Shape(_x, _y, _group = noone) : Node(_x, _y, _group) construc points = [ [ posx - scax * saturate(1 - _pa1), posy - scay ], [ posx + scax * saturate(1 + _pa1), posy - scay ], + + [ posx + scax * saturate(1 + _pa1), posy - scay ], + [ posx + scax * saturate(1 - _pa1), posy + scay ], + [ posx + scax * saturate(1 - _pa1), posy + scay ], [ posx - scax * saturate(1 + _pa1), posy + scay ], + + [ posx - scax * saturate(1 + _pa1), posy + scay ], + [ posx - scax * saturate(1 - _pa1), posy - scay ], ]; break; diff --git a/scripts/node_path_shift/node_path_shift.gml b/scripts/node_path_shift/node_path_shift.gml index 89167a7fa..5d49993cb 100644 --- a/scripts/node_path_shift/node_path_shift.gml +++ b/scripts/node_path_shift/node_path_shift.gml @@ -60,7 +60,7 @@ function Node_Path_Shift(_x, _y, _group = noone) : Node(_x, _y, _group) construc static getPointRatio = function(_rat, ind = 0, out = undefined) { if(out == undefined) out = new __vec2(); else { out.x = 0; out.y = 0; } - var _cKey = $"{_rat},{ind}"; + var _cKey = $"{string_format(_rat, 0, 6)},{ind}"; if(ds_map_exists(cached_pos, _cKey)) { var _p = cached_pos[? _cKey]; out.x = _p.x; diff --git a/scripts/node_path_transform/node_path_transform.gml b/scripts/node_path_transform/node_path_transform.gml index 67472c257..e465b21f4 100644 --- a/scripts/node_path_transform/node_path_transform.gml +++ b/scripts/node_path_transform/node_path_transform.gml @@ -5,13 +5,15 @@ function Node_Path_Transform(_x, _y, _group = noone) : Node(_x, _y, _group) cons newInput(0, nodeValue_PathNode("Path", self, noone)) .setVisible(true, true); - newInput(1, nodeValue_Vec2("Position", self, [ 0, 0 ])); + newInput(1, nodeValue_Vec2("Position", self, [ 0, 0 ])) + .setUnitRef(function() /*=>*/ {return DEF_SURF}, VALUE_UNIT.reference); newInput(2, nodeValue_Rotation("Rotation", self, 0)); newInput(3, nodeValue_Vec2("Scale", self, [ 1, 1 ])); - newInput(4, nodeValue_Vec2("Anchor", self, [ 0, 0 ])); + newInput(4, nodeValue_Vec2("Anchor", self, [ 0, 0 ])) + .setUnitRef(function() /*=>*/ {return DEF_SURF}, VALUE_UNIT.reference); newOutput(0, nodeValue_Output("Path", self, VALUE_TYPE.pathnode, self)); @@ -21,8 +23,32 @@ function Node_Path_Transform(_x, _y, _group = noone) : Node(_x, _y, _group) cons rot = 0; sca = [ 1, 1 ]; anc = [ 0, 0 ]; + p = new __vec2(); static drawOverlay = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) { + var _path = getInputData(0); + if(_path && struct_has(_path, "drawOverlay")) _path.drawOverlay(hover, active, _x, _y, _s, _mx, _my, _snx, _sny); + + draw_set_color(COLORS._main_icon); + var _amo = getLineCount(); + for( var i = 0; i < _amo; i++ ) { + var _len = getLength(i); + var _stp = 1 / clamp(_len * _s, 1, 64); + + var ox, oy, nx, ny; + + for( var j = 0; j < 1; j += _stp ) { + p = getPointRatio(j, i, p); + nx = _x + p.x * _s; + ny = _y + p.y * _s; + + if(j > 0) draw_line_width(ox, oy, nx, ny, 1); + + ox = nx; + oy = ny; + } + } + var px = _x + pos[0] * _s; var py = _y + pos[1] * _s; @@ -65,9 +91,9 @@ function Node_Path_Transform(_x, _y, _group = noone) : Node(_x, _y, _group) cons } static getPointRatio = function(_rat, ind = 0, out = undefined) { - if(out == undefined) out = new __vec2(); else { out.x = 0; out.y = 0; } + if(out == undefined) out = new __vec2(); - var _cKey = $"{_rat},{ind}"; + var _cKey = $"{string_format(_rat, 0, 6)},{ind}"; if(ds_map_exists(cached_pos, _cKey)) { var _p = cached_pos[? _cKey]; out.x = _p.x; @@ -83,7 +109,7 @@ function Node_Path_Transform(_x, _y, _group = noone) : Node(_x, _y, _group) cons if(!is_struct(path) || !struct_has(path, "getPointRatio")) return out; - var _p = path.getPointRatio(_rat, ind).clone(); + var _p = path.getPointRatio(_rat, ind); _p.x = anc[0] + (_p.x - anc[0]) * sca[0]; _p.y = anc[1] + (_p.y - anc[1]) * sca[1]; @@ -94,7 +120,6 @@ function Node_Path_Transform(_x, _y, _group = noone) : Node(_x, _y, _group) cons out.y = _pp[1] + pos[1]; cached_pos[? _cKey] = out.clone(); - return out; } diff --git a/scripts/node_path_wave/node_path_wave.gml b/scripts/node_path_wave/node_path_wave.gml index b04a8f404..3e1d1086a 100644 --- a/scripts/node_path_wave/node_path_wave.gml +++ b/scripts/node_path_wave/node_path_wave.gml @@ -47,8 +47,8 @@ function Node_Path_Wave(_x, _y, _group = noone) : Node(_x, _y, _group) construct wig_map = noone; amp_curve = noone; - p0 = new __vec2(); p = new __vec2(); + p0 = new __vec2(); p1 = new __vec2(); cached_pos = ds_map_create(); @@ -58,9 +58,7 @@ function Node_Path_Wave(_x, _y, _group = noone) : Node(_x, _y, _group) construct if(_path && struct_has(_path, "drawOverlay")) _path.drawOverlay(hover, active, _x, _y, _s, _mx, _my, _snx, _sny); draw_set_color(COLORS._main_icon); - var _amo = getLineCount(); - for( var i = 0; i < _amo; i++ ) { var _len = getLength(i); var _stp = 1 / clamp(_len * _s, 1, 64); @@ -72,7 +70,7 @@ function Node_Path_Wave(_x, _y, _group = noone) : Node(_x, _y, _group) construct nx = _x + p.x * _s; ny = _y + p.y * _s; - if(j > 0) draw_line_width(ox, oy, nx, ny, 3); + if(j > 0) draw_line_width(ox, oy, nx, ny, 1); ox = nx; oy = ny; @@ -116,7 +114,7 @@ function Node_Path_Wave(_x, _y, _group = noone) : Node(_x, _y, _group) construct static getPointRatio = function(_rat, ind = 0, out = undefined) { if(out == undefined) out = new __vec2(); else { out.x = 0; out.y = 0; } - var _cKey = $"{_rat},{ind}"; + var _cKey = $"{string_format(_rat, 0, 6)},{ind}"; if(ds_map_exists(cached_pos, _cKey)) { var _p = cached_pos[? _cKey]; out.x = _p.x; @@ -125,12 +123,12 @@ function Node_Path_Wave(_x, _y, _group = noone) : Node(_x, _y, _group) construct } var _path = path; - var _fre = fre ; - var _amp = amp ; - var _shf = shf ; + var _fre = fre; + var _amp = amp; + var _shf = shf; var _seed = seed + ind; - var _wig = wig ; + var _wig = wig; var _wigs = wigs; var _wigf = wigf; diff --git a/scripts/panel_collection/panel_collection.gml b/scripts/panel_collection/panel_collection.gml index f39dc0119..8e00b8a4f 100644 --- a/scripts/panel_collection/panel_collection.gml +++ b/scripts/panel_collection/panel_collection.gml @@ -393,16 +393,18 @@ function Panel_Collection() : PanelContent() constructor { if(sprite_exists(_node.spr)) { var sw = sprite_get_width(_node.spr); var sh = sprite_get_height(_node.spr); - var ss = (grid_size - ui(10)) * PREFERENCES.collection_scale / max(sw, sh); + var ss = (grid_size - ui(12)) * PREFERENCES.collection_scale / max(sw, sh); var xo = (sprite_get_xoffset(_node.spr) - sw / 2) * ss; var yo = (sprite_get_yoffset(_node.spr) - sh / 2) * ss; var sx = _boxx + grid_size / 2 + xo; var sy = yy + grid_size / 2 + yo; - BLEND_ALPHA_MULP - draw_sprite_ext(_node.spr, frame, sx, sy, ss, ss, 0, c_white, 1); - BLEND_NORMAL + gpu_set_texfilter(true); + BLEND_ALPHA_MULP + draw_sprite_ext(_node.spr, frame, sx, sy, ss, ss, 0, c_white, 1); + BLEND_NORMAL + gpu_set_texfilter(false); } else draw_sprite_ui_uniform(THEME.group, 0, _boxx + grid_size / 2, yy + grid_size / 2, 1, c_white); @@ -562,7 +564,7 @@ function Panel_Collection() : PanelContent() constructor { nodeListPane.hover_content = true; var ww = nodeListPane.surface_w; - var _hg = ui(28); + var _hg = line_get_height(f_p1, 4); var _hov = pHOVER && nodeListPane.hover; var _foc = pFOCUS; @@ -583,7 +585,7 @@ function Panel_Collection() : PanelContent() constructor { nodeListPane_page = i; } - draw_set_text(f_p0, fa_left, fa_center, nodeListPane_page == i? COLORS._main_text_accent : COLORS._main_text_inner); + draw_set_text(f_p1, fa_left, fa_center, nodeListPane_page == i? COLORS._main_text_accent : COLORS._main_text_inner); draw_text_add(ui(24), _y + _hg / 2, _nam); _y += _hg; @@ -667,13 +669,15 @@ function Panel_Collection() : PanelContent() constructor { } } - var ss = grid_size / (max(sprite_get_width(_node.spr), sprite_get_height(_node.spr)) + 16); + var ss = (grid_size - ui(16)) / max(sprite_get_width(_node.spr), sprite_get_height(_node.spr)); var sx = _boxx + grid_size / 2; var sy = yy + grid_size / 2; - BLEND_ALPHA_MULP - draw_sprite_ext(_node.spr, 0, sx, sy, ss, ss, 0, c_white, 1); - BLEND_NORMAL + gpu_set_texfilter(true); + BLEND_ALPHA_MULP + draw_sprite_ext(_node.spr, 0, sx, sy, ss, ss, 0, c_white, 1); + BLEND_NORMAL + gpu_set_texfilter(false); var fav = struct_exists(global.FAV_NODES, _node.node); if(fav) draw_sprite_ui_uniform(THEME.star, 0, _boxx + grid_size - ui(8), yy + grid_size - ui(8), 0.7, COLORS._main_accent, 1.); diff --git a/scripts/textBox/textBox.gml b/scripts/textBox/textBox.gml index f936f3e1e..11d1fdaf2 100644 --- a/scripts/textBox/textBox.gml +++ b/scripts/textBox/textBox.gml @@ -40,6 +40,9 @@ function textBox(_input, _onModify) : textInput(_input, _onModify) constructor { label = ""; labelColor = COLORS._main_text_sub; + labelSpr = noone; + labelSprIndex = 0; + labelAlign = fa_left; highlight_color = -1; highlight_alpha = 1; @@ -574,6 +577,10 @@ function textBox(_input, _onModify) : textInput(_input, _onModify) constructor { draw_set_alpha(0.5); draw_text_add(_x + padding, _y + _h / 2, label); draw_set_alpha(1); + + } else if(labelSpr != noone) { + var _ix = labelAlign == fa_left? _x + _h / 2 : _x + _w - _h / 2; + draw_sprite_ext(labelSpr, labelSprIndex, _ix, _y + _h / 2, 1, 1, 0, labelColor, 1); } } diff --git a/shaders/sh_path_morph/sh_path_morph.fsh b/shaders/sh_path_morph/sh_path_morph.fsh index 560df3edb..0297cc016 100644 --- a/shaders/sh_path_morph/sh_path_morph.fsh +++ b/shaders/sh_path_morph/sh_path_morph.fsh @@ -1,13 +1,118 @@ #define PI 3.14159265359 +#ifdef _YY_HLSL11_ + #define CURVE_MAX 1024 +#else + #define CURVE_MAX 512 +#endif + varying vec2 v_vTexcoord; varying vec4 v_vColour; uniform vec2 dimension; uniform int subdivision; +uniform int clip; +uniform int matchIndex; + +uniform float w_curve[CURVE_MAX]; +uniform int w_amount; + uniform vec2 point1[1024]; uniform vec2 point2[1024]; +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +float eval_curve_segment_t(in float _y0, in float ax0, in float ay0, in float bx1, in float by1, in float _y1, in float prog) { + return _y0 * pow(1. - prog, 3.) + + ay0 * 3. * pow(1. - prog, 2.) * prog + + by1 * 3. * (1. - prog) * pow(prog, 2.) + + _y1 * pow(prog, 3.); +} + +float eval_curve_segment_x(in float _y0, in float ax0, in float ay0, in float bx1, in float by1, in float _y1, in float _x) { + float st = 0.; + float ed = 1.; + float _prec = 0.0001; + + float _xt = _x; + int _binRep = 8; + + if(_x <= 0.) return _y0; + if(_x >= 1.) return _y1; + if(_y0 == ay0 && _y0 == by1 && _y0 == _y1) return _y0; + + for(int i = 0; i < _binRep; i++) { + float _ftx = 3. * pow(1. - _xt, 2.) * _xt * ax0 + + 3. * (1. - _xt) * pow(_xt, 2.) * bx1 + + pow(_xt, 3.); + + if(abs(_ftx - _x) < _prec) + return eval_curve_segment_t(_y0, ax0, ay0, bx1, by1, _y1, _xt); + + if(_xt < _x) st = _xt; + else ed = _xt; + + _xt = (st + ed) / 2.; + } + + int _newRep = 16; + + for(int i = 0; i < _newRep; i++) { + float slope = ( 9. * ax0 - 9. * bx1 + 3.) * _xt * _xt + + (-12. * ax0 + 6. * bx1) * _xt + + 3. * ax0; + float _ftx = 3. * pow(1. - _xt, 2.) * _xt * ax0 + + 3. * (1. - _xt) * pow(_xt, 2.) * bx1 + + pow(_xt, 3.) + - _x; + + _xt -= _ftx / slope; + + if(abs(_ftx) < _prec) + break; + } + + _xt = clamp(_xt, 0., 1.); + return eval_curve_segment_t(_y0, ax0, ay0, bx1, by1, _y1, _xt); +} + +float curveEval(in float[CURVE_MAX] curve, in int amo, in float _x) { + + int _shf = amo - int(floor(float(amo) / 6.) * 6.); + int _segs = (amo - _shf) / 6 - 1; + float _shift = _shf > 0? curve[0] : 0.; + float _scale = _shf > 1? curve[1] : 1.; + + _x = _x / _scale - _shift; + _x = clamp(_x, 0., 1.); + + for( int i = 0; i < _segs; i++ ) { + int ind = _shf + i * 6; + float _x0 = curve[ind + 2]; + float _y0 = curve[ind + 3]; + //float bx0 = _x0 + curve[ind + 0]; + //float by0 = _y0 + curve[ind + 1]; + float ax0 = _x0 + curve[ind + 4]; + float ay0 = _y0 + curve[ind + 5]; + + float _x1 = curve[ind + 6 + 2]; + float _y1 = curve[ind + 6 + 3]; + float bx1 = _x1 + curve[ind + 6 + 0]; + float by1 = _y1 + curve[ind + 6 + 1]; + //float ax1 = _x1 + curve[ind + 6 + 4]; + //float ay1 = _y1 + curve[ind + 6 + 5]; + + if(_x < _x0) continue; + if(_x > _x1) continue; + + return eval_curve_segment_x(_y0, ax0, ay0, bx1, by1, _y1, (_x - _x0) / (_x1 - _x0)); + } + + return curve[0]; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + vec2 pointToLine(in vec2 p, in vec2 l0, in vec2 l1) { float l2 = pow(l0.x - l1.x, 2.) + pow(l0.y - l1.y, 2.); if (l2 == 0.) return l0; @@ -26,45 +131,110 @@ float pointOnLine(in vec2 p, in vec2 l0, in vec2 l1) { return t; } +float tsign (in vec2 p1, in vec2 p2, in vec2 p3) { return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y); } + +bool pointInTriangle(in vec2 p, in vec2 t0, in vec2 t1, in vec2 t2) { + float d1 = tsign(p, t0, t1); + float d2 = tsign(p, t1, t2); + float d3 = tsign(p, t2, t0); + + bool has_neg = (d1 < 0.) || (d2 < 0.) || (d3 < 0.); + bool has_pos = (d1 > 0.) || (d2 > 0.) || (d3 > 0.); + + return !(has_neg && has_pos); +} + +bool intersect(in vec2 p, in vec2 l0, in vec2 l1) { + float s0 = sign(p.y - l0.y); + float s1 = sign(l1.y - p.y); + bool ins = s0 == s1; + return ins; +} + void main() { vec2 px = v_vTexcoord * dimension; float dF = dimension.x + dimension.y; vec2 pF = point1[0]; - vec2 pF0 = point1[0]; - vec2 pF1 = vec2(0.); + vec2 pF0 = point1[0], pF1; float dT = dimension.x + dimension.y; vec2 pT = point2[0]; - vec2 pT0 = point2[0]; - vec2 pT1 = vec2(0.); + vec2 pT0 = point2[0], pT1; - for(int i = 1; i < subdivision; i++) { - pF1 = point1[i]; - pT1 = point2[i]; - - vec2 f = pointToLine(px, pF0, pF1); - float _f = distance(px, f); - if(_f <= dF) { - dF = _f; - pF = f; - } - - vec2 t = pointToLine(px, pT0, pT1); - float _t = distance(px, t); - if(_t <= dT) { - dT = _t; - pT = t; - } - - pF0 = pF1; - pT0 = pT1; + bool inFrom = false; + bool inTo = false; + float a = 0.; + + if(matchIndex == 0) { + for(int i = 1; i < subdivision; i++) { + pF1 = point1[i]; + pT1 = point2[i]; + + vec2 f = pointToLine(px, pF0, pF1); + vec2 t = pointToLine(px, pT0, pT1); + + if(intersect(px, pF0, pF1) && f.x >= px.x) inFrom = !inFrom; + if(intersect(px, pT0, pT1) && t.x >= px.x) inTo = !inTo; + + float _f = distance(px, f); + float _t = distance(px, t); + + if(_f <= dF) { + dF = _f; + pF = f; + } + + if(_t <= dT) { + dT = _t; + pT = t; + } + + pF0 = pF1; + pT0 = pT1; + } + + a = dF / (dF + dT); + + } else { + float ma = 99999.; + float index = 0.; + bool infr = false; + a = 0.; + + for(int i = 1; i < subdivision; i++) { + pF1 = point1[i]; + pT1 = point2[i]; + + vec2 f = pointToLine(px, pF0, pF1); + vec2 t = pointToLine(px, pT0, pT1); + + if(intersect(px, pF0, pF1) && f.x >= px.x) inFrom = !inFrom; + if(intersect(px, pT0, pT1) && t.x >= px.x) inTo = !inTo; + + bool inRegion = pointInTriangle(px, pF0, pF1, pT0) || pointInTriangle(px, pF1, pT0, pT1); + + pF0 = pF1; + pT0 = pT1; + + if(!inRegion) continue; + + float _f = distance(px, f); + float _t = distance(px, t); + + a = max(a, _f / (_f + _t)); + + infr = true; + } + + if(infr) inFrom = true; } - float a = dF / (dF + dT); - // float l = pointOnLine(px, pF, pT); - // if(l < 0.) a = 0.; - // else if(l > 1.) a = 1.; + if(clip == 1) { + if( inTo) a = 1.; + else if(!inFrom) a = 0.; + } + a = curveEval(w_curve, w_amount, a); gl_FragColor = vec4(vec3(a), 1.); } diff --git a/sprites/s_inspector_corner/138da7d0-5a9b-40c2-a77a-5225382e6964.png b/sprites/s_inspector_corner/138da7d0-5a9b-40c2-a77a-5225382e6964.png new file mode 100644 index 000000000..5a6174983 Binary files /dev/null and b/sprites/s_inspector_corner/138da7d0-5a9b-40c2-a77a-5225382e6964.png differ diff --git a/sprites/s_inspector_corner/1a3b04c9-2e80-4197-ad8a-fb08eecac59b.png b/sprites/s_inspector_corner/1a3b04c9-2e80-4197-ad8a-fb08eecac59b.png new file mode 100644 index 000000000..734fbed2f Binary files /dev/null and b/sprites/s_inspector_corner/1a3b04c9-2e80-4197-ad8a-fb08eecac59b.png differ diff --git a/sprites/s_inspector_corner/489b53d7-5462-40c6-ae0b-a79548a50391.png b/sprites/s_inspector_corner/489b53d7-5462-40c6-ae0b-a79548a50391.png new file mode 100644 index 000000000..0dfec30a1 Binary files /dev/null and b/sprites/s_inspector_corner/489b53d7-5462-40c6-ae0b-a79548a50391.png differ diff --git a/sprites/s_inspector_corner/7d6f3c9b-816b-473c-9609-7afe7c287375.png b/sprites/s_inspector_corner/7d6f3c9b-816b-473c-9609-7afe7c287375.png deleted file mode 100644 index 67ff8b0e9..000000000 Binary files a/sprites/s_inspector_corner/7d6f3c9b-816b-473c-9609-7afe7c287375.png and /dev/null differ diff --git a/sprites/s_inspector_corner/e83b87fa-8548-47d9-9730-795354c9cfab.png b/sprites/s_inspector_corner/e83b87fa-8548-47d9-9730-795354c9cfab.png new file mode 100644 index 000000000..13987710b Binary files /dev/null and b/sprites/s_inspector_corner/e83b87fa-8548-47d9-9730-795354c9cfab.png differ diff --git a/sprites/s_inspector_corner/layers/138da7d0-5a9b-40c2-a77a-5225382e6964/f4daaca1-3dcd-4fc2-9fae-5dcbab5b23cd.png b/sprites/s_inspector_corner/layers/138da7d0-5a9b-40c2-a77a-5225382e6964/f4daaca1-3dcd-4fc2-9fae-5dcbab5b23cd.png new file mode 100644 index 000000000..5a6174983 Binary files /dev/null and b/sprites/s_inspector_corner/layers/138da7d0-5a9b-40c2-a77a-5225382e6964/f4daaca1-3dcd-4fc2-9fae-5dcbab5b23cd.png differ diff --git a/sprites/s_inspector_corner/layers/1a3b04c9-2e80-4197-ad8a-fb08eecac59b/f4daaca1-3dcd-4fc2-9fae-5dcbab5b23cd.png b/sprites/s_inspector_corner/layers/1a3b04c9-2e80-4197-ad8a-fb08eecac59b/f4daaca1-3dcd-4fc2-9fae-5dcbab5b23cd.png new file mode 100644 index 000000000..734fbed2f Binary files /dev/null and b/sprites/s_inspector_corner/layers/1a3b04c9-2e80-4197-ad8a-fb08eecac59b/f4daaca1-3dcd-4fc2-9fae-5dcbab5b23cd.png differ diff --git a/sprites/s_inspector_corner/layers/489b53d7-5462-40c6-ae0b-a79548a50391/f4daaca1-3dcd-4fc2-9fae-5dcbab5b23cd.png b/sprites/s_inspector_corner/layers/489b53d7-5462-40c6-ae0b-a79548a50391/f4daaca1-3dcd-4fc2-9fae-5dcbab5b23cd.png new file mode 100644 index 000000000..0dfec30a1 Binary files /dev/null and b/sprites/s_inspector_corner/layers/489b53d7-5462-40c6-ae0b-a79548a50391/f4daaca1-3dcd-4fc2-9fae-5dcbab5b23cd.png differ diff --git a/sprites/s_inspector_corner/layers/7d6f3c9b-816b-473c-9609-7afe7c287375/c0fbcaac-9a99-4788-bf26-4e7d3abe43a7.png b/sprites/s_inspector_corner/layers/7d6f3c9b-816b-473c-9609-7afe7c287375/c0fbcaac-9a99-4788-bf26-4e7d3abe43a7.png deleted file mode 100644 index 67ff8b0e9..000000000 Binary files a/sprites/s_inspector_corner/layers/7d6f3c9b-816b-473c-9609-7afe7c287375/c0fbcaac-9a99-4788-bf26-4e7d3abe43a7.png and /dev/null differ diff --git a/sprites/s_inspector_corner/layers/e83b87fa-8548-47d9-9730-795354c9cfab/f4daaca1-3dcd-4fc2-9fae-5dcbab5b23cd.png b/sprites/s_inspector_corner/layers/e83b87fa-8548-47d9-9730-795354c9cfab/f4daaca1-3dcd-4fc2-9fae-5dcbab5b23cd.png new file mode 100644 index 000000000..13987710b Binary files /dev/null and b/sprites/s_inspector_corner/layers/e83b87fa-8548-47d9-9730-795354c9cfab/f4daaca1-3dcd-4fc2-9fae-5dcbab5b23cd.png differ diff --git a/sprites/s_inspector_corner/s_inspector_corner.yy b/sprites/s_inspector_corner/s_inspector_corner.yy index 9f297b878..6a2fae939 100644 --- a/sprites/s_inspector_corner/s_inspector_corner.yy +++ b/sprites/s_inspector_corner/s_inspector_corner.yy @@ -2,24 +2,27 @@ "$GMSprite":"", "%Name":"s_inspector_corner", "bboxMode":0, - "bbox_bottom":92, - "bbox_left":3, - "bbox_right":92, - "bbox_top":3, + "bbox_bottom":15, + "bbox_left":0, + "bbox_right":15, + "bbox_top":0, "collisionKind":1, "collisionTolerance":0, "DynamicTexturePage":false, "edgeFiltering":false, "For3D":false, "frames":[ - {"$GMSpriteFrame":"","%Name":"7d6f3c9b-816b-473c-9609-7afe7c287375","name":"7d6f3c9b-816b-473c-9609-7afe7c287375","resourceType":"GMSpriteFrame","resourceVersion":"2.0",}, + {"$GMSpriteFrame":"","%Name":"e83b87fa-8548-47d9-9730-795354c9cfab","name":"e83b87fa-8548-47d9-9730-795354c9cfab","resourceType":"GMSpriteFrame","resourceVersion":"2.0",}, + {"$GMSpriteFrame":"","%Name":"489b53d7-5462-40c6-ae0b-a79548a50391","name":"489b53d7-5462-40c6-ae0b-a79548a50391","resourceType":"GMSpriteFrame","resourceVersion":"2.0",}, + {"$GMSpriteFrame":"","%Name":"1a3b04c9-2e80-4197-ad8a-fb08eecac59b","name":"1a3b04c9-2e80-4197-ad8a-fb08eecac59b","resourceType":"GMSpriteFrame","resourceVersion":"2.0",}, + {"$GMSpriteFrame":"","%Name":"138da7d0-5a9b-40c2-a77a-5225382e6964","name":"138da7d0-5a9b-40c2-a77a-5225382e6964","resourceType":"GMSpriteFrame","resourceVersion":"2.0",}, ], "gridX":0, "gridY":0, - "height":96, + "height":16, "HTile":false, "layers":[ - {"$GMImageLayer":"","%Name":"c0fbcaac-9a99-4788-bf26-4e7d3abe43a7","blendMode":0,"displayName":"default","isLocked":false,"name":"c0fbcaac-9a99-4788-bf26-4e7d3abe43a7","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,}, + {"$GMImageLayer":"","%Name":"f4daaca1-3dcd-4fc2-9fae-5dcbab5b23cd","blendMode":0,"displayName":"default","isLocked":false,"name":"f4daaca1-3dcd-4fc2-9fae-5dcbab5b23cd","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,}, ], "name":"s_inspector_corner", "nineSlice":null, @@ -49,7 +52,7 @@ }, "eventStubScript":null, "eventToFunction":{}, - "length":1.0, + "length":4.0, "lockOrigin":false, "moments":{ "$KeyframeStore":"", @@ -69,14 +72,23 @@ "tracks":[ {"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore":"","Keyframes":[ {"$Keyframe":"","Channels":{ - "0":{"$SpriteFrameKeyframe":"","Id":{"name":"7d6f3c9b-816b-473c-9609-7afe7c287375","path":"sprites/s_inspector_corner/s_inspector_corner.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, - },"Disabled":false,"id":"941a0f5d-b28e-4048-91da-114760d8380f","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"e83b87fa-8548-47d9-9730-795354c9cfab","path":"sprites/s_inspector_corner/s_inspector_corner.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"711e0c69-a7f6-4904-98f0-7e8f49e55088","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + {"$Keyframe":"","Channels":{ + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"489b53d7-5462-40c6-ae0b-a79548a50391","path":"sprites/s_inspector_corner/s_inspector_corner.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"0d575809-e630-40b8-8a85-0528e99c7c3e","IsCreationKey":false,"Key":1.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + {"$Keyframe":"","Channels":{ + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"1a3b04c9-2e80-4197-ad8a-fb08eecac59b","path":"sprites/s_inspector_corner/s_inspector_corner.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"03a68097-6315-4121-82ed-231fa6c71547","IsCreationKey":false,"Key":2.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, + {"$Keyframe":"","Channels":{ + "0":{"$SpriteFrameKeyframe":"","Id":{"name":"138da7d0-5a9b-40c2-a77a-5225382e6964","path":"sprites/s_inspector_corner/s_inspector_corner.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",}, + },"Disabled":false,"id":"80bb90fa-5b1c-4d10-b92f-4f809d15c50b","IsCreationKey":false,"Key":3.0,"Length":1.0,"resourceType":"Keyframe","resourceVersion":"2.0","Stretch":false,}, ],"resourceType":"KeyframeStore","resourceVersion":"2.0",},"modifiers":[],"name":"frames","resourceType":"GMSpriteFramesTrack","resourceVersion":"2.0","spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, ], "visibleRange":null, "volume":1.0, - "xorigin":48, - "yorigin":48, + "xorigin":8, + "yorigin":8, }, "swatchColours":null, "swfPrecision":0.5, @@ -86,5 +98,5 @@ }, "type":0, "VTile":false, - "width":96, + "width":16, } \ No newline at end of file