mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-03-03 22:24:48 +01:00
- New transform scene node
- New UV remap node
This commit is contained in:
parent
f1a4f09fdd
commit
19133ca97f
26 changed files with 581 additions and 71 deletions
|
@ -307,6 +307,7 @@
|
||||||
{"name":"s_node_loop_input","order":14,"path":"sprites/s_node_loop_input/s_node_loop_input.yy",},
|
{"name":"s_node_loop_input","order":14,"path":"sprites/s_node_loop_input/s_node_loop_input.yy",},
|
||||||
{"name":"node_strand_length_adjust","order":11,"path":"scripts/node_strand_length_adjust/node_strand_length_adjust.yy",},
|
{"name":"node_strand_length_adjust","order":11,"path":"scripts/node_strand_length_adjust/node_strand_length_adjust.yy",},
|
||||||
{"name":"node_blinker","order":17,"path":"scripts/node_blinker/node_blinker.yy",},
|
{"name":"node_blinker","order":17,"path":"scripts/node_blinker/node_blinker.yy",},
|
||||||
|
{"name":"s_node_3d_transform_scene","order":22,"path":"sprites/s_node_3d_transform_scene/s_node_3d_transform_scene.yy",},
|
||||||
{"name":"fd_rectangle_add_material_surface","order":25,"path":"scripts/fd_rectangle_add_material_surface/fd_rectangle_add_material_surface.yy",},
|
{"name":"fd_rectangle_add_material_surface","order":25,"path":"scripts/fd_rectangle_add_material_surface/fd_rectangle_add_material_surface.yy",},
|
||||||
{"name":"perlin_noise","order":5,"path":"scripts/perlin_noise/perlin_noise.yy",},
|
{"name":"perlin_noise","order":5,"path":"scripts/perlin_noise/perlin_noise.yy",},
|
||||||
{"name":"fd_rectangle_replace_material","order":14,"path":"scripts/fd_rectangle_replace_material/fd_rectangle_replace_material.yy",},
|
{"name":"fd_rectangle_replace_material","order":14,"path":"scripts/fd_rectangle_replace_material/fd_rectangle_replace_material.yy",},
|
||||||
|
@ -512,6 +513,7 @@
|
||||||
{"name":"text_file","order":5,"path":"scripts/text_file/text_file.yy",},
|
{"name":"text_file","order":5,"path":"scripts/text_file/text_file.yy",},
|
||||||
{"name":"node_armature_pose","order":3,"path":"scripts/node_armature_pose/node_armature_pose.yy",},
|
{"name":"node_armature_pose","order":3,"path":"scripts/node_armature_pose/node_armature_pose.yy",},
|
||||||
{"name":"s_node_pb_draw_diamond","order":29,"path":"sprites/s_node_pb_draw_diamond/s_node_pb_draw_diamond.yy",},
|
{"name":"s_node_pb_draw_diamond","order":29,"path":"sprites/s_node_pb_draw_diamond/s_node_pb_draw_diamond.yy",},
|
||||||
|
{"name":"node_3d_transform","order":4,"path":"scripts/node_3d_transform/node_3d_transform.yy",},
|
||||||
{"name":"sh_trail_filler_pass1","order":49,"path":"shaders/sh_trail_filler_pass1/sh_trail_filler_pass1.yy",},
|
{"name":"sh_trail_filler_pass1","order":49,"path":"shaders/sh_trail_filler_pass1/sh_trail_filler_pass1.yy",},
|
||||||
{"name":"s_node_vfx_wind","order":3,"path":"sprites/s_node_vfx_wind/s_node_vfx_wind.yy",},
|
{"name":"s_node_vfx_wind","order":3,"path":"sprites/s_node_vfx_wind/s_node_vfx_wind.yy",},
|
||||||
{"name":"s_node_pb_fx_strip","order":26,"path":"sprites/s_node_pb_fx_strip/s_node_pb_fx_strip.yy",},
|
{"name":"s_node_pb_fx_strip","order":26,"path":"sprites/s_node_pb_fx_strip/s_node_pb_fx_strip.yy",},
|
||||||
|
@ -968,6 +970,7 @@
|
||||||
{"name":"fd_rectangle_get_velocity_surface","order":24,"path":"scripts/fd_rectangle_get_velocity_surface/fd_rectangle_get_velocity_surface.yy",},
|
{"name":"fd_rectangle_get_velocity_surface","order":24,"path":"scripts/fd_rectangle_get_velocity_surface/fd_rectangle_get_velocity_surface.yy",},
|
||||||
{"name":"s_node_text_char_get","order":2,"path":"sprites/s_node_text_char_get/s_node_text_char_get.yy",},
|
{"name":"s_node_text_char_get","order":2,"path":"sprites/s_node_text_char_get/s_node_text_char_get.yy",},
|
||||||
{"name":"o_dialog_group_output_order","order":4,"path":"objects/o_dialog_group_output_order/o_dialog_group_output_order.yy",},
|
{"name":"o_dialog_group_output_order","order":4,"path":"objects/o_dialog_group_output_order/o_dialog_group_output_order.yy",},
|
||||||
|
{"name":"node_3d_uv_remap","order":5,"path":"scripts/node_3d_uv_remap/node_3d_uv_remap.yy",},
|
||||||
{"name":"fd_rectangle_get_initial_value_pressure","order":7,"path":"scripts/fd_rectangle_get_initial_value_pressure/fd_rectangle_get_initial_value_pressure.yy",},
|
{"name":"fd_rectangle_get_initial_value_pressure","order":7,"path":"scripts/fd_rectangle_get_initial_value_pressure/fd_rectangle_get_initial_value_pressure.yy",},
|
||||||
{"name":"node_timeline_preview","order":2,"path":"scripts/node_timeline_preview/node_timeline_preview.yy",},
|
{"name":"node_timeline_preview","order":2,"path":"scripts/node_timeline_preview/node_timeline_preview.yy",},
|
||||||
{"name":"__polygon","order":2,"path":"scripts/__polygon/__polygon.yy",},
|
{"name":"__polygon","order":2,"path":"scripts/__polygon/__polygon.yy",},
|
||||||
|
@ -1194,6 +1197,7 @@
|
||||||
{"name":"node_pb_box_mirror","order":10,"path":"scripts/node_pb_box_mirror/node_pb_box_mirror.yy",},
|
{"name":"node_pb_box_mirror","order":10,"path":"scripts/node_pb_box_mirror/node_pb_box_mirror.yy",},
|
||||||
{"name":"s_node_text_length","order":9,"path":"sprites/s_node_text_length/s_node_text_length.yy",},
|
{"name":"s_node_text_length","order":9,"path":"sprites/s_node_text_length/s_node_text_length.yy",},
|
||||||
{"name":"s_node_grid_hex","order":4,"path":"sprites/s_node_grid_hex/s_node_grid_hex.yy",},
|
{"name":"s_node_grid_hex","order":4,"path":"sprites/s_node_grid_hex/s_node_grid_hex.yy",},
|
||||||
|
{"name":"s_node_uv_remap","order":23,"path":"sprites/s_node_uv_remap/s_node_uv_remap.yy",},
|
||||||
{"name":"sh_fd_visualize_colorize_glsl","order":13,"path":"shaders/sh_fd_visualize_colorize_glsl/sh_fd_visualize_colorize_glsl.yy",},
|
{"name":"sh_fd_visualize_colorize_glsl","order":13,"path":"shaders/sh_fd_visualize_colorize_glsl/sh_fd_visualize_colorize_glsl.yy",},
|
||||||
{"name":"node_3d_light_point","order":2,"path":"scripts/node_3d_light_point/node_3d_light_point.yy",},
|
{"name":"node_3d_light_point","order":2,"path":"scripts/node_3d_light_point/node_3d_light_point.yy",},
|
||||||
{"name":"s_node_pb_draw_fill","order":14,"path":"sprites/s_node_pb_draw_fill/s_node_pb_draw_fill.yy",},
|
{"name":"s_node_pb_draw_fill","order":14,"path":"sprites/s_node_pb_draw_fill/s_node_pb_draw_fill.yy",},
|
||||||
|
|
|
@ -879,6 +879,7 @@
|
||||||
{"id":{"name":"s_node_loop_input","path":"sprites/s_node_loop_input/s_node_loop_input.yy",},},
|
{"id":{"name":"s_node_loop_input","path":"sprites/s_node_loop_input/s_node_loop_input.yy",},},
|
||||||
{"id":{"name":"node_strand_length_adjust","path":"scripts/node_strand_length_adjust/node_strand_length_adjust.yy",},},
|
{"id":{"name":"node_strand_length_adjust","path":"scripts/node_strand_length_adjust/node_strand_length_adjust.yy",},},
|
||||||
{"id":{"name":"node_blinker","path":"scripts/node_blinker/node_blinker.yy",},},
|
{"id":{"name":"node_blinker","path":"scripts/node_blinker/node_blinker.yy",},},
|
||||||
|
{"id":{"name":"s_node_3d_transform_scene","path":"sprites/s_node_3d_transform_scene/s_node_3d_transform_scene.yy",},},
|
||||||
{"id":{"name":"fd_rectangle_add_material_surface","path":"scripts/fd_rectangle_add_material_surface/fd_rectangle_add_material_surface.yy",},},
|
{"id":{"name":"fd_rectangle_add_material_surface","path":"scripts/fd_rectangle_add_material_surface/fd_rectangle_add_material_surface.yy",},},
|
||||||
{"id":{"name":"perlin_noise","path":"scripts/perlin_noise/perlin_noise.yy",},},
|
{"id":{"name":"perlin_noise","path":"scripts/perlin_noise/perlin_noise.yy",},},
|
||||||
{"id":{"name":"fd_rectangle_replace_material","path":"scripts/fd_rectangle_replace_material/fd_rectangle_replace_material.yy",},},
|
{"id":{"name":"fd_rectangle_replace_material","path":"scripts/fd_rectangle_replace_material/fd_rectangle_replace_material.yy",},},
|
||||||
|
@ -1114,6 +1115,7 @@
|
||||||
{"id":{"name":"text_file","path":"scripts/text_file/text_file.yy",},},
|
{"id":{"name":"text_file","path":"scripts/text_file/text_file.yy",},},
|
||||||
{"id":{"name":"node_armature_pose","path":"scripts/node_armature_pose/node_armature_pose.yy",},},
|
{"id":{"name":"node_armature_pose","path":"scripts/node_armature_pose/node_armature_pose.yy",},},
|
||||||
{"id":{"name":"s_node_pb_draw_diamond","path":"sprites/s_node_pb_draw_diamond/s_node_pb_draw_diamond.yy",},},
|
{"id":{"name":"s_node_pb_draw_diamond","path":"sprites/s_node_pb_draw_diamond/s_node_pb_draw_diamond.yy",},},
|
||||||
|
{"id":{"name":"node_3d_transform","path":"scripts/node_3d_transform/node_3d_transform.yy",},},
|
||||||
{"id":{"name":"sh_trail_filler_pass1","path":"shaders/sh_trail_filler_pass1/sh_trail_filler_pass1.yy",},},
|
{"id":{"name":"sh_trail_filler_pass1","path":"shaders/sh_trail_filler_pass1/sh_trail_filler_pass1.yy",},},
|
||||||
{"id":{"name":"s_node_vfx_wind","path":"sprites/s_node_vfx_wind/s_node_vfx_wind.yy",},},
|
{"id":{"name":"s_node_vfx_wind","path":"sprites/s_node_vfx_wind/s_node_vfx_wind.yy",},},
|
||||||
{"id":{"name":"s_node_pb_fx_strip","path":"sprites/s_node_pb_fx_strip/s_node_pb_fx_strip.yy",},},
|
{"id":{"name":"s_node_pb_fx_strip","path":"sprites/s_node_pb_fx_strip/s_node_pb_fx_strip.yy",},},
|
||||||
|
@ -1639,6 +1641,7 @@
|
||||||
{"id":{"name":"fd_rectangle_get_velocity_surface","path":"scripts/fd_rectangle_get_velocity_surface/fd_rectangle_get_velocity_surface.yy",},},
|
{"id":{"name":"fd_rectangle_get_velocity_surface","path":"scripts/fd_rectangle_get_velocity_surface/fd_rectangle_get_velocity_surface.yy",},},
|
||||||
{"id":{"name":"s_node_text_char_get","path":"sprites/s_node_text_char_get/s_node_text_char_get.yy",},},
|
{"id":{"name":"s_node_text_char_get","path":"sprites/s_node_text_char_get/s_node_text_char_get.yy",},},
|
||||||
{"id":{"name":"o_dialog_group_output_order","path":"objects/o_dialog_group_output_order/o_dialog_group_output_order.yy",},},
|
{"id":{"name":"o_dialog_group_output_order","path":"objects/o_dialog_group_output_order/o_dialog_group_output_order.yy",},},
|
||||||
|
{"id":{"name":"node_3d_uv_remap","path":"scripts/node_3d_uv_remap/node_3d_uv_remap.yy",},},
|
||||||
{"id":{"name":"fd_rectangle_get_initial_value_pressure","path":"scripts/fd_rectangle_get_initial_value_pressure/fd_rectangle_get_initial_value_pressure.yy",},},
|
{"id":{"name":"fd_rectangle_get_initial_value_pressure","path":"scripts/fd_rectangle_get_initial_value_pressure/fd_rectangle_get_initial_value_pressure.yy",},},
|
||||||
{"id":{"name":"node_timeline_preview","path":"scripts/node_timeline_preview/node_timeline_preview.yy",},},
|
{"id":{"name":"node_timeline_preview","path":"scripts/node_timeline_preview/node_timeline_preview.yy",},},
|
||||||
{"id":{"name":"__polygon","path":"scripts/__polygon/__polygon.yy",},},
|
{"id":{"name":"__polygon","path":"scripts/__polygon/__polygon.yy",},},
|
||||||
|
@ -1892,6 +1895,7 @@
|
||||||
{"id":{"name":"node_pb_box_mirror","path":"scripts/node_pb_box_mirror/node_pb_box_mirror.yy",},},
|
{"id":{"name":"node_pb_box_mirror","path":"scripts/node_pb_box_mirror/node_pb_box_mirror.yy",},},
|
||||||
{"id":{"name":"s_node_text_length","path":"sprites/s_node_text_length/s_node_text_length.yy",},},
|
{"id":{"name":"s_node_text_length","path":"sprites/s_node_text_length/s_node_text_length.yy",},},
|
||||||
{"id":{"name":"s_node_grid_hex","path":"sprites/s_node_grid_hex/s_node_grid_hex.yy",},},
|
{"id":{"name":"s_node_grid_hex","path":"sprites/s_node_grid_hex/s_node_grid_hex.yy",},},
|
||||||
|
{"id":{"name":"s_node_uv_remap","path":"sprites/s_node_uv_remap/s_node_uv_remap.yy",},},
|
||||||
{"id":{"name":"sh_fd_visualize_colorize_glsl","path":"shaders/sh_fd_visualize_colorize_glsl/sh_fd_visualize_colorize_glsl.yy",},},
|
{"id":{"name":"sh_fd_visualize_colorize_glsl","path":"shaders/sh_fd_visualize_colorize_glsl/sh_fd_visualize_colorize_glsl.yy",},},
|
||||||
{"id":{"name":"node_3d_light_point","path":"scripts/node_3d_light_point/node_3d_light_point.yy",},},
|
{"id":{"name":"node_3d_light_point","path":"scripts/node_3d_light_point/node_3d_light_point.yy",},},
|
||||||
{"id":{"name":"s_node_pb_draw_fill","path":"sprites/s_node_pb_draw_fill/s_node_pb_draw_fill.yy",},},
|
{"id":{"name":"s_node_pb_draw_fill","path":"sprites/s_node_pb_draw_fill/s_node_pb_draw_fill.yy",},},
|
||||||
|
|
|
@ -17,7 +17,7 @@ event_inherited();
|
||||||
destroy_on_escape = false;
|
destroy_on_escape = false;
|
||||||
destroy_on_click_out = false;
|
destroy_on_click_out = false;
|
||||||
|
|
||||||
function activate(textbox) {
|
function activate(textbox) { return;
|
||||||
INLINE
|
INLINE
|
||||||
self.textbox = textbox;
|
self.textbox = textbox;
|
||||||
self.selecting = 0;
|
self.selecting = 0;
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
prompt = "";
|
prompt = "";
|
||||||
index = 0;
|
index = 0;
|
||||||
|
|
||||||
function activate(textbox) {
|
function activate(textbox) { return;
|
||||||
INLINE
|
INLINE
|
||||||
self.textbox = textbox;
|
self.textbox = textbox;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,4 +8,32 @@ function Node_3D_Modifier(_x, _y, _group = noone) : Node_3D(_x, _y, _group) cons
|
||||||
|
|
||||||
outputs[| 0] = nodeValue("Mesh", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3Mesh, noone);
|
outputs[| 0] = nodeValue("Mesh", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3Mesh, noone);
|
||||||
|
|
||||||
|
static modify_object = function(_object, _data, _matrix) { #region
|
||||||
|
return _object;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
static modify_group = function(_group, _data, _matrix) { #region
|
||||||
|
var _gr = new __3dGroup();
|
||||||
|
|
||||||
|
_gr.transform = _group.transform.clone();
|
||||||
|
_gr.transform.submitMatrix();
|
||||||
|
_gr.transform.clearMatrix();
|
||||||
|
_matrix = _matrix.Mul(_gr.transform.matrix);
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(_group.objects); i < n; i++ )
|
||||||
|
_gr.objects[i] = modify(_group.objects[i], _data, _matrix);
|
||||||
|
|
||||||
|
return _gr;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
static modify = function(_object, _data, _matrix = new BBMOD_Matrix()) { #region
|
||||||
|
if(is_instanceof(_object, __3dObject)) return modify_object(_object, _data, _matrix);
|
||||||
|
if(is_instanceof(_object, __3dGroup)) return modify_group(_object, _data, _matrix);
|
||||||
|
|
||||||
|
return noone;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
static processData = function(_output, _data, _output_index, _array_index = 0) { #region
|
||||||
|
return modify(_data[0], _data);
|
||||||
|
} #endregion
|
||||||
}
|
}
|
|
@ -1,10 +1,19 @@
|
||||||
function __3dGizmoPlane(radius = 0.5, color = c_white, alpha = 1) : __3dGizmo() constructor {
|
function __3dGizmoPlane(radius = 0.5, color = c_white, alpha = 1) : __3dGizmo() constructor {
|
||||||
|
object_counts = 2;
|
||||||
|
|
||||||
vertex = [
|
vertex = [
|
||||||
[
|
[
|
||||||
new __vertex( -radius, -radius, 0, color, alpha ),
|
new __vertex( -radius, -radius, 0, color, alpha ),
|
||||||
new __vertex( -radius, radius, 0, color, alpha ),
|
new __vertex( -radius, radius, 0, color, alpha ),
|
||||||
|
|
||||||
|
new __vertex( -radius, radius, 0, color, alpha ),
|
||||||
|
new __vertex( radius, radius, 0, color, alpha ),
|
||||||
|
|
||||||
new __vertex( radius, radius, 0, color, alpha ),
|
new __vertex( radius, radius, 0, color, alpha ),
|
||||||
new __vertex( radius, -radius, 0, color, alpha ),
|
new __vertex( radius, -radius, 0, color, alpha ),
|
||||||
|
|
||||||
|
new __vertex( radius, -radius, 0, color, alpha ),
|
||||||
|
new __vertex( -radius, -radius, 0, color, alpha ),
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
new __vertex( 0, 0, 0, color, alpha ),
|
new __vertex( 0, 0, 0, color, alpha ),
|
||||||
|
|
|
@ -90,4 +90,16 @@ function __3dGroup() constructor {
|
||||||
for( var i = 0, n = array_length(objects); i < n; i++ )
|
for( var i = 0, n = array_length(objects); i < n; i++ )
|
||||||
callback(objects[i], scene);
|
callback(objects[i], scene);
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
|
static clone = function(vertex = true, cloneBuffer = false) { #region
|
||||||
|
var _new = new __3dGroup();
|
||||||
|
|
||||||
|
_new.transform = transform.clone();
|
||||||
|
_new.objects = array_create(array_length(objects));
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(objects); i < n; i++ )
|
||||||
|
_new.objects[i] = objects[i].clone(vertex, cloneBuffer);
|
||||||
|
|
||||||
|
return _new;
|
||||||
|
} #endregion
|
||||||
}
|
}
|
|
@ -10,6 +10,7 @@
|
||||||
vertex_format_add_texcoord();
|
vertex_format_add_texcoord();
|
||||||
vertex_format_add_color();
|
vertex_format_add_color();
|
||||||
global.VF_POS_NORM_TEX_COL = vertex_format_end();
|
global.VF_POS_NORM_TEX_COL = vertex_format_end();
|
||||||
|
global.VF_POS_NORM_TEX_COL_size = 36;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
function __3dObject() constructor {
|
function __3dObject() constructor {
|
||||||
|
@ -82,7 +83,7 @@ function __3dObject() constructor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
vertex_end(_buffer);
|
vertex_end(_buffer);
|
||||||
vertex_freeze(_buffer);
|
//vertex_freeze(_buffer);
|
||||||
|
|
||||||
return _buffer;
|
return _buffer;
|
||||||
} #endregion
|
} #endregion
|
||||||
|
@ -193,7 +194,7 @@ function __3dObject() constructor {
|
||||||
|
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static clone = function(_vertex = true) { #region
|
static clone = function(_vertex = true, cloneBuffer = false) { #region
|
||||||
var _obj = new __3dObject();
|
var _obj = new __3dObject();
|
||||||
|
|
||||||
if(_vertex) {
|
if(_vertex) {
|
||||||
|
@ -206,6 +207,21 @@ function __3dObject() constructor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(cloneBuffer) {
|
||||||
|
_obj.VB = array_create(array_length(VB));
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(VB); i < n; i++ ) {
|
||||||
|
var _vnum = vertex_get_number(VB[i]);
|
||||||
|
var _buff = buffer_create(1, buffer_grow, 1);
|
||||||
|
buffer_copy_from_vertex_buffer(VB[i], 0, _vnum - 1, _buff, 0);
|
||||||
|
|
||||||
|
_obj.VB[i] = vertex_create_buffer_from_buffer(_buff, VF);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
_obj.VB = VB;
|
||||||
|
}
|
||||||
|
|
||||||
|
_obj.NVB = NVB;
|
||||||
_obj.VF = VF;
|
_obj.VF = VF;
|
||||||
_obj.render_type = render_type;
|
_obj.render_type = render_type;
|
||||||
_obj.custom_shader = custom_shader;
|
_obj.custom_shader = custom_shader;
|
||||||
|
|
|
@ -29,4 +29,29 @@ function __plane(origin, normal) constructor {
|
||||||
var _distance = _dot / point_distance_3d(0, 0, 0, plane_normal[0], plane_normal[1], plane_normal[2]);
|
var _distance = _dot / point_distance_3d(0, 0, 0, plane_normal[0], plane_normal[1], plane_normal[2]);
|
||||||
return _distance;
|
return _distance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function d3d_point_project_plane_uv(plane_origin, plane_normal, point, plane_x_axis, plane_y_axis) {
|
||||||
|
var distance = d3d_point_to_plane(plane_origin, plane_normal, point);
|
||||||
|
var projected_point = [
|
||||||
|
point[0] - plane_normal[0] * distance,
|
||||||
|
point[1] - plane_normal[1] * distance,
|
||||||
|
point[2] - plane_normal[2] * distance
|
||||||
|
];
|
||||||
|
|
||||||
|
var local_x = dot_product_3d(
|
||||||
|
projected_point[0] - plane_origin[0],
|
||||||
|
projected_point[1] - plane_origin[1],
|
||||||
|
projected_point[2] - plane_origin[2],
|
||||||
|
plane_x_axis[0], plane_x_axis[1], plane_x_axis[2]
|
||||||
|
);
|
||||||
|
|
||||||
|
var local_y = dot_product_3d(
|
||||||
|
projected_point[0] - plane_origin[0],
|
||||||
|
projected_point[1] - plane_origin[1],
|
||||||
|
projected_point[2] - plane_origin[2],
|
||||||
|
plane_y_axis[0], plane_y_axis[1], plane_y_axis[2]
|
||||||
|
);
|
||||||
|
|
||||||
|
return [ local_x, local_y ];
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
|
@ -15,34 +15,34 @@ function __3dPlane() : __3dObject() constructor {
|
||||||
switch(normal) {
|
switch(normal) {
|
||||||
case 0 :
|
case 0 :
|
||||||
vertex[0] = [
|
vertex[0] = [
|
||||||
new __vertex(0, -side, -side).setNormal(1, 0, 0).setUV(0, 0),
|
new __vertex(0, -side, -side).setNormal(1, 0, 0).setUV(0, 1),
|
||||||
new __vertex(0, side, side).setNormal(1, 0, 0).setUV(1, 1),
|
new __vertex(0, side, side).setNormal(1, 0, 0).setUV(1, 0),
|
||||||
new __vertex(0, side, -side).setNormal(1, 0, 0).setUV(1, 0),
|
new __vertex(0, side, -side).setNormal(1, 0, 0).setUV(1, 1),
|
||||||
|
|
||||||
new __vertex(0, -side, -side).setNormal(1, 0, 0).setUV(0, 0),
|
new __vertex(0, -side, -side).setNormal(1, 0, 0).setUV(0, 1),
|
||||||
new __vertex(0, -side, side).setNormal(1, 0, 0).setUV(0, 1),
|
new __vertex(0, -side, side).setNormal(1, 0, 0).setUV(0, 0),
|
||||||
new __vertex(0, side, side).setNormal(1, 0, 0).setUV(1, 1),
|
new __vertex(0, side, side).setNormal(1, 0, 0).setUV(1, 0),
|
||||||
];
|
];
|
||||||
break;
|
break;
|
||||||
case 1 :
|
case 1 :
|
||||||
vertex[0] = [
|
vertex[0] = [
|
||||||
new __vertex(-side, 0, -side).setNormal(0, 1, 0).setUV(0, 0),
|
new __vertex(-side, 0, -side).setNormal(0, 1, 0).setUV(1, 1),
|
||||||
new __vertex( side, 0, -side).setNormal(0, 1, 0).setUV(1, 0),
|
new __vertex( side, 0, -side).setNormal(0, 1, 0).setUV(0, 1),
|
||||||
new __vertex( side, 0, side).setNormal(0, 1, 0).setUV(1, 1),
|
new __vertex( side, 0, side).setNormal(0, 1, 0).setUV(0, 0),
|
||||||
|
|
||||||
new __vertex(-side, 0, -side).setNormal(0, 1, 0).setUV(0, 0),
|
new __vertex(-side, 0, -side).setNormal(0, 1, 0).setUV(1, 1),
|
||||||
new __vertex( side, 0, side).setNormal(0, 1, 0).setUV(1, 1),
|
new __vertex( side, 0, side).setNormal(0, 1, 0).setUV(0, 0),
|
||||||
new __vertex(-side, 0, side).setNormal(0, 1, 0).setUV(0, 1),
|
new __vertex(-side, 0, side).setNormal(0, 1, 0).setUV(1, 0),
|
||||||
];
|
];
|
||||||
break;
|
break;
|
||||||
case 2 :
|
case 2 :
|
||||||
vertex[0] = [
|
vertex[0] = [
|
||||||
new __vertex(-side, -side, 0).setNormal(0, 0, 1).setUV(0, 0),
|
new __vertex(-side, -side, 0).setNormal(0, 0, 1).setUV(0, 0),
|
||||||
new __vertex( side, side, 0).setNormal(0, 0, 1).setUV(1, 1),
|
new __vertex( side, side, 0).setNormal(0, 0, 1).setUV(1, 1),
|
||||||
new __vertex( side, -side, 0).setNormal(0, 0, 1).setUV(1, 0),
|
new __vertex( side, -side, 0).setNormal(0, 0, 1).setUV(0, 1),
|
||||||
|
|
||||||
new __vertex(-side, -side, 0).setNormal(0, 0, 1).setUV(0, 0),
|
new __vertex(-side, -side, 0).setNormal(0, 0, 1).setUV(0, 0),
|
||||||
new __vertex(-side, side, 0).setNormal(0, 0, 1).setUV(0, 1),
|
new __vertex(-side, side, 0).setNormal(0, 0, 1).setUV(1, 0),
|
||||||
new __vertex( side, side, 0).setNormal(0, 0, 1).setUV(1, 1),
|
new __vertex( side, side, 0).setNormal(0, 0, 1).setUV(1, 1),
|
||||||
];
|
];
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -6,6 +6,8 @@ function __transform() constructor {
|
||||||
rotation = new BBMOD_Quaternion();
|
rotation = new BBMOD_Quaternion();
|
||||||
scale = new __vec3(1);
|
scale = new __vec3(1);
|
||||||
|
|
||||||
|
matrix = new BBMOD_Matrix();
|
||||||
|
|
||||||
static submitMatrix = function() {
|
static submitMatrix = function() {
|
||||||
if(parent) parent.submitMatrix();
|
if(parent) parent.submitMatrix();
|
||||||
|
|
||||||
|
@ -24,6 +26,11 @@ function __transform() constructor {
|
||||||
matrix_stack_push(rot);
|
matrix_stack_push(rot);
|
||||||
matrix_stack_push(sca);
|
matrix_stack_push(sca);
|
||||||
matrix_stack_push(anc);
|
matrix_stack_push(anc);
|
||||||
|
|
||||||
|
matrix = new BBMOD_Matrix().Mul(new BBMOD_Matrix().FromArray(pos))
|
||||||
|
.Mul(new BBMOD_Matrix().FromArray(rot))
|
||||||
|
.Mul(new BBMOD_Matrix().FromArray(sca))
|
||||||
|
.Mul(new BBMOD_Matrix().FromArray(anc))
|
||||||
}
|
}
|
||||||
|
|
||||||
static clearMatrix = function() {
|
static clearMatrix = function() {
|
||||||
|
|
|
@ -38,6 +38,8 @@ function Node_3D_Repeat(_x, _y, _group = noone) : Node_3D(_x, _y, _group) constr
|
||||||
inputs[| 11] = nodeValue("Scales", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [] )
|
inputs[| 11] = nodeValue("Scales", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [] )
|
||||||
.setArrayDepth(2);
|
.setArrayDepth(2);
|
||||||
|
|
||||||
|
inputs[| 12] = nodeValue("Use Instance", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true )
|
||||||
|
|
||||||
outputs[| 0] = nodeValue("Scene", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3Scene, noone);
|
outputs[| 0] = nodeValue("Scene", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3Scene, noone);
|
||||||
|
|
||||||
input_display_list = [
|
input_display_list = [
|
||||||
|
@ -68,6 +70,7 @@ function Node_3D_Repeat(_x, _y, _group = noone) : Node_3D(_x, _y, _group) constr
|
||||||
var _Apos = _data[ 9];
|
var _Apos = _data[ 9];
|
||||||
var _Arot = _data[10];
|
var _Arot = _data[10];
|
||||||
var _Asca = _data[11];
|
var _Asca = _data[11];
|
||||||
|
var _inst = _data[12];
|
||||||
|
|
||||||
if(_mode == 1 && !is_array(_object)) return noone;
|
if(_mode == 1 && !is_array(_object)) return noone;
|
||||||
var _amo = _mode == 1? array_length(_object) : _data[2];
|
var _amo = _mode == 1? array_length(_object) : _data[2];
|
||||||
|
@ -78,6 +81,8 @@ function Node_3D_Repeat(_x, _y, _group = noone) : Node_3D(_x, _y, _group) constr
|
||||||
var _obj = _mode == 1? _object[i] : _object;
|
var _obj = _mode == 1? _object[i] : _object;
|
||||||
if(_obj == noone) continue;
|
if(_obj == noone) continue;
|
||||||
|
|
||||||
|
//if(!_inst) _obj = _obj.clone(false, true);
|
||||||
|
|
||||||
var _apos = array_safe_get(_Apos, i);
|
var _apos = array_safe_get(_Apos, i);
|
||||||
var _arot = array_safe_get(_Arot, i);
|
var _arot = array_safe_get(_Arot, i);
|
||||||
var _asca = array_safe_get(_Asca, i);
|
var _asca = array_safe_get(_Asca, i);
|
||||||
|
|
92
scripts/node_3d_transform/node_3d_transform.gml
Normal file
92
scripts/node_3d_transform/node_3d_transform.gml
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
function Node_3D_Transform_Scene(_x, _y, _group = noone) : Node_3D(_x, _y, _group) constructor {
|
||||||
|
name = "Transform Scene";
|
||||||
|
|
||||||
|
inputs[| 0] = nodeValue("Scene", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Scene, noone)
|
||||||
|
.setVisible(true, true);
|
||||||
|
|
||||||
|
inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [])
|
||||||
|
.setArrayDepth(2);
|
||||||
|
|
||||||
|
inputs[| 2] = nodeValue("Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [])
|
||||||
|
.setArrayDepth(2);
|
||||||
|
|
||||||
|
inputs[| 3] = nodeValue("Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [])
|
||||||
|
.setArrayDepth(2);
|
||||||
|
|
||||||
|
inputs[| 4] = nodeValue("Positioning type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
||||||
|
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Additive", "Override" ]);
|
||||||
|
|
||||||
|
inputs[| 5] = nodeValue("Rotating type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
||||||
|
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Additive", "Override" ]);
|
||||||
|
|
||||||
|
inputs[| 6] = nodeValue("Scaling type", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
|
||||||
|
.setDisplay(VALUE_DISPLAY.enum_scroll, [ "Additive", "Multiplicative", "Override" ]);
|
||||||
|
|
||||||
|
outputs[| 0] = nodeValue("Scene", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3Scene, noone);
|
||||||
|
|
||||||
|
input_display_list = [ 0,
|
||||||
|
["Transform", false], 1, 2, 3,
|
||||||
|
["Settings", true], 4, 5, 6,
|
||||||
|
];
|
||||||
|
|
||||||
|
static processData = function(_output, _data, _output_index, _array_index = 0) { #region
|
||||||
|
var _scn = _data[0];
|
||||||
|
if(!is_instanceof(_scn, __3dGroup)) return noone;
|
||||||
|
|
||||||
|
var _nscn = _scn.clone(false);
|
||||||
|
|
||||||
|
_temp_data = _data;
|
||||||
|
array_foreach(_nscn.objects, function(_object, _index) {
|
||||||
|
|
||||||
|
var _pos = array_safe_get(_temp_data[1], _index, 0);
|
||||||
|
if(is_array(_pos)) {
|
||||||
|
if(_temp_data[4] == 0) {
|
||||||
|
_object.transform.position.x += _pos[0];
|
||||||
|
_object.transform.position.y += _pos[1];
|
||||||
|
_object.transform.position.z += _pos[2];
|
||||||
|
} else if(_temp_data[4] == 1) {
|
||||||
|
_object.transform.position.x = _pos[0];
|
||||||
|
_object.transform.position.y = _pos[1];
|
||||||
|
_object.transform.position.z = _pos[2];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var _rot = array_safe_get(_temp_data[2], _index, 0);
|
||||||
|
if(is_array(_rot)) {
|
||||||
|
var _rotQ = new BBMOD_Quaternion().FromEuler(_rot[0], _rot[1], _rot[2]);
|
||||||
|
|
||||||
|
if(_temp_data[5] == 0)
|
||||||
|
_object.transform.rotation = _object.transform.rotation.Mul(_rotQ);
|
||||||
|
else if(_temp_data[5] == 1)
|
||||||
|
_object.transform.rotation = _rotQ;
|
||||||
|
}
|
||||||
|
|
||||||
|
var _sca = array_safe_get(_temp_data[3], _index, 0);
|
||||||
|
if(is_array(_sca)) {
|
||||||
|
if(_temp_data[6] == 0) {
|
||||||
|
_object.transform.scale.x += _sca[0];
|
||||||
|
_object.transform.scale.y += _sca[1];
|
||||||
|
_object.transform.scale.z += _sca[2];
|
||||||
|
} else if(_temp_data[6] == 1) {
|
||||||
|
_object.transform.scale.x *= _sca[0];
|
||||||
|
_object.transform.scale.y *= _sca[1];
|
||||||
|
_object.transform.scale.z *= _sca[2];
|
||||||
|
} else if(_temp_data[6] == 2) {
|
||||||
|
_object.transform.scale.x = _sca[0];
|
||||||
|
_object.transform.scale.y = _sca[1];
|
||||||
|
_object.transform.scale.z = _sca[2];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return _nscn;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
static getPreviewObject = function() { #region
|
||||||
|
var _obj = outputs[| 0].getValue();
|
||||||
|
if(is_array(_obj)) _obj = array_safe_get(_obj, preview_index, noone);
|
||||||
|
|
||||||
|
return _obj;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
}
|
11
scripts/node_3d_transform/node_3d_transform.yy
Normal file
11
scripts/node_3d_transform/node_3d_transform.yy
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"resourceType": "GMScript",
|
||||||
|
"resourceVersion": "1.0",
|
||||||
|
"name": "node_3d_transform",
|
||||||
|
"isCompatibility": false,
|
||||||
|
"isDnD": false,
|
||||||
|
"parent": {
|
||||||
|
"name": "d3d modifier",
|
||||||
|
"path": "folders/nodes/data/3D/d3d modifier.yy",
|
||||||
|
},
|
||||||
|
}
|
12
scripts/node_3d_transform/node_counter.yy
Normal file
12
scripts/node_3d_transform/node_counter.yy
Normal file
|
@ -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",
|
||||||
|
}
|
113
scripts/node_3d_uv_remap/node_3d_uv_remap.gml
Normal file
113
scripts/node_3d_uv_remap/node_3d_uv_remap.gml
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
function Node_3D_UV_Remap(_x, _y, _group = noone) : Node_3D_Object(_x, _y, _group) constructor {
|
||||||
|
name = "UV Remap";
|
||||||
|
gizmo = new __3dGizmoPlane();
|
||||||
|
|
||||||
|
inputs[| in_d3d + 0] = nodeValue("Mesh", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Mesh, noone)
|
||||||
|
.setVisible(true, true);
|
||||||
|
|
||||||
|
outputs[| 0] = nodeValue("Mesh", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3Mesh, noone);
|
||||||
|
|
||||||
|
input_display_list = [
|
||||||
|
["Transform", false], 0, 1, 2,
|
||||||
|
in_d3d + 0,
|
||||||
|
];
|
||||||
|
|
||||||
|
remap_position = [ 0, 0, 0 ];
|
||||||
|
remap_normal = [ 0, 0, 0 ];
|
||||||
|
remap_normal_x = [ 0, 0, 0 ];
|
||||||
|
remap_normal_y = [ 0, 0, 0 ];
|
||||||
|
remap_scale = [ 1, 1, 1 ];
|
||||||
|
|
||||||
|
static modify_object = function(_object, _data, _matrix) { #region
|
||||||
|
if(_object.VF != global.VF_POS_NORM_TEX_COL) return _object;
|
||||||
|
|
||||||
|
var _obj = _object.clone(false, false);
|
||||||
|
_obj.VB = [];
|
||||||
|
_obj.transform.submitMatrix();
|
||||||
|
_obj.transform.clearMatrix();
|
||||||
|
|
||||||
|
var _mat = _matrix.Mul(_obj.transform.matrix);
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(_object.VB); i < n; i++ ) {
|
||||||
|
var vb = _object.VB[i];
|
||||||
|
var len = vertex_get_number(vb);
|
||||||
|
var buff = buffer_create_from_vertex_buffer(vb, buffer_grow, 1);
|
||||||
|
buffer_seek(buff, buffer_seek_start, 0);
|
||||||
|
|
||||||
|
for( var j = 0; j < len; j++ ) {
|
||||||
|
var _x = buffer_read(buff, buffer_f32); // 4
|
||||||
|
var _y = buffer_read(buff, buffer_f32); // 4
|
||||||
|
var _z = buffer_read(buff, buffer_f32); // 4
|
||||||
|
|
||||||
|
var _nx = buffer_read(buff, buffer_f32); // 4
|
||||||
|
var _ny = buffer_read(buff, buffer_f32); // 4
|
||||||
|
var _nz = buffer_read(buff, buffer_f32); // 4
|
||||||
|
|
||||||
|
var _u = buffer_read(buff, buffer_f32); // 4
|
||||||
|
var _v = buffer_read(buff, buffer_f32); // 4
|
||||||
|
|
||||||
|
var _r = buffer_read(buff, buffer_u8); // 1
|
||||||
|
var _g = buffer_read(buff, buffer_u8); // 1
|
||||||
|
var _b = buffer_read(buff, buffer_u8); // 1
|
||||||
|
var _a = buffer_read(buff, buffer_u8); // 1
|
||||||
|
|
||||||
|
var _v4 = new BBMOD_Vec4(_x, _y, _z, 1);
|
||||||
|
var _vt = _mat.Transform(_v4);
|
||||||
|
|
||||||
|
var _posOnMap = d3d_point_project_plane_uv(remap_position, remap_normal, [_vt.X, _vt.Y, _vt.Z], remap_normal_x, remap_normal_y);
|
||||||
|
_posOnMap[0] = _posOnMap[0] / remap_scale[0] + 0.5;
|
||||||
|
_posOnMap[1] = _posOnMap[1] / remap_scale[1] + 0.5;
|
||||||
|
|
||||||
|
buffer_seek(buff, buffer_seek_relative, -12);
|
||||||
|
|
||||||
|
buffer_write(buff, buffer_f32, _posOnMap[0]);
|
||||||
|
buffer_write(buff, buffer_f32, _posOnMap[1]);
|
||||||
|
|
||||||
|
buffer_seek(buff, buffer_seek_relative, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
_obj.VB[i] = vertex_create_buffer_from_buffer(buff, global.VF_POS_NORM_TEX_COL);
|
||||||
|
}
|
||||||
|
|
||||||
|
return _obj;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
static modify_group = function(_group, _data, _matrix) { #region
|
||||||
|
var _gr = new __3dGroup();
|
||||||
|
|
||||||
|
_gr.transform = _group.transform.clone();
|
||||||
|
_gr.transform.submitMatrix();
|
||||||
|
_gr.transform.clearMatrix();
|
||||||
|
_matrix = _matrix.Mul(_gr.transform.matrix);
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(_group.objects); i < n; i++ )
|
||||||
|
_gr.objects[i] = modify(_group.objects[i], _data, _matrix);
|
||||||
|
|
||||||
|
return _gr;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
static modify = function(_object, _data, _matrix = new BBMOD_Matrix()) { #region
|
||||||
|
if(is_instanceof(_object, __3dObject)) return modify_object(_object, _data, _matrix);
|
||||||
|
if(is_instanceof(_object, __3dGroup)) return modify_group(_object, _data, _matrix);
|
||||||
|
|
||||||
|
return noone;
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
static processData = function(_output, _data, _output_index, _array_index = 0) { #region
|
||||||
|
setTransform(gizmo, _data);
|
||||||
|
|
||||||
|
var _rot = _data[1];
|
||||||
|
var _prot = new BBMOD_Quaternion(_rot[0], _rot[1], _rot[2], _rot[3]);
|
||||||
|
remap_normal = _prot.Rotate(new BBMOD_Vec3(0, 0, 1)).ToArray();
|
||||||
|
remap_normal_x = _prot.Rotate(new BBMOD_Vec3(1, 0, 0)).ToArray();
|
||||||
|
remap_normal_y = _prot.Rotate(new BBMOD_Vec3(0, -1, 0)).ToArray();
|
||||||
|
|
||||||
|
remap_position = _data[0];
|
||||||
|
remap_scale = _data[2];
|
||||||
|
|
||||||
|
return modify(_data[in_d3d + 0], _data);
|
||||||
|
} #endregion
|
||||||
|
|
||||||
|
static getPreviewObjects = function() { return [ getPreviewObject(), gizmo ]; }
|
||||||
|
static getPreviewObjectOutline = function() { return [ gizmo ]; }
|
||||||
|
}
|
11
scripts/node_3d_uv_remap/node_3d_uv_remap.yy
Normal file
11
scripts/node_3d_uv_remap/node_3d_uv_remap.yy
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"resourceType": "GMScript",
|
||||||
|
"resourceVersion": "1.0",
|
||||||
|
"name": "node_3d_uv_remap",
|
||||||
|
"isCompatibility": false,
|
||||||
|
"isDnD": false,
|
||||||
|
"parent": {
|
||||||
|
"name": "d3d modifier",
|
||||||
|
"path": "folders/nodes/data/3D/d3d modifier.yy",
|
||||||
|
},
|
||||||
|
}
|
12
scripts/node_3d_uv_remap/node_counter.yy
Normal file
12
scripts/node_3d_uv_remap/node_counter.yy
Normal file
|
@ -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",
|
||||||
|
}
|
|
@ -423,6 +423,8 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor { #regio
|
||||||
ds_list_add(d3d, "Modify");
|
ds_list_add(d3d, "Modify");
|
||||||
addNodeObject(d3d, "Discretize vertex", s_node_3d_discretize, "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);
|
addNodeObject(d3d, "Set Material", s_node_3d_set_material, "Node_3D_Set_Material", [1, Node_3D_Set_Material]).setVersion(11560);
|
||||||
|
addNodeObject(d3d, "Transform Scene", s_node_3d_transform_scene, "Node_3D_Transform_Scene", [1, Node_3D_Transform_Scene]).setVersion(11570);
|
||||||
|
addNodeObject(d3d, "UV Remap", s_node_uv_remap, "Node_3D_UV_Remap", [1, Node_3D_UV_Remap]).setVersion(11570);
|
||||||
///**/ addNodeObject(d3d, "3D Instancer", s_node_3d_set_material, "Node_3D_Instancer", [1, Node_3D_Instancer]).setVersion(11560);
|
///**/ addNodeObject(d3d, "3D Instancer", s_node_3d_set_material, "Node_3D_Instancer", [1, Node_3D_Instancer]).setVersion(11560);
|
||||||
///**/ addNodeObject(d3d, "3D Particle", s_node_3d_set_material, "Node_3D_Particle", [1, Node_3D_Particle]).setVersion(11560);
|
///**/ addNodeObject(d3d, "3D Particle", s_node_3d_set_material, "Node_3D_Particle", [1, Node_3D_Particle]).setVersion(11560);
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
||||||
cursor_pos_y = 0;
|
cursor_pos_y = 0;
|
||||||
cursor_pos_y_to = 0;
|
cursor_pos_y_to = 0;
|
||||||
cursor_line = 0;
|
cursor_line = 0;
|
||||||
|
cursor_selecting = false;
|
||||||
|
|
||||||
char_run = 0
|
char_run = 0
|
||||||
|
|
||||||
|
@ -529,16 +530,13 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
||||||
}
|
}
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static display_text = function(_x, _y, _text, _mx = -1, _my = -1) { #region
|
static display_text = function(_x, _y, _text, _mx = -1, _my = -1, _hover = false) { #region
|
||||||
_text = string_real(_text);
|
_text = string_real(_text);
|
||||||
if(line_width != _prev_width) {
|
if(line_width != _prev_width) {
|
||||||
_prev_width = line_width;
|
_prev_width = line_width;
|
||||||
cut_line();
|
cut_line();
|
||||||
}
|
}
|
||||||
|
|
||||||
var _xx = _x, _ch, _chw;
|
|
||||||
var target = -999;
|
|
||||||
|
|
||||||
draw_set_text(font, fa_left, fa_top, color);
|
draw_set_text(font, fa_left, fa_top, color);
|
||||||
draw_set_alpha(0.5 + 0.5 * interactable);
|
draw_set_alpha(0.5 + 0.5 * interactable);
|
||||||
|
|
||||||
|
@ -546,14 +544,6 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
||||||
var ch_y = _y;
|
var ch_y = _y;
|
||||||
var _str;
|
var _str;
|
||||||
|
|
||||||
//print("==========");
|
|
||||||
//print(_text);
|
|
||||||
//print(">>>>");
|
|
||||||
//print(_input_text);
|
|
||||||
//print("----");
|
|
||||||
//print(_input_text_line);
|
|
||||||
//print($"cursor: {cursor}");
|
|
||||||
|
|
||||||
if(_input_text != _text) {
|
if(_input_text != _text) {
|
||||||
_input_text = _text;
|
_input_text = _text;
|
||||||
cut_line();
|
cut_line();
|
||||||
|
@ -587,13 +577,17 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
||||||
|
|
||||||
draw_set_alpha(1);
|
draw_set_alpha(1);
|
||||||
|
|
||||||
if(_mx != -1 && _my != -1) {
|
var target = undefined;
|
||||||
|
|
||||||
|
if(_hover) {
|
||||||
|
target = 0;
|
||||||
var char_run = 0, _l, _ch_w, _ch_h, _str, _chr;
|
var char_run = 0, _l, _ch_w, _ch_h, _str, _chr;
|
||||||
var sx = _x;
|
var sx = _x;
|
||||||
var ch_x = sx;
|
var ch_x = sx;
|
||||||
var ch_cxo = sx;
|
var ch_cxo = sx;
|
||||||
var ch_cxn = sx;
|
var ch_cxn = sx;
|
||||||
var ch_y = _y;
|
var ch_y = _y;
|
||||||
|
var _found_char = false;
|
||||||
|
|
||||||
for( var i = 0, n = array_length(_input_text_line); i < n; i++ ) {
|
for( var i = 0, n = array_length(_input_text_line); i < n; i++ ) {
|
||||||
_str = string_trim_end(_input_text_line[i]);
|
_str = string_trim_end(_input_text_line[i]);
|
||||||
|
@ -602,41 +596,53 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
||||||
ch_cxo = sx;
|
ch_cxo = sx;
|
||||||
ch_x = sx;
|
ch_x = sx;
|
||||||
|
|
||||||
if(ch_y <= _my && ch_y + _ch_h >= _my) {
|
//draw_set_color(c_white);
|
||||||
target = char_run + _l;
|
//draw_rectangle(ch_x, ch_y, ch_x + 100, ch_y + _ch_h, false);
|
||||||
|
|
||||||
for( var j = 0; j < string_length(_str); j++ ) {
|
if((i == 0 || ch_y <= _my) && (i == n - 1 || _my < ch_y + _ch_h)) {
|
||||||
|
for( var j = 0; j < _l; j++ ) {
|
||||||
_chr = string_char_at(_str, j + 1);
|
_chr = string_char_at(_str, j + 1);
|
||||||
_ch_w = string_width(_chr);
|
_ch_w = string_width(_chr);
|
||||||
ch_cxn = ch_x + _ch_w / 2;
|
ch_cxn = ch_x + _ch_w / 2;
|
||||||
|
|
||||||
if(ch_cxo <= _mx && _mx <= ch_cxn) {
|
if(_mx <= ch_cxn) {
|
||||||
target = char_run + j;
|
target = char_run + j;
|
||||||
|
_found_char = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
ch_x += _ch_w;
|
ch_x += _ch_w;
|
||||||
ch_cxo = ch_cxn;
|
ch_cxo = ch_cxn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!_found_char) target = char_run + _l;
|
||||||
|
_found_char = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
char_run += string_length(_input_text_line[i]);
|
char_run += string_length(_input_text_line[i]);
|
||||||
ch_y += _ch_h;
|
ch_y += _ch_h;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(ch_y <= _my && !_found_char) target = char_run - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(target != -999 && HOVER != o_dialog_textbox_autocomplete.id) {
|
if(target != undefined) {
|
||||||
if(mouse_press(mb_left, active) && !click_block) {
|
if(mouse_press(mb_left, active) && !click_block && (HOVER != o_dialog_textbox_autocomplete.id || cursor_selecting)) {
|
||||||
|
cursor_selecting = true;
|
||||||
cursor_select = target;
|
cursor_select = target;
|
||||||
cursor = target;
|
cursor = target;
|
||||||
} else if(mouse_click(mb_left, active) && cursor != target) {
|
|
||||||
cursor = target;
|
o_dialog_textbox_autocomplete.deactivate(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mouse_press(mb_left, active))
|
if(mouse_click(mb_left, active))
|
||||||
|
cursor = target;
|
||||||
click_block = false;
|
click_block = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(mouse_release(mb_left))
|
||||||
|
cursor_selecting = false;
|
||||||
} #endregion
|
} #endregion
|
||||||
|
|
||||||
static drawParam = function(params) { #region
|
static drawParam = function(params) { #region
|
||||||
|
@ -772,14 +778,7 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor
|
||||||
cursor_pos_y = cursor_pos_y == 0? cursor_pos_y_to : lerp_float(cursor_pos_y, cursor_pos_y_to, 2);
|
cursor_pos_y = cursor_pos_y == 0? cursor_pos_y_to : lerp_float(cursor_pos_y, cursor_pos_y_to, 2);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
var _mx = -1;
|
display_text(tx, _y + ui(7), _input_text, _m[0], _m[1], (hover && hoverRect) || cursor_selecting);
|
||||||
var _my = -1;
|
|
||||||
if(hover && hoverRect) {
|
|
||||||
_mx = _m[0];
|
|
||||||
_my = _m[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
display_text(tx, _y + ui(7), _input_text, _mx, _my);
|
|
||||||
|
|
||||||
if(cursor_pos_y != 0 && cursor_pos_x != 0) {
|
if(cursor_pos_y != 0 && cursor_pos_x != 0) {
|
||||||
draw_set_color(COLORS._main_text_accent);
|
draw_set_color(COLORS._main_text_accent);
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.6 KiB |
|
@ -0,0 +1,74 @@
|
||||||
|
{
|
||||||
|
"resourceType": "GMSprite",
|
||||||
|
"resourceVersion": "1.0",
|
||||||
|
"name": "s_node_3d_transform_scene",
|
||||||
|
"bbox_bottom": 57,
|
||||||
|
"bbox_left": 0,
|
||||||
|
"bbox_right": 63,
|
||||||
|
"bbox_top": 5,
|
||||||
|
"bboxMode": 0,
|
||||||
|
"collisionKind": 1,
|
||||||
|
"collisionTolerance": 0,
|
||||||
|
"DynamicTexturePage": false,
|
||||||
|
"edgeFiltering": false,
|
||||||
|
"For3D": false,
|
||||||
|
"frames": [
|
||||||
|
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"031cf87d-4ed8-41be-a3bc-de418b818944",},
|
||||||
|
],
|
||||||
|
"gridX": 0,
|
||||||
|
"gridY": 0,
|
||||||
|
"height": 64,
|
||||||
|
"HTile": false,
|
||||||
|
"layers": [
|
||||||
|
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"9069c1ea-e01a-426d-83f7-ec3a5af24830","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_transform_scene",
|
||||||
|
"autoRecord": true,
|
||||||
|
"backdropHeight": 768,
|
||||||
|
"backdropImageOpacity": 0.5,
|
||||||
|
"backdropImagePath": "",
|
||||||
|
"backdropWidth": 1366,
|
||||||
|
"backdropXOffset": 0.0,
|
||||||
|
"backdropYOffset": 0.0,
|
||||||
|
"events": {"resourceType":"KeyframeStore<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
|
||||||
|
"eventStubScript": null,
|
||||||
|
"eventToFunction": {},
|
||||||
|
"length": 1.0,
|
||||||
|
"lockOrigin": false,
|
||||||
|
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","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<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
|
||||||
|
{"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"031cf87d-4ed8-41be-a3bc-de418b818944","path":"sprites/s_node_3d_transform_scene/s_node_3d_transform_scene.yy",},},},"Disabled":false,"id":"48459f52-10f0-45e8-a728-0984d9fbe750","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,
|
||||||
|
}
|
BIN
sprites/s_node_uv_remap/e3bedd7f-13ed-4e53-8d17-b78d1d4d9d6a.png
Normal file
BIN
sprites/s_node_uv_remap/e3bedd7f-13ed-4e53-8d17-b78d1d4d9d6a.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.4 KiB |
74
sprites/s_node_uv_remap/s_node_uv_remap.yy
Normal file
74
sprites/s_node_uv_remap/s_node_uv_remap.yy
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
{
|
||||||
|
"resourceType": "GMSprite",
|
||||||
|
"resourceVersion": "1.0",
|
||||||
|
"name": "s_node_uv_remap",
|
||||||
|
"bbox_bottom": 57,
|
||||||
|
"bbox_left": 3,
|
||||||
|
"bbox_right": 60,
|
||||||
|
"bbox_top": 6,
|
||||||
|
"bboxMode": 0,
|
||||||
|
"collisionKind": 1,
|
||||||
|
"collisionTolerance": 0,
|
||||||
|
"DynamicTexturePage": false,
|
||||||
|
"edgeFiltering": false,
|
||||||
|
"For3D": false,
|
||||||
|
"frames": [
|
||||||
|
{"resourceType":"GMSpriteFrame","resourceVersion":"1.1","name":"e3bedd7f-13ed-4e53-8d17-b78d1d4d9d6a",},
|
||||||
|
],
|
||||||
|
"gridX": 0,
|
||||||
|
"gridY": 0,
|
||||||
|
"height": 64,
|
||||||
|
"HTile": false,
|
||||||
|
"layers": [
|
||||||
|
{"resourceType":"GMImageLayer","resourceVersion":"1.0","name":"17ddd817-fea4-4904-9284-497fe30aa436","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_uv_remap",
|
||||||
|
"autoRecord": true,
|
||||||
|
"backdropHeight": 768,
|
||||||
|
"backdropImageOpacity": 0.5,
|
||||||
|
"backdropImagePath": "",
|
||||||
|
"backdropWidth": 1366,
|
||||||
|
"backdropXOffset": 0.0,
|
||||||
|
"backdropYOffset": 0.0,
|
||||||
|
"events": {"resourceType":"KeyframeStore<MessageEventKeyframe>","resourceVersion":"1.0","Keyframes":[],},
|
||||||
|
"eventStubScript": null,
|
||||||
|
"eventToFunction": {},
|
||||||
|
"length": 1.0,
|
||||||
|
"lockOrigin": false,
|
||||||
|
"moments": {"resourceType":"KeyframeStore<MomentsEventKeyframe>","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<SpriteFrameKeyframe>","resourceVersion":"1.0","Keyframes":[
|
||||||
|
{"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"1.0","Channels":{"0":{"resourceType":"SpriteFrameKeyframe","resourceVersion":"1.0","Id":{"name":"e3bedd7f-13ed-4e53-8d17-b78d1d4d9d6a","path":"sprites/s_node_uv_remap/s_node_uv_remap.yy",},},},"Disabled":false,"id":"17e2963e-5d4c-4b4f-98cd-1931a1665e93","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,
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue