1.16.6.1 patch

This commit is contained in:
Tanasart 2024-02-25 17:02:10 +07:00
parent 30d343c6c9
commit dcf87a4e20
24 changed files with 379 additions and 301 deletions

View file

@ -1034,7 +1034,7 @@
{"name":"s_node_pb_layer","order":18,"path":"sprites/s_node_pb_layer/s_node_pb_layer.yy",}, {"name":"s_node_pb_layer","order":18,"path":"sprites/s_node_pb_layer/s_node_pb_layer.yy",},
{"name":"FirebaseREST_HTTP_Success_Firestore","order":19,"path":"scripts/FirebaseREST_HTTP_Success_Firestore/FirebaseREST_HTTP_Success_Firestore.yy",}, {"name":"FirebaseREST_HTTP_Success_Firestore","order":19,"path":"scripts/FirebaseREST_HTTP_Success_Firestore/FirebaseREST_HTTP_Success_Firestore.yy",},
{"name":"s_node_pb_draw_rectangle","order":13,"path":"sprites/s_node_pb_draw_rectangle/s_node_pb_draw_rectangle.yy",}, {"name":"s_node_pb_draw_rectangle","order":13,"path":"sprites/s_node_pb_draw_rectangle/s_node_pb_draw_rectangle.yy",},
{"name":"panel_animation","order":1,"path":"scripts/panel_animation/panel_animation.yy",}, {"name":"panel_animation","order":3,"path":"scripts/panel_animation/panel_animation.yy",},
{"name":"sh_blend_edge_blend","order":1,"path":"shaders/sh_blend_edge_blend/sh_blend_edge_blend.yy",}, {"name":"sh_blend_edge_blend","order":1,"path":"shaders/sh_blend_edge_blend/sh_blend_edge_blend.yy",},
{"name":"sh_bend_arc","order":13,"path":"shaders/sh_bend_arc/sh_bend_arc.yy",}, {"name":"sh_bend_arc","order":13,"path":"shaders/sh_bend_arc/sh_bend_arc.yy",},
{"name":"node_array_rearrange","order":19,"path":"scripts/node_array_rearrange/node_array_rearrange.yy",}, {"name":"node_array_rearrange","order":19,"path":"scripts/node_array_rearrange/node_array_rearrange.yy",},
@ -1403,7 +1403,7 @@
{"name":"sh_perlin_extra","order":9,"path":"shaders/sh_perlin_extra/sh_perlin_extra.yy",}, {"name":"sh_perlin_extra","order":9,"path":"shaders/sh_perlin_extra/sh_perlin_extra.yy",},
{"name":"s_node_plot_linear_type","order":10,"path":"sprites/s_node_plot_linear_type/s_node_plot_linear_type.yy",}, {"name":"s_node_plot_linear_type","order":10,"path":"sprites/s_node_plot_linear_type/s_node_plot_linear_type.yy",},
{"name":"node_text","order":9,"path":"scripts/node_text/node_text.yy",}, {"name":"node_text","order":9,"path":"scripts/node_text/node_text.yy",},
{"name":"panel_collection","order":3,"path":"scripts/panel_collection/panel_collection.yy",}, {"name":"panel_collection","order":1,"path":"scripts/panel_collection/panel_collection.yy",},
{"name":"node_delay","order":5,"path":"scripts/node_delay/node_delay.yy",}, {"name":"node_delay","order":5,"path":"scripts/node_delay/node_delay.yy",},
{"name":"node_string_trim","order":4,"path":"scripts/node_string_trim/node_string_trim.yy",}, {"name":"node_string_trim","order":4,"path":"scripts/node_string_trim/node_string_trim.yy",},
{"name":"node_mk_rain","order":1,"path":"scripts/node_mk_rain/node_mk_rain.yy",}, {"name":"node_mk_rain","order":1,"path":"scripts/node_mk_rain/node_mk_rain.yy",},

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

View file

@ -43,6 +43,8 @@
kb_hold = false; kb_hold = false;
kb_hkey = 0; kb_hkey = 0;
watcher_surface = surface_create(1, 1);
panelInit(); panelInit();
addHotkey("", "New file", "N", MOD_KEY.ctrl, NEW); addHotkey("", "New file", "N", MOD_KEY.ctrl, NEW);

View file

@ -31,6 +31,11 @@ _HOVERING_ELEMENT = noone;
} }
CURSOR = cr_default; CURSOR = cr_default;
if(!is_surface(watcher_surface)) {
RENDER_ALL
watcher_surface = surface_create(1, 1);
}
#endregion #endregion
#region focus #region focus

View file

