Node fixes

This commit is contained in:
luboslenco
2025-09-27 13:23:25 +02:00
parent e48490e104
commit bb9a736b36
12 changed files with 46 additions and 50 deletions
+6 -6
View File
@@ -360,7 +360,7 @@ function base_update() {
// Create image texture
if (context_in_nodes()) {
ui_nodes_accept_asset_drag(array_index_of(project_assets, base_drag_asset));
ui_nodes_accept_asset_drop(array_index_of(project_assets, base_drag_asset));
}
else if (context_in_3d_view()) {
if (ends_with(to_lower_case(base_drag_asset.file), ".hdr")) {
@@ -377,13 +377,13 @@ function base_update() {
else if (base_drag_swatch != null) {
// Create RGB node
if (context_in_nodes()) {
ui_nodes_accept_swatch_drag(base_drag_swatch);
ui_nodes_accept_swatch_drop(base_drag_swatch);
}
else if (context_in_swatches()) {
tab_swatches_accept_swatch_drag(base_drag_swatch);
tab_swatches_accept_swatch_drop(base_drag_swatch);
}
else if (context_in_materials()) {
tab_materials_accept_swatch_drag(base_drag_swatch);
tab_materials_accept_swatch_drop(base_drag_swatch);
}
else if (context_in_3d_view()) {
let color: i32 = base_drag_swatch.base;
@@ -420,7 +420,7 @@ function base_update() {
}
else if (base_drag_layer != null) {
if (context_in_nodes()) {
ui_nodes_accept_layer_drag(array_index_of(project_layers, base_drag_layer));
ui_nodes_accept_layer_drop(array_index_of(project_layers, base_drag_layer));
}
else if (context_in_layers() && base_is_dragging) {
slot_layer_move(base_drag_layer, context_raw.drag_dest);
@@ -469,7 +469,7 @@ function base_material_dropped() {
layers_create_fill_layer(uv_type, decal_mat, context_raw.drag_dest);
}
else if (context_in_nodes()) {
ui_nodes_accept_material_drag(array_index_of(project_materials, base_drag_material));
ui_nodes_accept_material_drop(array_index_of(project_materials, base_drag_material));
}
base_drag_material = null;
}
+1 -1
View File
@@ -55,7 +55,7 @@ function import_asset_run(path: string, drop_x: f32 = -1.0, drop_y: f32 = -1.0,
break;
}
}
ui_nodes_accept_asset_drag(asset_index);
ui_nodes_accept_asset_drop(asset_index);
ui_nodes_get_nodes().nodes_drag = false;
ui_nodes_hwnd.redraws = 2;
}
+7 -7
View File
@@ -7,8 +7,8 @@ let make_material_emis_used: bool = false;
let make_material_subs_used: bool = false;
function make_material_get_mout(): bool {
for (let i: i32 = 0; i < ui_nodes_get_canvas_material().nodes.length; ++i) {
let n: ui_node_t = ui_nodes_get_canvas_material().nodes[i];
for (let i: i32 = 0; i < context_raw.material.canvas.nodes.length; ++i) {
let n: ui_node_t = context_raw.material.canvas.nodes[i];
if (n.type == "OUTPUT_MATERIAL_PBR") {
return true;
}
@@ -178,7 +178,7 @@ function make_material_parse_paint_material(bake_previews: bool = true) {
let sdata: material_t = {
name: "Material",
canvas: ui_nodes_get_canvas_material()
canvas: context_raw.material.canvas
};
let tmcon: material_context_t = {
name: "paint",
@@ -216,7 +216,7 @@ function make_material_bake_node_previews() {
context_raw.node_previews = map_create();
}
let empty: ui_node_t[] = [];
make_material_traverse_nodes(ui_nodes_get_canvas_material().nodes, null, empty);
make_material_traverse_nodes(context_raw.material.canvas.nodes, null, empty);
let keys: string[] = map_keys(context_raw.node_previews);
for (let i: i32 = 0; i < keys.length; ++i) {
@@ -264,7 +264,7 @@ function make_material_bake_node_preview(node: ui_node_t, group: ui_node_canvas_
}
parser_material_blur_passthrough = true;
util_render_make_node_preview(ui_nodes_get_canvas_material(), node, image, group, parents);
util_render_make_node_preview(context_raw.material.canvas, node, image, group, parents);
parser_material_blur_passthrough = false;
}
else if (node.type == "DIRECT_WARP") {
@@ -282,7 +282,7 @@ function make_material_bake_node_preview(node: ui_node_t, group: ui_node_canvas_
}
parser_material_warp_passthrough = true;
util_render_make_node_preview(ui_nodes_get_canvas_material(), node, image, group, parents);
util_render_make_node_preview(context_raw.material.canvas, node, image, group, parents);
parser_material_warp_passthrough = false;
}
else if (node.type == "BAKE_CURVATURE") {
@@ -348,7 +348,7 @@ function make_material_parse_node_preview_material(node: ui_node_t, group: ui_no
}
let sdata: material_t = {
name: "Material",
canvas: ui_nodes_get_canvas_material()
canvas: context_raw.material.canvas
};
let mcon_raw: material_context_t = {
name: "mesh",
+1 -1
View File
@@ -45,7 +45,7 @@ function make_mesh_preview_run(data: material_t, matcon: material_context_t): no
parser_material_sample_uv_scale = brush_scale;
parser_material_parse_height = make_material_height_used;
parser_material_parse_height_as_channel = true;
let sout: shader_out_t = parser_material_parse(ui_nodes_get_canvas_material(), con_mesh, kong, matcon);
let sout: shader_out_t = parser_material_parse(context_raw.material.canvas, con_mesh, kong, matcon);
parser_material_parse_height = false;
parser_material_parse_height_as_channel = false;
parser_material_sample_keep_aspect = false;
+1 -1
View File
@@ -228,7 +228,7 @@ function make_paint_run(data: material_t, matcon: material_context_t): node_shad
parser_material_triplanar = uv_type == uv_type_t.TRIPLANAR && !decal;
parser_material_sample_keep_aspect = decal;
parser_material_sample_uv_scale = "constants.brush_scale";
let sout: shader_out_t = parser_material_parse(ui_nodes_get_canvas_material(), con_paint, kong, matcon);
let sout: shader_out_t = parser_material_parse(context_raw.material.canvas, con_paint, kong, matcon);
parser_material_parse_emission = false;
parser_material_parse_subsurface = false;
parser_material_parse_height_as_channel = false;
+1 -1
View File
@@ -4775,7 +4775,7 @@ function nodes_material_create_node(node_type: string, group: node_group_t = nul
if (n == null) {
return null;
}
let canvas: ui_node_canvas_t = group != null ? group.canvas : context_raw.material.canvas;
let canvas: ui_node_canvas_t = group != null ? group.canvas : ui_nodes_get_canvas();
let nodes: ui_nodes_t = group != null ? group.nodes : context_raw.material.nodes;
let node: ui_node_t = ui_nodes_make_node(n, nodes, canvas);
array_push(canvas.nodes, node);
+1 -1
View File
@@ -328,7 +328,7 @@ function tab_materials_update_material_pointers(nodes: ui_node_t[], i: i32) {
}
}
function tab_materials_accept_swatch_drag(swatch: swatch_color_t) {
function tab_materials_accept_swatch_drop(swatch: swatch_color_t) {
context_raw.material = slot_material_create(project_materials[0].data);
for (let i: i32 = 0; i < context_raw.material.canvas.nodes.length; ++i) {
let node: ui_node_t = context_raw.material.canvas.nodes[i];
+2 -2
View File
@@ -206,7 +206,7 @@ function tab_swatches_draw(htab: ui_handle_t) {
tab_swatches_delete_swatch(project_raw.swatches[i]);
}
else if (ui_menu_button(tr("Create Material"))) {
tab_materials_accept_swatch_drag(project_raw.swatches[i]);
tab_materials_accept_swatch_drop(project_raw.swatches[i]);
}
else if (ui_menu_button(tr("Create Color Layer"))) {
let color: i32 = project_raw.swatches[i].base;
@@ -245,7 +245,7 @@ function tab_swatches_draw(htab: ui_handle_t) {
}
}
function tab_swatches_accept_swatch_drag(swatch: swatch_color_t) {
function tab_swatches_accept_swatch_drop(swatch: swatch_color_t) {
// No valid position available
if (tab_swatches_drag_pos == -1) {
return;
+10 -20
View File
@@ -84,7 +84,7 @@ function ui_viewnodes_on_link_drag(link_drag_id: i32, is_new_link: bool) {
}
else {
link_y += ui_nodes_INPUT_Y(ui_nodes_get_canvas(true), node, link_drag.to_socket) +
UI_OUTPUTS_H(node.outputs.length) + UI_BUTTONS_H(node);
UI_OUTPUTS_H(node) + UI_BUTTONS_H(node);
}
if (math_abs(mouse_x - link_x) > 5 || math_abs(mouse_y - link_y) > 5) { // Link length
@@ -470,7 +470,7 @@ function ui_nodes_get_canvas(groups: bool = false): ui_node_canvas_t {
return ui_nodes_tabs[ui_nodes_tab_index()].canvas;
}
else {
return ui_nodes_get_canvas_material();
return context_raw.material.canvas;
}
}
else {
@@ -478,10 +478,6 @@ function ui_nodes_get_canvas(groups: bool = false): ui_node_canvas_t {
}
}
function ui_nodes_get_canvas_material(): ui_node_canvas_t {
return context_raw.material.canvas;
}
function ui_nodes_get_nodes(): ui_nodes_t {
if (ui_nodes_canvas_type == canvas_type_t.MATERIAL) {
if (ui_nodes_group_stack.length > 0) {
@@ -743,17 +739,11 @@ function ui_nodes_recompile() {
ui_base_hwnds[tab_area_t.SIDEBAR1].redraws = 2;
}
else {
let _material: slot_material_t = context_raw.material;
if (ui_nodes_is_tab_selected()) {
context_raw.material = ui_nodes_tabs[ui_nodes_tab_index()];
}
layers_is_fill_material() ?
layers_update_fill_layers() :
util_render_make_material_preview();
layers_is_fill_material() ? layers_update_fill_layers() : util_render_make_material_preview();
context_raw.material = _material;
if (ui_view2d_show && ui_view2d_type == view_2d_type_t.NODE) {
@@ -1314,7 +1304,7 @@ function ui_nodes_push_undo(last_canvas: ui_node_canvas_t = null) {
history_edit_nodes(last_canvas, ui_nodes_canvas_type, canvas_group);
}
function ui_nodes_accept_asset_drag(index: i32) {
function ui_nodes_accept_asset_drop(index: i32) {
ui_nodes_push_undo();
let g: node_group_t = ui_nodes_group_stack.length > 0 ? ui_nodes_group_stack[ui_nodes_group_stack.length - 1] : null;
let n: ui_node_t =
@@ -1326,7 +1316,7 @@ function ui_nodes_accept_asset_drag(index: i32) {
ui_nodes_get_nodes().nodes_selected_id = [n.id];
}
function ui_nodes_accept_layer_drag(index: i32) {
function ui_nodes_accept_layer_drop(index: i32) {
ui_nodes_push_undo();
if (slot_layer_is_group(project_layers[index])) {
return;
@@ -1337,7 +1327,7 @@ function ui_nodes_accept_layer_drag(index: i32) {
ui_nodes_get_nodes().nodes_selected_id = [n.id];
}
function ui_nodes_accept_material_drag(index: i32) {
function ui_nodes_accept_material_drop(index: i32) {
ui_nodes_push_undo();
let g: node_group_t = ui_nodes_group_stack.length > 0 ? ui_nodes_group_stack[ui_nodes_group_stack.length - 1] : null;
let n: ui_node_t = nodes_material_create_node("MATERIAL", g);
@@ -1345,7 +1335,7 @@ function ui_nodes_accept_material_drag(index: i32) {
ui_nodes_get_nodes().nodes_selected_id = [n.id];
}
function ui_nodes_accept_swatch_drag(swatch: swatch_color_t) {
function ui_nodes_accept_swatch_drop(swatch: swatch_color_t) {
ui_nodes_push_undo();
let g: node_group_t = ui_nodes_group_stack.length > 0 ? ui_nodes_group_stack[ui_nodes_group_stack.length - 1] : null;
let n: ui_node_t = nodes_material_create_node("RGB", g);
@@ -1464,12 +1454,12 @@ function ui_nodes_make_group_node(group_canvas: ui_node_canvas_t, nodes: ui_node
}
function ui_nodes_make_node_preview() {
let ui_nodes: ui_nodes_t = context_raw.material.nodes;
let ui_nodes: ui_nodes_t = ui_nodes_get_nodes();
if (ui_nodes.nodes_selected_id.length == 0) {
return;
}
let nodes: ui_node_t[] = context_raw.material.canvas.nodes;
let nodes: ui_node_t[] = ui_nodes_get_canvas().nodes;
let node: ui_node_t = ui_get_node(nodes, ui_nodes.nodes_selected_id[0]);
context_raw.node_preview_name = node.name;
@@ -1490,7 +1480,7 @@ function ui_nodes_make_node_preview() {
context_raw.node_preview_dirty = false;
ui_nodes_hwnd.redraws = 2;
util_render_make_node_preview(context_raw.material.canvas, node, context_raw.node_preview);
util_render_make_node_preview(ui_nodes_get_canvas(), node, context_raw.node_preview);
}
function ui_nodes_has_group(c: ui_node_canvas_t): bool {