From 78b4da0c3936b35a9ab46d637aced80c4fa2f3ea Mon Sep 17 00:00:00 2001 From: Tanasart <22589759+Ttanasart-pt@users.noreply.github.com> Date: Thu, 24 Aug 2023 12:43:03 +0200 Subject: [PATCH] 3D object now use material --- PixelComposer.resource_order | 7 ++ PixelComposer.yyp | 7 ++ scripts/d3d_object/d3d_object.gml | 2 +- .../node_3d_mesh_cone/node_3d_mesh_cone.gml | 12 +-- .../node_3d_mesh_cube/node_3d_mesh_cube.gml | 52 ++++++------ .../node_3d_mesh_cylinder.gml | 16 ++-- .../node_3d_mesh_extrude.gml | 7 +- .../node_3d_mesh_icosphere.gml | 8 +- scripts/node_3d_mesh_obj/node_3d_mesh_obj.gml | 12 +-- .../node_3d_mesh_plane/node_3d_mesh_plane.gml | 8 +- scripts/node_registry/node_registry.gml | 26 +++--- shaders/sh_d3d_default/sh_d3d_default.fsh | 4 +- .../453d1f44-0232-4468-9a89-f2e29c803c96.png | Bin 0 -> 2421 bytes .../fdd1c445-15ed-490b-8cbf-4dec3f897978.png | Bin 0 -> 2421 bytes sprites/s_node_3d_camera/s_node_3d_camera.yy | 74 ++++++++++++++++++ .../0ba42020-7546-4263-b4b1-40240a51f527.png | Bin 0 -> 1415 bytes .../3e3b086d-014e-465b-aa5c-88622dddd1c3.png | Bin 0 -> 1415 bytes .../s_node_3d_light_directi.yy | 74 ++++++++++++++++++ .../39d1d3de-14d9-425f-8c5c-85e9f872de3f.png | Bin 0 -> 1401 bytes .../9340a932-7e5c-41e6-a73c-096118293d2f.png | Bin 0 -> 1401 bytes .../s_node_3d_light_point.yy | 74 ++++++++++++++++++ .../05029973-4048-4752-9a25-c50c8d3aad69.png | Bin 0 -> 1552 bytes .../7903cc5e-b815-4dda-815c-a838dd455263.png | Bin 0 -> 1552 bytes .../s_node_3d_meterial/s_node_3d_meterial.yy | 74 ++++++++++++++++++ .../6129b2b3-dfab-4324-8109-9f988ecc601f.png | Bin 0 -> 1927 bytes .../f99aed39-a7f8-4b03-b892-358b336626ac.png | Bin 0 -> 1927 bytes sprites/s_node_3d_scene/s_node_3d_scene.yy | 74 ++++++++++++++++++ .../3c3a032c-1fd3-48ed-b521-f8ff7e7a9264.png | Bin 0 -> 2791 bytes .../edf41f62-1f0e-4c73-9dc3-05c6e8bb0a97.png | Bin 0 -> 2791 bytes .../s_node_3d_sphere_ico.yy | 74 ++++++++++++++++++ .../36dc80df-1de4-48bf-912d-644782c7afaa.png | Bin 0 -> 2397 bytes .../0217769b-c275-4284-84ca-cbeadc8deec4.png | Bin 0 -> 2397 bytes .../s_node_3d_sphere_uv.yy | 74 ++++++++++++++++++ 33 files changed, 605 insertions(+), 74 deletions(-) create mode 100644 sprites/s_node_3d_camera/453d1f44-0232-4468-9a89-f2e29c803c96.png create mode 100644 sprites/s_node_3d_camera/layers/453d1f44-0232-4468-9a89-f2e29c803c96/fdd1c445-15ed-490b-8cbf-4dec3f897978.png create mode 100644 sprites/s_node_3d_camera/s_node_3d_camera.yy create mode 100644 sprites/s_node_3d_light_directi/0ba42020-7546-4263-b4b1-40240a51f527.png create mode 100644 sprites/s_node_3d_light_directi/layers/0ba42020-7546-4263-b4b1-40240a51f527/3e3b086d-014e-465b-aa5c-88622dddd1c3.png create mode 100644 sprites/s_node_3d_light_directi/s_node_3d_light_directi.yy create mode 100644 sprites/s_node_3d_light_point/39d1d3de-14d9-425f-8c5c-85e9f872de3f.png create mode 100644 sprites/s_node_3d_light_point/layers/39d1d3de-14d9-425f-8c5c-85e9f872de3f/9340a932-7e5c-41e6-a73c-096118293d2f.png create mode 100644 sprites/s_node_3d_light_point/s_node_3d_light_point.yy create mode 100644 sprites/s_node_3d_meterial/05029973-4048-4752-9a25-c50c8d3aad69.png create mode 100644 sprites/s_node_3d_meterial/layers/05029973-4048-4752-9a25-c50c8d3aad69/7903cc5e-b815-4dda-815c-a838dd455263.png create mode 100644 sprites/s_node_3d_meterial/s_node_3d_meterial.yy create mode 100644 sprites/s_node_3d_scene/6129b2b3-dfab-4324-8109-9f988ecc601f.png create mode 100644 sprites/s_node_3d_scene/layers/6129b2b3-dfab-4324-8109-9f988ecc601f/f99aed39-a7f8-4b03-b892-358b336626ac.png create mode 100644 sprites/s_node_3d_scene/s_node_3d_scene.yy create mode 100644 sprites/s_node_3d_sphere_ico/3c3a032c-1fd3-48ed-b521-f8ff7e7a9264.png create mode 100644 sprites/s_node_3d_sphere_ico/layers/3c3a032c-1fd3-48ed-b521-f8ff7e7a9264/edf41f62-1f0e-4c73-9dc3-05c6e8bb0a97.png create mode 100644 sprites/s_node_3d_sphere_ico/s_node_3d_sphere_ico.yy create mode 100644 sprites/s_node_3d_sphere_uv/36dc80df-1de4-48bf-912d-644782c7afaa.png create mode 100644 sprites/s_node_3d_sphere_uv/layers/36dc80df-1de4-48bf-912d-644782c7afaa/0217769b-c275-4284-84ca-cbeadc8deec4.png create mode 100644 sprites/s_node_3d_sphere_uv/s_node_3d_sphere_uv.yy diff --git a/PixelComposer.resource_order b/PixelComposer.resource_order index e719c1ede..72fa08c66 100644 --- a/PixelComposer.resource_order +++ b/PixelComposer.resource_order @@ -483,6 +483,7 @@ {"name":"fd_draw_surface_to_collision_mask_surface","order":2,"path":"scripts/fd_draw_surface_to_collision_mask_surface/fd_draw_surface_to_collision_mask_surface.yy",}, {"name":"sh_blur_box_contrast","order":3,"path":"shaders/sh_blur_box_contrast/sh_blur_box_contrast.yy",}, {"name":"sh_fd_calculate_pressure_jacobi_glsl","order":8,"path":"shaders/sh_fd_calculate_pressure_jacobi_glsl/sh_fd_calculate_pressure_jacobi_glsl.yy",}, + {"name":"s_node_3d_sphere_ico","order":15,"path":"sprites/s_node_3d_sphere_ico/s_node_3d_sphere_ico.yy",}, {"name":"node_color_from_rgb","order":7,"path":"scripts/node_color_from_rgb/node_color_from_rgb.yy",}, {"name":"node_struct_get","order":1,"path":"scripts/node_struct_get/node_struct_get.yy",}, {"name":"d3d_plane","order":2,"path":"scripts/d3d_plane/d3d_plane.yy",}, @@ -738,6 +739,7 @@ {"name":"s_node_strandSim_render_texture","order":5,"path":"sprites/s_node_strandSim_render_texture/s_node_strandSim_render_texture.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",}, {"name":"spr_gameframe_pixel","order":3,"path":"sprites/spr_gameframe_pixel/spr_gameframe_pixel.yy",}, {"name":"process_functions","order":38,"path":"scripts/process_functions/process_functions.yy",}, {"name":"s_node_radial","order":53,"path":"sprites/s_node_radial/s_node_radial.yy",}, @@ -798,6 +800,7 @@ {"name":"node_VFX_spawner","order":1,"path":"scripts/node_VFX_spawner/node_VFX_spawner.yy",}, {"name":"_draw_defines","order":21,"path":"scripts/_draw_defines/_draw_defines.yy",}, {"name":"sh_color_replace","order":8,"path":"shaders/sh_color_replace/sh_color_replace.yy",}, + {"name":"s_node_3d_meterial","order":12,"path":"sprites/s_node_3d_meterial/s_node_3d_meterial.yy",}, {"name":"__surface","order":8,"path":"scripts/__surface/__surface.yy",}, {"name":"clipboard","order":9,"path":"extensions/clipboard/clipboard.yy",}, {"name":"__node_3d_light","order":1,"path":"scripts/__node_3d_light/__node_3d_light.yy",}, @@ -966,6 +969,7 @@ {"name":"o_dialog_preview_snap","order":4,"path":"objects/o_dialog_preview_snap/o_dialog_preview_snap.yy",}, {"name":"sh_blend_min","order":9,"path":"shaders/sh_blend_min/sh_blend_min.yy",}, {"name":"d3d_gizmo_circle_z","order":4,"path":"scripts/d3d_gizmo_circle_z/d3d_gizmo_circle_z.yy",}, + {"name":"s_node_3d_scene","order":14,"path":"sprites/s_node_3d_scene/s_node_3d_scene.yy",}, {"name":"sh_pb_shade_half","order":5,"path":"shaders/sh_pb_shade_half/sh_pb_shade_half.yy",}, {"name":"node_polar","order":4,"path":"scripts/node_polar/node_polar.yy",}, {"name":"s_node_twirl","order":41,"path":"sprites/s_node_twirl/s_node_twirl.yy",}, @@ -1263,6 +1267,7 @@ {"name":"node_path_map_area","order":1,"path":"scripts/node_path_map_area/node_path_map_area.yy",}, {"name":"node_3d_mesh_icosphere","order":5,"path":"scripts/node_3d_mesh_icosphere/node_3d_mesh_icosphere.yy",}, {"name":"s_node_timeline_preview","order":2,"path":"sprites/s_node_timeline_preview/s_node_timeline_preview.yy",}, + {"name":"s_node_3d_light_point","order":18,"path":"sprites/s_node_3d_light_point/s_node_3d_light_point.yy",}, {"name":"node_csv_file_read","order":9,"path":"scripts/node_csv_file_read/node_csv_file_read.yy",}, {"name":"scrollPane","order":14,"path":"scripts/scrollPane/scrollPane.yy",}, {"name":"node_gradient_extract","order":13,"path":"scripts/node_gradient_extract/node_gradient_extract.yy",}, @@ -1312,6 +1317,7 @@ {"name":"sh_downsample","order":1,"path":"shaders/sh_downsample/sh_downsample.yy",}, {"name":"sh_remove_black","order":33,"path":"shaders/sh_remove_black/sh_remove_black.yy",}, {"name":"path_parser","order":3,"path":"scripts/path_parser/path_parser.yy",}, + {"name":"s_node_3d_camera","order":13,"path":"sprites/s_node_3d_camera/s_node_3d_camera.yy",}, {"name":"node_crop_content","order":14,"path":"scripts/node_crop_content/node_crop_content.yy",}, {"name":"s_node_unicode","order":8,"path":"sprites/s_node_unicode/s_node_unicode.yy",}, {"name":"s_node_color_from_hsv","order":4,"path":"sprites/s_node_color_from_hsv/s_node_color_from_hsv.yy",}, @@ -1355,6 +1361,7 @@ {"name":"node_palette_replacement","order":2,"path":"scripts/node_palette_replacement/node_palette_replacement.yy",}, {"name":"s_node_scatter","order":19,"path":"sprites/s_node_scatter/s_node_scatter.yy",}, {"name":"s_node_bokeh","order":51,"path":"sprites/s_node_bokeh/s_node_bokeh.yy",}, + {"name":"s_node_3d_sphere_uv","order":16,"path":"sprites/s_node_3d_sphere_uv/s_node_3d_sphere_uv.yy",}, {"name":"s_biterator_toggler","order":13,"path":"sprites/s_biterator_toggler/s_biterator_toggler.yy",}, {"name":"sh_vertex_depth_pass","order":2,"path":"shaders/sh_vertex_depth_pass/sh_vertex_depth_pass.yy",}, {"name":"sh_curve","order":3,"path":"shaders/sh_curve/sh_curve.yy",}, diff --git a/PixelComposer.yyp b/PixelComposer.yyp index e67df909a..cd5bef5b0 100644 --- a/PixelComposer.yyp +++ b/PixelComposer.yyp @@ -1040,6 +1040,7 @@ {"id":{"name":"sh_blur_box_contrast","path":"shaders/sh_blur_box_contrast/sh_blur_box_contrast.yy",},}, {"id":{"name":"s_button","path":"sprites/s_button/s_button.yy",},}, {"id":{"name":"sh_fd_calculate_pressure_jacobi_glsl","path":"shaders/sh_fd_calculate_pressure_jacobi_glsl/sh_fd_calculate_pressure_jacobi_glsl.yy",},}, + {"id":{"name":"s_node_3d_sphere_ico","path":"sprites/s_node_3d_sphere_ico/s_node_3d_sphere_ico.yy",},}, {"id":{"name":"node_color_from_rgb","path":"scripts/node_color_from_rgb/node_color_from_rgb.yy",},}, {"id":{"name":"node_struct_get","path":"scripts/node_struct_get/node_struct_get.yy",},}, {"id":{"name":"node_3d_mesh_cube","path":"scripts/node_3d_mesh_cube/node_3d_mesh_cube.yy",},}, @@ -1337,6 +1338,7 @@ {"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",},}, + {"id":{"name":"s_node_3d_light_directi","path":"sprites/s_node_3d_light_directi/s_node_3d_light_directi.yy",},}, {"id":{"name":"spr_gameframe_pixel","path":"sprites/spr_gameframe_pixel/spr_gameframe_pixel.yy",},}, {"id":{"name":"process_functions","path":"scripts/process_functions/process_functions.yy",},}, {"id":{"name":"s_node_radial","path":"sprites/s_node_radial/s_node_radial.yy",},}, @@ -1405,6 +1407,7 @@ {"id":{"name":"s_node_equation","path":"sprites/s_node_equation/s_node_equation.yy",},}, {"id":{"name":"_draw_defines","path":"scripts/_draw_defines/_draw_defines.yy",},}, {"id":{"name":"sh_color_replace","path":"shaders/sh_color_replace/sh_color_replace.yy",},}, + {"id":{"name":"s_node_3d_meterial","path":"sprites/s_node_3d_meterial/s_node_3d_meterial.yy",},}, {"id":{"name":"__surface","path":"scripts/__surface/__surface.yy",},}, {"id":{"name":"clipboard","path":"extensions/clipboard/clipboard.yy",},}, {"id":{"name":"__node_3d_light","path":"scripts/__node_3d_light/__node_3d_light.yy",},}, @@ -1587,6 +1590,7 @@ {"id":{"name":"o_dialog_preview_snap","path":"objects/o_dialog_preview_snap/o_dialog_preview_snap.yy",},}, {"id":{"name":"sh_blend_min","path":"shaders/sh_blend_min/sh_blend_min.yy",},}, {"id":{"name":"d3d_gizmo_circle_z","path":"scripts/d3d_gizmo_circle_z/d3d_gizmo_circle_z.yy",},}, + {"id":{"name":"s_node_3d_scene","path":"sprites/s_node_3d_scene/s_node_3d_scene.yy",},}, {"id":{"name":"sh_pb_shade_half","path":"shaders/sh_pb_shade_half/sh_pb_shade_half.yy",},}, {"id":{"name":"node_polar","path":"scripts/node_polar/node_polar.yy",},}, {"id":{"name":"s_node_twirl","path":"sprites/s_node_twirl/s_node_twirl.yy",},}, @@ -1931,6 +1935,7 @@ {"id":{"name":"node_path_map_area","path":"scripts/node_path_map_area/node_path_map_area.yy",},}, {"id":{"name":"node_3d_mesh_icosphere","path":"scripts/node_3d_mesh_icosphere/node_3d_mesh_icosphere.yy",},}, {"id":{"name":"s_node_timeline_preview","path":"sprites/s_node_timeline_preview/s_node_timeline_preview.yy",},}, + {"id":{"name":"s_node_3d_light_point","path":"sprites/s_node_3d_light_point/s_node_3d_light_point.yy",},}, {"id":{"name":"node_csv_file_read","path":"scripts/node_csv_file_read/node_csv_file_read.yy",},}, {"id":{"name":"scrollPane","path":"scripts/scrollPane/scrollPane.yy",},}, {"id":{"name":"node_gradient_extract","path":"scripts/node_gradient_extract/node_gradient_extract.yy",},}, @@ -1988,6 +1993,7 @@ {"id":{"name":"sh_downsample","path":"shaders/sh_downsample/sh_downsample.yy",},}, {"id":{"name":"sh_remove_black","path":"shaders/sh_remove_black/sh_remove_black.yy",},}, {"id":{"name":"path_parser","path":"scripts/path_parser/path_parser.yy",},}, + {"id":{"name":"s_node_3d_camera","path":"sprites/s_node_3d_camera/s_node_3d_camera.yy",},}, {"id":{"name":"node_crop_content","path":"scripts/node_crop_content/node_crop_content.yy",},}, {"id":{"name":"s_node_unicode","path":"sprites/s_node_unicode/s_node_unicode.yy",},}, {"id":{"name":"s_node_color_from_hsv","path":"sprites/s_node_color_from_hsv/s_node_color_from_hsv.yy",},}, @@ -2037,6 +2043,7 @@ {"id":{"name":"node_palette_replacement","path":"scripts/node_palette_replacement/node_palette_replacement.yy",},}, {"id":{"name":"s_node_scatter","path":"sprites/s_node_scatter/s_node_scatter.yy",},}, {"id":{"name":"s_node_bokeh","path":"sprites/s_node_bokeh/s_node_bokeh.yy",},}, + {"id":{"name":"s_node_3d_sphere_uv","path":"sprites/s_node_3d_sphere_uv/s_node_3d_sphere_uv.yy",},}, {"id":{"name":"s_biterator_toggler","path":"sprites/s_biterator_toggler/s_biterator_toggler.yy",},}, {"id":{"name":"sh_vertex_depth_pass","path":"shaders/sh_vertex_depth_pass/sh_vertex_depth_pass.yy",},}, {"id":{"name":"sh_curve","path":"shaders/sh_curve/sh_curve.yy",},}, diff --git a/scripts/d3d_object/d3d_object.gml b/scripts/d3d_object/d3d_object.gml index f1fa4ca1d..b02d95852 100644 --- a/scripts/d3d_object/d3d_object.gml +++ b/scripts/d3d_object/d3d_object.gml @@ -158,7 +158,7 @@ function __3dObject() constructor { var sca = matrix_build(0, 0, 0, 0, 0, 0, params.custom_scale.x, params.custom_scale.y, params.custom_scale.z); - + matrix_stack_push(pos); matrix_stack_push(siz); matrix_stack_push(sca); diff --git a/scripts/node_3d_mesh_cone/node_3d_mesh_cone.gml b/scripts/node_3d_mesh_cone/node_3d_mesh_cone.gml index 437fd99d4..a77abf388 100644 --- a/scripts/node_3d_mesh_cone/node_3d_mesh_cone.gml +++ b/scripts/node_3d_mesh_cone/node_3d_mesh_cone.gml @@ -5,27 +5,27 @@ function Node_3D_Mesh_Cone(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _group inputs[| in_mesh + 0] = nodeValue("Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 8 ); - inputs[| in_mesh + 1] = nodeValue("Texture Bottom", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone ); + inputs[| in_mesh + 1] = nodeValue("Material Bottom", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, noone ); - inputs[| in_mesh + 2] = nodeValue("Texture Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone ); + inputs[| in_mesh + 2] = nodeValue("Material Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, noone ); inputs[| in_mesh + 3] = nodeValue("Smooth Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false ); input_display_list = [ __d3d_input_list_mesh, in_mesh + 0, in_mesh + 3, __d3d_input_list_transform, - ["Texture", false], in_mesh + 1, in_mesh + 2, + ["Material", false], in_mesh + 1, in_mesh + 2, ] static processData = function(_output, _data, _output_index, _array_index = 0) { #region var _side = _data[in_mesh + 0]; - var _tex_bot = _data[in_mesh + 1]; - var _tex_sid = _data[in_mesh + 2]; + var _mat_bot = _data[in_mesh + 1]; + var _mat_sid = _data[in_mesh + 2]; var _smt = _data[in_mesh + 3]; var object = getObject(_array_index); object.checkParameter({sides: _side, smooth: _smt}); - object.texture = [ surface_texture(_tex_bot), surface_texture(_tex_sid) ]; + object.materials = [ _mat_bot, _mat_sid ]; setTransform(object, _data); diff --git a/scripts/node_3d_mesh_cube/node_3d_mesh_cube.gml b/scripts/node_3d_mesh_cube/node_3d_mesh_cube.gml index 81592271c..147b83302 100644 --- a/scripts/node_3d_mesh_cube/node_3d_mesh_cube.gml +++ b/scripts/node_3d_mesh_cube/node_3d_mesh_cube.gml @@ -3,57 +3,55 @@ function Node_3D_Mesh_Cube(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _group object_class = noone; - inputs[| in_mesh + 0] = nodeValue("Texture per side", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false ); + inputs[| in_mesh + 0] = nodeValue("Material per side", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false ); - inputs[| in_mesh + 1] = nodeValue("Texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone ); + inputs[| in_mesh + 1] = nodeValue("Material", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, noone ); - inputs[| in_mesh + 2] = nodeValue("Texture Bottom", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone ); + inputs[| in_mesh + 2] = nodeValue("Material Bottom", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, noone ); - inputs[| in_mesh + 3] = nodeValue("Texture Left", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone ); + inputs[| in_mesh + 3] = nodeValue("Material Left", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, noone ); - inputs[| in_mesh + 4] = nodeValue("Texture Right", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone ); + inputs[| in_mesh + 4] = nodeValue("Material Right", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, noone ); - inputs[| in_mesh + 5] = nodeValue("Texture Back", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone ); + inputs[| in_mesh + 5] = nodeValue("Material Back", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, noone ); - inputs[| in_mesh + 6] = nodeValue("Texture Front", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone ); + inputs[| in_mesh + 6] = nodeValue("Material Front", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, noone ); input_display_list = [ __d3d_input_list_mesh, __d3d_input_list_transform, - ["Texture", false], in_mesh + 0, in_mesh + 1, in_mesh + 2, in_mesh + 3, + ["Material", false], in_mesh + 0, in_mesh + 1, in_mesh + 2, in_mesh + 3, in_mesh + 4, in_mesh + 5, in_mesh + 6, ] static step = function() { #region - var _tex_side = inputs[| in_mesh + 0].getValue(); + var _mat_side = inputs[| in_mesh + 0].getValue(); - inputs[| in_mesh + 1].name = _tex_side? "Texture Top" : "Texture"; + inputs[| in_mesh + 1].name = _mat_side? "Material Top" : "Material"; inputs[| in_mesh + 1].setVisible(true, true); - inputs[| in_mesh + 2].setVisible(_tex_side, _tex_side); - inputs[| in_mesh + 3].setVisible(_tex_side, _tex_side); - inputs[| in_mesh + 4].setVisible(_tex_side, _tex_side); - inputs[| in_mesh + 5].setVisible(_tex_side, _tex_side); - inputs[| in_mesh + 6].setVisible(_tex_side, _tex_side); + inputs[| in_mesh + 2].setVisible(_mat_side, _mat_side); + inputs[| in_mesh + 3].setVisible(_mat_side, _mat_side); + inputs[| in_mesh + 4].setVisible(_mat_side, _mat_side); + inputs[| in_mesh + 5].setVisible(_mat_side, _mat_side); + inputs[| in_mesh + 6].setVisible(_mat_side, _mat_side); } #endregion static processData = function(_output, _data, _output_index, _array_index = 0) { #region - var _tex_side = _data[in_mesh + 0]; - var _tex_1 = _data[in_mesh + 1]; - var _tex_2 = _data[in_mesh + 2]; - var _tex_3 = _data[in_mesh + 3]; - var _tex_4 = _data[in_mesh + 4]; - var _tex_5 = _data[in_mesh + 5]; - var _tex_6 = _data[in_mesh + 6]; + var _mat_side = _data[in_mesh + 0]; + var _mat_1 = _data[in_mesh + 1]; + var _mat_2 = _data[in_mesh + 2]; + var _mat_3 = _data[in_mesh + 3]; + var _mat_4 = _data[in_mesh + 4]; + var _mat_5 = _data[in_mesh + 5]; + var _mat_6 = _data[in_mesh + 6]; var object; - if(_tex_side) { + if(_mat_side) { object = getObject(_array_index, __3dCubeFaces); - object.texture = [ surface_texture(_tex_1), surface_texture(_tex_2), - surface_texture(_tex_3), surface_texture(_tex_4), - surface_texture(_tex_5), surface_texture(_tex_6) ]; + object.materials = [ _mat_1, _mat_2, _mat_3, _mat_4, _mat_5, _mat_6 ]; } else { object = getObject(_array_index, __3dCube); - object.texture = [ surface_texture(_tex_1) ]; + object.materials = [ _mat_1 ]; } setTransform(object, _data); diff --git a/scripts/node_3d_mesh_cylinder/node_3d_mesh_cylinder.gml b/scripts/node_3d_mesh_cylinder/node_3d_mesh_cylinder.gml index cddf2b0f8..6209543f4 100644 --- a/scripts/node_3d_mesh_cylinder/node_3d_mesh_cylinder.gml +++ b/scripts/node_3d_mesh_cylinder/node_3d_mesh_cylinder.gml @@ -5,30 +5,30 @@ function Node_3D_Mesh_Cylinder(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _g inputs[| in_mesh + 0] = nodeValue("Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 8 ); - inputs[| in_mesh + 1] = nodeValue("Texture Top", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone ); + inputs[| in_mesh + 1] = nodeValue("Material Top", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, noone ); - inputs[| in_mesh + 2] = nodeValue("Texture Bottom", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone ); + inputs[| in_mesh + 2] = nodeValue("Material Bottom", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, noone ); - inputs[| in_mesh + 3] = nodeValue("Texture Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone ); + inputs[| in_mesh + 3] = nodeValue("Material Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, noone ); inputs[| in_mesh + 4] = nodeValue("Smooth Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false ); input_display_list = [ __d3d_input_list_mesh, in_mesh + 0, in_mesh + 4, __d3d_input_list_transform, - ["Texture", false], in_mesh + 1, in_mesh + 2, in_mesh + 3, + ["Material", false], in_mesh + 1, in_mesh + 2, in_mesh + 3, ] static processData = function(_output, _data, _output_index, _array_index = 0) { #region var _side = _data[in_mesh + 0]; - var _tex_top = _data[in_mesh + 1]; - var _tex_bot = _data[in_mesh + 2]; - var _tex_sid = _data[in_mesh + 3]; + var _mat_top = _data[in_mesh + 1]; + var _mat_bot = _data[in_mesh + 2]; + var _mat_sid = _data[in_mesh + 3]; var _smt = _data[in_mesh + 4]; var object = getObject(_array_index); object.checkParameter({sides: _side, smooth: _smt}); - object.texture = [ surface_texture(_tex_top), surface_texture(_tex_bot), surface_texture(_tex_sid) ]; + object.materials = [ _mat_top, _mat_bot, _mat_sid ]; setTransform(object, _data); diff --git a/scripts/node_3d_mesh_extrude/node_3d_mesh_extrude.gml b/scripts/node_3d_mesh_extrude/node_3d_mesh_extrude.gml index d846051d2..fefc7af34 100644 --- a/scripts/node_3d_mesh_extrude/node_3d_mesh_extrude.gml +++ b/scripts/node_3d_mesh_extrude/node_3d_mesh_extrude.gml @@ -3,7 +3,7 @@ function Node_3D_Mesh_Extrude(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _gr object_class = __3dSurfaceExtrude; - inputs[| in_mesh + 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); + inputs[| in_mesh + 0] = nodeValue("Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, noone); inputs[| in_mesh + 1] = nodeValue("Height map", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); @@ -18,14 +18,15 @@ function Node_3D_Mesh_Extrude(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _gr ] static processData = function(_output, _data, _output_index, _array_index = 0) { #region - var _surf = _data[in_mesh + 0]; + var _mat = _data[in_mesh + 0]; var _hght = _data[in_mesh + 1]; var _smt = _data[in_mesh + 2]; var _updt = _data[in_mesh + 3]; + var _surf = _mat == noone? noone : _mat.surface; var object = getObject(_array_index); object.checkParameter({surface: _surf, height: _hght, smooth: _smt}, _updt); - object.texture = [ surface_texture(_surf) ]; + object.materials = [ _mat ]; setTransform(object, _data); diff --git a/scripts/node_3d_mesh_icosphere/node_3d_mesh_icosphere.gml b/scripts/node_3d_mesh_icosphere/node_3d_mesh_icosphere.gml index fe1c019ee..5a24d5cf3 100644 --- a/scripts/node_3d_mesh_icosphere/node_3d_mesh_icosphere.gml +++ b/scripts/node_3d_mesh_icosphere/node_3d_mesh_icosphere.gml @@ -5,24 +5,24 @@ function Node_3D_Mesh_Sphere_Ico(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, inputs[| in_mesh + 0] = nodeValue("Subdivision", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1 ); - inputs[| in_mesh + 1] = nodeValue("Texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone ); + inputs[| in_mesh + 1] = nodeValue("Material", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, noone ); inputs[| in_mesh + 2] = nodeValue("Smooth Normal", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false ); input_display_list = [ __d3d_input_list_mesh, in_mesh + 0, in_mesh + 2, __d3d_input_list_transform, - ["Texture", false], in_mesh + 1, + ["Material", false], in_mesh + 1, ] static processData = function(_output, _data, _output_index, _array_index = 0) { #region var _sub = _data[in_mesh + 0]; - var _tex = _data[in_mesh + 1]; + var _mat = _data[in_mesh + 1]; var _smt = _data[in_mesh + 2]; var object = getObject(_array_index); object.checkParameter({level: _sub, smooth: _smt}); - object.texture = [ surface_texture(_tex) ]; + object.materials = [ _mat ]; setTransform(object, _data); diff --git a/scripts/node_3d_mesh_obj/node_3d_mesh_obj.gml b/scripts/node_3d_mesh_obj/node_3d_mesh_obj.gml index 2a1baa2b4..95575933c 100644 --- a/scripts/node_3d_mesh_obj/node_3d_mesh_obj.gml +++ b/scripts/node_3d_mesh_obj/node_3d_mesh_obj.gml @@ -35,8 +35,8 @@ function Node_3D_Mesh_Obj(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _group) input_display_list = [ __d3d_input_list_mesh, __d3d_input_list_transform, - ["Object", false], in_mesh + 0, - ["Texture", false], in_mesh + 1, + ["Object", false], in_mesh + 0, + ["Material", false], in_mesh + 1, ] input_fix_len = ds_list_size(inputs); @@ -63,7 +63,7 @@ function Node_3D_Mesh_Obj(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _group) static createMaterial = function(m_index) { #region var index = ds_list_size(inputs); - inputs[| index] = nodeValue(materialNames[m_index] + " Texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone) + inputs[| index] = nodeValue(materialNames[m_index] + " Material", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, noone) .setVisible(true, true); input_display_list[input_display_len + m_index] = index; @@ -140,9 +140,9 @@ function Node_3D_Mesh_Obj(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _group) if(_path != current_path) updateObj(_path); - var textures = []; + var materials = []; for( var i = input_fix_len, n = array_length(_data); i < n; i++ ) - textures[i - input_fix_len] = surface_texture(_data[i]); + materials[i - input_fix_len] = _data[i]; var _object = getObject(_array_index); if(object == noone) @@ -153,7 +153,7 @@ function Node_3D_Mesh_Obj(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _group) _object.NVB = object.NVB; _object.vertex = object.vertex; _object.object_counts = object.object_counts; - _object.texture = textures; + _object.materials = materials; setTransform(_object, _data); return _object; diff --git a/scripts/node_3d_mesh_plane/node_3d_mesh_plane.gml b/scripts/node_3d_mesh_plane/node_3d_mesh_plane.gml index 14925d9fa..e0beddce8 100644 --- a/scripts/node_3d_mesh_plane/node_3d_mesh_plane.gml +++ b/scripts/node_3d_mesh_plane/node_3d_mesh_plane.gml @@ -3,7 +3,7 @@ function Node_3D_Mesh_Plane(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _grou object_class = __3dPlane; - inputs[| in_mesh + 0] = nodeValue("Texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone ); + inputs[| in_mesh + 0] = nodeValue("Material", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, noone ); inputs[| in_mesh + 1] = nodeValue("Normal", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2 ) .setDisplay(VALUE_DISPLAY.enum_button, [ "X", "Y", "Z" ]); @@ -11,16 +11,16 @@ function Node_3D_Mesh_Plane(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _grou input_display_list = [ __d3d_input_list_mesh, in_mesh + 1, __d3d_input_list_transform, - ["Texture", false], in_mesh + 0, + ["Material", false], in_mesh + 0, ] static processData = function(_output, _data, _output_index, _array_index = 0) { #region - var _tex = _data[in_mesh + 0]; + var _mat = _data[in_mesh + 0]; var _axs = _data[in_mesh + 1]; var object = getObject(_array_index); object.checkParameter({normal: _axs}); - object.texture = [ surface_texture(_tex) ]; + object.materials = [ _mat ]; setTransform(object, _data); diff --git a/scripts/node_registry/node_registry.gml b/scripts/node_registry/node_registry.gml index d54b2424b..85bd9aace 100644 --- a/scripts/node_registry/node_registry.gml +++ b/scripts/node_registry/node_registry.gml @@ -367,23 +367,23 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { addNodeObject(d3d, "Sprite Stack", s_node_stack, "Node_Sprite_Stack", [1, Node_Sprite_Stack],, "Create sprite stack either from repeating a single image or stacking different images using array."); ds_list_add(d3d, "3D"); - addNodeObject(d3d, "3D Scene", s_node_3d_cube, "Node_3D_Scene", [1, Node_3D_Scene]); - addNodeObject(d3d, "3D Camera", s_node_3d_cube, "Node_3D_Camera", [1, Node_3D_Camera]); - addNodeObject(d3d, "3D Material", s_node_3d_cube, "Node_3D_Material", [1, Node_3D_Material]); + addNodeObject(d3d, "3D Scene", s_node_3d_scene, "Node_3D_Scene", [1, Node_3D_Scene]); + addNodeObject(d3d, "3D Camera", s_node_3d_camera, "Node_3D_Camera", [1, Node_3D_Camera]); + addNodeObject(d3d, "3D Material", s_node_3d_meterial, "Node_3D_Material", [1, Node_3D_Material]); ds_list_add(d3d, "Mesh"); - addNodeObject(d3d, "3D Object", s_node_3d_obj, "Node_3D_Mesh_Obj", [0, Node_create_3D_Obj],, "Load .obj file from your computer as a 3D object."); - addNodeObject(d3d, "3D Plane", s_node_3d_plane, "Node_3D_Mesh_Plane", [1, Node_3D_Mesh_Plane],, "Put 2D image on a plane in 3D space."); - addNodeObject(d3d, "3D Cube", s_node_3d_cube, "Node_3D_Mesh_Cube", [1, Node_3D_Mesh_Cube]); - addNodeObject(d3d, "3D Cylinder", s_node_3d_cylinder, "Node_3D_Mesh_Cylinder", [1, Node_3D_Mesh_Cylinder]); - addNodeObject(d3d, "3D UV Sphere", s_node_3d_sphere, "Node_3D_Mesh_Sphere_UV", [1, Node_3D_Mesh_Sphere_UV]); - addNodeObject(d3d, "3D Icosphere", s_node_3d_sphere, "Node_3D_Mesh_Sphere_Ico", [1, Node_3D_Mesh_Sphere_Ico]); - addNodeObject(d3d, "3D Cone", s_node_3d_cone, "Node_3D_Mesh_Cone", [1, Node_3D_Mesh_Cone]) - addNodeObject(d3d, "Surface Extrude", s_node_3d_extrude, "Node_3D_Mesh_Extrude", [1, Node_3D_Mesh_Extrude],, "Extrude 2D image into 3D object."); + addNodeObject(d3d, "3D Object", s_node_3d_obj, "Node_3D_Mesh_Obj", [0, Node_create_3D_Obj],, "Load .obj file from your computer as a 3D object."); + addNodeObject(d3d, "3D Plane", s_node_3d_plane, "Node_3D_Mesh_Plane", [1, Node_3D_Mesh_Plane],, "Put 2D image on a plane in 3D space."); + addNodeObject(d3d, "3D Cube", s_node_3d_cube, "Node_3D_Mesh_Cube", [1, Node_3D_Mesh_Cube]); + addNodeObject(d3d, "3D Cylinder", s_node_3d_cylinder, "Node_3D_Mesh_Cylinder", [1, Node_3D_Mesh_Cylinder]); + addNodeObject(d3d, "3D UV Sphere", s_node_3d_sphere_uv, "Node_3D_Mesh_Sphere_UV", [1, Node_3D_Mesh_Sphere_UV]); + addNodeObject(d3d, "3D Icosphere", s_node_3d_sphere_ico, "Node_3D_Mesh_Sphere_Ico", [1, Node_3D_Mesh_Sphere_Ico]); + addNodeObject(d3d, "3D Cone", s_node_3d_cone, "Node_3D_Mesh_Cone", [1, Node_3D_Mesh_Cone]) + addNodeObject(d3d, "Surface Extrude", s_node_3d_extrude, "Node_3D_Mesh_Extrude", [1, Node_3D_Mesh_Extrude],, "Extrude 2D image into 3D object."); ds_list_add(d3d, "Light"); - addNodeObject(d3d, "Directional Light", s_node_3d_cube, "Node_3D_Light_Directional", [1, Node_3D_Light_Directional]); - addNodeObject(d3d, "Point Light", s_node_3d_cube, "Node_3D_Light_Point", [1, Node_3D_Light_Point]); + addNodeObject(d3d, "Directional Light", s_node_3d_light_directi, "Node_3D_Light_Directional", [1, Node_3D_Light_Directional]); + addNodeObject(d3d, "Point Light", s_node_3d_light_point, "Node_3D_Light_Point", [1, Node_3D_Light_Point]); 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/shaders/sh_d3d_default/sh_d3d_default.fsh b/shaders/sh_d3d_default/sh_d3d_default.fsh index 9af3a756e..0512480ea 100644 --- a/shaders/sh_d3d_default/sh_d3d_default.fsh +++ b/shaders/sh_d3d_default/sh_d3d_default.fsh @@ -115,9 +115,9 @@ varying float v_cameraDistance; vec3 viewDir = normalize(viewVec); vec3 refcDir = reflect(-lightDir, normal); - float kD = 1, kS = 0; + float kD = 1., kS = 0.; - if(mat_diffuse + mat_specular != 0) { + if(mat_diffuse + mat_specular != 0.) { kD = mat_diffuse / (mat_diffuse + mat_specular); kS = mat_specular / (mat_diffuse + mat_specular); } diff --git a/sprites/s_node_3d_camera/453d1f44-0232-4468-9a89-f2e29c803c96.png b/sprites/s_node_3d_camera/453d1f44-0232-4468-9a89-f2e29c803c96.png new file mode 100644 index 0000000000000000000000000000000000000000..3b5be2335077b6a1cc4e985bed97cb541a6ede23 GIT binary patch literal 2421 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","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":"453d1f44-0232-4468-9a89-f2e29c803c96","path":"sprites/s_node_3d_camera/s_node_3d_camera.yy",},},},"Disabled":false,"id":"136d2012-2eae-4556-9de0-6b3f5b33b770","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_light_directi/0ba42020-7546-4263-b4b1-40240a51f527.png b/sprites/s_node_3d_light_directi/0ba42020-7546-4263-b4b1-40240a51f527.png new file mode 100644 index 0000000000000000000000000000000000000000..d843a1f28ac379a89940417b8365fce9b30438f3 GIT binary patch literal 1415 zcmZ{kc`zGz6vux#HboZmisS!CPNt!3M-phFRH3|bqis_Upt|Jj-Sqx0sy@63DineTi5yel*}M|nA{8~{Mx ziE8I5Rq~gVK}c&&_=PE{;DV{1t^lOq0bp|g*pjx`ivYwE09XzLfK&p2YRv6U4=d>a z5#;P>2ll=Mx4SYQ0C+q2TppWa+pgizB=v)=EP z!eWjY6a@)VE7Q&=}*#@kyM7+J{5kXPNtf;@O~_(;MzYhx2KNVmh%u ztkE;G<();jSfT=@pfVqZ>zA-CpR6FMt+dS89{MNS!;rZ;1 z+=}!Gz&{cbzlZWu<-DLRZLW{SvbmH3%^vXU&Q7N#EUxr`SU++wZAAyu*czHHUDTO~ zXQ`9?YR*IaQg{7(ja=uX=O}4@jvyTN>i?8m+v*f_@LV^8X4J&61dyVPu2Vr@wkWx;m1 zW$UVT@c#QO7)x?*ovl-O2f3-VLQ>m}v&ed1=fXn`@S~Beirs|Y8-*%*)2h{@VLn?! z{-9CCE~rKY8`@Tw^;Y3sQ}Fn!=iTSaxPh?Kz3)R_RLObIsI#>uPEF?a z6158oWgEsA*`-C|w`JmMX21<6g!n>FoY56BIVJ9;chj|g#%xt)_LvVnza={`U>z}( zC@ki8qEFb`Crxt0^a^oTj-`mYVJXizW}3Fz3+n=8{DU?Lot55^H6B6qPqCS3rl`Sb zy1bFihcg%x;Xr?hdyyqZBxh4RJOlUMt;+cvF=!doUdR-@euz`D`^SN7#l3O6 z^`@vo^a+%&rZX zhNgZ@oGuAeZZP7$sQI|Tae|gW;S#{IErEkFMLbNP%5j3MLg=xeKa=1Df^ACl*iASW zEO~#%sCEC~^g%WvBkJ%v9$2tfpT2$evieOJPot@6ZYW7$$xZ|kfXLeezGH9dR(C>X zq<=|+Y46Jnp)*5C!LgxI0mcMl6Mce(zOkv75rJfEN-{OlB@jpi!mHiQ5B~!g(IMey plfMp>bKR*@Kj!9?4e4Y8gk1Ccjz{%dtuHGgv{a+KiT=M_` literal 0 HcmV?d00001 diff --git a/sprites/s_node_3d_light_directi/layers/0ba42020-7546-4263-b4b1-40240a51f527/3e3b086d-014e-465b-aa5c-88622dddd1c3.png b/sprites/s_node_3d_light_directi/layers/0ba42020-7546-4263-b4b1-40240a51f527/3e3b086d-014e-465b-aa5c-88622dddd1c3.png new file mode 100644 index 0000000000000000000000000000000000000000..d843a1f28ac379a89940417b8365fce9b30438f3 GIT binary patch literal 1415 zcmZ{kc`zGz6vux#HboZmisS!CPNt!3M-phFRH3|bqis_Upt|Jj-Sqx0sy@63DineTi5yel*}M|nA{8~{Mx ziE8I5Rq~gVK}c&&_=PE{;DV{1t^lOq0bp|g*pjx`ivYwE09XzLfK&p2YRv6U4=d>a z5#;P>2ll=Mx4SYQ0C+q2TppWa+pgizB=v)=EP z!eWjY6a@)VE7Q&=}*#@kyM7+J{5kXPNtf;@O~_(;MzYhx2KNVmh%u ztkE;G<();jSfT=@pfVqZ>zA-CpR6FMt+dS89{MNS!;rZ;1 z+=}!Gz&{cbzlZWu<-DLRZLW{SvbmH3%^vXU&Q7N#EUxr`SU++wZAAyu*czHHUDTO~ zXQ`9?YR*IaQg{7(ja=uX=O}4@jvyTN>i?8m+v*f_@LV^8X4J&61dyVPu2Vr@wkWx;m1 zW$UVT@c#QO7)x?*ovl-O2f3-VLQ>m}v&ed1=fXn`@S~Beirs|Y8-*%*)2h{@VLn?! z{-9CCE~rKY8`@Tw^;Y3sQ}Fn!=iTSaxPh?Kz3)R_RLObIsI#>uPEF?a z6158oWgEsA*`-C|w`JmMX21<6g!n>FoY56BIVJ9;chj|g#%xt)_LvVnza={`U>z}( zC@ki8qEFb`Crxt0^a^oTj-`mYVJXizW}3Fz3+n=8{DU?Lot55^H6B6qPqCS3rl`Sb zy1bFihcg%x;Xr?hdyyqZBxh4RJOlUMt;+cvF=!doUdR-@euz`D`^SN7#l3O6 z^`@vo^a+%&rZX zhNgZ@oGuAeZZP7$sQI|Tae|gW;S#{IErEkFMLbNP%5j3MLg=xeKa=1Df^ACl*iASW zEO~#%sCEC~^g%WvBkJ%v9$2tfpT2$evieOJPot@6ZYW7$$xZ|kfXLeezGH9dR(C>X zq<=|+Y46Jnp)*5C!LgxI0mcMl6Mce(zOkv75rJfEN-{OlB@jpi!mHiQ5B~!g(IMey plfMp>bKR*@Kj!9?4e4Y8gk1Ccjz{%dtuHGgv{a+KiT=M_` literal 0 HcmV?d00001 diff --git a/sprites/s_node_3d_light_directi/s_node_3d_light_directi.yy b/sprites/s_node_3d_light_directi/s_node_3d_light_directi.yy new file mode 100644 index 000000000..fe15f5748 --- /dev/null +++ b/sprites/s_node_3d_light_directi/s_node_3d_light_directi.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_3d_light_directi", + "bbox_bottom": 58, + "bbox_left": 3, + "bbox_right": 60, + "bbox_top": 2, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"0ba42020-7546-4263-b4b1-40240a51f527",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"3e3b086d-014e-465b-aa5c-88622dddd1c3","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_light_directi", + "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":"0ba42020-7546-4263-b4b1-40240a51f527","path":"sprites/s_node_3d_light_directi/s_node_3d_light_directi.yy",},},},"Disabled":false,"id":"e2219d6a-b5a4-41f7-bbc9-9b3893ea55da","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_light_point/39d1d3de-14d9-425f-8c5c-85e9f872de3f.png b/sprites/s_node_3d_light_point/39d1d3de-14d9-425f-8c5c-85e9f872de3f.png new file mode 100644 index 0000000000000000000000000000000000000000..43014733cae18141e320133464c4d6fa74e140f0 GIT binary patch literal 1401 zcmZ{keKga19LK+g)y0~0BM&io$a6nSVG%;vHCpma-Q=O8u`P{S$cj9KinLj%2{#p& zJf!lp5S2AU(RFO*Vay#jM6~L5*FX21d+zCc&gb(!=lwaa^ZDoV`DEd}4o)F!>YP&sg4r)=|^KajYD7_IMOQ2=H|Y@VX(&lTMQEHNRE+b+41tlM_-c z&xJ5sO?i6=sAGfu&nSXg*sZ=>8P)}B2HQX%eWqDXXe^dBCP1EKOk`Sj0$mkCc1G}xAx4^r|QI7hk@O5_Y!s?VCDS~OOIVEry) zg2P%x#|}1b({7l0WwF40TxCnyfZ*ZB_e$@8Uq1a(nYVK4BB6hm1;7UX^_&Jnc13bR z*@-8`()k!%?ued+Bil~vy{M>#PJ_5^_y^+|{Bj_;pl8`FSvCw8Ae*uJD7dYz!yTIW z%cqUI4vV>L8+)Db#Gs5)tHVrTAXB>h4f!+Eqi#`mqf(k>p#nPn#>3SmF+wXdjVq>seQk zg@pOo)J1LNWL}&0;C{~tv0?#rPwxWYG$asb1B48?-YmBJrUzqJnL#|v`L}lBn^!!N z_tk1MNKF?rTX#!mRXGd@&zXOYI+a94PF6d(4TWTTds9X>c<#2H{Klh{BZf`q@RGx` zIYw_T*)3A{&KZZhW>!5OwG9m$;nE~m(4QXw`z{$rnqcnlnnM6T52Spb$T_?S~W8@6&0E&4G$s+ zI@j!{5 z2gSkJt7HRg?>@BxQ!@)`d1qq|(>R(*?V^%YldQ0oVzT~h3wJ@;3fs#2FyVh&4|lf4 zzVA-9a=W)i6ZalLm%P)~J=u!LG+8q;4akqjFs9M!g%4A9Qbw`dOiCDLI(Cutzk4S1 ze&B;z)lLHS%D#TJ(vZ^TRk?3+rX=(q#XP^SvQK10aSxUzlf-n#?@O5?hKR_%gB07rtW1x(6&_f28{5ydX9UFO?5*ADTF|*uA RWXKqRb@z7rec!Q*{{UNjb+-Tj literal 0 HcmV?d00001 diff --git a/sprites/s_node_3d_light_point/layers/39d1d3de-14d9-425f-8c5c-85e9f872de3f/9340a932-7e5c-41e6-a73c-096118293d2f.png b/sprites/s_node_3d_light_point/layers/39d1d3de-14d9-425f-8c5c-85e9f872de3f/9340a932-7e5c-41e6-a73c-096118293d2f.png new file mode 100644 index 0000000000000000000000000000000000000000..43014733cae18141e320133464c4d6fa74e140f0 GIT binary patch literal 1401 zcmZ{keKga19LK+g)y0~0BM&io$a6nSVG%;vHCpma-Q=O8u`P{S$cj9KinLj%2{#p& zJf!lp5S2AU(RFO*Vay#jM6~L5*FX21d+zCc&gb(!=lwaa^ZDoV`DEd}4o)F!>YP&sg4r)=|^KajYD7_IMOQ2=H|Y@VX(&lTMQEHNRE+b+41tlM_-c z&xJ5sO?i6=sAGfu&nSXg*sZ=>8P)}B2HQX%eWqDXXe^dBCP1EKOk`Sj0$mkCc1G}xAx4^r|QI7hk@O5_Y!s?VCDS~OOIVEry) zg2P%x#|}1b({7l0WwF40TxCnyfZ*ZB_e$@8Uq1a(nYVK4BB6hm1;7UX^_&Jnc13bR z*@-8`()k!%?ued+Bil~vy{M>#PJ_5^_y^+|{Bj_;pl8`FSvCw8Ae*uJD7dYz!yTIW z%cqUI4vV>L8+)Db#Gs5)tHVrTAXB>h4f!+Eqi#`mqf(k>p#nPn#>3SmF+wXdjVq>seQk zg@pOo)J1LNWL}&0;C{~tv0?#rPwxWYG$asb1B48?-YmBJrUzqJnL#|v`L}lBn^!!N z_tk1MNKF?rTX#!mRXGd@&zXOYI+a94PF6d(4TWTTds9X>c<#2H{Klh{BZf`q@RGx` zIYw_T*)3A{&KZZhW>!5OwG9m$;nE~m(4QXw`z{$rnqcnlnnM6T52Spb$T_?S~W8@6&0E&4G$s+ zI@j!{5 z2gSkJt7HRg?>@BxQ!@)`d1qq|(>R(*?V^%YldQ0oVzT~h3wJ@;3fs#2FyVh&4|lf4 zzVA-9a=W)i6ZalLm%P)~J=u!LG+8q;4akqjFs9M!g%4A9Qbw`dOiCDLI(Cutzk4S1 ze&B;z)lLHS%D#TJ(vZ^TRk?3+rX=(q#XP^SvQK10aSxUzlf-n#?@O5?hKR_%gB07rtW1x(6&_f28{5ydX9UFO?5*ADTF|*uA RWXKqRb@z7rec!Q*{{UNjb+-Tj literal 0 HcmV?d00001 diff --git a/sprites/s_node_3d_light_point/s_node_3d_light_point.yy b/sprites/s_node_3d_light_point/s_node_3d_light_point.yy new file mode 100644 index 000000000..6867b620c --- /dev/null +++ b/sprites/s_node_3d_light_point/s_node_3d_light_point.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_3d_light_point", + "bbox_bottom": 61, + "bbox_left": 1, + "bbox_right": 62, + "bbox_top": 1, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"39d1d3de-14d9-425f-8c5c-85e9f872de3f",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"9340a932-7e5c-41e6-a73c-096118293d2f","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_light_point", + "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":"39d1d3de-14d9-425f-8c5c-85e9f872de3f","path":"sprites/s_node_3d_light_point/s_node_3d_light_point.yy",},},},"Disabled":false,"id":"108a744a-aaee-4ae9-ba72-4791f4edf9fc","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_meterial/05029973-4048-4752-9a25-c50c8d3aad69.png b/sprites/s_node_3d_meterial/05029973-4048-4752-9a25-c50c8d3aad69.png new file mode 100644 index 0000000000000000000000000000000000000000..fccd823ce4cc6cf379a9d0e172ae7667f25d3368 GIT binary patch literal 1552 zcmZ{kdpHw%7{`Az_v<3pQcEhgF>}i-p=n!^YmCs$<+xk6DKxEdB-PaEM#R`DVaY9u z<`OkRtCpfks6!#;QBq=O=lpS==ls$0KJV}QKJV}Oyzd|H`@AQ;_uFO#%R20Dvx~xWxw}{g5Yn z;IKgQk8$`F=K+v|60olRM_zp_+CeqI=?NqhIE+Hci{uAKBy3AP-yMfCK0TJ}c!$zps0Ky@!Lk>YF~&bI8D{E(_W?XXvEqx-0m(PJmzii)y7VX_Wk z{G-r(98>ryOZ<_AgFUgH^ONh?jXBqU#!y;j6nu8OH9A`?OHkfybkcu0xqa2yd-7{K zd?0%bJDX!-xOonfzwHlk1oZ5{pUn`ANabj3+6F(ruz{u+P!o?H6WpJ$0GCS+IL%{I zvK(~g&cF(13p!7cVF!;bD}F0CZ|Pj;6Pg5t| z;M*If$3-qjj~ru8?)RvEr82?&4tf&WJsXr*Ok6&<;9!B>j?bBfI(auPR8#6Qy6oo% zL%@4WI<$ddwRBdm5wldXXG*&`)2t4T&Al}Vfxj(jdA##yina(M8Df2^O!wJ!m)42e zxyd=p)Z~Q`&YVG^HZs!~i&>&W5@9`a)BNkQ-M%EB>WMG=mR6*~BhixPi z5WgZzKQPhVS`E-?yMP-3jZ#c9t>%sBT%+;sQ7vly!?qw7?gp|%)OvgMfg{o#^4b`Q4 z(BR}8+MCj43!seGA78AX;#=4LK=rI|4hD@mJl}eN*ct&rEX}WgJDOIo%v{8bn z-P`iPc6Tc40Ot#fT}4id>YN)oRyr>1 z3`3Ihv`G~TA0|G}*}vZ%t0_QjD_$#XWGS=|{L(}an4%*P1}&PF>S}BVriP9tG=2Ui zzW1U)p{3W?u_X0w`=N6QJi|+TZWWPOyz5J6o+MRFmJf6;%YeRfrZz3 zYFS2vpJga#FivAAwzPY#yX#FeZb%y`k@CZC)b?&Xj68{y&!A4 z5|=x(NVM@j=^5}(ccACQ}i-p=n!^YmCs$<+xk6DKxEdB-PaEM#R`DVaY9u z<`OkRtCpfks6!#;QBq=O=lpS==ls$0KJV}QKJV}Oyzd|H`@AQ;_uFO#%R20Dvx~xWxw}{g5Yn z;IKgQk8$`F=K+v|60olRM_zp_+CeqI=?NqhIE+Hci{uAKBy3AP-yMfCK0TJ}c!$zps0Ky@!Lk>YF~&bI8D{E(_W?XXvEqx-0m(PJmzii)y7VX_Wk z{G-r(98>ryOZ<_AgFUgH^ONh?jXBqU#!y;j6nu8OH9A`?OHkfybkcu0xqa2yd-7{K zd?0%bJDX!-xOonfzwHlk1oZ5{pUn`ANabj3+6F(ruz{u+P!o?H6WpJ$0GCS+IL%{I zvK(~g&cF(13p!7cVF!;bD}F0CZ|Pj;6Pg5t| z;M*If$3-qjj~ru8?)RvEr82?&4tf&WJsXr*Ok6&<;9!B>j?bBfI(auPR8#6Qy6oo% zL%@4WI<$ddwRBdm5wldXXG*&`)2t4T&Al}Vfxj(jdA##yina(M8Df2^O!wJ!m)42e zxyd=p)Z~Q`&YVG^HZs!~i&>&W5@9`a)BNkQ-M%EB>WMG=mR6*~BhixPi z5WgZzKQPhVS`E-?yMP-3jZ#c9t>%sBT%+;sQ7vly!?qw7?gp|%)OvgMfg{o#^4b`Q4 z(BR}8+MCj43!seGA78AX;#=4LK=rI|4hD@mJl}eN*ct&rEX}WgJDOIo%v{8bn z-P`iPc6Tc40Ot#fT}4id>YN)oRyr>1 z3`3Ihv`G~TA0|G}*}vZ%t0_QjD_$#XWGS=|{L(}an4%*P1}&PF>S}BVriP9tG=2Ui zzW1U)p{3W?u_X0w`=N6QJi|+TZWWPOyz5J6o+MRFmJf6;%YeRfrZz3 zYFS2vpJga#FivAAwzPY#yX#FeZb%y`k@CZC)b?&Xj68{y&!A4 z5|=x(NVM@j=^5}(ccACQ","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":"05029973-4048-4752-9a25-c50c8d3aad69","path":"sprites/s_node_3d_meterial/s_node_3d_meterial.yy",},},},"Disabled":false,"id":"8587664d-efce-4ed6-a5e0-3fbdfd21cc12","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_scene/6129b2b3-dfab-4324-8109-9f988ecc601f.png b/sprites/s_node_3d_scene/6129b2b3-dfab-4324-8109-9f988ecc601f.png new file mode 100644 index 0000000000000000000000000000000000000000..55ecba10b82d780813202931a32133c2171723d0 GIT binary patch literal 1927 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","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":"6129b2b3-dfab-4324-8109-9f988ecc601f","path":"sprites/s_node_3d_scene/s_node_3d_scene.yy",},},},"Disabled":false,"id":"989dff58-7f2a-4c47-a413-e123a2fbbd6b","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_sphere_ico/3c3a032c-1fd3-48ed-b521-f8ff7e7a9264.png b/sprites/s_node_3d_sphere_ico/3c3a032c-1fd3-48ed-b521-f8ff7e7a9264.png new file mode 100644 index 0000000000000000000000000000000000000000..7e8a6c2bf4e4f1fba58489fb20f854604258c376 GIT binary patch literal 2791 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 G$Nm@9t|{UG literal 0 HcmV?d00001 diff --git a/sprites/s_node_3d_sphere_ico/layers/3c3a032c-1fd3-48ed-b521-f8ff7e7a9264/edf41f62-1f0e-4c73-9dc3-05c6e8bb0a97.png b/sprites/s_node_3d_sphere_ico/layers/3c3a032c-1fd3-48ed-b521-f8ff7e7a9264/edf41f62-1f0e-4c73-9dc3-05c6e8bb0a97.png new file mode 100644 index 0000000000000000000000000000000000000000..7e8a6c2bf4e4f1fba58489fb20f854604258c376 GIT binary patch literal 2791 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 G$Nm@9t|{UG literal 0 HcmV?d00001 diff --git a/sprites/s_node_3d_sphere_ico/s_node_3d_sphere_ico.yy b/sprites/s_node_3d_sphere_ico/s_node_3d_sphere_ico.yy new file mode 100644 index 000000000..5b02dc9ff --- /dev/null +++ b/sprites/s_node_3d_sphere_ico/s_node_3d_sphere_ico.yy @@ -0,0 +1,74 @@ +{ + "resourceType": "GMSprite", + "resourceVersion": "1.0", + "name": "s_node_3d_sphere_ico", + "bbox_bottom": 58, + "bbox_left": 6, + "bbox_right": 57, + "bbox_top": 5, + "bboxMode": 0, + "collisionKind": 1, + "collisionTolerance": 0, + "DynamicTexturePage": false, + "edgeFiltering": false, + "For3D": false, + "frames": [ + {"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"3c3a032c-1fd3-48ed-b521-f8ff7e7a9264",}, + ], + "gridX": 0, + "gridY": 0, + "height": 64, + "HTile": false, + "layers": [ + {"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"edf41f62-1f0e-4c73-9dc3-05c6e8bb0a97","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_sphere_ico", + "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":"3c3a032c-1fd3-48ed-b521-f8ff7e7a9264","path":"sprites/s_node_3d_sphere_ico/s_node_3d_sphere_ico.yy",},},},"Disabled":false,"id":"cf82f5c1-617a-49ab-a363-5332da9244b7","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_sphere_uv/36dc80df-1de4-48bf-912d-644782c7afaa.png b/sprites/s_node_3d_sphere_uv/36dc80df-1de4-48bf-912d-644782c7afaa.png new file mode 100644 index 0000000000000000000000000000000000000000..e60a63f07e29cf1d24d7c5d459c31c7877925c3d GIT binary patch literal 2397 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 kxeFZr-v(;n1","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":"36dc80df-1de4-48bf-912d-644782c7afaa","path":"sprites/s_node_3d_sphere_uv/s_node_3d_sphere_uv.yy",},},},"Disabled":false,"id":"172c36a0-f42f-42aa-9922-94d5081a369e","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