@ -153,7 +153,7 @@ function Node_Custom(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
matrix_set(matrix_world, matrix_build(0, 0, 0, 0, 0, 0, matrix_set(matrix_world, matrix_build(0, 0, 0, 0, 0, 0,
surface_get_width_safe(_surf), surface_get_height_safe(_surf), 1)); surface_get_width_safe(_surf), surface_get_height_safe(_surf), 1));
vertex_submit(global.HLSL_VB, pr_trianglestrip, surface_get_texture(_surf)); vertex_submit(global.HLSL_VB_PLANE, pr_trianglestrip, surface_get_texture(_surf));
matrix_set(matrix_world, matrix_build_identity()); matrix_set(matrix_world, matrix_build_identity());
d3d11_shader_override_vs(-1); d3d11_shader_override_vs(-1);

View file

@ -65,9 +65,7 @@ function ase_layer(name) constructor {
cels = []; cels = [];
tag = noone; tag = noone;
static setFrameCel = function(index, cel) { static setFrameCel = function(index, cel) { INLINE cels[index] = cel; }
cels[index] = cel;
}
static getCel = function(index = CURRENT_FRAME) { static getCel = function(index = CURRENT_FRAME) {
var ind; var ind;

View file

@ -35,11 +35,11 @@
return make_color_rgba(rg.x, rg.y, rg.z, a); return make_color_rgba(rg.x, rg.y, rg.z, a);
} #endregion } #endregion
function make_color_srgba(r, g, b, a) { #region function make_color_srgba(rgb, a) { #region
INLINE INLINE
r = power(r, 1 / 2.2) * 255; var r = power(rgb[0], 1 / 2.2) * 255;
g = power(g, 1 / 2.2) * 255; var g = power(rgb[1], 1 / 2.2) * 255;
b = power(b, 1 / 2.2) * 255; var b = power(rgb[2], 1 / 2.2) * 255;
return int64(round(r) + (round(g) << 8) + (round(b) << 16) + (round(a) << 24)); return int64(round(r) + (round(g) << 8) + (round(b) << 16) + (round(a) << 24));
} #endregion } #endregion

View file

@ -28,10 +28,10 @@
globalvar VERSION, SAVE_VERSION, VERSION_STRING, BUILD_NUMBER, LATEST_VERSION; globalvar VERSION, SAVE_VERSION, VERSION_STRING, BUILD_NUMBER, LATEST_VERSION;
LATEST_VERSION = 11600; LATEST_VERSION = 11600;
VERSION = 11660; VERSION = 11661;
SAVE_VERSION = 11660; SAVE_VERSION = 11660;
VERSION_STRING = "1.16.6.0"; VERSION_STRING = "1.16.6.1";
BUILD_NUMBER = 11660; BUILD_NUMBER = 11661;
globalvar APPEND_MAP; globalvar APPEND_MAP;
APPEND_MAP = ds_map_create(); APPEND_MAP = ds_map_create();

View file

@ -280,10 +280,11 @@ function Node_ASE_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
} }
update_on_frame = false; update_on_frame = false;
for( var i = 0, n = array_length(layers); i < n; i++ ) { for( var i = 0, n = array_length(layers); i < n; i++ ) {
if(!struct_has(layers[i], "cel")) continue; if(!struct_has(layers[i], "cels")) continue;
var cel = layers[i].cel; var cel = layers[i].cels;
if(array_length(cel)) update_on_frame = true; if(array_length(cel)) update_on_frame = true;
} }
@ -302,8 +303,9 @@ function Node_ASE_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
} #endregion } #endregion
static update = function(frame = CURRENT_FRAME) { #region static update = function(frame = CURRENT_FRAME) { #region
var path = getInputData(0); var path = getInputData(0);
var current_tag = getInputData(2); var current_tag = getInputData(2);
if(path_current != path) updatePaths(path); if(path_current != path) updatePaths(path);
if(ds_map_empty(content)) return; if(ds_map_empty(content)) return;
@ -327,28 +329,27 @@ function Node_ASE_File_Read(_x, _y, _group = noone) : Node(_x, _y, _group) const
var hh = content[? "Height"]; var hh = content[? "Height"];
var surf = outputs[| 0].getValue(); var surf = outputs[| 0].getValue();
surf = surface_verify(surf, ww, hh); surf = surface_verify(surf, ww, hh);
outputs[| 0].setValue(surf); outputs[| 0].setValue(surf);
surface_set_target(surf); surface_set_target(surf);
DRAW_CLEAR DRAW_CLEAR
for( var i = 0, n = array_length(layers); i < n; i++ ) { for( var i = 0, n = array_length(layers); i < n; i++ ) {
layers[i].tag = tag; layers[i].tag = tag;
var cel = layers[i].getCel(CURRENT_FRAME - _tag_delay); var cel = layers[i].getCel(CURRENT_FRAME - _tag_delay);
if(!cel) continue; if(!cel) continue;
if(!array_safe_get(vis, i, true)) continue; if(!array_safe_get(vis, i, true)) continue;
var _inSurf = cel.getSurface(); var _inSurf = cel.getSurface();
if(!is_surface(_inSurf)) if(!is_surface(_inSurf))
continue; continue;
var xx = cel.data[? "X"]; var xx = cel.data[? "X"];
var yy = cel.data[? "Y"]; var yy = cel.data[? "Y"];
draw_surface_safe(_inSurf, xx, yy); draw_surface_safe(_inSurf, xx, yy);
} }
surface_reset_target(); surface_reset_target();
} #endregion } #endregion

View file

