From dd5603e38a5183b650c9dc7969b101c013d08ef7 Mon Sep 17 00:00:00 2001 From: MakhamDev Date: Tue, 24 Oct 2023 16:23:20 +0700 Subject: [PATCH] - Fix error when setting globalvar value. --- PixelComposer.resource_order | 3 + PixelComposer.yyp | 3 + scripts/d3d_object/d3d_object.gml | 22 ++++-- .../draw_line_elbow_diag.gml | 14 ++-- scripts/load_function/load_function.gml | 2 + .../node_3d_modify_round.gml | 23 +++--- .../node_3d_set_material.gml | 26 ++++++ .../node_3d_set_material.yy | 11 +++ scripts/node_3d_set_material/node_counter.yy | 12 +++ scripts/node_data/node_data.gml | 5 +- scripts/node_feedback/node_feedback.gml | 9 +-- scripts/node_group_input/node_group_input.gml | 4 +- .../node_group_output/node_group_output.gml | 7 +- scripts/node_registry/node_registry.gml | 3 +- scripts/node_value/node_value.gml | 56 ++++++++----- scripts/panel_animation/panel_animation.gml | 2 +- scripts/panel_graph/panel_graph.gml | 51 +++++++----- scripts/timeline_data/timeline_data.gml | 26 +++--- shaders/sh_downsample/sh_downsample.fsh | 4 +- .../faee4b11-e77e-4cf6-95a9-b45d1256cc7f.png | Bin 0 -> 3223 bytes .../e5d1deb2-5e60-4fd1-9d72-fd1e6bbac9a2.png | Bin 0 -> 3223 bytes .../s_node_3d_discretize.yy | 74 ++++++++++++++++++ .../c983d974-a1e0-4657-b9ac-dc2a61853066.png | Bin 0 -> 1674 bytes .../b84ffdf9-7817-4097-abb0-2f1a97dd02bc.png | Bin 0 -> 1674 bytes .../s_node_3d_set_material.yy | 74 ++++++++++++++++++ 25 files changed, 334 insertions(+), 97 deletions(-) create mode 100644 scripts/node_3d_set_material/node_3d_set_material.gml create mode 100644 scripts/node_3d_set_material/node_3d_set_material.yy create mode 100644 scripts/node_3d_set_material/node_counter.yy create mode 100644 sprites/s_node_3d_discretize/faee4b11-e77e-4cf6-95a9-b45d1256cc7f.png create mode 100644 sprites/s_node_3d_discretize/layers/faee4b11-e77e-4cf6-95a9-b45d1256cc7f/e5d1deb2-5e60-4fd1-9d72-fd1e6bbac9a2.png create mode 100644 sprites/s_node_3d_discretize/s_node_3d_discretize.yy create mode 100644 sprites/s_node_3d_set_material/c983d974-a1e0-4657-b9ac-dc2a61853066.png create mode 100644 sprites/s_node_3d_set_material/layers/c983d974-a1e0-4657-b9ac-dc2a61853066/b84ffdf9-7817-4097-abb0-2f1a97dd02bc.png create mode 100644 sprites/s_node_3d_set_material/s_node_3d_set_material.yy diff --git a/PixelComposer.resource_order b/PixelComposer.resource_order index 159547fd9..206e8c886 100644 --- a/PixelComposer.resource_order +++ b/PixelComposer.resource_order @@ -419,6 +419,7 @@ {"name":"fd_rectangle_create_view","order":3,"path":"scripts/fd_rectangle_create_view/fd_rectangle_create_view.yy",}, {"name":"node_fluid_vortex","order":8,"path":"scripts/node_fluid_vortex/node_fluid_vortex.yy",}, {"name":"node_pb_draw_angle","order":7,"path":"scripts/node_pb_draw_angle/node_pb_draw_angle.yy",}, + {"name":"s_node_3d_set_material","order":20,"path":"sprites/s_node_3d_set_material/s_node_3d_set_material.yy",}, {"name":"s_node_replace_palette","order":59,"path":"sprites/s_node_replace_palette/s_node_replace_palette.yy",}, {"name":"sh_cell_noise_round","order":4,"path":"shaders/sh_cell_noise_round/sh_cell_noise_round.yy",}, {"name":"s_node_cross_product_2d","order":12,"path":"sprites/s_node_cross_product_2d/s_node_cross_product_2d.yy",}, @@ -794,6 +795,7 @@ {"name":"node_image_gif","order":6,"path":"scripts/node_image_gif/node_image_gif.yy",}, {"name":"node_iterator_each_output","order":2,"path":"scripts/node_iterator_each_output/node_iterator_each_output.yy",}, {"name":"s_node_strandSim_render_texture","order":5,"path":"sprites/s_node_strandSim_render_texture/s_node_strandSim_render_texture.yy",}, + {"name":"node_3d_set_material","order":2,"path":"scripts/node_3d_set_material/node_3d_set_material.yy",}, {"name":"sh_fd_advect_material_a_8_glsl","order":3,"path":"shaders/sh_fd_advect_material_a_8_glsl/sh_fd_advect_material_a_8_glsl.yy",}, {"name":"node_color_remove","order":2,"path":"scripts/node_color_remove/node_color_remove.yy",}, {"name":"s_node_3d_light_directi","order":17,"path":"sprites/s_node_3d_light_directi/s_node_3d_light_directi.yy",}, @@ -1498,6 +1500,7 @@ {"name":"fd_rectangle_set_target","order":18,"path":"scripts/fd_rectangle_set_target/fd_rectangle_set_target.yy",}, {"name":"node_wav_file_read","order":17,"path":"scripts/node_wav_file_read/node_wav_file_read.yy",}, {"name":"s_node_vfx_render_output","order":12,"path":"sprites/s_node_vfx_render_output/s_node_vfx_render_output.yy",}, + {"name":"s_node_3d_discretize","order":19,"path":"sprites/s_node_3d_discretize/s_node_3d_discretize.yy",}, {"name":"draw_line_dashed","order":7,"path":"scripts/draw_line_dashed/draw_line_dashed.yy",}, {"name":"pseudo_regex","order":7,"path":"scripts/pseudo_regex/pseudo_regex.yy",}, {"name":"node_invert","order":6,"path":"scripts/node_invert/node_invert.yy",}, diff --git a/PixelComposer.yyp b/PixelComposer.yyp index 68836d721..d1e305ec8 100644 --- a/PixelComposer.yyp +++ b/PixelComposer.yyp @@ -992,6 +992,7 @@ {"id":{"name":"fd_rectangle_create_view","path":"scripts/fd_rectangle_create_view/fd_rectangle_create_view.yy",},}, {"id":{"name":"node_fluid_vortex","path":"scripts/node_fluid_vortex/node_fluid_vortex.yy",},}, {"id":{"name":"node_pb_draw_angle","path":"scripts/node_pb_draw_angle/node_pb_draw_angle.yy",},}, + {"id":{"name":"s_node_3d_set_material","path":"sprites/s_node_3d_set_material/s_node_3d_set_material.yy",},}, {"id":{"name":"s_node_replace_palette","path":"sprites/s_node_replace_palette/s_node_replace_palette.yy",},}, {"id":{"name":"sh_cell_noise_round","path":"shaders/sh_cell_noise_round/sh_cell_noise_round.yy",},}, {"id":{"name":"s_node_cross_product_2d","path":"sprites/s_node_cross_product_2d/s_node_cross_product_2d.yy",},}, @@ -1425,6 +1426,7 @@ {"id":{"name":"node_VCT","path":"scripts/node_VCT/node_VCT.yy",},}, {"id":{"name":"boneObject","path":"scripts/boneObject/boneObject.yy",},}, {"id":{"name":"s_node_strandSim_render_texture","path":"sprites/s_node_strandSim_render_texture/s_node_strandSim_render_texture.yy",},}, + {"id":{"name":"node_3d_set_material","path":"scripts/node_3d_set_material/node_3d_set_material.yy",},}, {"id":{"name":"sh_fd_advect_material_a_8_glsl","path":"shaders/sh_fd_advect_material_a_8_glsl/sh_fd_advect_material_a_8_glsl.yy",},}, {"id":{"name":"node_color_remove","path":"scripts/node_color_remove/node_color_remove.yy",},}, {"id":{"name":"FileDropper","path":"extensions/FileDropper/FileDropper.yy",},}, @@ -2232,6 +2234,7 @@ {"id":{"name":"fd_rectangle_set_target","path":"scripts/fd_rectangle_set_target/fd_rectangle_set_target.yy",},}, {"id":{"name":"node_wav_file_read","path":"scripts/node_wav_file_read/node_wav_file_read.yy",},}, {"id":{"name":"s_node_vfx_render_output","path":"sprites/s_node_vfx_render_output/s_node_vfx_render_output.yy",},}, + {"id":{"name":"s_node_3d_discretize","path":"sprites/s_node_3d_discretize/s_node_3d_discretize.yy",},}, {"id":{"name":"draw_line_dashed","path":"scripts/draw_line_dashed/draw_line_dashed.yy",},}, {"id":{"name":"pseudo_regex","path":"scripts/pseudo_regex/pseudo_regex.yy",},}, {"id":{"name":"node_invert","path":"scripts/node_invert/node_invert.yy",},}, diff --git a/scripts/d3d_object/d3d_object.gml b/scripts/d3d_object/d3d_object.gml index eb5d89e13..9e77719c7 100644 --- a/scripts/d3d_object/d3d_object.gml +++ b/scripts/d3d_object/d3d_object.gml @@ -193,21 +193,27 @@ function __3dObject() constructor { } #endregion - static clone = function() { #region + static clone = function(_vertex = true) { #region var _obj = new __3dObject(); - _obj.vertex = array_create(array_length(vertex)); - for( var i = 0, n = array_length(vertex); i < n; i++ ) { - _obj.vertex[i] = array_create(array_length(vertex[i])); + if(_vertex) { + _obj.vertex = array_create(array_length(vertex)); + for( var i = 0, n = array_length(vertex); i < n; i++ ) { + _obj.vertex[i] = array_create(array_length(vertex[i])); - for( var j = 0, m = array_length(vertex[i]); j < m; j++ ) - _obj.vertex[i][j] = vertex[i][j].clone(); + for( var j = 0, m = array_length(vertex[i]); j < m; j++ ) + _obj.vertex[i][j] = vertex[i][j].clone(); + } } + _obj.VF = VF; + _obj.render_type = render_type; + _obj.custom_shader = custom_shader; + _obj.object_counts = object_counts; _obj.transform = transform.clone(); _obj.size = size.clone(); - _obj.materials = array_clone(materials); - _obj.material_index = array_clone(material_index); + _obj.materials = materials; + _obj.material_index = material_index; _obj.texture_flip = texture_flip; return _obj; diff --git a/scripts/draw_line_elbow_diag/draw_line_elbow_diag.gml b/scripts/draw_line_elbow_diag/draw_line_elbow_diag.gml index da6aa585c..0cbb84d57 100644 --- a/scripts/draw_line_elbow_diag/draw_line_elbow_diag.gml +++ b/scripts/draw_line_elbow_diag/draw_line_elbow_diag.gml @@ -7,6 +7,7 @@ function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = return; } + corner = min(corner, abs(y1 - y0) / 2); var sample = floor(corner / 8); sample = clamp(sample, 0, 8); if(sample == 0) corner = 0; @@ -32,7 +33,7 @@ function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = var rx = _x1 - _x0; var ry = _y1 - _y0; - if(inv) { + if(inv) { var cm = merge_color(c1, c2, 0.5); var ofl = cy < _y0 || cy > _y1; @@ -43,6 +44,9 @@ function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = var cS = min(corner, 16 * _s); if(xx1 > xx0 && !ofl) { + if(abs(y1 - y0) < abs(xx1 - xx0)) + cS = 0; + var cS0 = min(cS, abs(cy - y0) - rrx / 2); cS0 = max(0, cS0); @@ -52,7 +56,7 @@ function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = var top = abs(cy - y0) < rrx / 2; var bot = abs(y1 - cy) < rrx / 2; - if(top) { + if(top) { draw_line_width_color(x0, y0, xx0, y0, thick, c1, c1); draw_line_width_color(xx1 + cS, y1, x1, y1, thick, c2, c2); @@ -119,7 +123,7 @@ function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = if(corY0) draw_corner(xx0, yC0 - corY0 * iy, xx0, yC0, xx0 + _corY0, yC0 + _corY0 * iy, thick, cm, sample); if(corY1) draw_corner(xx1, yC1 + corY1 * iy, xx1, yC1, xx1 - _corY1, yC1 - _corY1 * iy, thick, cm, sample); } - } else { + } else { var cR0 = min(cS, abs(y0 - cy) / 2); var cR1 = min(cS, abs(y1 - cy) / 2); @@ -147,7 +151,7 @@ function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = if(cS) draw_corner(xx0 - cR0, y0, xx0, y0, xx0, y0 + cR0 * iy0, thick, c1); if(cS) draw_corner(xx1, y1 - cR1 * iy1, xx1, y1, xx1 + cR1, y1, thick, c2); - if(abs(crX0 - crX3) == abs(crY0 - crY3)) { + if(abs(crX0 - crX3) == abs(crY0 - crY3)) { var cR = min(cS, abs(xx1 - xx0) / 2); var _cR = cR / sqrt(2); @@ -159,7 +163,7 @@ function draw_line_elbow_diag_color(x0, y0, x1, y1, cx = noone, cy = noone, _s = draw_corner( crX0, crY0 - cR * iy0, crX0, crY0, crX0 - _cR, crY0 + _cR * iy0, thick, cm, sample); draw_corner(crX3 + _cR, crY3 - _cR * iy1, crX3, crY3, crX3, crY3 + cR * iy1, thick, cm, sample); } - } else { + } else { draw_line_width_color( crX0, y0 + cR0 * iy0, crX0, crY0 - crn0 * iy0, thick, c1, cm); draw_line_width_color(crX1 - crn0 * ix, crY1, crX2 + crn1 * ix, crY2, thick, cm, cm); draw_line_width_color( crX3, crY3 + crn1 * iy1, crX3, y1 - cR1 * iy1, thick, cm, c2); diff --git a/scripts/load_function/load_function.gml b/scripts/load_function/load_function.gml index c9587ebe8..3df12a100 100644 --- a/scripts/load_function/load_function.gml +++ b/scripts/load_function/load_function.gml @@ -250,5 +250,7 @@ function __LOAD_PATH(path, readonly = false, safe_mode = false, override = false if(struct_has(_load_content, "timelines") && !array_empty(_load_content.timelines.contents)) PROJECT.timelines.deserialize(_load_content.timelines); + PANEL_GRAPH.toCenterNode(); + return true; } \ No newline at end of file diff --git a/scripts/node_3d_modify_round/node_3d_modify_round.gml b/scripts/node_3d_modify_round/node_3d_modify_round.gml index 20a7a8109..f1646480c 100644 --- a/scripts/node_3d_modify_round/node_3d_modify_round.gml +++ b/scripts/node_3d_modify_round/node_3d_modify_round.gml @@ -1,11 +1,15 @@ function Node_3D_Round_Vertex(_x, _y, _group = noone) : Node_3D_Modifier(_x, _y, _group) constructor { name = "Discretize vertex"; + inputs[| in_mesh + 0] = nodeValue("Step", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1) + static processData = function(_output, _data, _output_index, _array_index = 0) { var _obj = _data[0]; + var _stp = _data[in_mesh + 0]; + if(!is_instanceof(_obj, __3dObject)) return noone; - var _res = new __3dObject(); + var _res = _obj.clone(false); _res.vertex = array_create(array_length(_obj.vertex)); for( var i = 0, n = array_length(_obj.vertex); i < n; i++ ) { @@ -13,23 +17,16 @@ function Node_3D_Round_Vertex(_x, _y, _group = noone) : Node_3D_Modifier(_x, _y, for( var j = 0, m = array_length(_obj.vertex[i]); j < m; j++ ) { var _v = _obj.vertex[i][j].clone(); - //_v.x = value_snap(_v.x, 0); - //_v.y = value_snap(_v.y, 0); - //_v.z = value_snap(_v.z, 0); + _v.x = value_snap(_v.x, _stp); + _v.y = value_snap(_v.y, _stp); + _v.z = value_snap(_v.z, _stp); _res.vertex[i][j] = _v; } } - _res.object_counts = _obj.object_counts; - _res.transform = _obj.transform.clone(); - _res.size = _obj.size.clone(); - _res.materials = array_clone(_obj.materials); - _res.material_index = array_clone(_obj.material_index); - _res.texture_flip = _obj.texture_flip; - _res.build(); + _res.VB = _res.build(); return _res; - } - + } } \ No newline at end of file diff --git a/scripts/node_3d_set_material/node_3d_set_material.gml b/scripts/node_3d_set_material/node_3d_set_material.gml new file mode 100644 index 000000000..d9fb9ec90 --- /dev/null +++ b/scripts/node_3d_set_material/node_3d_set_material.gml @@ -0,0 +1,26 @@ +function Node_3D_Set_Material(_x, _y, _group = noone) : Node_3D_Modifier(_x, _y, _group) constructor { + name = "Set Material"; + + inputs[| in_mesh + 0] = nodeValue("Materials", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, noone) + .setVisible(true, true) + .setArrayDepth(1); + + static processData = function(_output, _data, _output_index, _array_index = 0) { + var _obj = _data[0]; + var _mat = _data[in_mesh + 0]; + + if(!is_instanceof(_obj, __3dObject)) return noone; + if(!is_array(_mat)) _mat = [ _mat ]; + + var _res = _obj.clone(false); + + if(array_length(_mat) != array_length(_obj.materials)) + array_resize(_mat, array_length(_obj.materials)); + + _res.vertex = _obj.vertex; + _res.VB = _obj.VB; + _res.materials = _mat; + + return _res; + } +} \ No newline at end of file diff --git a/scripts/node_3d_set_material/node_3d_set_material.yy b/scripts/node_3d_set_material/node_3d_set_material.yy new file mode 100644 index 000000000..a77673489 --- /dev/null +++ b/scripts/node_3d_set_material/node_3d_set_material.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "node_3d_set_material", + "isCompatibility": false, + "isDnD": false, + "parent": { + "name": "d3d modifier", + "path": "folders/nodes/data/3D/d3d modifier.yy", + }, +} \ No newline at end of file diff --git a/scripts/node_3d_set_material/node_counter.yy b/scripts/node_3d_set_material/node_counter.yy new file mode 100644 index 000000000..10832a0b0 --- /dev/null +++ b/scripts/node_3d_set_material/node_counter.yy @@ -0,0 +1,12 @@ +{ + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "variable", + "path": "folders/nodes/data/variable.yy", + }, + "resourceVersion": "1.0", + "name": "node_counter", + "tags": [], + "resourceType": "GMScript", +} \ No newline at end of file diff --git a/scripts/node_data/node_data.gml b/scripts/node_data/node_data.gml index d8e9b4361..8061b283b 100644 --- a/scripts/node_data/node_data.gml +++ b/scripts/node_data/node_data.gml @@ -142,7 +142,8 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x #region --- attributes ---- attributes = { update_graph: true, - show_update_trigger: false + show_update_trigger: false, + color: -1, }; attributeEditors = [ @@ -789,7 +790,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x static getColor = function() { #region gml_pragma("forceinline"); - return timeline_item.color == -1? color : timeline_item.color; + return attributes.color == -1? color : attributes.color; } #endregion static drawNodeBase = function(xx, yy, _s) { #region diff --git a/scripts/node_feedback/node_feedback.gml b/scripts/node_feedback/node_feedback.gml index c8b1d2a63..43ec5881e 100644 --- a/scripts/node_feedback/node_feedback.gml +++ b/scripts/node_feedback/node_feedback.gml @@ -3,6 +3,7 @@ function Node_Feedback(_x, _y, _group = noone) : Node_Collection(_x, _y, _group) color = COLORS.node_blend_feedback; icon = THEME.feedback; + update_on_frame = true; reset_all_child = true; if(!LOADING && !APPENDING && !CLONING) { @@ -14,12 +15,6 @@ function Node_Feedback(_x, _y, _group = noone) : Node_Collection(_x, _y, _group) output.inputs[| 1].setFrom(input.outputs[| 1]); } - static doStepBegin = function() { - if(!PROJECT.animator.frame_progress) return; - setRenderStatus(false); - RENDER_ALL //force full render - } - static getNextNodes = function() { var allReady = true; for(var i = custom_input_index; i < ds_list_size(inputs); i++) { @@ -28,7 +23,7 @@ function Node_Feedback(_x, _y, _group = noone) : Node_Collection(_x, _y, _group) allReady &= _in.isRenderable() } - + if(!allReady) return []; return __nodeLeafList(getNodeList()); diff --git a/scripts/node_group_input/node_group_input.gml b/scripts/node_group_input/node_group_input.gml index f2caa35e5..9d5e6d29f 100644 --- a/scripts/node_group_input/node_group_input.gml +++ b/scripts/node_group_input/node_group_input.gml @@ -6,7 +6,8 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru inParent = undefined; - attributes.input_priority = group == noone? 0 : group.getInputFreeOrder(); + attributes.input_priority = 0; + if(!CLONING && !LOADING && !APPENDING && group != noone) attributes.input_priority = group.getInputFreeOrder(); w = 96; h = 32 + 24; @@ -363,7 +364,6 @@ function Node_Group_Input(_x, _y, _group = noone) : Node(_x, _y, _group) constru if(PROJECT.version < 11520) attributes.input_priority = getInputData(5); onValueUpdate(); - if(CLONING) attributes.input_priority = group.getInputFreeOrder(); group.sortIO(); } #endregion diff --git a/scripts/node_group_output/node_group_output.gml b/scripts/node_group_output/node_group_output.gml index 9e6a37e7a..aab11bffe 100644 --- a/scripts/node_group_output/node_group_output.gml +++ b/scripts/node_group_output/node_group_output.gml @@ -4,7 +4,8 @@ function Node_Group_Output(_x, _y, _group = noone) : Node(_x, _y, _group) constr color = COLORS.node_blend_collection; previewable = false; - attributes.input_priority = group == noone? 0 : group.getOutputFreeOrder(); + attributes.input_priority = 0; + if(!CLONING && !LOADING && !APPENDING && group != noone) attributes.input_priority = group.getOutputFreeOrder(); w = 96; h = 32 + 24; @@ -18,9 +19,7 @@ function Node_Group_Output(_x, _y, _group = noone) : Node(_x, _y, _group) constr outParent = undefined; output_index = -1; - _onSetDisplayName = function() { - attributes.inherit_name = false; - } + _onSetDisplayName = function() { attributes.inherit_name = false; } static setRenderStatus = function(result) { #region if(rendered == result) return; diff --git a/scripts/node_registry/node_registry.gml b/scripts/node_registry/node_registry.gml index ae2f123bc..2ad7220e8 100644 --- a/scripts/node_registry/node_registry.gml +++ b/scripts/node_registry/node_registry.gml @@ -416,7 +416,8 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { #regio addNodeObject(d3d, "Point Light", s_node_3d_light_point, "Node_3D_Light_Point", [1, Node_3D_Light_Point]).setVersion(11510); ds_list_add(d3d, "Modify"); - /**/ addNodeObject(d3d, "Discretize vertex", s_node_3d_light_directi, "Node_3D_Round_Vertex", [1, Node_3D_Round_Vertex]).setVersion(11560); + addNodeObject(d3d, "Discretize vertex", s_node_3d_discretize, "Node_3D_Round_Vertex", [1, Node_3D_Round_Vertex]).setVersion(11560); + addNodeObject(d3d, "Set Material", s_node_3d_set_material, "Node_3D_Set_Material", [1, Node_3D_Set_Material]).setVersion(11560); ds_list_add(d3d, "Legacy"); ////////////////////////////////////////////////////////////////////////////////////////////////////////////// addNodeObject(d3d, "3D Plane", s_node_3d_plane, "__Node_3D_Plane", [1, __Node_3D_Plane],, "Put 2D image on a plane in 3D space.").isDeprecated(); diff --git a/scripts/node_value/node_value.gml b/scripts/node_value/node_value.gml index 53d77a1c5..adc84249c 100644 --- a/scripts/node_value/node_value.gml +++ b/scripts/node_value/node_value.gml @@ -1353,8 +1353,13 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru } } #endregion - if(typeFrom == VALUE_TYPE.surface && type == VALUE_TYPE.d3Material) - return new __d3dMaterial(value); + if(typeFrom == VALUE_TYPE.surface && type == VALUE_TYPE.d3Material) { #region + if(!is_array(value)) return new __d3dMaterial(value); + var _val = array_create(array_length(value)); + for( var i = 0, n = array_length(value); i < n; i++ ) + _val[i] = new __d3dMaterial(value[i]); + return _val; + } #endregion if((typeFrom == VALUE_TYPE.integer || typeFrom == VALUE_TYPE.float || typeFrom == VALUE_TYPE.boolean) && type == VALUE_TYPE.color) return value >= 1? value : make_color_hsv(0, 0, value * 255); @@ -1710,7 +1715,8 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru if(connect_type == JUNCTION_CONNECT.output) return; - node.setInputData(self.index, animator.getValue(time)); + if(is_instanceof(node, Node)) + node.setInputData(self.index, animator.getValue(time)); if(tags != VALUE_TAG.none) return true; @@ -2173,7 +2179,10 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru return hovering; } #endregion - static drawConnectionMouse = function(_mx, _my, ss, target) { #region + static drawConnectionMouse = function(params, _mx, _my, target) { #region + var ss = params.s; + var aa = struct_try_get(params, "aa", 1); + var drawCorner = type == VALUE_TYPE.action; if(target != noone) drawCorner |= target.type == VALUE_TYPE.action; @@ -2181,6 +2190,17 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru var corner = PREF_MAP[? "connection_line_corner"] * ss; var th = max(1, PREF_MAP[? "connection_line_width"] * ss); + var sx = x; + var sy = y; + + corner *= aa; + th *= aa; + ss *= aa; + sx *= aa; + sy *= aa; + _mx *= aa; + _my *= aa; + var col = color_display; draw_set_color(col); @@ -2188,34 +2208,32 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru var _output = connect_type == JUNCTION_CONNECT.output; switch(PREF_MAP[? "curve_connection_line"]) { - case 0 : - draw_line_width(x, y, _mx, _my, th); - break; + case 0 : draw_line_width(sx, sy, _mx, _my, th); break; case 1 : if(drawCorner) { - if(_action) draw_line_curve_corner(_mx, _my, x, y, ss, th, col, col); - else draw_line_curve_corner(x, y, _mx, _my, ss, th, col, col); + if(_action) draw_line_curve_corner(_mx, _my, sx, sy, ss, th, col, col); + else draw_line_curve_corner(sx, sy, _mx, _my, ss, th, col, col); } else { - if(_output) draw_line_curve_color(_mx, _my, x, y,,, ss, th, col, col); - else draw_line_curve_color(x, y, _mx, _my,,, ss, th, col, col); + if(_output) draw_line_curve_color(_mx, _my, sx, sy,,, ss, th, col, col); + else draw_line_curve_color(sx, sy, _mx, _my,,, ss, th, col, col); } break; case 2 : if(drawCorner) { - if(_action) draw_line_elbow_corner(_mx, _my, x, y, ss, th, col, col, corner); - else draw_line_elbow_corner(x, y, _mx, _my, ss, th, col, col, corner); + if(_action) draw_line_elbow_corner(_mx, _my, sx, sy, ss, th, col, col, corner); + else draw_line_elbow_corner(sx, sy, _mx, _my, ss, th, col, col, corner); } else { - if(_output) draw_line_elbow_color(x, y, _mx, _my,,, ss, th, col, col, corner); - else draw_line_elbow_color(_mx, _my, x, y,,, ss, th, col, col, corner); + if(_output) draw_line_elbow_color(sx, sy, _mx, _my,,, ss, th, col, col, corner); + else draw_line_elbow_color(_mx, _my, sx, sy,,, ss, th, col, col, corner); } break; case 3 : if(drawCorner) { - if(_action) draw_line_elbow_diag_corner(_mx, _my, x, y, ss, th, col, col, corner); - else draw_line_elbow_diag_corner(x, y, _mx, _my, ss, th, col, col, corner); + if(_action) draw_line_elbow_diag_corner(_mx, _my, sx, sy, ss, th, col, col, corner); + else draw_line_elbow_diag_corner(sx, sy, _mx, _my, ss, th, col, col, corner); } else { - if(_output) draw_line_elbow_diag_color(x, y, _mx, _my,,, ss, th, col, col, corner); - else draw_line_elbow_diag_color(_mx, _my, x, y,,, ss, th, col, col, corner); + if(_output) draw_line_elbow_diag_color(sx, sy, _mx, _my,,, ss, th, col, col, corner); + else draw_line_elbow_diag_color(_mx, _my, sx, sy,,, ss, th, col, col, corner); } break; } diff --git a/scripts/panel_animation/panel_animation.gml b/scripts/panel_animation/panel_animation.gml index c81a9af26..e69e97927 100644 --- a/scripts/panel_animation/panel_animation.gml +++ b/scripts/panel_animation/panel_animation.gml @@ -289,7 +289,7 @@ function Panel_Animation() : PanelContent() constructor { var _clrs = COLORS.labels; var _item = array_create(array_length(_clrs)); - function setSelectingItemColor(color) { if(context_selecting_item == noone) return; context_selecting_item.item.color = color; } + function setSelectingItemColor(color) { if(context_selecting_item == noone) return; context_selecting_item.item.setColor(color); } for( var i = 0, n = array_length(_clrs); i < n; i++ ) { _item[i] = [ diff --git a/scripts/panel_graph/panel_graph.gml b/scripts/panel_graph/panel_graph.gml index 081ec0356..61c4cf81c 100644 --- a/scripts/panel_graph/panel_graph.gml +++ b/scripts/panel_graph/panel_graph.gml @@ -93,7 +93,10 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor { connection_aa = 2; connection_surface = surface_create(1, 1); connection_surface_aa = surface_create(1, 1); - + + connection_draw_mouse = noone; + connection_draw_target = noone; + value_focus = noone; value_dragging = noone; value_draggings = []; @@ -445,10 +448,10 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor { #region node color function setSelectingNodeColor(color) { if(node_hover == noone) return; - node_hover.timeline_item.color = color; + node_hover.attributes.color = color; for(var i = 0; i < ds_list_size(nodes_select_list); i++) - nodes_select_list[| i].timeline_item.color = color; + nodes_select_list[| i].attributes.color = color; } var _clrs = COLORS.labels; @@ -938,6 +941,26 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor { var _hov = nodes_list[| i].drawConnections(_params); if(_hov != noone && is_struct(_hov)) hov = _hov; } + + if(value_dragging && connection_draw_mouse != noone) { + var _cmx = connection_draw_mouse[0]; + var _cmy = connection_draw_mouse[1]; + var _cmt = connection_draw_target; + + if(array_empty(value_draggings)) + value_dragging.drawConnectionMouse(_params, _cmx, _cmy, _cmt); + else { + var _stIndex = array_find(value_draggings, value_dragging); + + for( var i = 0, n = array_length(value_draggings); i < n; i++ ) { + var _dmx = _cmx; + var _dmy = value_draggings[i].connect_type == JUNCTION_CONNECT.output? _cmy + (i - _stIndex) * 24 * graph_s : _cmy; + + value_draggings[i].drawConnectionMouse(_params, _dmx, _dmy, _cmt); + } + } + } + printIf(log, "Draw connection: " + string(current_time - t)); t = current_time; surface_reset_target(); @@ -948,11 +971,8 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor { draw_surface(connection_surface, 0, 0); surface_reset_shader(); - BLEND_ALPHA - shader_set(sh_FXAA); - shader_set_dim("dimension", connection_surface_aa); - draw_surface(connection_surface_aa, 0, 0); - shader_reset(); + BLEND_ALPHA_MULP + draw_surface(connection_surface_aa, 0, 0); BLEND_NORMAL junction_hovering = (node_hovering == noone && !is_struct(node_hovering))? hov : noone; @@ -1168,18 +1188,8 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor { var _mmx = target != noone? target.x : _mx; var _mmy = target != noone? target.y : _my; - if(array_empty(value_draggings)) - value_dragging.drawConnectionMouse(_mmx, _mmy, graph_s, target); - else { - var _stIndex = array_find(value_draggings, value_dragging); - - for( var i = 0, n = array_length(value_draggings); i < n; i++ ) { - var _dmx = _mmx; - var _dmy = value_draggings[i].connect_type == JUNCTION_CONNECT.output? _mmy + (i - _stIndex) * 24 * graph_s : _mmy; - - value_draggings[i].drawConnectionMouse(_dmx, _dmy, graph_s, target); - } - } + connection_draw_mouse = [ _mmx, _mmy ]; + connection_draw_target = target; value_dragging.drawJunction(graph_s, value_dragging.x, value_dragging.y); if(target) @@ -1221,6 +1231,7 @@ function Panel_Graph(project = PROJECT) : PanelContent() constructor { } value_dragging = noone; + connection_draw_mouse = noone; } } else if(!value_dragging && value_focus && mouse_press(mb_left, pFOCUS) && !key_mod_press(ALT)) { value_dragging = value_focus; diff --git a/scripts/timeline_data/timeline_data.gml b/scripts/timeline_data/timeline_data.gml index bd6b2a65b..c58d2dd79 100644 --- a/scripts/timeline_data/timeline_data.gml +++ b/scripts/timeline_data/timeline_data.gml @@ -7,6 +7,7 @@ function timelineItem() constructor { parent = noone; static setColor = function(color) { self.color = color; } + static getColor = function() { return color; } static drawLabel = function(_x, _y, _w, _msx, _msy) {} @@ -40,13 +41,13 @@ function timelineItemNode(node) : timelineItem() constructor { var lh = ui(20); var res = 0; - var col = color; + var col = getColor(); var cxt = _item.contexts; if(col == -1) for( var i = array_length(cxt) - 1; i >= 0; i-- ) { var _context = cxt[i]; - if(_context.item.color == -1) continue; - col = _context.item.color; + if(_context.item.getColor() == -1) continue; + col = _context.item.getColor(); break; } if(col == -1) col = CDEF.main_grey; @@ -99,19 +100,20 @@ function timelineItemNode(node) : timelineItem() constructor { return res; } #endregion + static setColor = function(color) { node.attributes.color = color; } + static getColor = function() { return node.attributes.color; } + static serialize = function() { #region var _map = {}; _map.type = "Node"; _map.show = show; - _map.color = color; _map.node_id = node.node_id; return _map; } #endregion static deserialize = function(_map) { #region - color = _map.color; show = struct_try_get(_map, "show", true); var _node_id = _map.node_id; @@ -128,14 +130,14 @@ function timelineItemGroup() : timelineItem() constructor { tb_name = new textBox(TEXTBOX_INPUT.text, function(val) { name = val; renaming = false; }); contents = []; - static rename = function() { + static rename = function() { #region renaming = true; tb_name.setFocusHover(true, true); run_in(1, function() { tb_name._current_text = name; tb_name.activate(); }); - } + } #endregion static drawLabel = function(_item, _x, _y, _w, _msx, _msy, hover, focus, itHover, fdHover, nameType, alpha = 1) { #region var lx = _x + _item.depth * ui(12) + ui(2); @@ -144,13 +146,13 @@ function timelineItemGroup() : timelineItem() constructor { var lh = ui(20); var res = 0; var hig = true; - var col = color; + var col = getColor(); var cxt = _item.contexts; if(col == -1) for( var i = array_length(cxt) - 1; i >= 0; i-- ) { var _context = cxt[i]; - if(_context.item.color == -1) continue; - col = _context.item.color; + if(_context.item.getColor() == -1) continue; + col = _context.item.getColor(); hig = false; break; } @@ -193,10 +195,6 @@ function timelineItemGroup() : timelineItem() constructor { return res; } #endregion - static setColor = function(color) { - self.color = color; - } - static addItem = function(_item) { #region array_push(contents, _item); _item.parent = self; diff --git a/shaders/sh_downsample/sh_downsample.fsh b/shaders/sh_downsample/sh_downsample.fsh index b62183f59..88b174d6a 100644 --- a/shaders/sh_downsample/sh_downsample.fsh +++ b/shaders/sh_downsample/sh_downsample.fsh @@ -19,7 +19,9 @@ void main() { wei += samp.a; } - col /= wei; + float alph = wei / (down * down); + col /= wei; + col.a = alph; gl_FragColor = col; } diff --git a/sprites/s_node_3d_discretize/faee4b11-e77e-4cf6-95a9-b45d1256cc7f.png b/sprites/s_node_3d_discretize/faee4b11-e77e-4cf6-95a9-b45d1256cc7f.png new file mode 100644 index 0000000000000000000000000000000000000000..4e4e1665131eb864538800f88fe38c6470c96487 GIT binary patch literal 3223 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 MNY6~SR2v`tA8dQxFaQ7m literal 0 HcmV?d00001 diff --git a/sprites/s_node_3d_discretize/layers/faee4b11-e77e-4cf6-95a9-b45d1256cc7f/e5d1deb2-5e60-4fd1-9d72-fd1e6bbac9a2.png b/sprites/s_node_3d_discretize/layers/faee4b11-e77e-4cf6-95a9-b45d1256cc7f/e5d1deb2-5e60-4fd1-9d72-fd1e6bbac9a2.png new file mode 100644 index 0000000000000000000000000000000000000000..4e4e1665131eb864538800f88fe38c6470c96487 GIT binary patch literal 3223 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 MNY6~SR2v`tA8dQxFaQ7m literal 0 HcmV?d00001 diff --git a/sprites/s_node_3d_discretize/s_node_3d_discretize.yy b/sprites/s_node_3d_discretize/s_node_3d_discretize.yy new file mode 100644 index 000000000..82226e103 --- /dev/null +++ b/sprites/s_node_3d_discretize/s_node_3d_discretize.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_3d_discretize", + "bbox_bottom": 61, + "bbox_left": 6, + "bbox_right": 57, + "bbox_top": 2, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"faee4b11-e77e-4cf6-95a9-b45d1256cc7f",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"e5d1deb2-5e60-4fd1-9d72-fd1e6bbac9a2","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "3D", + "path": "folders/nodes/icons/3D.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_3d_discretize", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"faee4b11-e77e-4cf6-95a9-b45d1256cc7f","path":"sprites/s_node_3d_discretize/s_node_3d_discretize.yy",},},},"Disabled":false,"id":"5ec1ab24-4339-470d-ae19-af9df1281bf9","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 32, + "yorigin": 32, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 64, +} \ No newline at end of file diff --git a/sprites/s_node_3d_set_material/c983d974-a1e0-4657-b9ac-dc2a61853066.png b/sprites/s_node_3d_set_material/c983d974-a1e0-4657-b9ac-dc2a61853066.png new file mode 100644 index 0000000000000000000000000000000000000000..b2241d3c61dabe092dd9d471d069edda893f227c GIT binary patch literal 1674 zcmai!c~BE}7RP@f1SCyVv?wc;zBDTEXXQpr72f{4Tn$)niMw9&g{(o(b;+P-goA`_xZm6UXc&U z0|_^T0|1boXI*{OO8A(&wA8gBE_qTdsK~Rv=Kx??0>H@w;DfrwnFk;h4ZtD=0NgDA z4kq0ZoyV&OS`lA(xPqOJQT?>83;-D0)AfvBx^#&*oH!P(KOnB>eQS4atbw1CMwqu4 zX_KVPYIY&~E3pY(sk&EMuV!;*%)aN^Yy=8bup~sCITCi?Uq855BqaO71x00VJZZ1R zSDJF$Mjg{42JDA6H!&X^Un?t+-hyU+KJ3XpIpz40TdHgXKKYr31TDggxzY+S`qQQ3 z6(lTZC>28}ke&yQb?H$#)>YO(ZPTP7o}BP9D~FY?*PiZx_dH)maKhd?!mBk~PTLuO z@o|M4G^3bfk_{VL9(aa&h1&=jb|8>h1zo*ck+Y`((|^L<#9U+O>7Y3W!S{6w`_HVb zBBzjne8=)P%{Ro!FxsfXdO!Xp(1`bjcF3u+yqZYA*t65cXv*{-`#4y>?;a-@WtOS6 z zX*FNmKTw?)dgo?tkOiFvsfNEtya?H31Q|`AEc$lK=X(d)7PGy6ABR{mL>z|Bn^@BH z-A4pHg%;;UzRbthZTmQdy^@iQ7Dc~QB6(!SGF?sJl`N?wsAML$1nDuIU;w`a?|)N_ zchQHU@Lw5$o|VgE)Wx8XfGET%7yy<0aC)Sz={5J&*}tzdPT)rzclC|v${V7q_RqKe zXmYf(ceK2Gwj;2H{6Uy%{wj7geVuifbmQ>Uv-}RPy?Nh>2+K2|HLNzrFs_923CiTq_*h{||kUthINt^8d6v+atmqH+ z3W)NUHom75Us-VFXGUYlqbc7AZjt-pne7Z0Q9*La`2r|wuWQd(Zom&N$Eb@2_3%ux z!2jpM+UEPR;SFI`SQtu;IGh`R>`GGZ0n-)ws{8kn+edALXl{t5Rg|5Qt^0hL5J;euj+74^_ zfzt{EOC2Hm+}hmxw-C3>ig~B!g-h*wzq}_|U}ZHzKs0;ap}SzKMsv2$AF(9ZBaGKm zJ*WS;5!`Nt&;y=^$1a#&V>zHg&wiJ2_0`HMrEa0B6+k&&H+aUmht#KG7x1cHZ$Nwy6MNYQIM9UnftN2gj)Yqj>NM5{lsmH-3h7MNp@8nD==C{zfLoX6L=?OrOn-h zO=Z80IIUqFl;h06HGN0=hk6;YJ?1e31-l6eDa*r3Bt;AnDd63dP=Z$b(LUWl6 za*+2x9ut$G3Jksd6+tQesl!oijTR_x7_0=>W3Ybc zV>mPhhdE}8M&r=v%FJtZ{{zqxqvE2Oe+~TW(C0>K!1})z7;!Wzoe@q;`fKJ1_S0u- O26(!WTpzhmxc>%v6zW9) literal 0 HcmV?d00001 diff --git a/sprites/s_node_3d_set_material/layers/c983d974-a1e0-4657-b9ac-dc2a61853066/b84ffdf9-7817-4097-abb0-2f1a97dd02bc.png b/sprites/s_node_3d_set_material/layers/c983d974-a1e0-4657-b9ac-dc2a61853066/b84ffdf9-7817-4097-abb0-2f1a97dd02bc.png new file mode 100644 index 0000000000000000000000000000000000000000..b2241d3c61dabe092dd9d471d069edda893f227c GIT binary patch literal 1674 zcmai!c~BE}7RP@f1SCyVv?wc;zBDTEXXQpr72f{4Tn$)niMw9&g{(o(b;+P-goA`_xZm6UXc&U z0|_^T0|1boXI*{OO8A(&wA8gBE_qTdsK~Rv=Kx??0>H@w;DfrwnFk;h4ZtD=0NgDA z4kq0ZoyV&OS`lA(xPqOJQT?>83;-D0)AfvBx^#&*oH!P(KOnB>eQS4atbw1CMwqu4 zX_KVPYIY&~E3pY(sk&EMuV!;*%)aN^Yy=8bup~sCITCi?Uq855BqaO71x00VJZZ1R zSDJF$Mjg{42JDA6H!&X^Un?t+-hyU+KJ3XpIpz40TdHgXKKYr31TDggxzY+S`qQQ3 z6(lTZC>28}ke&yQb?H$#)>YO(ZPTP7o}BP9D~FY?*PiZx_dH)maKhd?!mBk~PTLuO z@o|M4G^3bfk_{VL9(aa&h1&=jb|8>h1zo*ck+Y`((|^L<#9U+O>7Y3W!S{6w`_HVb zBBzjne8=)P%{Ro!FxsfXdO!Xp(1`bjcF3u+yqZYA*t65cXv*{-`#4y>?;a-@WtOS6 z zX*FNmKTw?)dgo?tkOiFvsfNEtya?H31Q|`AEc$lK=X(d)7PGy6ABR{mL>z|Bn^@BH z-A4pHg%;;UzRbthZTmQdy^@iQ7Dc~QB6(!SGF?sJl`N?wsAML$1nDuIU;w`a?|)N_ zchQHU@Lw5$o|VgE)Wx8XfGET%7yy<0aC)Sz={5J&*}tzdPT)rzclC|v${V7q_RqKe zXmYf(ceK2Gwj;2H{6Uy%{wj7geVuifbmQ>Uv-}RPy?Nh>2+K2|HLNzrFs_923CiTq_*h{||kUthINt^8d6v+atmqH+ z3W)NUHom75Us-VFXGUYlqbc7AZjt-pne7Z0Q9*La`2r|wuWQd(Zom&N$Eb@2_3%ux z!2jpM+UEPR;SFI`SQtu;IGh`R>`GGZ0n-)ws{8kn+edALXl{t5Rg|5Qt^0hL5J;euj+74^_ zfzt{EOC2Hm+}hmxw-C3>ig~B!g-h*wzq}_|U}ZHzKs0;ap}SzKMsv2$AF(9ZBaGKm zJ*WS;5!`Nt&;y=^$1a#&V>zHg&wiJ2_0`HMrEa0B6+k&&H+aUmht#KG7x1cHZ$Nwy6MNYQIM9UnftN2gj)Yqj>NM5{lsmH-3h7MNp@8nD==C{zfLoX6L=?OrOn-h zO=Z80IIUqFl;h06HGN0=hk6;YJ?1e31-l6eDa*r3Bt;AnDd63dP=Z$b(LUWl6 za*+2x9ut$G3Jksd6+tQesl!oijTR_x7_0=>W3Ybc zV>mPhhdE}8M&r=v%FJtZ{{zqxqvE2Oe+~TW(C0>K!1})z7;!Wzoe@q;`fKJ1_S0u- O26(!WTpzhmxc>%v6zW9) literal 0 HcmV?d00001 diff --git a/sprites/s_node_3d_set_material/s_node_3d_set_material.yy b/sprites/s_node_3d_set_material/s_node_3d_set_material.yy new file mode 100644 index 000000000..4d0a576b8 --- /dev/null +++ b/sprites/s_node_3d_set_material/s_node_3d_set_material.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_3d_set_material", + "bbox_bottom": 61, + "bbox_left": 6, + "bbox_right": 57, + "bbox_top": 2, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"c983d974-a1e0-4657-b9ac-dc2a61853066",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"b84ffdf9-7817-4097-abb0-2f1a97dd02bc","blendMode":0,"displayName":"default","isLocked":false,"opacity":100.0,"visible":true,}, + ], + "nineSlice": null, + "origin": 4, + "parent": { + "name": "3D", + "path": "folders/nodes/icons/3D.yy", + }, + "preMultiplyAlpha": false, + "sequence": { + "resourceType": "GMSequence", + "resourceVersion": "1.4", + "name": "s_node_3d_set_material", + "autoRecord": true, + "backdropHeight": 768, + "backdropImageOpacity": 0.5, + "backdropImagePath": "", + "backdropWidth": 1366, + "backdropXOffset": 0.0, + "backdropYOffset": 0.0, + "events": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "eventStubScript": null, + "eventToFunction": {}, + "length": 1.0, + "lockOrigin": false, + "moments": {"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[],}, + "playback": 1, + "playbackSpeed": 30.0, + "playbackSpeedType": 0, + "showBackdrop": true, + "showBackdropImage": false, + "timeUnits": 1, + "tracks": [ + {"resourceType":"GMSpriteFramesTrack","resourceVersion":"1.0","name":"frames","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"resourceType":"KeyframeStore","resourceVersion":"1.0","Keyframes":[ + {"resourceType":"Keyframe","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"c983d974-a1e0-4657-b9ac-dc2a61853066","path":"sprites/s_node_3d_set_material/s_node_3d_set_material.yy",},},},"Disabled":false,"id":"b89afaa1-c21f-4174-894f-7679efaf7620","IsCreationKey":false,"Key":0.0,"Length":1.0,"Stretch":false,}, + ],},"modifiers":[],"spriteId":null,"trackColour":0,"tracks":[],"traits":0,}, + ], + "visibleRange": null, + "volume": 1.0, + "xorigin": 32, + "yorigin": 32, + }, + "swatchColours": null, + "swfPrecision": 2.525, + "textureGroupId": { + "name": "Default", + "path": "texturegroups/Default", + }, + "type": 0, + "VTile": false, + "width": 64, +} \ No newline at end of file