0.11 update

This commit is contained in:
Tanasart 2022-11-21 12:38:44 +07:00
parent c9ba0698e0
commit 1e391d3c70
88 changed files with 4404 additions and 4329 deletions

View file

@ -696,11 +696,10 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_single_hover_strip12.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_single_strip12.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junction_name_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_pin.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_resize.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_color_picker_sample_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_text_halign_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_prop_keyframe_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_prop_on_end_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_rotator_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_rotator_knob_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_workspace_1.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_button_path_icon.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
@ -725,7 +724,6 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_accept_24.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_minus_24.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_processor.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_padding_link_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_animation_setting.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_view_mode_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_scroll_box_arrow.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
@ -752,23 +750,18 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_sequence_control_strip7.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_loop_16.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_timeline_keyframe_strip4.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_padding.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_area_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_text_valign_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_prop_gradient_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_rotator_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_obj_halign_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_anchor.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_cursor_path_add.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"anchor_selector_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_text_valign_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_prop_on_end_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_anchor_rotate_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_anchor_scale_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_cursor_path_remove.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_anchor.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_anchor_scale_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_cursor_path_add.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_cursor_path_move.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_cursor_path_anchor.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_preview_crosshair.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_anchor_scale_hori_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_preview_crosshair.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_slider_strip5.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_checkbox_strip4.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_button_hide_fill_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",},
@ -783,11 +776,10 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_button_bottom_left_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_button_top_right_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_button_bottom_right_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/widget",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_draw_path.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_draw_area.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_pin_active.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_prop_selecting_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_error.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_obj_halign_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"colors.json","CopyToMask":-1,"filePath":"datafiles/data/themes/default",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_state_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
@ -796,22 +788,16 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_menu_separator.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_menu_white.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_group_label.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_ui_scroll_bar.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_noti_icon_file_save.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_dialog_active.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_ui_panel_bg_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_animate_clock_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_refresh_16.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_timeline_clock.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_frame_active.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_error.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_menu_button.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_resize.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_pin_active.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_frame_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_active_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_bg_name.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_refresh_24.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_color_picker_sample2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_circle_16.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
@ -829,11 +815,24 @@
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_curve_connection_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_spalsh_show_on_start_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_noti_icon_log_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_dialog_bg.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_ui_panel_active.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_workspace_0.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_active.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_pin.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_bg_name.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_text_halign_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_padding.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"anchor_selector_strip3.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_inspector_area_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_prop_selecting.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/inspector",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_padding_link_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_ui_scroll_bar.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/UI",},
],
"MetaData": {
"IDEVersion": "2022.9.0.49",

View file

@ -63,6 +63,7 @@
"node_blend_canvas": ["white", "orange", 0.5],
"node_path_overlay_control_line": "blue_grey",
"node_wiggler_frame": "blue_grey",
"node_border_file_drop": "cyan",
"scrollbar_hover": "blue_white",
"scrollbar_idle": "blue_grey",
@ -75,7 +76,7 @@
"panel_animation_keyframe_unselected": "blue_ltgrey",
"panel_animation_keyframe_hide": "blue_grey",
"panel_animation_node_bg": "blue_grey",
"panel_animation_dope_bg_hover": ["blue_white", "blue_ltgrey", 0.5],
"panel_animation_dope_bg_hover": "blue_dkgrey",
"panel_animation_dope_bg": "blue_ltgrey",
"panel_animation_graph_bg": "blue_ltgrey",
"panel_animation_graph_line": "blue_grey",

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 B

After

Width:  |  Height:  |  Size: 110 B

View file

@ -404,16 +404,16 @@
"slice": null
},
"prop_selecting": {
"path": "./inspector/s_prop_selecting_strip2.png",
"subimages": 2,
"path": "./inspector/s_prop_selecting.png",
"subimages": 1,
"xorigin": 0,
"yorigin": 0,
"slice": {
"enabled": true,
"left": 11,
"right": 11,
"top": 11,
"bottom": 11
"left": 23,
"right": 23,
"top": 23,
"bottom": 23
}
},
"rotator_bg": {
@ -520,8 +520,8 @@
}
},
"node_active": {
"path": "./node/s_node_active_strip2.png",
"subimages": 2,
"path": "./node/s_node_active.png",
"subimages": 1,
"xorigin": 0,
"yorigin": 0,
"slice": {
@ -584,19 +584,6 @@
"bottom": 7
}
},
"node_frame_bg_active": {
"path": "./node/s_node_frame_active.png",
"subimages": 1,
"xorigin": 0,
"yorigin": 0,
"slice": {
"enabled": true,
"left": 7,
"right": 7,
"top": 7,
"bottom": 7
}
},
"node_junction_name_bg": {
"path": "./node/s_node_junction_name_bg.png",
"subimages": 1,
@ -762,10 +749,10 @@
"yorigin": 0,
"slice": {
"enabled": true,
"left": 6,
"right": 6,
"top": 6,
"bottom": 6
"left": 5,
"right": 5,
"top": 5,
"bottom": 5
}
},
"toolbar_shadow": {
@ -821,10 +808,10 @@
"yorigin": 0,
"slice": {
"enabled": true,
"left": 2,
"right": 2,
"top": 2,
"bottom": 2
"left": 1,
"right": 1,
"top": 1,
"bottom": 1
}
},
"cursor_path_add": {

File diff suppressed because it is too large Load diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 847 B

After

Width:  |  Height:  |  Size: 1.1 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 437 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 431 B

After

Width:  |  Height:  |  Size: 449 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 617 B

After

Width:  |  Height:  |  Size: 475 B

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 972 B

After

Width:  |  Height:  |  Size: 943 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 993 B

After

Width:  |  Height:  |  Size: 1,019 B

View file

@ -27,7 +27,7 @@ if !ready exit;
draw_sprite_stretched(THEME.node_bg, 0, xx, yy, grid_size, grid_size);
if(point_in_rectangle(mouse_mx, mouse_my, xx, yy, xx + grid_width, yy + grid_size)) {
draw_sprite_stretched(THEME.node_active, 0, xx, yy, grid_size, grid_size);
draw_sprite_stretched_ext(THEME.node_active, 0, xx, yy, grid_size, grid_size, COLORS._main_accent, 1);
if(mouse_check_button_pressed(mb_left)) {
var path_arr = paths_to_array(paths, dir_recursive, dir_filter);
switch(i) {

View file

@ -174,7 +174,7 @@ event_inherited();
BLEND_NORMAL
if(point_in_rectangle(_m[0], _m[1], _nx, yy, _nx + grid_width, yy + grid_size)) {
draw_sprite_stretched(THEME.node_active, 0, _boxx, yy, grid_size, grid_size);
draw_sprite_stretched_ext(THEME.node_active, 0, _boxx, yy, grid_size, grid_size, COLORS._main_accent, 1);
if(mouse_check_button_pressed(mb_left))
buildNode(_node);
}
@ -210,7 +210,7 @@ event_inherited();
}
if(point_in_rectangle(_m[0], _m[1], 0, yy, list_width, yy + list_height - 1)) {
draw_sprite_stretched(THEME.node_active, 0, ui(4), yy, list_width - ui(8), list_height);
draw_sprite_stretched_ext(THEME.node_active, 0, ui(4), yy, list_width - ui(8), list_height, COLORS._main_accent, 1);
if(mouse_check_button_pressed(mb_left))
buildNode(_node);
}
@ -368,7 +368,7 @@ event_inherited();
}
if(node_selecting == i) {
draw_sprite_stretched(THEME.node_active, 0, _boxx, yy, grid_size, grid_size);
draw_sprite_stretched_ext(THEME.node_active, 0, _boxx, yy, grid_size, grid_size, COLORS._main_accent, 1);
if(keyboard_check_pressed(vk_enter))
buildNode(_node, _param);
}
@ -432,7 +432,7 @@ event_inherited();
}
if(node_selecting == i) {
draw_sprite_stretched(THEME.node_active, 0, ui(4), yy, list_width - ui(8), list_height);
draw_sprite_stretched_ext(THEME.node_active, 0, ui(4), yy, list_width - ui(8), list_height, COLORS._main_accent, 1);
if(keyboard_check_pressed(vk_enter))
buildNode(_node, _param);
}

View file

@ -80,7 +80,7 @@ event_inherited();
BLEND_NORMAL
if(point_in_rectangle(_m[0], _m[1], xx, yy, xx + grid_size, yy + grid_size)) {
draw_sprite_stretched(THEME.node_active, 0, xx, yy, grid_size, grid_size);
draw_sprite_stretched_ext(THEME.node_active, 0, xx, yy, grid_size, grid_size, COLORS._main_accent, 1);
if(mouse_check_button_pressed(mb_left)) {
target.onModify(content.path);
instance_destroy();

View file

@ -3,7 +3,7 @@ event_inherited();
#region data
dialog_w = ui(320);
dialog_h = ui(180);
dialog_h = ui(220);
destroy_on_click_out = true;
#endregion
@ -20,4 +20,8 @@ event_inherited();
sl_opacity = new slider(0, 1, .05, function(str) {
PANEL_GRAPH.grid_opacity = clamp(real(str), 0, 1);
})
cl_color = buttonColor(function(color) {
PANEL_GRAPH.grid_color = color;
});
#endregion

View file

@ -33,4 +33,11 @@ if !ready exit;
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
draw_text(dialog_x + ui(32), yy, "Grid opacity");
sl_opacity.draw(dialog_x + dialog_w - ui(24), yy, ww, TEXTBOX_HEIGHT, PANEL_GRAPH.grid_opacity, mouse_ui, ui(52), fa_right, fa_center);
yy += ui(40);
cl_color.active = sFOCUS;
cl_color.hover = sHOVER;
draw_set_text(f_p1, fa_left, fa_center, COLORS._main_text);
draw_text(dialog_x + ui(32), yy, "Grid Color");
cl_color.draw(dialog_x + dialog_w - ui(24) - ww, yy - TEXTBOX_HEIGHT / 2, ww, TEXTBOX_HEIGHT, PANEL_GRAPH.grid_color, mouse_ui);
#endregion

View file

@ -45,7 +45,15 @@ event_inherited();
draw_sprite_stretched_ext(THEME.group_label, 0, 0, yy + ui(2), ui(48), _h - ui(4), noti.color, 1);
var ic = noti.icon? noti.icon : THEME.noti_icon_log;
var ic = noti.icon;
if(noti.icon == noone) {
switch(noti.type) {
case NOTI_TYPE.log : ic = THEME.noti_icon_log; break;
case NOTI_TYPE.warning : ic = THEME.noti_icon_warning; break;
case NOTI_TYPE.error : ic = THEME.noti_icon_error; break;
}
}
draw_sprite_ui(ic, 1, ui(24), yy + _h / 2);
var tx = ui(48) + timeW + ui(12);
@ -57,7 +65,7 @@ event_inherited();
draw_text_ext(tx + ui(4), yy + _h / 2, noti.txt, -1, txw);
if(noti.onClick != noone && point_in_rectangle(_m[0], _m[1], 0, yy, _w, yy + _h - ui(4))) {
draw_sprite_stretched_ext(THEME.node_active, 0, 0, yy + ui(2), _w, _h - ui(4), c_white, 1);
draw_sprite_stretched_ext(THEME.node_active, 0, 0, yy + ui(2), _w, _h - ui(4), COLORS._main_accent, 1);
if(mouse_check_button_pressed(mb_left))
noti.onClick();

View file

@ -69,6 +69,15 @@ event_inherited();
})
]);
ds_list_add(pref_global, [
"UI frame rate",
"ui_framerate",
new textBox(TEXTBOX_INPUT.number, function(str) {
PREF_MAP[? "ui_framerate"] = max(15, round(real(str)));
PREF_SAVE();
})
]);
ds_list_add(pref_global, [
"Default surface size",
"default_surface_side",

View file

@ -8,7 +8,7 @@
var _ly = dialog_y + i * hght;
if(point_in_rectangle(mouse_mx, mouse_my, dialog_x, _ly + 1, dialog_x + dialog_w, _ly + hght - 1)) {
draw_sprite_stretched_ext(THEME.textbox, 3, dialog_x, _ly, dialog_w, hght, COLORS._main_text, 1);
draw_sprite_stretched_ext(THEME.textbox, 3, dialog_x, _ly, dialog_w, hght, COLORS.dialog_menubox_highlight, 1);
if(mouse_check_button_pressed(mb_left)) {
scrollbox.onModify(i);

View file

@ -28,7 +28,7 @@ event_inherited();
draw_sprite_stretched(THEME.ui_panel_bg, 1, 0, _y, ww, hg);
if(sHOVER && point_in_rectangle(_m[0], _m[1], 0, _y, ww, _y + hg)) {
draw_sprite_stretched(THEME.node_active, 0, 0, _y, ww, hg);
draw_sprite_stretched_ext(THEME.node_active, 0, 0, _y, ww, hg, COLORS._main_accent, 1);
if(sFOCUS && mouse_check_button_pressed(mb_left)) {
LOAD_PATH(_rec);
@ -78,7 +78,7 @@ event_inherited();
draw_sprite_stretched(THEME.node_bg, 0, _boxx, yy, grid_width, grid_heigh);
if(sHOVER && point_in_rectangle(_m[0], _m[1], _nx, yy, _nx + grid_width, yy + grid_heigh)) {
draw_sprite_stretched(THEME.node_active, 0, _boxx, yy, grid_width, grid_heigh);
draw_sprite_stretched_ext(THEME.node_active, 0, _boxx, yy, grid_width, grid_heigh, COLORS._main_accent, 1);
if(sFOCUS && mouse_check_button_pressed(mb_left)) {
LOAD_PATH(_node.path, true);
instance_destroy();

View file

@ -1,7 +1,11 @@
/// @description main directory, parameter
#region directory
globalvar DIRECTORY;
DIRECTORY = "C:\\Users\\" + environment_get_variable("USERNAME") + "\\AppData\\Local\\Pixels_Composer\\";
DIRECTORY = environment_get_variable("userprofile") + "\\AppData\\Local\\Pixels_Composer\\";
if(!directory_exists(DIRECTORY)) {
log_message("DIRECTORY", "Default user directory not exist");
DIRECTORY = "";
}
log_clear();
log_newline();
log_message("SESSION", "Begin");
@ -17,12 +21,12 @@
var path = parameter_string(1);
path = string_replace_all(path, "\n", "");
path = string_replace_all(path, "\"", "");
if(file_exists(path) && filename_ext(path) == ".pxc") {
file_open_parameter = path;
alarm[2] = 3;
set_working_directory(DIRECTORY);
directory_set_current_working(DIRECTORY);
}
}
#endregion

View file

@ -28,7 +28,7 @@
ANIMATOR.frame_progress = false;
var _c = ANIMATOR.current_frame;
ANIMATOR.current_frame = floor(ANIMATOR.real_frame);
ANIMATOR.current_frame = round(ANIMATOR.real_frame);
if(_c != ANIMATOR.current_frame) {
ANIMATOR.frame_progress = true;

View file

@ -1,4 +1,7 @@
{
"resourceType": "GMMainOptions",
"resourceVersion": "1.4",
"name": "Main",
"option_gameguid": "e9b3db08-0894-4037-ab08-a13723151e39",
"option_gameid": "0",
"option_game_speed": 60,
@ -10,13 +13,8 @@
"option_author": "",
"option_collision_compatibility": true,
"option_copy_on_write_enabled": true,
"option_lastchanged": "02 July 2021 15:58:28",
"option_spine_licence": false,
"option_template_image": "${base_options_dir}/main/template_image.png",
"option_template_icon": "${base_options_dir}/main/template_icon.png",
"option_template_description": null,
"resourceVersion": "1.4",
"name": "Main",
"tags": [],
"resourceType": "GMMainOptions",
}

View file

@ -48,14 +48,14 @@ function Node_2D_light(_x, _y) : Node_Processor(_x, _y) constructor {
.setDisplay(VALUE_DISPLAY.slider, [0, 16, 1]);
inputs[| 11] = nodeValue(11, "Attenuation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_scroll, ["Quadratic", "Linear"]);
.setDisplay(VALUE_DISPLAY.enum_scroll, ["Quadratic", "Invert quadratic", "Linear"]);
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
outputs[| 1] = nodeValue(1, "Light only", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
input_display_list = [ 0,
["Shape", false], 1, 2, 6, 7, 8, 9,
["Light", false], 3, 4, 5,
["Light", false], 3, 4, 5,
["Render", false], 11, 10
];

View file

@ -1,12 +1,11 @@
{
"resourceType": "GMScript",
"resourceVersion": "1.0",
"name": "node_2d_light",
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "filter",
"path": "folders/nodes/data/filter.yy",
},
"resourceVersion": "1.0",
"name": "node_2d_light",
"tags": [],
"resourceType": "GMScript",
}

View file

@ -16,7 +16,7 @@ function Node_3D_Obj(_x, _y) : Node(_x, _y) constructor {
doUpdate();
}, "Generate"] );
inputs[| 2] = nodeValue(2, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d)
inputs[| 2] = nodeValue(2, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2)
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 3] = nodeValue(3, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])

View file

@ -8,7 +8,7 @@ function Node_3D_Cube(_x, _y) : Node(_x, _y) constructor {
name = "3D Cube";
inputs[| 0] = nodeValue(0, "Main texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, DEF_SURFACE);
inputs[| 1] = nodeValue(1, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d)
inputs[| 1] = nodeValue(1, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2)
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue(2, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])

View file

@ -11,7 +11,7 @@ function Node_3D_Cylinder(_x, _y) : Node(_x, _y) constructor {
inputs[| 1] = nodeValue(1, "Thickness", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.2);
inputs[| 2] = nodeValue(2, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d)
inputs[| 2] = nodeValue(2, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2)
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 3] = nodeValue(3, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])

View file

@ -21,7 +21,7 @@ function Node_3D_Transform(_x, _y) : Node_Processor(_x, _y) constructor {
inputs[| 4] = nodeValue(4, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, OUTPUT_SCALING.same_as_input)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Same as input", "Constant", "Relative to input" ]);
inputs[| 5] = nodeValue(5, "Constant dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d)
inputs[| 5] = nodeValue(5, "Constant dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2)
.setDisplay(VALUE_DISPLAY.vector);
input_display_list = [0,

View file

@ -8,7 +8,7 @@ function Node_9Slice(_x, _y) : Node_Processor(_x, _y) constructor {
name = "Nine slice";
inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
inputs[| 1] = nodeValue(1, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d)
inputs[| 1] = nodeValue(1, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2)
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue(2, "Splice", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 0, 0, 0, 0 ])

View file

@ -8,7 +8,7 @@ function Node_Canvas(_x, _y) : Node(_x, _y) constructor {
name = "Canvas";
color = COLORS.node_blend_canvas;
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d )
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue(1, "Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_black );

View file

@ -16,7 +16,7 @@ function Node_Checker(_x, _y) : Node(_x, _y) constructor {
uniform_col1 = shader_get_uniform(shader, "col1");
uniform_col2 = shader_get_uniform(shader, "col2");
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d )
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue(1, "Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 2)

View file

@ -25,7 +25,7 @@ function Node_Composite(_x, _y) : Node_Processor(_x, _y) constructor {
inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, COMPOSE_OUTPUT_SCALING.first)
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "First surface", "Largest surface", "Constant" ]);
inputs[| 2] = nodeValue(2, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d)
inputs[| 2] = nodeValue(2, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2)
.setDisplay(VALUE_DISPLAY.vector)
.setVisible(false);

View file

@ -435,7 +435,7 @@ function Node(_x, _y) constructor {
onDrawNode(xx, yy, _mx, _my, _s);
if(active_draw_index > -1) {
draw_sprite_stretched(bg_sel_spr, active_draw_index, xx, yy, w * _s, h * _s);
draw_sprite_stretched_ext(bg_sel_spr, 0, xx, yy, w * _s, h * _s, active_draw_index > 1? COLORS.node_border_file_drop : COLORS._main_accent, 1);
active_draw_index = -1;
}

View file

@ -10,7 +10,6 @@ function Node_Display_Text(_x, _y) : Node(_x, _y) constructor {
h = 160;
min_h = 0;
bg_spr = THEME.node_frame_bg;
bg_sel_spr = THEME.node_frame_bg_active;
size_dragging = false;
size_dragging_w = w;
@ -258,7 +257,7 @@ function Node_Display_Text(_x, _y) : Node(_x, _y) constructor {
var yy = y * _s + _y;
if(active_draw_index > -1) {
draw_sprite_stretched(bg_sel_spr, active_draw_index, xx, yy, w * _s, h * _s);
draw_sprite_stretched_ext(bg_sel_spr, 0, xx, yy, w * _s, h * _s, COLORS._main_accent, 1);
active_draw_index = -1;
}

View file

@ -10,10 +10,12 @@ function Node_Erode(_x, _y) : Node_Processor(_x, _y) constructor {
uniform_dim = shader_get_uniform(sh_erode, "dimension");
uniform_size = shader_get_uniform(sh_erode, "size");
uniform_bor = shader_get_uniform(sh_erode, "border");
uniform_alp = shader_get_uniform(sh_erode, "alpha");
inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
inputs[| 1] = nodeValue(1, "Width", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1);
inputs[| 2] = nodeValue(2, "Preserve border",self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
inputs[| 3] = nodeValue(3, "Use alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE);
@ -28,6 +30,7 @@ function Node_Erode(_x, _y) : Node_Processor(_x, _y) constructor {
shader_set_uniform_f_array(uniform_dim, [surface_get_width(_data[0]), surface_get_height(_data[0])]);
shader_set_uniform_f(uniform_size, wd);
shader_set_uniform_i(uniform_bor, _data[2]? 1 : 0);
shader_set_uniform_i(uniform_alp, _data[3]? 1 : 0);
draw_surface_safe(_data[0], 0, 0);
shader_reset();

View file

@ -1,12 +1,11 @@
{
"resourceType": "GMScript",
"resourceVersion": "1.0",
"name": "node_erode",
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "filter",
"path": "folders/nodes/data/filter.yy",
},
"resourceVersion": "1.0",
"name": "node_erode",
"tags": [],
"resourceType": "GMScript",
}

View file

@ -9,7 +9,6 @@ function Node_Frame(_x, _y) : Node(_x, _y) constructor {
w = 240;
h = 160;
bg_spr = THEME.node_frame_bg;
bg_sel_spr = THEME.node_frame_bg_active;
size_dragging = false;
size_dragging_w = w;
@ -64,7 +63,7 @@ function Node_Frame(_x, _y) : Node(_x, _y) constructor {
drawNodeBase(xx, yy, _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_ext(bg_sel_spr, 0, x * _s + _x, y * _s + _y, w * _s, h * _s, COLORS._main_accent, 1);
active_draw_index = -1;
}

View file

@ -9,7 +9,7 @@ function Node_Global(_x, _y) constructor {
outputs = ds_list_create();
input_display_list = -1;
inputs[| 0] = nodeValue(0, "Default Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d );
inputs[| 0] = nodeValue(0, "Default Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 );
inputs[| 0].setDisplay(VALUE_DISPLAY.vector);
static serialize = function() {

View file

@ -20,7 +20,7 @@ function Node_Gradient(_x, _y) : Node(_x, _y) constructor {
uniform_radius = shader_get_uniform(sh_gradient, "radius");
uniform_radius_shf = shader_get_uniform(sh_gradient, "shift");
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d )
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue(1, "Gradient", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white)

View file

@ -20,7 +20,7 @@ function Node_Grid(_x, _y) : Node(_x, _y) constructor {
uniform_col2 = shader_get_uniform(shader, "col2");
uniform_sam = shader_get_uniform(shader, "useSampler");
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d )
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue(1, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])

View file

@ -108,28 +108,28 @@ function Node_Image(_x, _y) : Node(_x, _y) constructor {
BLEND_NORMAL
surface_reset_target();
if(first_update) {
if(string_pos("strip", name) > 0) {
var sep_pos = string_pos("strip", name) + 5;
var sep = string_copy(name, sep_pos, string_length(name) - sep_pos + 1);
var amo = toNumber(sep);
if(!first_update) return;
first_update = false;
if(string_pos("strip", name) == 0) return;
var sep_pos = string_pos("strip", name) + 5;
var sep = string_copy(name, sep_pos, string_length(name) - sep_pos + 1);
var amo = toNumber(sep);
if(amo) {
var ww = sprite_get_width(spr) / amo;
var hh = sprite_get_height(spr);
if(amo) {
var ww = sprite_get_width(spr) / amo;
var hh = sprite_get_height(spr);
var _splice = nodeBuild("Splice spritesheet", x + w + 64, y);
_splice.inputs[| 0].setFrom(outputs[| 0], false);
_splice.inputs[| 1].setValue([ww, hh]);
_splice.inputs[| 2].setValue(amo);
_splice.inputs[| 3].setValue(amo);
var _splice = nodeBuild("Splice spritesheet", x + w + 64, y);
_splice.inputs[| 0].setFrom(outputs[| 0], false);
_splice.inputs[| 1].setValue([ww, hh]);
_splice.inputs[| 2].setValue(amo);
_splice.inputs[| 3].setValue(amo);
ds_list_add(PANEL_GRAPH.nodes_select_list, self);
ds_list_add(PANEL_GRAPH.nodes_select_list, _splice);
}
}
first_update = false;
}
ds_list_add(PANEL_GRAPH.nodes_select_list, self);
ds_list_add(PANEL_GRAPH.nodes_select_list, _splice);
}
}
doUpdate();
}

View file

@ -156,7 +156,7 @@ function valueAnimator(_val, _prop) constructor {
if(!ds_list_exist(values, _key)) return 0;
MODIFIED = true;
_time = clamp(_time, 0, ANIMATOR.frames_total);
_time = clamp(_time, 0, ANIMATOR.frames_total - 1);
_key.time = _time;
ds_list_remove(values, _key);

View file

@ -8,7 +8,7 @@ function Node_Line(_x, _y) : Node(_x, _y) constructor {
name = "Line";
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d )
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue(1, "Backgroud", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
@ -27,7 +27,8 @@ function Node_Line(_x, _y) : Node(_x, _y) constructor {
inputs[| 6] = nodeValue(6, "Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.rotation);
inputs[| 7] = nodeValue(7, "Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.object, 0);
inputs[| 7] = nodeValue(7, "Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.object, 0)
.setVisible(true, true);
inputs[| 8] = nodeValue(8, "Range", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [0, 1])
.setDisplay(VALUE_DISPLAY.slider_range, [0, 1, 0.01]);

View file

@ -56,9 +56,9 @@ function Node_Math(_x, _y) : Node(_x, _y) constructor {
/* 0 - 9*/ "Add", "Subtract", "Multiply", "Divide", "Power", "Root", "Sin", "Cos", "Tan", "Modulo",
/*10 - 12*/ "Floor", "Ceil", "Round" ]);
inputs[| 1] = nodeValue(1, "a", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0, VALUE_TAG.dimension_2d)
inputs[| 1] = nodeValue(1, "a", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setVisible(true, true);
inputs[| 2] = nodeValue(2, "b", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0, VALUE_TAG.dimension_2d)
inputs[| 2] = nodeValue(2, "b", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
.setVisible(true, true);
outputs[| 0] = nodeValue(0, "Math", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0);

View file

@ -12,7 +12,7 @@ function Node_Noise_Aniso(_x, _y) : Node(_x, _y) constructor {
uniform_sed = shader_get_uniform(shader, "seed");
uniform_pos = shader_get_uniform(shader, "position");
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d )
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue(1, "Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 2, 16 ])

View file

@ -7,7 +7,7 @@ function Node_create_Cellular(_x, _y) {
function Node_Cellular(_x, _y) : Node(_x, _y) constructor {
name = "Cellular";
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d )
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue(1, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2])

View file

@ -16,7 +16,7 @@ function Node_Grid_Noise(_x, _y) : Node(_x, _y) constructor {
uniform_sam = shader_get_uniform(shader, "useSampler");
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d )
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue(1, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])

View file

@ -27,7 +27,7 @@ function Node_Normal_Light(_x, _y) : Node_Processor(_x, _y) constructor {
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 5] = nodeValue(5, "Light range", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 16);
inputs[| 6] = nodeValue(6, "Light intensity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1);
inputs[| 6] = nodeValue(6, "Light intensity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 32);
inputs[| 7] = nodeValue(7, "Light color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
inputs[| 8] = nodeValue(8, "Light type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
@ -70,7 +70,7 @@ function Node_Normal_Light(_x, _y) : Node_Processor(_x, _y) constructor {
shader_set_uniform_f_array(uniform_dim, [ surface_get_width(_data[0]), surface_get_height(_data[0]) ]);
shader_set_uniform_f_array(uniform_amb, [color_get_red(_amb) / 255, color_get_green(_amb) / 255, color_get_blue(_amb) / 255]);
shader_set_uniform_f_array(uniform_light_pos, [ _light_pos[0], _light_pos[1], _light_pos[2], _light_ran ] );
shader_set_uniform_f_array(uniform_light_pos, [ _light_pos[0], _light_pos[1], _light_pos[2] / 100, _light_ran ] );
shader_set_uniform_f_array(uniform_light_col, [color_get_red(_light_col) / 255, color_get_green(_light_col) / 255, color_get_blue(_light_col) / 255]);
shader_set_uniform_f(uniform_light_int, _light_int);
shader_set_uniform_i(uniform_light_typ, _light_typ);

View file

@ -1,12 +1,11 @@
{
"resourceType": "GMScript",
"resourceVersion": "1.0",
"name": "node_normal_light",
"isDnD": false,
"isCompatibility": false,
"parent": {
"name": "3D",
"path": "folders/nodes/data/3D.yy",
},
"resourceVersion": "1.0",
"name": "node_normal_light",
"tags": [],
"resourceType": "GMScript",
}

View file

@ -202,7 +202,7 @@ function Node_Particle(_x, _y) : Node(_x, _y) constructor {
inputs[| 0] = nodeValue(0, "Particle", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0)
.setDisplay(noone, "particles");
inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d)
inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2)
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue(2, "Spawn delay", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4);

View file

@ -25,7 +25,7 @@ function Node_Particle_Effector(_x, _y) : Node(_x, _y) constructor {
inputs[| 0] = nodeValue(0, "Particle data", self, JUNCTION_CONNECT.input, VALUE_TYPE.object, -1 )
.setVisible(true, true);
inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d )
inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue(2, "Area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 16, 16, 4, 4, AREA_SHAPE.rectangle ])

View file

@ -223,7 +223,7 @@ function Node_Path(_x, _y) : Node(_x, _y) constructor {
drag_point = ds_list_size(inputs) - list_start;
createAnchor((_mx - _x) / _s, (_my - _y) / _s);
drag_type = 1;
drag_type = -1;
drag_point_mx = _mx;
drag_point_my = _my;
drag_point_sx = (_mx - _x) / _s;

View file

@ -14,7 +14,7 @@ function Node_Perlin(_x, _y) : Node(_x, _y) constructor {
uniform_ite = shader_get_uniform(shader, "iteration");
uniform_bri = shader_get_uniform(shader, "bright");
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d )
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue(1, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])

View file

@ -14,7 +14,7 @@ function Node_Perlin_Smear(_x, _y) : Node(_x, _y) constructor {
uniform_ite = shader_get_uniform(shader, "iteration");
uniform_bri = shader_get_uniform(shader, "bright");
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d )
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue(1, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])

View file

@ -63,7 +63,7 @@ function Node_Pin(_x, _y) : Node(_x, _y) constructor {
var yy = y * _s + _y;
if(active_draw_index > -1) {
draw_sprite_ext(bg_sel_spr, 0, xx, yy, _s, _s, 0, c_white, 1);
draw_sprite_ext(bg_sel_spr, 0, xx, yy, _s, _s, 0, COLORS._main_accent, 1);
active_draw_index = -1;
}

View file

@ -15,7 +15,7 @@ function Node_Scatter(_x, _y) : Node(_x, _y) constructor {
inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
inputs[| 1] = nodeValue(1, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d )
inputs[| 1] = nodeValue(1, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue(2, "Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 8);

View file

@ -29,7 +29,7 @@ function Node_Shape(_x, _y) : Node_Processor(_x, _y) constructor {
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 )
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue(1, "Backgroud", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);

View file

@ -7,7 +7,7 @@ function Node_create_Solid(_x, _y) {
function Node_Solid(_x, _y) : Node(_x, _y) constructor {
name = "Solid";
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d )
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue(1, "Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);

View file

@ -9,7 +9,7 @@ function Node_Sprite_Stack(_x, _y) : Node(_x, _y) constructor {
inputs[| 0] = nodeValue(0, "Base shape", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, PIXEL_SURFACE);
inputs[| 1] = nodeValue(1, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d)
inputs[| 1] = nodeValue(1, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2)
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue(2, "Stack amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4);

View file

@ -20,7 +20,7 @@ function Node_Stripe(_x, _y) : Node(_x, _y) constructor {
uniform_blend = shader_get_uniform(sh_stripe, "blend");
uniform_rand = shader_get_uniform(sh_stripe, "rand");
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d )
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue(1, "Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)

View file

@ -23,7 +23,7 @@ function Node_Text(_x, _y) : Node_Processor(_x, _y) constructor {
inputs[| 5] = nodeValue(5, "Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
inputs[| 6] = nodeValue(6, "Fixed dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d )
inputs[| 6] = nodeValue(6, "Fixed dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector)
.setVisible(true, false);

View file

@ -15,7 +15,7 @@ function Node_Transform(_x, _y) : Node_Processor(_x, _y) constructor {
inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone);
inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [1, 1], VALUE_TAG.dimension_2d)
inputs[| 1] = nodeValue(1, "Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [1, 1])
.setDisplay(VALUE_DISPLAY.vector)
.setVisible(false);

View file

@ -74,7 +74,6 @@ enum PADDING {
enum VALUE_TAG {
_default = 0,
dimension_2d = 1
}
function value_color(i) {
@ -99,7 +98,7 @@ function value_bit(i) {
}
function value_type_directional(f, t) {
if((t.tag & VALUE_TAG.dimension_2d) && f.type == VALUE_TYPE.surface && (t.type == VALUE_TYPE.integer || t.type == VALUE_TYPE.float)) return true;
if(f.type == VALUE_TYPE.surface && (t.type == VALUE_TYPE.integer || t.type == VALUE_TYPE.float)) return true;
return false;
}
@ -170,7 +169,7 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
on_end = KEYFRAME_END.hold;
extra_data = ds_list_create();
visible = _connect == JUNCTION_CONNECT.output || _type == VALUE_TYPE.surface || _type == VALUE_TYPE.path || ( _tag & VALUE_TAG.dimension_2d );
visible = _connect == JUNCTION_CONNECT.output || _type == VALUE_TYPE.surface || _type == VALUE_TYPE.path;
show_in_inspector = true;
display_type = VALUE_DISPLAY._default;
@ -441,7 +440,7 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T
var _base = animator.getValue();
if((tag & VALUE_TAG.dimension_2d) && typ == VALUE_TYPE.surface) {
if(typ == VALUE_TYPE.surface && (type == VALUE_TYPE.integer || type == VALUE_TYPE.float)) {
if(is_array(val)) {
if(array_length(val) > 0 && is_surface(val[0])) {
var _v = array_create(array_length(val));

View file

@ -15,7 +15,7 @@ function Node_Zigzag(_x, _y) : Node(_x, _y) constructor {
uniform_col1 = shader_get_uniform(shader, "col1");
uniform_col2 = shader_get_uniform(shader, "col2");
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2, VALUE_TAG.dimension_2d )
inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue(1, "Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1)

View file

@ -62,7 +62,7 @@ function Panel_Animation() : PanelContent() constructor {
anim_properties = ds_list_create();
prev_cache = array_create(ANIMATOR.frames_total + 1);
prev_cache = array_create(ANIMATOR.frames_total);
addHotkey("", "Play/Pause", vk_space, MOD_KEY.none, function() {
ANIMATOR.is_playing = !ANIMATOR.is_playing;
@ -71,9 +71,9 @@ function Panel_Animation() : PanelContent() constructor {
}
});
addHotkey("", "First frame", vk_home, MOD_KEY.none, function() { ANIMATOR.real_frame = 0; });
addHotkey("", "Last frame", vk_end, MOD_KEY.none, function() { ANIMATOR.real_frame = ANIMATOR.frames_total; });
addHotkey("", "Last frame", vk_end, MOD_KEY.none, function() { ANIMATOR.real_frame = ANIMATOR.frames_total - 1; });
addHotkey("", "Next frame", vk_right, MOD_KEY.none, function() {
ANIMATOR.real_frame = min(ANIMATOR.real_frame + 1, ANIMATOR.frames_total);
ANIMATOR.real_frame = min(ANIMATOR.real_frame + 1, ANIMATOR.frames_total - 1);
ANIMATOR.frame_progress = true;
});
addHotkey("", "Previous frame", vk_left, MOD_KEY.none, function() {
@ -311,8 +311,8 @@ function Panel_Animation() : PanelContent() constructor {
// draw_surface_ext(surf, fr_x, fr_y, ss, ss, 0, c_white, 1);
// }
//}
for(var i = 0; i < ANIMATOR.frames_total; i += 10) {
for(var i = 10; i <= ANIMATOR.frames_total; i += 10) {
var bar_line_x = i * ui(timeline_scale) + timeline_shift;
draw_set_color(COLORS.panel_animation_frame_divider);
draw_line(bar_line_x, ui(12), bar_line_x, bar_h);
@ -321,13 +321,13 @@ function Panel_Animation() : PanelContent() constructor {
draw_text(bar_line_x, ui(16), string(i));
}
var bar_line_x = ANIMATOR.current_frame * ui(timeline_scale) + timeline_shift;
var bar_line_x = (ANIMATOR.current_frame + 1) * ui(timeline_scale) + timeline_shift;
var cc = ANIMATOR.is_playing? COLORS._main_value_positive : COLORS._main_accent;
draw_set_color(cc);
draw_line(bar_line_x, ui(12), bar_line_x, bar_h);
draw_set_text(f_p2, fa_center, fa_bottom, cc);
draw_text(bar_line_x, ui(16), string(ANIMATOR.current_frame));
draw_text(bar_line_x, ui(16), string(ANIMATOR.current_frame + 1));
#endregion
#region cache
@ -338,8 +338,8 @@ function Panel_Animation() : PanelContent() constructor {
if(i >= array_length(inspecting.cached_output))
break;
var x0 = i * ui(timeline_scale) + timeline_shift;
var x1 = (i + 1) * ui(timeline_scale) + timeline_shift;
var x0 = (i + 1) * ui(timeline_scale) + timeline_shift;
var x1 = (i + 2) * ui(timeline_scale) + timeline_shift;
var sh = inspecting.cached_output[i];
draw_set_color(is_surface(sh)? c_lime : c_red);
@ -357,7 +357,7 @@ function Panel_Animation() : PanelContent() constructor {
var prop = anim_properties[| i];
for(var k = 0; k < ds_list_size(prop.animator.values); k++) {
var t = prop.animator.values[| k].time * ui(timeline_scale) + timeline_shift;
var t = (prop.animator.values[| k].time + 1) * ui(timeline_scale) + timeline_shift;
draw_sprite_ui_uniform(THEME.timeline_keyframe, 1, t, key_y, 1, COLORS.panel_animation_keyframe_hide);
}
}
@ -367,7 +367,8 @@ function Panel_Animation() : PanelContent() constructor {
timeline_shift = lerp_float(timeline_shift, timeline_shift_to, 5);
if(timeline_scubbing) {
ANIMATOR.real_frame = clamp((mx - bar_x) / ui(timeline_scale) + timeline_shift, 0, ANIMATOR.frames_total);
ANIMATOR.real_frame = (mx - bar_x - timeline_shift) / ui(timeline_scale) - 1;
ANIMATOR.real_frame = clamp(ANIMATOR.real_frame, 0, ANIMATOR.frames_total - 1);
timeline_show_time = ANIMATOR.current_frame;
if(timeline_show_time != _scrub_frame) {
@ -440,14 +441,14 @@ function Panel_Animation() : PanelContent() constructor {
draw_surface_safe(timeline_surface, bar_x, bar_y);
}
function drawDopesheetGraph(prop, key_y) {
function drawDopesheetGraph(prop, key_y, msx, msy) {
var bar_total_w = ANIMATOR.frames_total * ui(timeline_scale);
var hovering = noone;
var _gy_val_min = 999999;
var _gy_val_max = -999999;
var _gy_top = key_y + ui(16);
var _gy_bottom = _gy_top + graph_h - ui(8);
var amo = ds_list_size(prop.animator.values);
for(var k = 0; k < amo; k++) {
@ -462,10 +463,10 @@ function Panel_Animation() : PanelContent() constructor {
_gy_val_max = max(_gy_val_max, key_val);
}
}
for(var k = 0; k < amo; k++) {
var key = prop.animator.values[| k];
var t = key.time * ui(timeline_scale) + timeline_shift;
var t = (key.time + 1) * ui(timeline_scale) + timeline_shift;
#region easing line
if(key.ease_in > 0) {
@ -516,7 +517,7 @@ function Panel_Animation() : PanelContent() constructor {
var ox = 0, oy = 0, nx = 0, ny = 0, oly = 0, nly = 0;
if(tott == 0) {
nx = key_next.time * ui(timeline_scale) + timeline_shift;
nx = (key_next.time + 1) * ui(timeline_scale) + timeline_shift;
if(is_array(key.value)) {
for( var ki = 0; ki < array_length(key.value); ki++ ) {
draw_set_color(COLORS.axis[ki]);
@ -567,10 +568,10 @@ function Panel_Animation() : PanelContent() constructor {
if(prop.animator.show_graph && ds_list_size(prop.animator.values) > 0) {
var key_first = prop.animator.values[| 0];
var t_first = key_first.time * ui(timeline_scale) + timeline_shift;
var t_first = (key_first.time + 1) * ui(timeline_scale) + timeline_shift;
var key_last = prop.animator.values[| ds_list_size(prop.animator.values) - 1];
var t_last = key_last.time * ui(timeline_scale) + timeline_shift;
var t_last = (key_last.time + 1) * ui(timeline_scale) + timeline_shift;
var oy = 0;
@ -591,8 +592,6 @@ function Panel_Animation() : PanelContent() constructor {
var oy = value_map(key_first.value, _gy_val_min, _gy_val_max, _gy_bottom, _gy_top);
draw_line(0, oy, t_first, oy);
}
key_y += graph_h + ui(8);
}
return hovering;
@ -604,6 +603,7 @@ function Panel_Animation() : PanelContent() constructor {
var msx = mx - ui(8);
var msy = my - ui(8);
var lable_w = tool_width - ui(64);
var key_y = ui(24) + dope_sheet_y;
var _node = noone;
draw_set_text(f_p2, fa_left, fa_center);
@ -615,15 +615,15 @@ function Panel_Animation() : PanelContent() constructor {
_node = prop.node;
key_y += ui(6);
if(pHOVER && point_in_rectangle(msx, msy, 0, key_y - ui(10), tool_width - ui(64), key_y + ui(10))) {
draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, 0, key_y - ui(10), tool_width - ui(64), ui(20), COLORS.panel_animation_dope_bg, 1);
if(pHOVER && point_in_rectangle(msx, msy, 0, key_y - ui(10), lable_w, key_y + ui(10))) {
draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, 0, key_y - ui(10), lable_w, ui(20), COLORS.panel_animation_dope_bg_hover, 1);
if(pFOCUS && msx < tool_width - ui(88) && mouse_check_button_pressed(mb_left))
prop.node.anim_show = !prop.node.anim_show;
} else
draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, 0, key_y - ui(10), tool_width - ui(64), ui(20), COLORS.panel_animation_dope_bg_hover, 1);
draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, 0, key_y - ui(10), lable_w, ui(20), COLORS.panel_animation_dope_bg, 1);
if(prop.node == PANEL_INSPECTOR.inspecting)
draw_sprite_stretched(THEME.node_active, 0, 0, key_y - ui(10), tool_width - ui(64), ui(20));
draw_sprite_stretched_ext(THEME.node_active, 0, 0, key_y - ui(10), lable_w, ui(20), COLORS._main_accent, 1);
var tx = tool_width - ui(76 + 16 * 0);
if(pHOVER && point_in_circle(msx, msy, tx, key_y - 1, ui(10))) {
@ -782,9 +782,9 @@ function Panel_Animation() : PanelContent() constructor {
var scr_scale_s = scr_s * scr_size;
var scr_prog_s = scr_prog * (scr_s - scr_scale_s);
var scr_w = ui(4);
var scr_w = ui(sprite_get_width(THEME.ui_scrollbar));
var scr_h = scr_s;
var s_bar_w = ui(4);
var s_bar_w = ui(sprite_get_width(THEME.ui_scrollbar));
var s_bar_h = scr_scale_s;
var s_bar_x = scr_x;
var s_bar_y = scr_y + scr_prog_s;
@ -846,7 +846,7 @@ function Panel_Animation() : PanelContent() constructor {
dope_sheet_y_max = max(0, dope_sheet_y_max - dope_sheet_h + ui(48));
for(var i = 0; i < ANIMATOR.frames_total; i += 10) {
for(var i = 10; i <= ANIMATOR.frames_total; i += 10) {
var bar_line_x = i * ui(timeline_scale) + timeline_shift;
draw_set_color(COLORS.panel_animation_frame_divider);
draw_line(bar_line_x, ui(16), bar_line_x, dope_sheet_h);
@ -855,13 +855,14 @@ function Panel_Animation() : PanelContent() constructor {
draw_text(bar_line_x, ui(16), string(i));
}
var bar_line_x = ANIMATOR.current_frame * ui(timeline_scale) + timeline_shift;
var bar_line_x = (ANIMATOR.current_frame + 1) * ui(timeline_scale) + timeline_shift;
var cc = ANIMATOR.is_playing? COLORS._main_value_positive : COLORS._main_accent;
draw_set_color(cc);
draw_line(bar_line_x, ui(16), bar_line_x, dope_sheet_h);
draw_set_text(f_p2, fa_center, fa_bottom, cc);
draw_text(bar_line_x, ui(16), string(ANIMATOR.current_frame));
draw_text(bar_line_x, ui(16), string(ANIMATOR.current_frame + 1));
#endregion
var key_sy = ui(24) + dope_sheet_y;
@ -899,9 +900,12 @@ function Panel_Animation() : PanelContent() constructor {
continue;
}
var _key = drawDopesheetGraph(prop, key_y);
var _key = drawDopesheetGraph(prop, key_y, msx, msy);
if(_key) key_hover = _key;
if(prop.animator.show_graph && ds_list_size(prop.animator.values) > 0)
key_y += graph_h + ui(8);
key_y += ui(18);
}
@ -931,7 +935,7 @@ function Panel_Animation() : PanelContent() constructor {
}
for(var k = 0; k < ds_list_size(prop.animator.values); k++) {
var t = prop.animator.values[| k].time * ui(timeline_scale) + timeline_shift;
var t = (prop.animator.values[| k].time + 1) * ui(timeline_scale) + timeline_shift;
var keyframe = prop.animator.values[| k];
if(!prop.node.anim_show) {
@ -1030,7 +1034,8 @@ function Panel_Animation() : PanelContent() constructor {
if(keyframe_dragging) {
if(keyframe_drag_type == KEYFRAME_DRAG_TYPE.move) {
var tt = clamp(round((mx - bar_x) / ui(timeline_scale)) + timeline_shift, 0, ANIMATOR.frames_total);
var tt = round((mx - bar_x - timeline_shift) / ui(timeline_scale)) - 1;
tt = clamp(tt, 0, ANIMATOR.frames_total - 1);
var sh = tt - keyframe_dragging.time;
for( var i = 0; i < ds_list_size(keyframe_selecting); i++ ) {
@ -1051,7 +1056,7 @@ function Panel_Animation() : PanelContent() constructor {
}
}
} else {
var dx = (keyframe_dragging.time - (mx - bar_x) / ui(timeline_scale)) / 2;
var dx = ((keyframe_dragging.time + 1) - (mx - bar_x) / ui(timeline_scale)) / 2;
dx = clamp(abs(dx), 0, 0.9);
if(dx < 0.1) dx = 0;
@ -1090,8 +1095,9 @@ function Panel_Animation() : PanelContent() constructor {
if(stagger_mode == 2) {
var ts = keyframe_selecting[| stagger_index].time;
var tm = clamp(round((mx - bar_x) / ui(timeline_scale)) + timeline_shift, 0, ANIMATOR.frames_total);
var tm = round((mx - bar_x - timeline_shift) / ui(timeline_scale)) - 1;
tm = clamp(tm, 0, ANIMATOR.frames_total - 1);
var stg = tm - ts;
staggerKeys(stagger_index, stg);
}
@ -1103,7 +1109,7 @@ function Panel_Animation() : PanelContent() constructor {
drawDopesheetName();
draw_sprite_stretched_ext(THEME.ui_panel_bg, 0, ui(8), ui(8), tool_width, dope_sheet_h, COLORS._main_icon, 1);
draw_sprite_stretched(THEME.ui_panel_bg, 1, ui(8), ui(8), tool_width, dope_sheet_h);
draw_surface_safe(ds_name_surface, ui(8), ui(8));
draw_surface_safe(dope_sheet_surface, bar_x, ui(8));
}
@ -1130,19 +1136,19 @@ function Panel_Animation() : PanelContent() constructor {
bx += ui(36);
if(buttonInstant(THEME.button_hide, bx, by, ui(32), ui(32), [mx, my], pFOCUS, pHOVER, "Go to last frame", THEME.sequence_control, 2) == 2) {
ANIMATOR.real_frame = ANIMATOR.frames_total;
ANIMATOR.real_frame = ANIMATOR.frames_total - 1;
ANIMATOR.is_scrubing = true;
}
bx += ui(36);
if(buttonInstant(THEME.button_hide, bx, by, ui(32), ui(32), [mx, my], pFOCUS, pHOVER, "Previous frame", THEME.sequence_control, 5) == 2) {
ANIMATOR.real_frame = clamp(ANIMATOR.real_frame - 1, 0, ANIMATOR.frames_total);
ANIMATOR.real_frame = clamp(ANIMATOR.real_frame - 1, 0, ANIMATOR.frames_total - 1);
ANIMATOR.is_scrubing = true;
}
bx += ui(36);
if(buttonInstant(THEME.button_hide, bx, by, ui(32), ui(32), [mx, my], pFOCUS, pHOVER, "Next frame", THEME.sequence_control, 6) == 2) {
ANIMATOR.real_frame = clamp(ANIMATOR.real_frame + 1, 0, ANIMATOR.frames_total);
ANIMATOR.real_frame = clamp(ANIMATOR.real_frame + 1, 0, ANIMATOR.frames_total - 1);
ANIMATOR.is_scrubing = true;
}
@ -1169,7 +1175,7 @@ function Panel_Animation() : PanelContent() constructor {
drawAnimationControl();
if(timeline_show_time > -1) {
TOOLTIP = "Frame " + string(timeline_show_time) + "/" + string(ANIMATOR.frames_total);
TOOLTIP = "Frame " + string(timeline_show_time + 1) + "/" + string(ANIMATOR.frames_total);
timeline_show_time = -1;
}
}

View file

@ -83,7 +83,7 @@ function Panel_Collection() : PanelContent() constructor {
BLEND_NORMAL
if(point_in_rectangle(_m[0], _m[1], _nx, yy, _nx + grid_width, yy + grid_size)) {
draw_sprite_stretched(THEME.node_active, 0, _boxx, yy, grid_size, grid_size);
draw_sprite_stretched_ext(THEME.node_active, 0, _boxx, yy, grid_size, grid_size, COLORS._main_accent, 1);
if(mouse_check_button_pressed(mb_left))
file_dragging = _node;
@ -135,7 +135,7 @@ function Panel_Collection() : PanelContent() constructor {
}
if(point_in_rectangle(_m[0], _m[1], 0, yy, list_width, yy + list_height - 1)) {
draw_sprite_stretched(THEME.node_active, 0, ui(4), yy, list_width - ui(8), list_height);
draw_sprite_stretched_ext(THEME.node_active, 0, ui(4), yy, list_width - ui(8), list_height, COLORS._main_accent, 1);
if(mouse_check_button_pressed(mb_left))
file_dragging = _node;

View file

@ -6,6 +6,7 @@ function Panel_Graph() : PanelContent() constructor {
graph_s = ui(scale[graph_s_index]);
graph_s_to = graph_s;
graph_line_s = 32;
grid_color = COLORS.panel_graph_grid;
grid_opacity = 0.5;
function toOrigin() {
@ -276,7 +277,7 @@ function Panel_Graph() : PanelContent() constructor {
var xx = -gr_ls, xs = safe_mod(gr_x, gr_ls);
var yy = -gr_ls, ys = safe_mod(gr_y, gr_ls);
draw_set_color(COLORS.panel_graph_grid);
draw_set_color(grid_color);
draw_set_alpha(grid_opacity * (graph_s >= 1? 1 : 0.5));
while(xx < w + gr_ls) {
draw_line(xx + xs, 0, xx + xs, h);

View file

@ -244,7 +244,7 @@ function Panel_Inspector() : PanelContent() constructor {
jun.editWidget.draw(editBoxX, editBoxY, editBoxW, editBoxH, jun.showValue(), _m);
break;
case VALUE_DISPLAY.vector_range :
jun.editWidget.draw(editBoxX, editBoxY, editBoxW, editBoxH, jun.showValue(), _m);
widH = jun.editWidget.draw(editBoxX, editBoxY, editBoxW, editBoxH, jun.showValue(), _m);
break;
case VALUE_DISPLAY.enum_scroll :
jun.editWidget.draw(editBoxX, editBoxY, editBoxW, editBoxH, jun.display_data[jun.showValue()], _m, ui(16) + x, top_bar_h + y);
@ -345,11 +345,8 @@ function Panel_Inspector() : PanelContent() constructor {
var _selY1 = yy + lb_h + widH + ui(2);
var _selH = _selY1 - _selY;
if(prop_selecting == jun)
draw_sprite_stretched(THEME.prop_selecting, 1, 4, _selY, contentPane.surface_w - ui(8), _selH);
if(pHOVER && point_in_rectangle(_m[0], _m[1], 4, _selY, contentPane.surface_w - ui(4), _selY + _selH)) {
draw_sprite_stretched(THEME.prop_selecting, 0, 4, _selY, contentPane.surface_w - ui(8), _selH);
draw_sprite_stretched_ext(THEME.prop_selecting, 0, 4, _selY, contentPane.surface_w - ui(8), _selH, COLORS._main_accent, 1);
prop_hover = jun;
if(pFOCUS) {

View file

@ -6,6 +6,7 @@
#endregion
#region pref map
PREF_MAP[? "ui_framerate"] = 60;
PREF_MAP[? "part_max_amount"] = 256;
PREF_MAP[? "path_resolution"] = 32;
@ -249,6 +250,7 @@
window_set_size(ww, hh);
window_set_position(display_get_width() / 2 - ww / 2, display_get_height() / 2 - hh / 2);
game_set_speed(PREF_MAP[? "ui_framerate"], gamespeed_fps);
setPanel();
loadFonts();

View file

@ -19,9 +19,6 @@ function rotator(_onModify) constructor {
tb_value.active = active;
tb_value.draw(_x + ui(64), knob_y - ui(17), ui(64), TEXTBOX_HEIGHT, _data, _m);
draw_set_color(COLORS.widget_rotator_bg);
draw_rectangle(_x - ui(44), knob_y - ui(44), _x + ui(44), knob_y + ui(44), 0);
draw_sprite_ui_uniform(THEME.rotator_bg, 0, _x, knob_y);
var px = _x + lengthdir_x(ui(36), _data);

View file

@ -7,6 +7,7 @@ function rotatorRange(_onModify) constructor {
dragging = -1;
drag_sv = 0;
drag_sa = 0;
drag_sc = 0;
static draw = function(_x, _y, _data, _m) {
var knob_y = _y + ui(48);
@ -69,6 +70,7 @@ function rotatorRange(_onModify) constructor {
UNDO_HOLDING = true;
} else {
var _o = _data[dragging];
real_val = round(delta + drag_sv);
val = keyboard_check(vk_control)? round(real_val / 15) * 15 : real_val;
@ -76,6 +78,12 @@ function rotatorRange(_onModify) constructor {
if(_data[dragging] != val) {
onModify(dragging, val);
if(keyboard_check(vk_alt)) {
var dt = val - _o;
onModify(!dragging, _data[!dragging] - dt);
}
UNDO_HOLDING = true;
}
@ -98,6 +106,7 @@ function rotatorRange(_onModify) constructor {
dragging = i;
drag_sv = _data[i];
drag_sa = point_direction(_x, knob_y, _m[0], _m[1]);
drag_sc = lerp_angle(_data[0], _data[1], 0.5);
}
}
}

View file

@ -67,17 +67,17 @@ function scrollPane(_w, _h, ondraw) constructor {
var scr_w, scr_h, bar_w, bar_h, bar_x, bar_y;
if(is_vert) {
scr_w = ui(4);
scr_w = ui(sprite_get_width(THEME.ui_scrollbar));
scr_h = scr_s;
bar_w = ui(4);
bar_w = ui(sprite_get_width(THEME.ui_scrollbar));
bar_h = scr_scale_s;
bar_x = scr_x;
bar_y = scr_y + scr_prog_s;
} else {
scr_w = scr_s;
scr_h = ui(4);
scr_h = ui(sprite_get_width(THEME.ui_scrollbar));
bar_w = scr_scale_s;
bar_h = ui(4);
bar_h = ui(sprite_get_width(THEME.ui_scrollbar));
bar_x = scr_x + scr_prog_s;
bar_y = scr_y;
}

View file

@ -64,15 +64,19 @@ function textBox(_input, _onModify) constructor {
static editText = function() {
#region text editor
if(keyboard_check_released(ord("V")) && keyboard_check(vk_control))
_input_text = clipboard_get_text();
if(keyboard_check(vk_control)) {
if(keyboard_check_pressed(ord("A"))) {
cursor_select = 0;
cursor = string_length(_input_text);
if(keyboard_check_pressed(ord("A")) && keyboard_check(vk_control)) {
cursor_select = 0;
cursor = string_length(_input_text);
} else if(keyboard_check(vk_control) && (keyboard_check_released(ord("C")) || keyboard_check_released(ord("X")))) {
if(cursor_select != -1) {
var minc = min(cursor, cursor_select);
var maxc = max(cursor, cursor_select);
clipboard_set_text(string_copy(_input_text, minc, maxc - minc));
}
} else {
if(keyboard_check_released(ord("V")) && keyboard_check(vk_control))
keyboard_string = clipboard_get_text();
if(keyboard_check_pressed(vk_escape) || keyboard_check_pressed(vk_enter)) {
} else if(keyboard_check_pressed(vk_backspace)) {
if(cursor_select == -1) {
@ -93,7 +97,7 @@ function textBox(_input, _onModify) constructor {
cursor_select = -1;
move_cursor(-1);
} else if(keyboard_check_pressed(vk_delete)) {
} else if(keyboard_check_pressed(vk_delete) || (keyboard_check_pressed(ord("X")) && keyboard_check(vk_control) && cursor_select != -1)) {
if(cursor_select == -1) {
var str_before = string_copy(_input_text, 1, cursor);
var str_after = string_copy(_input_text, cursor + 2, string_length(_input_text) - cursor - 1);

View file

@ -44,5 +44,7 @@ function vectorRangeBox(_size, _type, _onModify) constructor {
}
hover = false;
active = false;
return TEXTBOX_HEIGHT * 2 + ui(4);
}
}

View file

@ -1,6 +1,7 @@
//
// Simple passthrough fragment shader
//
//varying vec2 v_vTexcoord;
varying vec4 v_vColour;
uniform vec3 color;
@ -10,14 +11,19 @@ uniform float atten;
void main() {
float bright = dot(v_vColour.rgb, vec3(0.2126, 0.7152, 0.0722));
bright = min(max(bright, 0.), 1.);
if(atten == 0.)
bright = bright * bright * intensity;
bright = bright * bright;
else if(atten == 1.)
bright = bright * intensity;
bright = 1. - (bright - 1.) * (bright - 1.);
else if(atten == 2.)
bright = bright;
bright *= intensity;
if(band > 0.) {
if(band > 0.)
bright = ceil(bright * band) / band;
}
vec4 col = vec4(color, bright);
gl_FragColor = col;

View file

@ -1,11 +1,10 @@
{
"resourceType": "GMShader",
"resourceVersion": "1.0",
"name": "sh_2d_light",
"type": 1,
"parent": {
"name": "blend",
"path": "folders/shader/blend.yy",
},
"resourceVersion": "1.0",
"name": "sh_2d_light",
"tags": [],
"resourceType": "GMShader",
}

View file

@ -7,6 +7,7 @@ varying vec4 v_vColour;
uniform vec2 dimension;
uniform float size;
uniform int border;
uniform int alpha;
#define TAU 6.28318
@ -17,10 +18,13 @@ float bright(in vec4 col) {
void main() {
vec2 pixelPosition = v_vTexcoord * dimension;
vec4 point = texture2D( gm_BaseTexture, v_vTexcoord );
vec4 fill = vec4(0.);
if(alpha == 0)
fill.a = 1.;
float tau_div = TAU / 64.;
gl_FragColor = point;
if(point.a > 0.) {
if((alpha == 0 && length(point.rgb) > 0.) || (alpha == 1 && point.a > 0.)) {
for(float i = 1.; i < size; i++) {
for(float j = 0.; j < 64.; j++) {
float ang = j * tau_div;
@ -29,8 +33,13 @@ void main() {
pxs = clamp(pxs, vec2(0.), vec2(1.));
vec4 sam = texture2D( gm_BaseTexture, pxs );
if(sam.a == 0. || pxs.x < 0. || pxs.x > 1. || pxs.y < 0. || pxs.y > 1.) {
gl_FragColor = vec4(0.);
if(pxs.x < 0. || pxs.x > 1. || pxs.y < 0. || pxs.y > 1.) {
gl_FragColor = fill;
break;
}
if((alpha == 0 && length(sam.rgb) == 0.) || (alpha == 1 && sam.a == 0.)) {
gl_FragColor = fill;
break;
}
}

View file

@ -1,11 +1,10 @@
{
"resourceType": "GMShader",
"resourceVersion": "1.0",
"name": "sh_erode",
"type": 1,
"parent": {
"name": "filter",
"path": "folders/shader/filter.yy",
},
"resourceVersion": "1.0",
"name": "sh_erode",
"tags": [],
"resourceType": "GMShader",
}