@ -347,17 +347,9 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
array_resize(canvas_buffer, fr); array_resize(canvas_buffer, fr);
} #endregion } #endregion
function getCanvasSurface(index = preview_index) { #region function getCanvasSurface(index = preview_index) { INLINE return array_safe_get(canvas_surface, index); }
INLINE
return array_safe_get(canvas_surface, index);
} #endregion
function setCanvasSurface(surface, index = preview_index) { #region function setCanvasSurface(surface, index = preview_index) { INLINE canvas_surface[index] = surface; }
INLINE
canvas_surface[index] = surface;
} #endregion
function storeAction() { #region function storeAction() { #region
var action = recordAction(ACTION_TYPE.custom, function(data) { var action = recordAction(ACTION_TYPE.custom, function(data) {
@ -387,10 +379,13 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
var cDep = attrDepth(); var cDep = attrDepth();
var _canvas_surface = getCanvasSurface(index); var _canvas_surface = getCanvasSurface(index);
print($"Applying surface {index} - {_canvas_surface} [{is_surface(_canvas_surface)}]");
if(!is_surface(_canvas_surface)) { if(!is_surface(_canvas_surface)) { // recover surface
setCanvasSurface(surface_create_from_buffer(_dim[0], _dim[1], canvas_buffer[index])); //print($"recovering surface from buffer {random(1)}");
} else if(surface_get_width_safe(_canvas_surface) != _dim[0] || surface_get_height_safe(_canvas_surface) != _dim[1]) {
setCanvasSurface(surface_create_from_buffer(_dim[0], _dim[1], canvas_buffer[index]), index);
} else if(surface_get_width_safe(_canvas_surface) != _dim[0] || surface_get_height_safe(_canvas_surface) != _dim[1]) { // resize surface
var _cbuff = array_safe_get(canvas_buffer, index); var _cbuff = array_safe_get(canvas_buffer, index);
if(buffer_exists(_cbuff)) buffer_delete(_cbuff); if(buffer_exists(_cbuff)) buffer_delete(_cbuff);
@ -752,10 +747,7 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
var _canvas_surface = getCanvasSurface(); var _canvas_surface = getCanvasSurface();
if(!surface_exists(_canvas_surface)) { if(!surface_exists(_canvas_surface)) return;
surface_store_buffer();
_canvas_surface = getCanvasSurface();
}
var _surf_w = surface_get_width_safe(_canvas_surface); var _surf_w = surface_get_width_safe(_canvas_surface);
var _surf_h = surface_get_height_safe(_canvas_surface); var _surf_h = surface_get_height_safe(_canvas_surface);
@ -911,7 +903,7 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
surface_reset_shader(); surface_reset_shader();
mouse_holding = true; mouse_holding = true;
if(mouse_pre_draw_x != undefined && mouse_pre_draw_y != undefined && key_mod_press(SHIFT)) { ///////////////// LINE if(mouse_pre_draw_x != undefined && mouse_pre_draw_y != undefined && key_mod_press(SHIFT)) { ///////////////// shift line
surface_set_shader(drawing_surface, noone, true, BLEND.alpha); surface_set_shader(drawing_surface, noone, true, BLEND.alpha);
brush_next_dist = 0; brush_next_dist = 0;
draw_line_size(mouse_pre_draw_x, mouse_pre_draw_y, mouse_cur_x, mouse_cur_y, true); draw_line_size(mouse_pre_draw_x, mouse_pre_draw_y, mouse_cur_x, mouse_cur_y, true);
@ -925,7 +917,7 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
mouse_pre_draw_y = mouse_cur_y; mouse_pre_draw_y = mouse_cur_y;
} }
if(mouse_holding && mouse_click(mb_left, active)) { if(mouse_holding) {
var _move = mouse_pre_draw_x != mouse_cur_x || mouse_pre_draw_y != mouse_cur_y; var _move = mouse_pre_draw_x != mouse_cur_x || mouse_pre_draw_y != mouse_cur_y;
var _1stp = brush_dist_min == brush_dist_max && brush_dist_min == 1; var _1stp = brush_dist_min == brush_dist_max && brush_dist_min == 1;
@ -938,12 +930,11 @@ function Node_Canvas(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
mouse_pre_draw_x = mouse_cur_x; mouse_pre_draw_x = mouse_cur_x;
mouse_pre_draw_y = mouse_cur_y; mouse_pre_draw_y = mouse_cur_y;
}
if(mouse_holding && mouse_release(mb_left)) {
mouse_holding = false;
apply_draw_surface(); if(mouse_release(mb_left)) {
mouse_holding = false;
apply_draw_surface();
}
} }
BLEND_NORMAL; BLEND_NORMAL;

View file

@ -1466,6 +1466,8 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
if(active) return; if(active) return;
enable(); enable();
ds_list_add(group == noone? PROJECT.nodes : group.getNodeList(), self); ds_list_add(group == noone? PROJECT.nodes : group.getNodeList(), self);
RENDER_ALL_REORDER
} #endregion } #endregion
static onValidate = function() { #region static onValidate = function() { #region

View file

@ -5,24 +5,26 @@
vertex_format_add_texcoord(); vertex_format_add_texcoord();
global.HLSL_VB_FORMAT = vertex_format_end(); global.HLSL_VB_FORMAT = vertex_format_end();
global.HLSL_VB = vertex_create_buffer(); global.HLSL_VB_PLANE = vertex_create_buffer();
vertex_begin(global.HLSL_VB, global.HLSL_VB_FORMAT); vertex_begin(global.HLSL_VB_PLANE, global.HLSL_VB_FORMAT);
vertex_position(global.HLSL_VB, 0, 0);
vertex_color(global.HLSL_VB, c_white, 1);
vertex_texcoord(global.HLSL_VB, 0, 0);
vertex_position(global.HLSL_VB, 0, 1); vertex_position(global.HLSL_VB_PLANE, 0, 0);
vertex_color(global.HLSL_VB, c_white, 1); vertex_color( global.HLSL_VB_PLANE, c_white, 1);
vertex_texcoord(global.HLSL_VB, 0, 1); vertex_texcoord(global.HLSL_VB_PLANE, 0, 0);
vertex_position(global.HLSL_VB, 1, 0); vertex_position(global.HLSL_VB_PLANE, 0, 1);
vertex_color(global.HLSL_VB, c_white, 1); vertex_color( global.HLSL_VB_PLANE, c_white, 1);
vertex_texcoord(global.HLSL_VB, 1, 0); vertex_texcoord(global.HLSL_VB_PLANE, 0, 1);
vertex_position(global.HLSL_VB_PLANE, 1, 0);
vertex_color( global.HLSL_VB_PLANE, c_white, 1);
vertex_texcoord(global.HLSL_VB_PLANE, 1, 0);
vertex_position(global.HLSL_VB, 1, 1); vertex_position(global.HLSL_VB_PLANE, 1, 1);
vertex_color(global.HLSL_VB, c_white, 1); vertex_color( global.HLSL_VB_PLANE, c_white, 1);
vertex_texcoord(global.HLSL_VB, 1, 1); vertex_texcoord(global.HLSL_VB_PLANE, 1, 1);
vertex_end(global.HLSL_VB);
vertex_end(global.HLSL_VB_PLANE);
#endregion #endregion
function Node_HLSL(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor { function Node_HLSL(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
@ -232,19 +234,19 @@ struct PixelShaderOutput {
var _arg_type = getInputData(i + 1); var _arg_type = getInputData(i + 1);
switch(_arg_type) { switch(_arg_type) {
case 0 : fs_param += $"float {_arg_name};\n"; break; //u_float case 0 : fs_param += $"float {_arg_name};\n"; break; //u_float
case 1 : fs_param += $"int {_arg_name};\n"; break; //u_int case 1 : fs_param += $"int {_arg_name};\n"; break; //u_int
case 2 : fs_param += $"float2 {_arg_name};\n"; break; //u_vec2 case 2 : fs_param += $"float2 {_arg_name};\n"; break; //u_vec2
case 3 : fs_param += $"float3 {_arg_name};\n"; break; //u_vec3 case 3 : fs_param += $"float3 {_arg_name};\n"; break; //u_vec3
case 4 : fs_param += $"float4 {_arg_name};\n"; break; //u_vec4 case 4 : fs_param += $"float4 {_arg_name};\n"; break; //u_vec4
case 5 : fs_param += $"float3x3 {_arg_name};\n"; break; //u_mat3 case 5 : fs_param += $"float3x3 {_arg_name};\n"; break; //u_mat3
case 6 : fs_param += $"float4x4 {_arg_name};\n"; break; //u_mat4 case 6 : fs_param += $"float4x4 {_arg_name};\n"; break; //u_mat4
case 7 : //u_sampler2D case 7 : //u_sampler2D
fs_sample += $"Texture2D {_arg_name}Object : register(t{sampler_slot});\n"; fs_sample += $"Texture2D {_arg_name}Object : register(t{sampler_slot});\n";
fs_sample += $"SamplerState {_arg_name} : register(s{sampler_slot});\n"; fs_sample += $"SamplerState {_arg_name} : register(s{sampler_slot});\n";
sampler_slot++; sampler_slot++;
break; break;
case 8 : fs_param += $"float4 {_arg_name};\n"; break; //u_vec4 case 8 : fs_param += $"float4 {_arg_name};\n"; break; //u_vec4
} }
} }
@ -286,85 +288,88 @@ struct PixelShaderOutput {
if(!d3d11_shader_exists(shader.fs)) return noone; if(!d3d11_shader_exists(shader.fs)) return noone;
_output = surface_verify(_output, surface_get_width_safe(_surf), surface_get_height_safe(_surf)); _output = surface_verify(_output, surface_get_width_safe(_surf), surface_get_height_safe(_surf));
surface_set_target(_output); surface_set_target(_output);
DRAW_CLEAR DRAW_CLEAR
d3d11_shader_override_vs(shader.vs);
d3d11_shader_override_ps(shader.fs);
var uTypes = array_create(8, 0);
var sampler_slot = 1;
d3d11_cbuffer_begin();
var _buffer = buffer_create(1, buffer_grow, 1);
var _cbSize = 0;
for( var i = input_fix_len, n = array_length(_data); i < n; i += data_length ) {
var _arg_name = _data[i + 0];
var _arg_type = _data[i + 1];
var _arg_valu = _data[i + 2];
if(_arg_name == "") continue; // ############################ SET SHADER ############################
d3d11_shader_override_vs(shader.vs);
d3d11_shader_override_ps(shader.fs);
var _uni = shader_get_uniform(shader.fs, _arg_name); #region uniforms
var uTypes = array_create(8, 0);
var sampler_slot = 1;
d3d11_cbuffer_begin();
var _buffer = buffer_create(1, buffer_grow, 1);
var _cbSize = 0;
for( var i = input_fix_len, n = array_length(_data); i < n; i += data_length ) {
var _arg_name = _data[i + 0];
var _arg_type = _data[i + 1];
var _arg_valu = _data[i + 2];
switch(_arg_type) { if(_arg_name == "") continue;
case 1 :
d3d11_cbuffer_add_int(1); var _uni = shader_get_uniform(shader.fs, _arg_name);
_cbSize++;
switch(_arg_type) {
case 1 :
d3d11_cbuffer_add_int(1);
_cbSize++;
buffer_write(_buffer, buffer_s32, _arg_valu); buffer_write(_buffer, buffer_s32, _arg_valu);
break; break;
case 0 : case 0 :
d3d11_cbuffer_add_float(1); d3d11_cbuffer_add_float(1);
_cbSize++; _cbSize++;
buffer_write(_buffer, buffer_f32, _arg_valu); buffer_write(_buffer, buffer_f32, _arg_valu);
break; break;
case 2 : case 2 :
case 3 : case 3 :
case 4 : case 4 :
case 5 : case 5 :
case 6 : case 6 :
if(is_array(_arg_valu)) { if(is_array(_arg_valu)) {
d3d11_cbuffer_add_float(array_length(_arg_valu)); d3d11_cbuffer_add_float(array_length(_arg_valu));
_cbSize += array_length(_arg_valu); _cbSize += array_length(_arg_valu);
for( var j = 0, m = array_length(_arg_valu); j < m; j++ ) for( var j = 0, m = array_length(_arg_valu); j < m; j++ )
buffer_write(_buffer, buffer_f32, _arg_valu[j]); buffer_write(_buffer, buffer_f32, _arg_valu[j]);
} }
break; break;
case 8 : case 8 :
var _clr = colToVec4(_arg_valu); var _clr = colToVec4(_arg_valu);
d3d11_cbuffer_add_float(4); d3d11_cbuffer_add_float(4);
_cbSize += 4; _cbSize += 4;
for( var j = 0, m = 4; j < m; j++ ) for( var j = 0, m = 4; j < m; j++ )
buffer_write(_buffer, buffer_f32, _clr[i]); buffer_write(_buffer, buffer_f32, _clr[i]);
break; break;
case 7 : case 7 :
if(is_surface(_arg_valu)) if(is_surface(_arg_valu))
d3d11_texture_set_stage_ps(sampler_slot, surface_get_texture(_arg_valu)); d3d11_texture_set_stage_ps(sampler_slot, surface_get_texture(_arg_valu));
sampler_slot++; sampler_slot++;
break; break;
} }
} }
d3d11_cbuffer_add_float(4 - _cbSize % 4); d3d11_cbuffer_add_float(4 - _cbSize % 4);
var cbuff = d3d11_cbuffer_end(); var cbuff = d3d11_cbuffer_end();
d3d11_cbuffer_update(cbuff, _buffer); d3d11_cbuffer_update(cbuff, _buffer);
buffer_delete(_buffer); buffer_delete(_buffer);
d3d11_shader_set_cbuffer_ps(10, cbuff); d3d11_shader_set_cbuffer_ps(10, cbuff);
#endregion
matrix_set(matrix_world, matrix_build(0, 0, 0, 0, 0, 0, matrix_set(matrix_world, matrix_build(0, 0, 0, 0, 0, 0, surface_get_width_safe(_surf), surface_get_height_safe(_surf), 1));
surface_get_width_safe(_surf), surface_get_height_safe(_surf), 1)); vertex_submit(global.HLSL_VB_PLANE, pr_trianglestrip, surface_get_texture(_surf));
vertex_submit(global.HLSL_VB, pr_trianglestrip, surface_get_texture(_surf)); matrix_set(matrix_world, matrix_build_identity());
matrix_set(matrix_world, matrix_build_identity());
d3d11_shader_override_vs(-1);
d3d11_shader_override_ps(-1);
d3d11_shader_override_vs(-1);
d3d11_shader_override_ps(-1);
surface_reset_target(); surface_reset_target();
return _output; return _output;

View file

@ -7,7 +7,7 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
inputs[| 1] = nodeValue("Background texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); inputs[| 1] = nodeValue("Background texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone);
inputs[| 2] = nodeValue("Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 2] = nodeValue("Type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Corner (18 sprites)", "Corner + Side (55 sprites)" ] ); .setDisplay(VALUE_DISPLAY.enum_button, [ "GMS Corner (18 sprites)", "GMS Corner + Side (55 sprites)", "Godot Blob (48 sprites)" ] );
inputs[| 3] = nodeValue("Output type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) inputs[| 3] = nodeValue("Output type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
.setDisplay(VALUE_DISPLAY.enum_button, [ "Sheet", "Array" ] ); .setDisplay(VALUE_DISPLAY.enum_button, [ "Sheet", "Array" ] );
@ -75,6 +75,8 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
0, /**/ 0, 0, 1, /**/ 4, 0, 0, /**/ 0, 0, 1, /**/ 4, 0,
0, /**/ 0, 0, 2, /**/ 4, 3]; 0, /**/ 0, 0, 2, /**/ 4, 3];
/////////////////////////////////////////////////////////////////////
index_55 = [208, 224, 104, /**/ 64, /**/ 80, 120, 216, 72, /**/ 88, 219, -1, index_55 = [208, 224, 104, /**/ 64, /**/ 80, 120, 216, 72, /**/ 88, 219, -1,
148, 255, 41, /**/ 66, /**/ 86, 127, 223, 75, /**/ 95, 126, -1, 148, 255, 41, /**/ 66, /**/ 86, 127, 223, 75, /**/ 95, 126, -1,
22, 7, 11, /**/ 2, /**/ 210, 251, 254, 106, /**/ 250, 218, 122, 22, 7, 11, /**/ 2, /**/ 210, 251, 254, 106, /**/ 250, 218, 122,
@ -104,6 +106,34 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
0, 0, 2, /**/ 2, /**/ 4, 4, 0, 1, /**/ 4, 4, 6, 0, 0, 2, /**/ 2, /**/ 4, 4, 0, 1, /**/ 4, 4, 6,
0, 0, 5, /**/ 5, /**/ 4, 4, 0, 2, /**/ 4, 3, 6, 0, 0, 5, /**/ 5, /**/ 4, 4, 0, 2, /**/ 4, 3, 6,
0, 0, 0, /**/ 0, /**/ 6, 6, 0, 1, /**/ 6, 0, 0, ]; 0, 0, 0, /**/ 0, /**/ 6, 6, 0, 1, /**/ 6, 0, 0, ];
/////////////////////////////////////////////////////////////////////
index_48 = [ 64, 80, 88, 72, /**/ 91, 216, 120, 94, /**/ 208, 250, 224, 104,
66, 82, 90, 74, /**/ 210, 254, 251, 106, /**/ 148, 126, -1, 123,
2, 18, 26, 10, /**/ 86, 223, 127, 75, /**/ 222, 255, 219, 41,
0, 16, 24, 8, /**/ 122, 30, 27, 218, /**/ 22, 7, 95, 11, ];
index_48_et = [ 5, 0, 1, 2, 4, 1, 1, 3, 0, 6, 1, 2,
0, 3, 6, 4, 3, 4, 3, 4, 0, 4, 0, 3,
0, 3, 6, 4, 0, 0, 0, 0, 4, 0, 3, 0,
5, 0, 1, 2, 6, 4, 3, 6, 0, 0, 0, 0, ];
index_48_eb = [ 0, 3, 6, 4, 6, 4, 3, 6, 0, 0, 0, 0,
0, 3, 6, 4, 0, 0, 0, 0, 0, 3, 0, 3,
5, 0, 1, 2, 3, 4, 3, 4, 4, 0, 4, 0,
5, 0, 1, 2, 3, 1, 1, 4, 0, 1, 6, 2, ];
index_48_el = [ 0, 0, 4, 3, 3, 3, 0, 6, 0, 4, 0, 0,
1, 1, 6, 6, 1, 4, 0, 4, 1, 4, 0, 0,
2, 2, 4, 4, 1, 3, 0, 3, 6, 0, 3, 0,
5, 5, 0, 0, 4, 4, 0, 6, 2, 0, 4, 0, ];
index_48_er = [ 0, 3, 3, 0, 6, 0, 3, 3, 0, 4, 0, 0,
1, 6, 6, 1, 4, 0, 4, 1, 0, 3, 0, 6,
2, 4, 4, 2, 3, 0, 3, 1, 0, 0, 4, 1,
5, 0, 0, 5, 6, 0, 4, 4, 0, 0, 3, 2, ];
#endregion #endregion
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { #region static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { #region
@ -121,105 +151,9 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
inputs[| 13].setVisible(_edgType == 0); inputs[| 13].setVisible(_edgType == 0);
} #endregion } #endregion
static generate18 = function(_data, _tex0, _tex1, _edge, _crop) { #region static generateFull = function(_data, _tex0, _tex1, _edge, _crop, indMain, indEdge_et, indEdge_eb, indEdge_el, indEdge_er) { #region
var _sprs = array_create(18); var _len = array_length(indMain);
var _use1 = is_surface(_tex1); var _sprs = array_create(_len);
var _sw = surface_get_width_safe(_tex0);
var _sh = surface_get_height_safe(_tex0);
var r = _crop[0];
var t = _crop[1];
var l = _crop[2];
var b = _crop[3];
var _edgeShf = _data[10];
var _edgFull = _data[11];
for( var i = 0; i < 18; i++ ) {
var _index = index_18[i];
if(_index < 0) {
_sprs[i] = noone;
continue;
}
var _s = surface_verify(temp_surface[i], _sw, _sh);
surface_set_target(_s);
DRAW_CLEAR
BLEND_ALPHA_MULP
if(_index == 15) draw_surface(_tex0, 0, 0);
else if(_use1) draw_surface(_tex1, 0, 0);
if(_index & 0b0001) draw_surface_part(_tex0, 0, 0, _sw - r, _sh - b, 0, 0);
if(_index & 0b0010) draw_surface_part(_tex0, l, 0, _sw - l, _sh - b, l, 0);
if(_index & 0b0100) draw_surface_part(_tex0, 0, t, _sw - r, _sh - t, 0, t);
if(_index & 0b1000) draw_surface_part(_tex0, l, t, _sw - l, _sh - t, l, t);
if(_index & 0b1100 >= 0b1100) draw_surface_part(_tex0, 0, t, _sw, _sh - t, 0, t);
if(_index & 0b1010 >= 0b1010) draw_surface_part(_tex0, l, 0, _sw - l, _sh, l, 0);
if(_index & 0b0101 >= 0b0101) draw_surface_part(_tex0, 0, 0, _sw - r, _sh, 0, 0);
if(_index & 0b0011 >= 0b0011) draw_surface_part(_tex0, 0, 0, _sw, _sh - b, 0, 0);
var _et = _edge[0][index_18_et[i]];
var _eb = _edge[1][index_18_eb[i]];
var _el = _edge[2][index_18_el[i]];
var _er = _edge[3][index_18_er[i]];
if(_el != noone) { #region
shader_set(sh_mk_tile18_edge_l);
shader_set_f("dimension", _sw, _sh);
shader_set_f("crop", _crop);
shader_set_i("edge", _index);
shader_set_i("fullEdge", bool(_edgFull & 0b0100));
draw_surface_ext(_el, 0, 0, 1, 1, 0, c_white, 1);
shader_reset();
} #endregion
if(_er != noone) { #region
shader_set(sh_mk_tile18_edge_r);
shader_set_f("dimension", _sw, _sh);
shader_set_f("crop", _crop);
shader_set_i("edge", _index);
shader_set_i("fullEdge", bool(_edgFull & 0b1000));
draw_surface_ext(_er, 0, 0, 1, 1, 0, c_white, 1);
shader_reset();
} #endregion
if(_et != noone) { #region
shader_set(sh_mk_tile18_edge_t);
shader_set_f("dimension", _sw, _sh);
shader_set_f("crop", _crop);
shader_set_i("edge", _index);
shader_set_i("fullEdge", bool(_edgFull & 0b0001));
draw_surface_ext(_et, 0, 0, 1, 1, 0, c_white, 1);
shader_reset();
} #endregion
if(_eb != noone) { #region
shader_set(sh_mk_tile18_edge_b);
shader_set_f("dimension", _sw, _sh);
shader_set_f("crop", _crop);
shader_set_i("edge", _index);
shader_set_i("fullEdge", bool(_edgFull & 0b0010));
draw_surface_ext(_eb, 0, 0, 1, 1, 0, c_white, 1);
shader_reset();
} #endregion
BLEND_NORMAL
surface_reset_target();
_sprs[i] = _s;
}
return _sprs;
} #endregion
static generate55 = function(_data, _tex0, _tex1, _edge, _crop) { #region
var _sprs = array_create(55);
var _use1 = is_surface(_tex1); var _use1 = is_surface(_tex1);
var _sw = surface_get_width_safe(_tex0); var _sw = surface_get_width_safe(_tex0);
var _sh = surface_get_height_safe(_tex0); var _sh = surface_get_height_safe(_tex0);
@ -231,8 +165,8 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
var _edgFull = _data[11]; var _edgFull = _data[11];
for( var i = 0; i < 55; i++ ) { for( var i = 0; i < _len; i++ ) {
var _index = index_55[i]; var _index = indMain[i];
if(_index < 0) { if(_index < 0) {
_sprs[i] = noone; _sprs[i] = noone;
continue; continue;
@ -264,10 +198,10 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
if(_index & 0b0000_1011 >= 0b0000_1011) draw_surface_part(_tex0, 0, 0, _sw - r, _sh - b, 0, 0); if(_index & 0b0000_1011 >= 0b0000_1011) draw_surface_part(_tex0, 0, 0, _sw - r, _sh - b, 0, 0);
if(_index & 0b0001_0110 >= 0b0001_0110) draw_surface_part(_tex0, l, 0, _sw - l, _sh - b, l, 0); if(_index & 0b0001_0110 >= 0b0001_0110) draw_surface_part(_tex0, l, 0, _sw - l, _sh - b, l, 0);
var _et = _edge[0][index_55_et[i]]; var _et = _edge[0][indEdge_et[i]];
var _eb = _edge[1][index_55_eb[i]]; var _eb = _edge[1][indEdge_eb[i]];
var _el = _edge[2][index_55_el[i]]; var _el = _edge[2][indEdge_el[i]];
var _er = _edge[3][index_55_er[i]]; var _er = _edge[3][indEdge_er[i]];
if(_el != noone) { #region if(_el != noone) { #region
shader_set(sh_mk_tile55_edge_l); shader_set(sh_mk_tile55_edge_l);
@ -322,6 +256,118 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
return _sprs; return _sprs;
} #endregion } #endregion
static generateSimple = function(_data, _tex0, _tex1, _edge, _crop, indMain, indEdge_et, indEdge_eb, indEdge_el, indEdge_er) { #region
var _sprs = array_create(18);
var _use1 = is_surface(_tex1);
var _sw = surface_get_width_safe(_tex0);
var _sh = surface_get_height_safe(_tex0);
var r = _crop[0];
var t = _crop[1];
var l = _crop[2];
var b = _crop[3];
var _edgeShf = _data[10];
var _edgFull = _data[11];
for( var i = 0; i < 18; i++ ) {
var _index = indMain[i];
if(_index < 0) {
_sprs[i] = noone;
continue;
}
var _s = surface_verify(temp_surface[i], _sw, _sh);
surface_set_target(_s);
DRAW_CLEAR
BLEND_ALPHA_MULP
if(_index == 15) draw_surface(_tex0, 0, 0);
else if(_use1) draw_surface(_tex1, 0, 0);
if(_index & 0b0001) draw_surface_part(_tex0, 0, 0, _sw - r, _sh - b, 0, 0);
if(_index & 0b0010) draw_surface_part(_tex0, l, 0, _sw - l, _sh - b, l, 0);
if(_index & 0b0100) draw_surface_part(_tex0, 0, t, _sw - r, _sh - t, 0, t);
if(_index & 0b1000) draw_surface_part(_tex0, l, t, _sw - l, _sh - t, l, t);
if(_index & 0b1100 >= 0b1100) draw_surface_part(_tex0, 0, t, _sw, _sh - t, 0, t);
if(_index & 0b1010 >= 0b1010) draw_surface_part(_tex0, l, 0, _sw - l, _sh, l, 0);
if(_index & 0b0101 >= 0b0101) draw_surface_part(_tex0, 0, 0, _sw - r, _sh, 0, 0);
if(_index & 0b0011 >= 0b0011) draw_surface_part(_tex0, 0, 0, _sw, _sh - b, 0, 0);
var _et = _edge[0][indEdge_et[i]];
var _eb = _edge[1][indEdge_eb[i]];
var _el = _edge[2][indEdge_el[i]];
var _er = _edge[3][indEdge_er[i]];
if(_el != noone) { #region
shader_set(sh_mk_tile18_edge_l);
shader_set_f("dimension", _sw, _sh);
shader_set_f("crop", _crop);
shader_set_i("edge", _index);
shader_set_i("fullEdge", bool(_edgFull & 0b0100));
draw_surface_ext(_el, 0, 0, 1, 1, 0, c_white, 1);
shader_reset();
} #endregion
if(_er != noone) { #region
shader_set(sh_mk_tile18_edge_r);
shader_set_f("dimension", _sw, _sh);
shader_set_f("crop", _crop);
shader_set_i("edge", _index);
shader_set_i("fullEdge", bool(_edgFull & 0b1000));
draw_surface_ext(_er, 0, 0, 1, 1, 0, c_white, 1);
shader_reset();
} #endregion
if(_et != noone) { #region
shader_set(sh_mk_tile18_edge_t);
shader_set_f("dimension", _sw, _sh);
shader_set_f("crop", _crop);
shader_set_i("edge", _index);
shader_set_i("fullEdge", bool(_edgFull & 0b0001));
draw_surface_ext(_et, 0, 0, 1, 1, 0, c_white, 1);
shader_reset();
} #endregion
if(_eb != noone) { #region
shader_set(sh_mk_tile18_edge_b);
shader_set_f("dimension", _sw, _sh);
shader_set_f("crop", _crop);
shader_set_i("edge", _index);
shader_set_i("fullEdge", bool(_edgFull & 0b0010));
draw_surface_ext(_eb, 0, 0, 1, 1, 0, c_white, 1);
shader_reset();
} #endregion
BLEND_NORMAL
surface_reset_target();
_sprs[i] = _s;
}
return _sprs;
} #endregion
static generate18 = function(_data, _tex0, _tex1, _edge, _crop) {
INLINE
return generateSimple(_data, _tex0, _tex1, _edge, _crop, index_18, index_18_et, index_18_eb, index_18_el, index_18_er);
}
static generate55 = function(_data, _tex0, _tex1, _edge, _crop) {
INLINE
return generateFull(_data, _tex0, _tex1, _edge, _crop, index_55, index_55_et, index_55_eb, index_55_el, index_55_er);
}
static generate48 = function(_data, _tex0, _tex1, _edge, _crop) {
INLINE
return generateFull(_data, _tex0, _tex1, _edge, _crop, index_48, index_48_et, index_48_eb, index_48_el, index_48_er);
}
static processData = function(_outSurf, _data, _output_index, _array_index) { #region static processData = function(_outSurf, _data, _output_index, _array_index) { #region
var _tex0 = _data[0]; var _tex0 = _data[0];
var _tex1 = _data[1]; var _tex1 = _data[1];
@ -374,7 +420,7 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
_edges = __edge_uniform; _edges = __edge_uniform;
} #endregion } #endregion
for( var i = 0; i < 4; i++ ) { for( var i = 0; i < 4; i++ ) { #region edges
var _ed = _edges[i]; var _ed = _edges[i];
var _edShf = _edgeShf[_shi[i]]; var _edShf = _edgeShf[_shi[i]];
@ -502,20 +548,40 @@ function Node_MK_Tile(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) c
edge_surface[i][j] = __edge_surface[_sIndx]; edge_surface[i][j] = __edge_surface[_sIndx];
} }
} } #endregion
_edge = edge_surface; _edge = edge_surface;
if(!is_surface(_tex0)) return _outSurf; if(!is_surface(_tex0)) return _outSurf;
var _surfs = _type == 0? generate18(_data, _tex0, _tex1, _edge, _crop) : generate55(_data, _tex0, _tex1, _edge, _crop); var _surfs = [];
var _col = 1;
var _row = 1;
switch(_type) {
case 0 :
_surfs = generate18(_data, _tex0, _tex1, _edge, _crop);
_col = 6;
_row = 3;
break;
case 1 :
_surfs = generate55(_data, _tex0, _tex1, _edge, _crop);
_col = 11;
_row = 5;
break;
case 2 :
_surfs = generate48(_data, _tex0, _tex1, _edge, _crop);
_col = 12;
_row = 4;
break;
}
if(_outp == 1) return _surfs; if(_outp == 1) return _surfs;
var _sw = surface_get_width_safe(_tex0); var _sw = surface_get_width_safe(_tex0);
var _sh = surface_get_height_safe(_tex0); var _sh = surface_get_height_safe(_tex0);
var _col = _type == 0? 6 : 11;
var _row = _type == 0? 3 : 5;
var _w = _sw * _col; var _w = _sw * _col;
var _h = _sh * _row; var _h = _sh * _row;

View file

@ -562,6 +562,7 @@ function Node_Path(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
if(!array_empty(anchors)) { if(!array_empty(anchors)) {
draw_set_color(isUsingTool(0)? c_white : COLORS._main_accent); draw_set_color(isUsingTool(0)? c_white : COLORS._main_accent);
for( var i = 0, n = array_length(segments); i < n; i++ ) { #region draw path for( var i = 0, n = array_length(segments); i < n; i++ ) { #region draw path
var _seg = segments[i]; var _seg = segments[i];
var _ox = 0, _oy = 0, _nx = 0, _ny = 0, p = 0; var _ox = 0, _oy = 0, _nx = 0, _ny = 0, p = 0;
@ -570,6 +571,9 @@ function Node_Path(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
_nx = _x + _seg[j][0] * _s; _nx = _x + _seg[j][0] * _s;
_ny = _y + _seg[j][1] * _s; _ny = _y + _seg[j][1] * _s;
minx = min(minx, _nx); maxx = max(maxx, _nx);
miny = min(miny, _ny); maxy = max(maxy, _ny);
if(j) { if(j) {
if((key_mod_press(CTRL) || isUsingTool(1)) && distance_to_line(_mx, _my, _ox, _oy, _nx, _ny) < 4) if((key_mod_press(CTRL) || isUsingTool(1)) && distance_to_line(_mx, _my, _ox, _oy, _nx, _ny) < 4)
_line_hover = i; _line_hover = i;
@ -808,7 +812,7 @@ function Node_Path(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
var l = 0, _ox = 0, _oy = 0, _nx = 0, _ny = 0, p = 0; var l = 0, _ox = 0, _oy = 0, _nx = 0, _ny = 0, p = 0;
var sg = array_create(sample); var sg = array_create(sample);
for(var j = 0; j < sample; j++) { for(var j = 0; j <= sample; j++) {
p = eval_bezier(j / sample, _a0[0], _a0[1], _a1[0], _a1[1], p = eval_bezier(j / sample, _a0[0], _a0[1], _a1[0], _a1[1],
_a0[0] + _a0[4], _a0[1] + _a0[5], _a0[0] + _a0[4], _a0[1] + _a0[5],
_a1[0] + _a1[2], _a1[1] + _a1[3]); _a1[0] + _a1[2], _a1[1] + _a1[3]);

View file

@ -22,6 +22,7 @@ function Node_Path_Transform(_x, _y, _group = noone) : Node(_x, _y, _group) cons
cached_pos = ds_map_create(); cached_pos = ds_map_create();
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { #region static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { #region
var pth = getInputData(0);
var pos = getInputData(4); var pos = getInputData(4);
var px = _x + pos[0] * _s; var px = _x + pos[0] * _s;
var py = _y + pos[1] * _s; var py = _y + pos[1] * _s;

View file

@ -187,7 +187,7 @@ function value_color(i) { #region
#4da6ff, //flipfluid #4da6ff, //flipfluid
]; ];
if(i == 99) return $5dde8f; if(i == 99) return #8fde5d;
return JUNCTION_COLORS[safe_mod(max(0, i), array_length(JUNCTION_COLORS))]; return JUNCTION_COLORS[safe_mod(max(0, i), array_length(JUNCTION_COLORS))];
} #endregion } #endregion

View file

@ -5,7 +5,7 @@
"isCompatibility": false, "isCompatibility": false,
"isDnD": false, "isDnD": false,
"parent": { "parent": {
"name": "_others", "name": "animation",
"path": "folders/panels/_others.yy", "path": "folders/panels/animation.yy",
}, },
} }

View file

@ -5,7 +5,7 @@
"isCompatibility": false, "isCompatibility": false,
"isDnD": false, "isDnD": false,
"parent": { "parent": {
"name": "_others", "name": "collection",
"path": "folders/panels/_others.yy", "path": "folders/panels/collection.yy",
}, },
} }

View file

@ -1069,48 +1069,51 @@ function Panel_Preview() : PanelContent() constructor {
if(mouse_wheel_down()) preview_x_to = clamp(preview_x_to - prev_size * SCROLL_SPEED, - preview_x_max, 0); if(mouse_wheel_down()) preview_x_to = clamp(preview_x_to - prev_size * SCROLL_SPEED, - preview_x_max, 0);
if(mouse_wheel_up()) preview_x_to = clamp(preview_x_to + prev_size * SCROLL_SPEED, - preview_x_max, 0); if(mouse_wheel_up()) preview_x_to = clamp(preview_x_to + prev_size * SCROLL_SPEED, - preview_x_max, 0);
} }
preview_x_max = 0;
var _xx = tool_side_drawing * ui(40);
var xx = _xx + preview_x + ui(8);
var yy = h - toolbar_height - prev_size - ui(8);
if(my > yy - 8) mouse_on_preview = 0;
var hoverable = pHOVER && point_in_rectangle(mx, my, _xx, ui(32), w, h - toolbar_height);
for(var i = 0; i < array_length(pseq); i++) { #region surface array
var prev = pseq[i]; preview_x_max = 0;
if(is_instanceof(prev, __d3dMaterial)) var _xx = tool_side_drawing * ui(40);
prev = prev.surface; var xx = _xx + preview_x + ui(8);
if(!is_surface(prev)) continue; var yy = h - toolbar_height - prev_size - ui(8);
if(my > yy - 8) mouse_on_preview = 0;
var hoverable = pHOVER && point_in_rectangle(mx, my, _xx, ui(32), w, h - toolbar_height);
for(var i = 0; i < array_length(pseq); i++) {
var prev = pseq[i];
if(is_instanceof(prev, __d3dMaterial))
prev = prev.surface;
if(!is_surface(prev)) continue;
var prev_w = surface_get_width_safe(prev); var prev_w = surface_get_width_safe(prev);
var prev_h = surface_get_height_safe(prev); var prev_h = surface_get_height_safe(prev);
var ss = prev_size / max(prev_w, prev_h); var ss = prev_size / max(prev_w, prev_h);
var prev_sw = prev_w * ss; var prev_sw = prev_w * ss;
draw_set_color(COLORS.panel_preview_surface_outline); draw_set_color(COLORS.panel_preview_surface_outline);
draw_rectangle(xx, yy, xx + prev_w * ss, yy + prev_h * ss, true); draw_rectangle(xx, yy, xx + prev_w * ss, yy + prev_h * ss, true);
if(hoverable && point_in_rectangle(mx, my, xx, yy, xx + prev_sw, yy + prev_h * ss)) { if(hoverable && point_in_rectangle(mx, my, xx, yy, xx + prev_sw, yy + prev_h * ss)) {
if(mouse_press(mb_left, pFOCUS)) { if(mouse_press(mb_left, pFOCUS)) {
_node.preview_index = i; _node.preview_index = i;
_node.onValueUpdate(0); _node.onValueUpdate(0);
if(resetViewOnDoubleClick) if(resetViewOnDoubleClick)
do_fullView = true; do_fullView = true;
}
draw_surface_ext_safe(prev, xx, yy, ss, ss, 0, c_white, 1);
} else {
draw_surface_ext_safe(prev, xx, yy, ss, ss, 0, c_white, 0.5);
} }
draw_surface_ext_safe(prev, xx, yy, ss, ss, 0, c_white, 1);
} else {
draw_surface_ext_safe(prev, xx, yy, ss, ss, 0, c_white, 0.5);
}
if(i == _node.preview_index) { if(i == _node.preview_index) {
draw_set_color(COLORS._main_accent); draw_set_color(COLORS._main_accent);
draw_rectangle(xx, yy, xx + prev_sw, yy + prev_h * ss, true); draw_rectangle(xx, yy, xx + prev_sw, yy + prev_h * ss, true);
} }
xx += prev_sw + ui(8); xx += prev_sw + ui(8);
preview_x_max += prev_sw + ui(8); preview_x_max += prev_sw + ui(8);
} }
#endregion
preview_x_max = max(preview_x_max - ui(100), 0); preview_x_max = max(preview_x_max - ui(100), 0);
#region ++++ sequence control ++++ #region ++++ sequence control ++++

View file

@ -417,7 +417,7 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
if(cursor_select != -1) { if(cursor_select != -1) {
var minc = min(cursor, cursor_select); var minc = min(cursor, cursor_select);
var maxc = max(cursor, cursor_select); var maxc = max(cursor, cursor_select);
clipboard_set_text(string_copy(_input_text, minc, maxc - minc)); clipboard_set_text(string_copy(_input_text, minc + 1, maxc - minc));
} }
} else { } else {
if(key_mod_press(CTRL) && keyboard_check_pressed(ord("V"))) if(key_mod_press(CTRL) && keyboard_check_pressed(ord("V")))

View file

@ -177,7 +177,7 @@ function textBox(_input, _onModify) : textInput(_input, _onModify) constructor {
if(cursor_select != -1) { if(cursor_select != -1) {
var minc = min(cursor, cursor_select); var minc = min(cursor, cursor_select);
var maxc = max(cursor, cursor_select); var maxc = max(cursor, cursor_select);
clipboard_set_text(string_copy(_input_text, minc, maxc - minc)); clipboard_set_text(string_copy(_input_text, minc + 1, maxc - minc));
} }
} else { } else {
if(key_mod_press(CTRL) && keyboard_check_pressed(ord("V"))) { if(key_mod_press(CTRL) && keyboard_check_pressed(ord("V"))) {