replace all dynamics node values with type based

This commit is contained in:
Tanasart 2024-08-07 18:20:45 +07:00
parent d10c77ee83
commit 8103abca06
586 changed files with 3176 additions and 3681 deletions

View file

@ -1163,6 +1163,7 @@
{"name":"node_value_dimension","order":20,"path":"scripts/node_value_dimension/node_value_dimension.yy",},
{"name":"node_value_enum_button","order":6,"path":"scripts/node_value_enum_button/node_value_enum_button.yy",},
{"name":"node_value_enum_scroll","order":7,"path":"scripts/node_value_enum_scroll/node_value_enum_scroll.yy",},
{"name":"node_value_fdomain","order":8,"path":"scripts/node_value_fdomain/node_value_fdomain.yy",},
{"name":"node_value_gradient","order":1,"path":"scripts/node_value_gradient/node_value_gradient.yy",},
{"name":"node_value_int","order":1,"path":"scripts/node_value_int/node_value_int.yy",},
{"name":"node_value_output","order":1,"path":"scripts/node_value_output/node_value_output.yy",},
@ -1181,6 +1182,7 @@
{"name":"node_value_struct","order":7,"path":"scripts/node_value_struct/node_value_struct.yy",},
{"name":"node_value_surface","order":9,"path":"scripts/node_value_surface/node_value_surface.yy",},
{"name":"node_value_text","order":14,"path":"scripts/node_value_text/node_value_text.yy",},
{"name":"node_value_toggle","order":21,"path":"scripts/node_value_toggle/node_value_toggle.yy",},
{"name":"node_value_trigger","order":19,"path":"scripts/node_value_trigger/node_value_trigger.yy",},
{"name":"node_value_types","order":2,"path":"scripts/node_value_types/node_value_types.yy",},
{"name":"node_value_validators","order":3,"path":"scripts/node_value_validators/node_value_validators.yy",},

View file

@ -1768,6 +1768,7 @@
{"id":{"name":"node_value_dimension","path":"scripts/node_value_dimension/node_value_dimension.yy",},},
{"id":{"name":"node_value_enum_button","path":"scripts/node_value_enum_button/node_value_enum_button.yy",},},
{"id":{"name":"node_value_enum_scroll","path":"scripts/node_value_enum_scroll/node_value_enum_scroll.yy",},},
{"id":{"name":"node_value_fdomain","path":"scripts/node_value_fdomain/node_value_fdomain.yy",},},
{"id":{"name":"node_value_float","path":"scripts/node_value_float/node_value_float.yy",},},
{"id":{"name":"node_value_gradient","path":"scripts/node_value_gradient/node_value_gradient.yy",},},
{"id":{"name":"node_value_int","path":"scripts/node_value_int/node_value_int.yy",},},
@ -1787,6 +1788,7 @@
{"id":{"name":"node_value_struct","path":"scripts/node_value_struct/node_value_struct.yy",},},
{"id":{"name":"node_value_surface","path":"scripts/node_value_surface/node_value_surface.yy",},},
{"id":{"name":"node_value_text","path":"scripts/node_value_text/node_value_text.yy",},},
{"id":{"name":"node_value_toggle","path":"scripts/node_value_toggle/node_value_toggle.yy",},},
{"id":{"name":"node_value_trigger","path":"scripts/node_value_trigger/node_value_trigger.yy",},},
{"id":{"name":"node_value_types","path":"scripts/node_value_types/node_value_types.yy",},},
{"id":{"name":"node_value_validators","path":"scripts/node_value_validators/node_value_validators.yy",},},

View file

@ -4,52 +4,47 @@ function __Node_3D_Combine(_x, _y, _group = noone) : Node(_x, _y, _group) constr
inputs[| 0] = nodeValue_Dimension(self)
.rejectArray();
inputs[| 1] = nodeValue("Object position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 1] = nodeValue_Vector("Object position", self, [ 0, 0, 0 ])
.rejectArray();
inputs[| 2] = nodeValue("Object rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 2] = nodeValue_Vector("Object rotation", self, [ 0, 0, 0 ])
.rejectArray();
inputs[| 3] = nodeValue("Object scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 3] = nodeValue_Vector("Object scale", self, [ 1, 1, 1 ])
.rejectArray();
inputs[| 4] = nodeValue("Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ])
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 4] = nodeValue_Vector("Render position", self, [ 0.5, 0.5 ])
.setUnitRef( function() { return getInputData(2); }, VALUE_UNIT.reference)
.rejectArray();
inputs[| 5] = nodeValue("Render scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 5] = nodeValue_Vector("Render scale", self, [ 1, 1 ])
.rejectArray();
inputs[| 6] = nodeValue_Rotation("Light direction", self, 0)
.rejectArray();
inputs[| 7] = nodeValue("Light height", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5)
inputs[| 7] = nodeValue_Float("Light height", self, 0.5)
.setDisplay(VALUE_DISPLAY.slider, { range: [-1, 1, 0.01] })
.rejectArray();
inputs[| 8] = nodeValue("Light intensity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
inputs[| 8] = nodeValue_Float("Light intensity", self, 1)
.setDisplay(VALUE_DISPLAY.slider)
.rejectArray();
inputs[| 9] = nodeValue("Light color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white)
inputs[| 9] = nodeValue_Color("Light color", self, c_white)
.rejectArray();
inputs[| 10] = nodeValue("Ambient color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_grey)
inputs[| 10] = nodeValue_Color("Ambient color", self, c_grey)
.rejectArray();
inputs[| 11] = nodeValue_Enum_Button("Projection", self, 0, [ "Orthographic", "Perspective" ])
.rejectArray();
inputs[| 12] = nodeValue("Field of view", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 60)
inputs[| 12] = nodeValue_Float("Field of view", self, 60)
.setDisplay(VALUE_DISPLAY.slider, { range: [ 0, 90, 0.1 ] })
.rejectArray();
inputs[| 13] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true)
inputs[| 13] = nodeValue_Bool("Scale view with dimension", self, true)
input_display_list = [
["Output", false], 0, 13,
@ -59,11 +54,11 @@ function __Node_3D_Combine(_x, _y, _group = noone) : Node(_x, _y, _group) constr
["Objects", true],
];
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
outputs[| 1] = nodeValue("3D objects", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3object, function() { return submit_vertex(); });
outputs[| 1] = nodeValue_Output("3D objects", self, VALUE_TYPE.d3object, function() { return submit_vertex(); });
outputs[| 2] = nodeValue("Normal pass", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 2] = nodeValue_Output("Normal pass", self, VALUE_TYPE.surface, noone);
output_display_list = [ 0, 2, 1 ]

View file

@ -4,33 +4,28 @@ function __Node_3D_Displace(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
inputs[| 0] = nodeValue_Dimension(self);
inputs[| 1] = nodeValue("Object position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue_Vector("Object position", self, [ 0, 0, 0 ]);
inputs[| 2] = nodeValue("Object rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue_Vector("Object rotation", self, [ 0, 0, 0 ]);
inputs[| 3] = nodeValue("Object scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 3] = nodeValue_Vector("Object scale", self, [ 1, 1, 1 ]);
inputs[| 4] = nodeValue("Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ])
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 4] = nodeValue_Vector("Render position", self, [ 0.5, 0.5 ])
.setUnitRef( function() { return getInputData(0); }, VALUE_UNIT.reference);
inputs[| 5] = nodeValue("Render scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 5] = nodeValue_Vector("Render scale", self, [ 1, 1 ]);
inputs[| 6] = nodeValue_Rotation("Light direction", self, 0);
inputs[| 7] = nodeValue("Light height", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5)
inputs[| 7] = nodeValue_Float("Light height", self, 0.5)
.setDisplay(VALUE_DISPLAY.slider, { range: [-1, 1, 0.01] });
inputs[| 8] = nodeValue("Light intensity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
inputs[| 8] = nodeValue_Float("Light intensity", self, 1)
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 9] = nodeValue("Light color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
inputs[| 9] = nodeValue_Color("Light color", self, c_white);
inputs[| 10] = nodeValue("Ambient color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_grey);
inputs[| 10] = nodeValue_Color("Ambient color", self, c_grey);
inputs[| 11] = nodeValue("3D vertex", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3vertex, [])
.setVisible(true, true);
@ -38,14 +33,14 @@ function __Node_3D_Displace(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
inputs[| 12] = nodeValue_Enum_Button("Projection", self, 0, [ "Orthographic", "Perspective" ])
.rejectArray();
inputs[| 13] = nodeValue("Field of view", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 60)
inputs[| 13] = nodeValue_Float("Field of view", self, 60)
.setDisplay(VALUE_DISPLAY.slider, { range: [ 1, 90, 0.1 ] });
inputs[| 14] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
inputs[| 14] = nodeValue_Bool("Scale view with dimension", self, true);
inputs[| 15] = nodeValue_Surface("Displacement map", self);
inputs[| 16] = nodeValue("Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
inputs[| 16] = nodeValue_Float("Strength", self, 1)
.setDisplay(VALUE_DISPLAY.slider, { range: [ 0, 4, 0.01 ] });
input_display_list = [ 11,
@ -56,13 +51,13 @@ function __Node_3D_Displace(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
["Light", true], 6, 7, 8, 9, 10,
];
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
outputs[| 1] = nodeValue("3D scene", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3object, function() { return submit_vertex(); });
outputs[| 1] = nodeValue_Output("3D scene", self, VALUE_TYPE.d3object, function() { return submit_vertex(); });
outputs[| 2] = nodeValue("Normal pass", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 2] = nodeValue_Output("Normal pass", self, VALUE_TYPE.surface, noone);
outputs[| 3] = nodeValue("3D vertex", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3vertex, []);
outputs[| 3] = nodeValue_Output("3D vertex", self, VALUE_TYPE.d3vertex, []);
output_display_list = [
0, 2, 1, 3,

View file

@ -4,10 +4,10 @@ function __Node_3D_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constru
inputs[| 0] = nodeValue("Vertex data", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3vertex, [] )
.setVisible(true, true);
inputs[| 1] = nodeValue("Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.path, "", "Export location without '.obj' extension." )
inputs[| 1] = nodeValue_Text("Path", self, "", "Export location without '.obj' extension." )
.setDisplay(VALUE_DISPLAY.path_save, { filter: "3d object|*.obj" });
inputs[| 2] = nodeValue("Export texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true );
inputs[| 2] = nodeValue_Bool("Export texture", self, true );
input_display_list = [ 0,
["Export", false], 1, 2,

View file

@ -6,52 +6,46 @@ function __Node_3D_Extrude(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro
inputs[| 1] = nodeValue_Dimension(self);
inputs[| 2] = nodeValue("Object position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue_Vector("Object position", self, [ 0, 0, 0 ]);
inputs[| 3] = nodeValue("Object rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 180, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 3] = nodeValue_Vector("Object rotation", self, [ 0, 180, 0 ]);
inputs[| 4] = nodeValue("Object scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 0.1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 4] = nodeValue_Vector("Object scale", self, [ 1, 1, 0.1 ]);
inputs[| 5] = nodeValue("Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ])
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 5] = nodeValue_Vector("Render position", self, [ 0.5, 0.5 ])
.setUnitRef( function() { return getInputData(1); }, VALUE_UNIT.reference);
inputs[| 6] = nodeValue("Render rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 6] = nodeValue_Vector("Render rotation", self, [ 0, 0, 0 ]);
inputs[| 7] = nodeValue("Render scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 7] = nodeValue_Vector("Render scale", self, [ 1, 1 ]);
inputs[| 8] = nodeValue("Manual generate", self, JUNCTION_CONNECT.input, VALUE_TYPE.trigger, false )
inputs[| 8] = nodeValue_Trigger("Manual generate", self, false )
.setDisplay(VALUE_DISPLAY.button, { name: "Generate", UI : true, onClick: function() { generateMesh(); doUpdate(); } });
inputs[| 9] = nodeValue_Rotation("Light direction", self, 0);
inputs[| 10] = nodeValue("Light height", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5)
inputs[| 10] = nodeValue_Float("Light height", self, 0.5)
.setDisplay(VALUE_DISPLAY.slider, { range: [-1, 1, 0.01] });
inputs[| 11] = nodeValue("Light intensity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
inputs[| 11] = nodeValue_Float("Light intensity", self, 1)
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 12] = nodeValue("Light color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
inputs[| 13] = nodeValue("Ambient color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_grey);
inputs[| 12] = nodeValue_Color("Light color", self, c_white);
inputs[| 13] = nodeValue_Color("Ambient color", self, c_grey);
inputs[| 14] = nodeValue_Surface("Height map", self);
inputs[| 15] = nodeValue("Always update", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
inputs[| 15] = nodeValue_Bool("Always update", self, false);
inputs[| 16] = nodeValue_Enum_Button("Projection", self, 0, [ "Orthographic", "Perspective" ])
.rejectArray();
inputs[| 17] = nodeValue("Field of view", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 60)
inputs[| 17] = nodeValue_Float("Field of view", self, 60)
.setDisplay(VALUE_DISPLAY.slider, { range: [ 1, 90, 0.1 ] });
inputs[| 18] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true)
inputs[| 18] = nodeValue_Bool("Scale view with dimension", self, true)
inputs[| 19] = nodeValue("Smooth", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false)
inputs[| 19] = nodeValue_Bool("Smooth", self, false)
input_display_list = [
["Output", false], 1, 18,
@ -61,13 +55,13 @@ function __Node_3D_Extrude(_x, _y, _group = noone) : Node_Processor(_x, _y, _gro
["Light", false], 9, 10, 11, 12, 13,
];
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
outputs[| 1] = nodeValue("3D scene", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3object, function(index) { return submit_vertex(index); });
outputs[| 1] = nodeValue_Output("3D scene", self, VALUE_TYPE.d3object, function(index) { return submit_vertex(index); });
outputs[| 2] = nodeValue("Normal pass", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 2] = nodeValue_Output("Normal pass", self, VALUE_TYPE.surface, noone);
outputs[| 3] = nodeValue("3D vertex", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3vertex, []);
outputs[| 3] = nodeValue_Output("3D vertex", self, VALUE_TYPE.d3vertex, []);
output_display_list = [
0, 2, 1, 3

View file

@ -4,16 +4,16 @@ function Node_3D_Light(_x, _y, _group = noone) : Node_3D_Object(_x, _y, _group)
if(!LOADING && !APPENDING)
inputs[| 0].setValue([ 0, 0, 1 ]);
inputs[| in_d3d + 0] = nodeValue("Active", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
inputs[| in_d3d + 0] = nodeValue_Bool("Active", self, true);
inputs[| in_d3d + 1] = nodeValue("Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
inputs[| in_d3d + 1] = nodeValue_Color("Color", self, c_white);
inputs[| in_d3d + 2] = nodeValue("Intensity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
inputs[| in_d3d + 2] = nodeValue_Float("Intensity", self, 1)
.setDisplay(VALUE_DISPLAY.slider);
in_light = ds_list_size(inputs);
outputs[| 0] = nodeValue("Light", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3Light, noone);
outputs[| 0] = nodeValue_Output("Light", self, VALUE_TYPE.d3Light, noone);
#macro __d3d_input_list_light ["Light", false], in_d3d + 0, in_d3d + 1, in_d3d + 2

View file

@ -3,7 +3,7 @@ function Node_3D_Mesh(_x, _y, _group = noone) : Node_3D_Object(_x, _y, _group) c
in_mesh = ds_list_size(inputs);
outputs[| 0] = nodeValue("Mesh", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3Mesh, noone);
outputs[| 0] = nodeValue_Output("Mesh", self, VALUE_TYPE.d3Mesh, noone);
#macro __d3d_input_list_mesh ["Mesh", false]

View file

@ -1,12 +1,12 @@
function Node_3D_Modifier(_x, _y, _group = noone) : Node_3D(_x, _y, _group) constructor {
name = "3D Mesh Modifier";
inputs[| 0] = nodeValue("Mesh", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Mesh, noone)
inputs[| 0] = nodeValue_D3Mesh("Mesh", self, noone)
.setVisible(true, true);
in_mesh = ds_list_size(inputs);
outputs[| 0] = nodeValue("Mesh", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3Mesh, noone);
outputs[| 0] = nodeValue_Output("Mesh", self, VALUE_TYPE.d3Mesh, noone);
static modify_object = function(_object, _data, _matrix) { #region
return _object;

View file

@ -1,11 +1,11 @@
function __Node_3D_Obj(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "3D Object";
inputs[| 0] = nodeValue("Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.path, "")
inputs[| 0] = nodeValue_Text("Path", self, "")
.setDisplay(VALUE_DISPLAY.path_load, { filter: "3d object|*.obj" })
.rejectArray();
inputs[| 1] = nodeValue("Generate", self, JUNCTION_CONNECT.input, VALUE_TYPE.trigger, false )
inputs[| 1] = nodeValue_Trigger("Generate", self, false )
.setDisplay(VALUE_DISPLAY.button, { name: "Generate", UI : true, onClick: function() {
updateObj();
doUpdate();
@ -13,53 +13,47 @@ function __Node_3D_Obj(_x, _y, _group = noone) : Node(_x, _y, _group) constructo
inputs[| 2] = nodeValue_Dimension(self);
inputs[| 3] = nodeValue("Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ])
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 3] = nodeValue_Vector("Render position", self, [ 0.5, 0.5 ])
.setUnitRef( function() { return getInputData(2); }, VALUE_UNIT.reference);
inputs[| 4] = nodeValue("Render rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 4] = nodeValue_Vector("Render rotation", self, [ 0, 0, 0 ]);
inputs[| 5] = nodeValue("Render scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 5] = nodeValue_Vector("Render scale", self, [ 1, 1 ]);
inputs[| 6] = nodeValue_Rotation("Light direction", self, 0)
.rejectArray();
inputs[| 7] = nodeValue("Light height", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5)
inputs[| 7] = nodeValue_Float("Light height", self, 0.5)
.setDisplay(VALUE_DISPLAY.slider, { range: [-1, 1, 0.01] })
.rejectArray();
inputs[| 8] = nodeValue("Light intensity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
inputs[| 8] = nodeValue_Float("Light intensity", self, 1)
.setDisplay(VALUE_DISPLAY.slider)
.rejectArray();
inputs[| 9] = nodeValue("Light color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white)
inputs[| 9] = nodeValue_Color("Light color", self, c_white)
.rejectArray();
inputs[| 10] = nodeValue("Ambient color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_grey)
inputs[| 10] = nodeValue_Color("Ambient color", self, c_grey)
.rejectArray();
inputs[| 11] = nodeValue("Object scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 11] = nodeValue_Vector("Object scale", self, [ 1, 1, 1 ]);
inputs[| 12] = nodeValue("Flip UV", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true, "Flip UV axis, can be use to fix some texture mapping error.")
inputs[| 12] = nodeValue_Bool("Flip UV", self, true, "Flip UV axis, can be use to fix some texture mapping error.")
.rejectArray();
inputs[| 13] = nodeValue("Object rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 180 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 13] = nodeValue_Vector("Object rotation", self, [ 0, 0, 180 ]);
inputs[| 14] = nodeValue("Object position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 14] = nodeValue_Vector("Object position", self, [ 0, 0, 0 ]);
inputs[| 15] = nodeValue_Enum_Button("Projection", self, 0, [ "Orthographic", "Perspective" ])
.rejectArray();
inputs[| 16] = nodeValue("Field of view", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 60)
inputs[| 16] = nodeValue_Float("Field of view", self, 60)
.setDisplay(VALUE_DISPLAY.slider, { range: [ 0, 90, 0.1 ] })
.rejectArray();
inputs[| 17] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true)
inputs[| 17] = nodeValue_Bool("Scale view with dimension", self, true)
input_display_list = [
["Output", false], 2, 17,
@ -72,11 +66,11 @@ function __Node_3D_Obj(_x, _y, _group = noone) : Node(_x, _y, _group) constructo
input_length = ds_list_size(inputs);
input_display_len = array_length(input_display_list);
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
outputs[| 1] = nodeValue("3D scene", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3object, function() { return submit_vertex(); });
outputs[| 1] = nodeValue_Output("3D scene", self, VALUE_TYPE.d3object, function() { return submit_vertex(); });
outputs[| 2] = nodeValue("Normal pass", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 2] = nodeValue_Output("Normal pass", self, VALUE_TYPE.surface, noone);
output_display_list = [
0, 2, 1
@ -109,7 +103,7 @@ function __Node_3D_Obj(_x, _y, _group = noone) : Node(_x, _y, _group) constructo
function createMaterial(m_index) {
var index = ds_list_size(inputs);
inputs[| index] = nodeValue(materialNames[m_index] + " texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, tex_surface);
inputs[| index] = nodeValue_Surface(materialNames[m_index] + " texture", self, tex_surface);
inputs[| index].setVisible(true);
input_display_list[input_display_len + m_index] = index;

View file

@ -8,17 +8,13 @@ function Node_3D_Object(_x, _y, _group = noone) : Node_3D(_x, _y, _group) constr
preview_channel = 0;
apply_anchor = false;
inputs[| 0] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector, { linkable: false });
inputs[| 0] = nodeValue_Vector("Position", self, [ 0, 0, 0 ], { linkable: false });
inputs[| 1] = nodeValue("Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0, 1 ])
.setDisplay(VALUE_DISPLAY.d3quarternion);
inputs[| 1] = nodeValue_Quaternion("Rotation", self, [ 0, 0, 0, 1 ]);
inputs[| 2] = nodeValue("Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue_Vector("Scale", self, [ 1, 1, 1 ]);
inputs[| 3] = nodeValue("Anchor", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector, {
inputs[| 3] = nodeValue_Vector("Anchor", self, [ 0, 0, 0 ], {
linkable: false,
side_button : button(function() { apply_anchor = !apply_anchor; triggerRender(); })
.setIcon(THEME.icon_3d_anchor, [ function() /*=>*/ {return apply_anchor} ], c_white)

View file

@ -4,41 +4,33 @@ function __Node_3D_Plane(_x, _y, _group = noone) : Node_Processor(_x, _y, _group
inputs[| 0] = nodeValue_Surface("Surface in", self);
inputs[| 1] = nodeValue("Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ])
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 1] = nodeValue_Vector("Render position", self, [ 0.5, 0.5 ])
.setUnitRef(function(index) { return getDimension(index); }, VALUE_UNIT.reference);
inputs[| 2] = nodeValue("Object rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue_Vector("Object rotation", self, [ 0, 0, 0 ]);
inputs[| 3] = nodeValue("Render scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 3] = nodeValue_Vector("Render scale", self, [ 1, 1 ]);
inputs[| 4] = nodeValue_Enum_Scroll("Output dimension", self, OUTPUT_SCALING.same_as_input, [ "Same as input", "Constant", "Relative to input" ])
.rejectArray();
inputs[| 5] = nodeValue("Constant dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF)
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 5] = nodeValue_Vector("Constant dimension", self, DEF_SURF);
inputs[| 6] = nodeValue("Object position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 6] = nodeValue_Vector("Object position", self, [ 0, 0, 0 ]);
inputs[| 7] = nodeValue("Object scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 7] = nodeValue_Vector("Object scale", self, [ 1, 1, 1 ]);
inputs[| 8] = nodeValue_Enum_Button("Projection", self, 0, [ "Orthographic", "Perspective" ])
.rejectArray();
inputs[| 9] = nodeValue("Field of view", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 60)
inputs[| 9] = nodeValue_Float("Field of view", self, 60)
.setDisplay(VALUE_DISPLAY.slider, { range: [ 1, 90, 0.1 ] });
inputs[| 10] = nodeValue("Texture scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 10] = nodeValue_Vector("Texture scale", self, [ 1, 1 ]);
inputs[| 11] = nodeValue("Texture shift", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 11] = nodeValue_Vector("Texture shift", self, [ 0, 0 ]);
inputs[| 12] = nodeValue("Subdiviion", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1)
inputs[| 12] = nodeValue_Int("Subdiviion", self, 1)
inputs[| 13] = nodeValue_Enum_Button("Normal axis", self, 2, [ "X", "Y", "Z" ]);
@ -50,11 +42,11 @@ function __Node_3D_Plane(_x, _y, _group = noone) : Node_Processor(_x, _y, _group
["Texture", false], 10, 11,
];
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
outputs[| 1] = nodeValue("3D scene", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3object, function() { return submit_vertex(); });
outputs[| 1] = nodeValue_Output("3D scene", self, VALUE_TYPE.d3object, function() { return submit_vertex(); });
outputs[| 2] = nodeValue("3D vertex", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3vertex, []);
outputs[| 2] = nodeValue_Output("3D vertex", self, VALUE_TYPE.d3vertex, []);
output_display_list = [
0, 1, 2

View file

@ -4,49 +4,43 @@ function __Node_3D_Cone(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
inputs[| 0] = nodeValue_Dimension(self);
inputs[| 1] = nodeValue("Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ])
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 1] = nodeValue_Vector("Render position", self, [ 0.5, 0.5 ])
.setUnitRef(function(index) { return getDimension(index); }, VALUE_UNIT.reference);
inputs[| 2] = nodeValue("Render rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue_Vector("Render rotation", self, [ 0, 0, 0 ]);
inputs[| 3] = nodeValue("Render scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 3] = nodeValue_Vector("Render scale", self, [ 1, 1 ]);
inputs[| 4] = nodeValue("Object scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 4] = nodeValue_Vector("Object scale", self, [ 1, 1, 1 ]);
inputs[| 5] = nodeValue_Rotation("Light direction", self, 0);
inputs[| 6] = nodeValue("Light height", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5)
inputs[| 6] = nodeValue_Float("Light height", self, 0.5)
.setDisplay(VALUE_DISPLAY.slider, { range: [-1, 1, 0.01] });
inputs[| 7] = nodeValue("Light intensity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
inputs[| 7] = nodeValue_Float("Light intensity", self, 1)
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 8] = nodeValue("Light color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
inputs[| 9] = nodeValue("Ambient color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_grey);
inputs[| 8] = nodeValue_Color("Light color", self, c_white);
inputs[| 9] = nodeValue_Color("Ambient color", self, c_grey);
inputs[| 10] = nodeValue("Object rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 10] = nodeValue_Vector("Object rotation", self, [ 0, 0, 0 ]);
inputs[| 11] = nodeValue("Object position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 11] = nodeValue_Vector("Object position", self, [ 0, 0, 0 ]);
inputs[| 12] = nodeValue_Enum_Button("Projection", self, 0, [ "Orthographic", "Perspective" ])
.rejectArray();
inputs[| 13] = nodeValue("Field of view", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 60)
inputs[| 13] = nodeValue_Float("Field of view", self, 60)
.setDisplay(VALUE_DISPLAY.slider, { range: [ 1, 90, 0.1 ] });
inputs[| 14] = nodeValue("Sides", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 16);
inputs[| 14] = nodeValue_Int("Sides", self, 16);
inputs[| 15] = nodeValue_Surface("Textures base", self);
inputs[| 16] = nodeValue_Surface("Textures side", self);
inputs[| 17] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true)
inputs[| 17] = nodeValue_Bool("Scale view with dimension", self, true)
input_display_list = [
["Output", false], 0, 17,
@ -57,13 +51,13 @@ function __Node_3D_Cone(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
["Light", false], 5, 6, 7, 8, 9,
];
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
outputs[| 1] = nodeValue("3D scene", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3object, function() { return submit_vertex(); });
outputs[| 1] = nodeValue_Output("3D scene", self, VALUE_TYPE.d3object, function() { return submit_vertex(); });
outputs[| 2] = nodeValue("Normal pass", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 2] = nodeValue_Output("Normal pass", self, VALUE_TYPE.surface, noone);
outputs[| 3] = nodeValue("3D vertex", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3vertex, []);
outputs[| 3] = nodeValue_Output("3D vertex", self, VALUE_TYPE.d3vertex, []);
output_display_list = [
0, 2, 1, 3

View file

@ -7,17 +7,14 @@ function __Node_3D_Cube(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
inputs[| 1] = nodeValue_Dimension(self);
inputs[| 2] = nodeValue("Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ])
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 2] = nodeValue_Vector("Render position", self, [ 0.5, 0.5 ])
.setUnitRef(function(index) { return getDimension(index); }, VALUE_UNIT.reference);
inputs[| 3] = nodeValue("Render rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 3] = nodeValue_Vector("Render rotation", self, [ 0, 0, 0 ]);
inputs[| 4] = nodeValue("Render scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 4] = nodeValue_Vector("Render scale", self, [ 1, 1 ]);
inputs[| 5] = nodeValue("Textures per face", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
inputs[| 5] = nodeValue_Bool("Textures per face", self, false);
inputs[| 6] = nodeValue_Surface("Textures 0", self).setVisible(false);
inputs[| 7] = nodeValue_Surface("Textures 1", self).setVisible(false);
@ -26,34 +23,31 @@ function __Node_3D_Cube(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
inputs[| 10] = nodeValue_Surface("Textures 4", self).setVisible(false);
inputs[| 11] = nodeValue_Surface("Textures 5", self).setVisible(false);
inputs[| 12] = nodeValue("Object scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 12] = nodeValue_Vector("Object scale", self, [ 1, 1, 1 ]);
inputs[| 13] = nodeValue_Rotation("Light direction", self, 0);
inputs[| 14] = nodeValue("Light height", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5)
inputs[| 14] = nodeValue_Float("Light height", self, 0.5)
.setDisplay(VALUE_DISPLAY.slider, { range: [-1, 1, 0.01] });
inputs[| 15] = nodeValue("Light intensity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
inputs[| 15] = nodeValue_Float("Light intensity", self, 1)
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 16] = nodeValue("Light color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
inputs[| 16] = nodeValue_Color("Light color", self, c_white);
inputs[| 17] = nodeValue("Ambient color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_grey);
inputs[| 17] = nodeValue_Color("Ambient color", self, c_grey);
inputs[| 18] = nodeValue("Object rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 18] = nodeValue_Vector("Object rotation", self, [ 0, 0, 0 ]);
inputs[| 19] = nodeValue("Object position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 19] = nodeValue_Vector("Object position", self, [ 0, 0, 0 ]);
inputs[| 20] = nodeValue_Enum_Button("Projection", self, 0, [ "Orthographic", "Perspective" ])
.rejectArray();
inputs[| 21] = nodeValue("Field of view", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 60)
inputs[| 21] = nodeValue_Float("Field of view", self, 60)
.setDisplay(VALUE_DISPLAY.slider, { range: [ 1, 90, 0.1 ] });
inputs[| 22] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true)
inputs[| 22] = nodeValue_Bool("Scale view with dimension", self, true)
input_display_list = [
["Output", false], 1, 22,
@ -63,13 +57,13 @@ function __Node_3D_Cube(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
["Light", false], 13, 14, 15, 16, 17,
];
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
outputs[| 1] = nodeValue("3D scene", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3object, function(index) { return submit_vertex(index); });
outputs[| 1] = nodeValue_Output("3D scene", self, VALUE_TYPE.d3object, function(index) { return submit_vertex(index); });
outputs[| 2] = nodeValue("Normal pass", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 2] = nodeValue_Output("Normal pass", self, VALUE_TYPE.surface, noone);
outputs[| 3] = nodeValue("3D vertex", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3vertex, []);
outputs[| 3] = nodeValue_Output("3D vertex", self, VALUE_TYPE.d3vertex, []);
output_display_list = [
0, 2, 1, 3

View file

@ -3,56 +3,50 @@ function __Node_3D_Cylinder(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
batch_output = false;
dimension_index = 2;
inputs[| 0] = nodeValue("Sides", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 16);
inputs[| 0] = nodeValue_Int("Sides", self, 16);
inputs[| 1] = nodeValue("Thickness", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.2);
inputs[| 1] = nodeValue_Float("Thickness", self, 0.2);
inputs[| 2] = nodeValue_Dimension(self);
inputs[| 3] = nodeValue("Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ])
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 3] = nodeValue_Vector("Render position", self, [ 0.5, 0.5 ])
.setUnitRef(function(index) { return getDimension(index); }, VALUE_UNIT.reference);
inputs[| 4] = nodeValue("Render rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 4] = nodeValue_Vector("Render rotation", self, [ 0, 0, 0 ]);
inputs[| 5] = nodeValue("Render scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 5] = nodeValue_Vector("Render scale", self, [ 1, 1 ]);
inputs[| 6] = nodeValue_Surface("Textures top", self);
inputs[| 7] = nodeValue_Surface("Textures bottom", self);
inputs[| 8] = nodeValue_Surface("Textures side", self);
inputs[| 9] = nodeValue("Object scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 9] = nodeValue_Vector("Object scale", self, [ 1, 1, 1 ]);
inputs[| 10] = nodeValue_Rotation("Light direction", self, 0);
inputs[| 11] = nodeValue("Light height", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5)
inputs[| 11] = nodeValue_Float("Light height", self, 0.5)
.setDisplay(VALUE_DISPLAY.slider, { range: [-1, 1, 0.01] });
inputs[| 12] = nodeValue("Light intensity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
inputs[| 12] = nodeValue_Float("Light intensity", self, 1)
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 13] = nodeValue("Light color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
inputs[| 14] = nodeValue("Ambient color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_grey);
inputs[| 13] = nodeValue_Color("Light color", self, c_white);
inputs[| 14] = nodeValue_Color("Ambient color", self, c_grey);
inputs[| 15] = nodeValue("Object rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 15] = nodeValue_Vector("Object rotation", self, [ 0, 0, 0 ]);
inputs[| 16] = nodeValue("Object position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 16] = nodeValue_Vector("Object position", self, [ 0, 0, 0 ]);
inputs[| 17] = nodeValue_Enum_Button("Projection", self, 0, [ "Orthographic", "Perspective" ])
.rejectArray();
inputs[| 18] = nodeValue("Field of view", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 60)
inputs[| 18] = nodeValue_Float("Field of view", self, 60)
.setDisplay(VALUE_DISPLAY.slider, { range: [ 1, 90, 0.1 ] });
inputs[| 19] = nodeValue("Taper", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
inputs[| 19] = nodeValue_Float("Taper", self, 1)
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 20] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true)
inputs[| 20] = nodeValue_Bool("Scale view with dimension", self, true)
input_display_list = [
["Output", false], 2, 20,
@ -63,13 +57,13 @@ function __Node_3D_Cylinder(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
["Light", false], 10, 11, 12, 13, 14,
];
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
outputs[| 1] = nodeValue("3D scene", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3object, function() { return submit_vertex(); });
outputs[| 1] = nodeValue_Output("3D scene", self, VALUE_TYPE.d3object, function() { return submit_vertex(); });
outputs[| 2] = nodeValue("Normal pass", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 2] = nodeValue_Output("Normal pass", self, VALUE_TYPE.surface, noone);
outputs[| 3] = nodeValue("3D vertex", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3vertex, []);
outputs[| 3] = nodeValue_Output("3D vertex", self, VALUE_TYPE.d3vertex, []);
output_display_list = [
0, 2, 1, 3

View file

@ -3,50 +3,44 @@ function __Node_3D_Sphere(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
batch_output = false;
dimension_index = 1;
inputs[| 0] = nodeValue("Subdivisions", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [8, 4], "Amount of polygon in X and Y axis.")
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 0] = nodeValue_Vector("Subdivisions", self, [8, 4])
.setTooltip("Amount of polygon in X and Y axis.");
inputs[| 1] = nodeValue_Dimension(self);
inputs[| 2] = nodeValue("Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ])
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 2] = nodeValue_Vector("Render position", self, [ 0.5, 0.5 ])
.setUnitRef(function(index) { return getDimension(index); }, VALUE_UNIT.reference);
inputs[| 3] = nodeValue("Render rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 3] = nodeValue_Vector("Render rotation", self, [ 0, 0, 0 ]);
inputs[| 4] = nodeValue("Render scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 4] = nodeValue_Vector("Render scale", self, [ 1, 1 ]);
inputs[| 5] = nodeValue_Surface("Textures", self);
inputs[| 6] = nodeValue("Object scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 6] = nodeValue_Vector("Object scale", self, [ 1, 1, 1 ]);
inputs[| 7] = nodeValue_Rotation("Light direction", self, 0);
inputs[| 8] = nodeValue("Light height", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5)
inputs[| 8] = nodeValue_Float("Light height", self, 0.5)
.setDisplay(VALUE_DISPLAY.slider, { range: [-1, 1, 0.01] });
inputs[| 9] = nodeValue("Light intensity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
inputs[| 9] = nodeValue_Float("Light intensity", self, 1)
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 10] = nodeValue("Light color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
inputs[| 11] = nodeValue("Ambient color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_grey);
inputs[| 10] = nodeValue_Color("Light color", self, c_white);
inputs[| 11] = nodeValue_Color("Ambient color", self, c_grey);
inputs[| 12] = nodeValue("Object rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 12] = nodeValue_Vector("Object rotation", self, [ 0, 0, 0 ]);
inputs[| 13] = nodeValue("Object position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 13] = nodeValue_Vector("Object position", self, [ 0, 0, 0 ]);
inputs[| 14] = nodeValue_Enum_Button("Projection", self, 0, [ "Orthographic", "Perspective" ])
.rejectArray();
inputs[| 15] = nodeValue("Field of view", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 60)
inputs[| 15] = nodeValue_Float("Field of view", self, 60)
.setDisplay(VALUE_DISPLAY.slider, { range: [ 1, 90, 0.1 ] });
inputs[| 16] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true)
inputs[| 16] = nodeValue_Bool("Scale view with dimension", self, true)
input_display_list = [
["Output", false], 1, 16,
@ -57,13 +51,13 @@ function __Node_3D_Sphere(_x, _y, _group = noone) : Node_Processor(_x, _y, _grou
["Light", false], 7, 8, 9, 10, 11,
];
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
outputs[| 1] = nodeValue("3D scene", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3object, function() { return submit_vertex(); });
outputs[| 1] = nodeValue_Output("3D scene", self, VALUE_TYPE.d3object, function() { return submit_vertex(); });
outputs[| 2] = nodeValue("Normal pass", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 2] = nodeValue_Output("Normal pass", self, VALUE_TYPE.surface, noone);
outputs[| 3] = nodeValue("3D vertex", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3vertex, []);
outputs[| 3] = nodeValue_Output("3D vertex", self, VALUE_TYPE.d3vertex, []);
output_display_list = [
0, 2, 1, 3
]

View file

@ -3,42 +3,39 @@
// inputs[| 2] = nodeValue_Dimension(self);
// inputs[| 3] = nodeValue("Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ])
// .setDisplay(VALUE_DISPLAY.vector)
// inputs[| 3] = nodeValue_Vector("Render position", self, [ 0.5, 0.5 ])
// .setUnitRef( function() { return getInputData(2); }, VALUE_UNIT.reference);
// inputs[| 4] = nodeValue("Render rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
// .setDisplay(VALUE_DISPLAY.vector);
// inputs[| 4] = nodeValue_Vector("Render rotation", self, [ 0, 0, 0 ]);
// inputs[| 5] = nodeValue("Render scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
// .setDisplay(VALUE_DISPLAY.vector);
// inputs[| 5] = nodeValue_Vector("Render scale", self, [ 1, 1 ]);
// inputs[| 6] = nodeValue("Light direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
// inputs[| 6] = nodeValue_Float("Light direction", self, 0)
// .setDisplay(VALUE_DISPLAY.rotation)
// .rejectArray();
// inputs[| 7] = nodeValue("Light height", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5)
// inputs[| 7] = nodeValue_Float("Light height", self, 0.5)
// .setDisplay(VALUE_DISPLAY.slider, { range: [-1, 1, 0.01] })
// .rejectArray();
// inputs[| 8] = nodeValue("Light intensity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
// inputs[| 8] = nodeValue_Float("Light intensity", self, 1)
// .setDisplay(VALUE_DISPLAY.slider)
// .rejectArray();
// inputs[| 9] = nodeValue("Light color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white)
// inputs[| 9] = nodeValue_Color("Light color", self, c_white)
// .rejectArray();
// inputs[| 10] = nodeValue("Ambient color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_grey)
// inputs[| 10] = nodeValue_Color("Ambient color", self, c_grey)
// .rejectArray();
// inputs[| 15] = nodeValue_Enum_Button("Projection", self, 0, [ "Orthographic", "Perspective" ])
// .rejectArray();
// inputs[| 16] = nodeValue("Field of view", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 60)
// inputs[| 16] = nodeValue_Float("Field of view", self, 60)
// .setDisplay(VALUE_DISPLAY.slider, { range: [ 0, 90, 1 ] })
// .rejectArray();
// inputs[| 17] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true)
// inputs[| 17] = nodeValue_Bool("Scale view with dimension", self, true)
// input_display_list = [
// ["Output", false], 2, 17,
@ -51,11 +48,11 @@
// input_length = ds_list_size(inputs);
// input_display_len = array_length(input_display_list);
// outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
// outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
// outputs[| 1] = nodeValue("3D scene", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3object, function() { return submit_vertex(); });
// outputs[| 1] = nodeValue_Output("3D scene", self, VALUE_TYPE.d3object, function() { return submit_vertex(); });
// outputs[| 2] = nodeValue("Normal pass", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
// outputs[| 2] = nodeValue_Output("Normal pass", self, VALUE_TYPE.surface, noone);
// output_display_list = [
// 0, 2, 1
@ -84,7 +81,7 @@
// function createMaterial(m_index) {
// var index = ds_list_size(inputs);
// inputs[| index] = nodeValue(materialNames[m_index] + " texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, tex_surface);
// inputs[| index] = nodeValue_Surface(materialNames[m_index] + " texture", self, tex_surface);
// inputs[| index].setVisible(true);
// input_display_list[input_display_len + m_index] = index;

View file

@ -3,65 +3,56 @@ function __Node_3D_Repeat(_x, _y, _group = noone) : Node(_x, _y, _group) constru
inputs[| 0] = nodeValue_Dimension(self);
inputs[| 1] = nodeValue("Object position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue_Vector("Object position", self, [ 0, 0, 0 ]);
inputs[| 2] = nodeValue("Object rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue_Vector("Object rotation", self, [ 0, 0, 0 ]);
inputs[| 3] = nodeValue("Object scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 3] = nodeValue_Vector("Object scale", self, [ 1, 1, 1 ]);
inputs[| 4] = nodeValue("Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ])
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 4] = nodeValue_Vector("Render position", self, [ 0.5, 0.5 ])
.setUnitRef( function() { return getInputData(0); }, VALUE_UNIT.reference);
inputs[| 5] = nodeValue("Render scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 5] = nodeValue_Vector("Render scale", self, [ 1, 1 ]);
inputs[| 6] = nodeValue_Rotation("Light direction", self, 0);
inputs[| 7] = nodeValue("Light height", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5)
inputs[| 7] = nodeValue_Float("Light height", self, 0.5)
.setDisplay(VALUE_DISPLAY.slider, { range: [-1, 1, 0.01] });
inputs[| 8] = nodeValue("Light intensity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
inputs[| 8] = nodeValue_Float("Light intensity", self, 1)
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 9] = nodeValue("Light color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
inputs[| 9] = nodeValue_Color("Light color", self, c_white);
inputs[| 10] = nodeValue("Ambient color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_grey);
inputs[| 10] = nodeValue_Color("Ambient color", self, c_grey);
inputs[| 11] = nodeValue("3D object", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3object, noone)
.setVisible(true, true);
inputs[| 12] = nodeValue("Repeat", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1, "Amount of copies to be generated.");
inputs[| 12] = nodeValue_Int("Repeat", self, 1, "Amount of copies to be generated.");
inputs[| 13] = nodeValue("Repeat position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 13] = nodeValue_Vector("Repeat position", self, [ 1, 0, 0 ]);
inputs[| 14] = nodeValue("Repeat rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 14] = nodeValue_Vector("Repeat rotation", self, [ 0, 0, 0 ]);
inputs[| 15] = nodeValue("Repeat scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 15] = nodeValue_Vector("Repeat scale", self, [ 1, 1, 1 ]);
inputs[| 16] = nodeValue_Enum_Button("Repeat pattern", self, 0, [ "Linear", "Circular" ])
.rejectArray();
inputs[| 17] = nodeValue_Enum_Button("Axis", self, 0, [ "x", "y", "z" ]);
inputs[| 18] = nodeValue("Radius", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1);
inputs[| 18] = nodeValue_Float("Radius", self, 1);
inputs[| 19] = nodeValue("Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 360 ])
.setDisplay(VALUE_DISPLAY.rotation_range);
inputs[| 19] = nodeValue_Rotation_Range("Rotation", self, [ 0, 360 ]);
inputs[| 20] = nodeValue_Enum_Button("Projection", self, 0, [ "Orthographic", "Perspective" ])
.rejectArray();
inputs[| 21] = nodeValue("Field of view", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 60)
inputs[| 21] = nodeValue_Float("Field of view", self, 60)
.setDisplay(VALUE_DISPLAY.slider, { range: [ 1, 90, 0.1 ] });
inputs[| 22] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true)
inputs[| 22] = nodeValue_Bool("Scale view with dimension", self, true)
input_display_list = [ 11,
["Output", false], 0, 22,
@ -72,11 +63,11 @@ function __Node_3D_Repeat(_x, _y, _group = noone) : Node(_x, _y, _group) constru
];
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
outputs[| 1] = nodeValue("3D objects", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3object, function() { return submit_vertex(); });
outputs[| 1] = nodeValue_Output("3D objects", self, VALUE_TYPE.d3object, function() { return submit_vertex(); });
outputs[| 2] = nodeValue("Normal pass", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 2] = nodeValue_Output("Normal pass", self, VALUE_TYPE.surface, noone);
output_display_list = [
0, 2, 1

View file

@ -4,33 +4,28 @@ function __Node_3D_Transform(_x, _y, _group = noone) : Node_Processor(_x, _y, _g
inputs[| 0] = nodeValue_Dimension(self);
inputs[| 1] = nodeValue("Object position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue_Vector("Object position", self, [ 0, 0, 0 ]);
inputs[| 2] = nodeValue("Object rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue_Vector("Object rotation", self, [ 0, 0, 0 ]);
inputs[| 3] = nodeValue("Object scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 3] = nodeValue_Vector("Object scale", self, [ 1, 1, 1 ]);
inputs[| 4] = nodeValue("Render position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.5 ])
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 4] = nodeValue_Vector("Render position", self, [ 0.5, 0.5 ])
.setUnitRef( function() { return getInputData(2); }, VALUE_UNIT.reference);
inputs[| 5] = nodeValue("Render scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 5] = nodeValue_Vector("Render scale", self, [ 1, 1 ]);
inputs[| 6] = nodeValue_Rotation("Light direction", self, 0);
inputs[| 7] = nodeValue("Light height", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5)
inputs[| 7] = nodeValue_Float("Light height", self, 0.5)
.setDisplay(VALUE_DISPLAY.slider, { range: [-1, 1, 0.01] });
inputs[| 8] = nodeValue("Light intensity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
inputs[| 8] = nodeValue_Float("Light intensity", self, 1)
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 9] = nodeValue("Light color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
inputs[| 9] = nodeValue_Color("Light color", self, c_white);
inputs[| 10] = nodeValue("Ambient color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_grey);
inputs[| 10] = nodeValue_Color("Ambient color", self, c_grey);
inputs[| 11] = nodeValue("3D object", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3object, noone)
.setVisible(true, true);
@ -38,10 +33,10 @@ function __Node_3D_Transform(_x, _y, _group = noone) : Node_Processor(_x, _y, _g
inputs[| 12] = nodeValue_Enum_Button("Projection", self, 0, [ "Orthographic", "Perspective" ])
.rejectArray();
inputs[| 13] = nodeValue("Field of view", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 60)
inputs[| 13] = nodeValue_Float("Field of view", self, 60)
.setDisplay(VALUE_DISPLAY.slider, { range: [ 1, 90, 0.1 ] });
inputs[| 14] = nodeValue("Scale view with dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true)
inputs[| 14] = nodeValue_Bool("Scale view with dimension", self, true)
input_display_list = [ 11,
["Output", false], 0, 14,
@ -50,11 +45,11 @@ function __Node_3D_Transform(_x, _y, _group = noone) : Node_Processor(_x, _y, _g
["Light", true], 6, 7, 8, 9, 10,
];
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
outputs[| 1] = nodeValue("3D scene", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3object, function() { return submit_vertex(); });
outputs[| 1] = nodeValue_Output("3D scene", self, VALUE_TYPE.d3object, function() { return submit_vertex(); });
outputs[| 2] = nodeValue("Normal pass", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 2] = nodeValue_Output("Normal pass", self, VALUE_TYPE.surface, noone);
output_display_list = [
0, 2, 1

View file

@ -20,35 +20,31 @@ function Node_VFX_effector(_x, _y, _group = noone) : Node(_x, _y, _group) constr
setDimension(96, 48);
seed = 1;
inputs[| 0] = nodeValue("Particles", self, JUNCTION_CONNECT.input, VALUE_TYPE.particle, -1 )
inputs[| 0] = nodeValue_Particle("Particles", self, -1 )
.setVisible(true, true);
inputs[| 1] = nodeValue("Area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, DEF_AREA)
.setDisplay(VALUE_DISPLAY.area)
inputs[| 1] = nodeValue_Area("Area", self, DEF_AREA)
.rejectArray();
inputs[| 2] = nodeValue("Falloff", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_01 )
.rejectArray();
inputs[| 3] = nodeValue("Falloff distance", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 4 )
inputs[| 3] = nodeValue_Float("Falloff distance", self, 4 )
.rejectArray();
inputs[| 4] = nodeValue("Effect Vector", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ -1, 0 ] )
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 4] = nodeValue_Vector("Effect Vector", self, [ -1, 0 ] )
.rejectArray();
inputs[| 5] = nodeValue("Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 )
inputs[| 5] = nodeValue_Float("Strength", self, 1 )
.rejectArray();
inputs[| 6] = nodeValue("Rotate particle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.rotation_range)
inputs[| 6] = nodeValue_Rotation_Range("Rotate particle", self, [ 0, 0 ] )
.rejectArray();
inputs[| 7] = nodeValue("Scale particle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector_range, { linked : true })
inputs[| 7] = nodeValue_Vec2_Range("Scale particle", self, [ 0, 0, 0, 0 ] , { linked : true })
.rejectArray();
inputs[| 8] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, seed_random(6))
inputs[| 8] = nodeValue_Int("Seed", self, seed_random(6))
.setDisplay(VALUE_DISPLAY._default, { side_button : button(function() { randomize(); inputs[| 8].setValue(seed_random(6)); }).setIcon(THEME.icon_random, 0, COLORS._main_icon) })
.rejectArray();
@ -59,7 +55,7 @@ function Node_VFX_effector(_x, _y, _group = noone) : Node(_x, _y, _group) constr
["Effect", false], 8, 4, 5, 6, 7,
];
outputs[| 0] = nodeValue("Particles", self, JUNCTION_CONNECT.output, VALUE_TYPE.particle, -1 );
outputs[| 0] = nodeValue_Output("Particles", self, VALUE_TYPE.particle, -1 );
UPDATE_PART_FORWARD

View file

@ -62,7 +62,7 @@ function Node_Custom(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
for( var i = 0, n = array_length(info.outputs); i < n; i++ ) {
var _output = info.outputs[i];
outputs[| i] = nodeValue(_output.name, self, JUNCTION_CONNECT.output, value_type_from_string(_output.type), _output.value)
outputs[| i] = nodeValue_Output(_output.name, self, value_type_from_string(_output.type), _output.value)
.setVisible(_output.show_in_graph);
output_index_map[? _output.name] = i;

View file

@ -3,7 +3,7 @@ function Node_Process_Template(_x, _y, _group = noone) : Node_Processor(_x, _y,
inputs[| 0] = nodeValue_Surface("", self);
outputs[| 0] = nodeValue("", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("", self, VALUE_TYPE.surface, noone);
input_display_list = [ 0 ];

View file

@ -16,7 +16,7 @@ function Node_Shader(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
shader = noone;
shader_data = [];
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
static setShader = function(_data) { #region
for( var i = 0, n = array_length(shader_data); i < n; i++ ) {

View file

@ -3,7 +3,7 @@ function Node_Template(_x, _y, _group = noone) : Node(_x, _y, _group) constructo
inputs[| 0] = nodeValue_Surface("", self);
outputs[| 0] = nodeValue("", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("", self, VALUE_TYPE.surface, noone);
input_display_list = [ 0 ];

View file

@ -1,3 +1,15 @@
function nodeValue_Vector(_name, _node, _value, _data = {}) {
var _len = array_length(_value);
switch(_len) {
case 2 : return new NodeValue_Vec2(_name, _node, _value, _data);
case 3 : return new NodeValue_Vec3(_name, _node, _value, _data);
case 4 : return new NodeValue_Vec4(_name, _node, _value, _data);
}
return new NodeValue_Array(_name, _node, _value, "", _len);
}
function NodeValue_Array(_name, _node, _value, _tooltip = "", _length = 2) : NodeValue(_name, _node, JUNCTION_CONNECT.input, VALUE_TYPE.float, _value, _tooltip) constructor {
data_array_length = _length;

View file

@ -4,133 +4,116 @@ function Node_VFX_Spawner_Base(_x, _y, _group = noone) : Node(_x, _y, _group) co
inputs[| 0] = nodeValue_Surface("Particle sprite", self);
inputs[| 1] = nodeValue("Spawn delay", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4, "Frames delay between each particle spawn." );
inputs[| 1] = nodeValue_Int("Spawn delay", self, 4, "Frames delay between each particle spawn." );
inputs[| 2] = nodeValue("Spawn amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 2, 2 ], "Amount of particle spawn in that frame." )
.setDisplay(VALUE_DISPLAY.range, { linked : true });
inputs[| 2] = nodeValue_Range("Spawn amount", self, [ 2, 2 ] , { linked : true })
.setTooltip("Amount of particle spawn in that frame.");
inputs[| 3] = nodeValue("Spawn area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, DEF_AREA )
.setDisplay(VALUE_DISPLAY.area);
inputs[| 3] = nodeValue_Area("Spawn area", self, DEF_AREA );
inputs[| 4] = nodeValue_Enum_Scroll("Spawn distribution", self, 0, [ "Area", "Border", "Map" ] );
inputs[| 5] = nodeValue("Lifespan", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 20, 30 ] )
.setDisplay(VALUE_DISPLAY.range);
inputs[| 5] = nodeValue_Range("Lifespan", self, [ 20, 30 ] );
inputs[| 6] = nodeValue("Spawn direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 0, 45, 135, 0, 0 ] )
.setDisplay(VALUE_DISPLAY.rotation_random);
inputs[| 6] = nodeValue_Rotation_Random("Spawn direction", self, [ 0, 45, 135, 0, 0 ] );
inputs[| 7] = nodeValue("Acceleration", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.range, { linked : true });
inputs[| 7] = nodeValue_Range("Acceleration", self, [ 0, 0 ] , { linked : true });
inputs[| 8] = nodeValue("Orientation", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 0, 0, 0, 0, 0 ] )
.setDisplay(VALUE_DISPLAY.rotation_random);
inputs[| 8] = nodeValue_Rotation_Random("Orientation", self, [ 0, 0, 0, 0, 0 ] );
inputs[| 9] = nodeValue("Rotational speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.range, { linked : true });
inputs[| 9] = nodeValue_Range("Rotational speed", self, [ 0, 0 ] , { linked : true });
inputs[| 10] = nodeValue("Spawn scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1, 1 ] )
.setDisplay(VALUE_DISPLAY.vector_range, { linked : true });
inputs[| 10] = nodeValue_Vec2_Range("Spawn scale", self, [ 1, 1, 1, 1 ] , { linked : true });
inputs[| 11] = nodeValue("Scale over time", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11 );
inputs[| 12] = nodeValue("Color over lifetime", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(cola(c_white)) );
inputs[| 12] = nodeValue_Gradient("Color over lifetime", self, new gradientObject(cola(c_white)));
inputs[| 13] = nodeValue("Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.range, { linked : true });
inputs[| 13] = nodeValue_Range("Alpha", self, [ 1, 1 ], { linked : true });
inputs[| 14] = nodeValue("Alpha over time", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11);
inputs[| 15] = nodeValue("Rotate by direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false, "Make the particle rotates to follow its movement.");
inputs[| 15] = nodeValue_Bool("Rotate by direction", self, false, "Make the particle rotates to follow its movement.");
inputs[| 16] = nodeValue_Enum_Button("Spawn type", self, 0, [ "Stream", "Burst", "Trigger" ]);
inputs[| 17] = nodeValue("Spawn size", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] )
.setDisplay(VALUE_DISPLAY.range, { linked : true });
inputs[| 17] = nodeValue_Range("Spawn size", self, [ 1, 1 ] , { linked : true });
inputs[| 18] = nodeValue("Spawn velocity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 2 ] )
.setDisplay(VALUE_DISPLAY.range);
inputs[| 18] = nodeValue_Range("Spawn velocity", self, [ 1, 2 ] );
inputs[| 19] = nodeValue("Gravity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.range, { linked : true });
inputs[| 19] = nodeValue_Range("Gravity", self, [ 0, 0 ] , { linked : true });
inputs[| 20] = nodeValue("Direction wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector, { label: [ "Amplitude", "Period" ], linkable: false, per_line: true });
inputs[| 20] = nodeValue_Vector("Direction wiggle", self, [ 0, 0 ] , { label: [ "Amplitude", "Period" ], linkable: false, per_line: true });
inputs[| 21] = nodeValue("Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true );
inputs[| 21] = nodeValue_Bool("Loop", self, true );
inputs[| 22] = nodeValue_Enum_Scroll("Surface array", self, 0, [ "Random", "Order", "Animation", "Scale" ])
.setTooltip("Whether to select image from an array in order, at random, or treat array as animation.")
.setVisible(false);
inputs[| 23] = nodeValue("Animation speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] )
.setDisplay(VALUE_DISPLAY.range, { linked : true })
inputs[| 23] = nodeValue_Range("Animation speed", self, [ 1, 1 ] , { linked : true })
.setVisible(false);
inputs[| 24] = nodeValue_Enum_Button("Scatter", self, 1, [ "Uniform", "Random" ]);
inputs[| 25] = nodeValue("Boundary data", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [])
inputs[| 25] = nodeValue_Int("Boundary data", self, [])
.setArrayDepth(1)
.setVisible(false, true);
inputs[| 26] = nodeValue_Enum_Button("On animation end", self, ANIM_END_ACTION.loop, [ "Loop", "Ping pong", "Destroy" ])
.setVisible(false);
inputs[| 27] = nodeValue("Spawn", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
inputs[| 27] = nodeValue_Bool("Spawn", self, true);
inputs[| 28] = nodeValue("Random blend", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(cola(c_white)) );
inputs[| 28] = nodeValue_Gradient("Random blend", self, new gradientObject(cola(c_white)));
inputs[| 29] = nodeValue("Directed from center", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false, "Make particle move away from the spawn center.");
inputs[| 29] = nodeValue_Bool("Directed from center", self, false, "Make particle move away from the spawn center.");
inputs[| 30] = nodeValue_Surface("Distribution map", self)
inputs[| 31] = nodeValue_Surface("Atlas", self, [])
.setArrayDepth(1);
inputs[| 32] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, seed_random(6))
inputs[| 32] = nodeValue_Float("Seed", self, seed_random(6))
.setDisplay(VALUE_DISPLAY._default, { side_button : button(function() { randomize(); inputs[| 32].setValue(seed_random(6)); }).setIcon(THEME.icon_random, 0, COLORS._main_icon) });
inputs[| 33] = nodeValue_Rotation("Gravity direction", self, -90);
inputs[| 34] = nodeValue("Turning", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.range, { linked : true });
inputs[| 34] = nodeValue_Range("Turning", self, [ 0, 0 ] , { linked : true });
inputs[| 35] = nodeValue("Turn both directions", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false, "Apply randomized 1, -1 multiplier to the turning speed." );
inputs[| 35] = nodeValue_Bool("Turn both directions", self, false, "Apply randomized 1, -1 multiplier to the turning speed." );
inputs[| 36] = nodeValue("Turn scale with speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, false );
inputs[| 36] = nodeValue_Float("Turn scale with speed", self, false );
inputs[| 37] = nodeValue("Collide ground", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| 37] = nodeValue_Bool("Collide ground", self, false );
inputs[| 38] = nodeValue("Ground offset", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 );
inputs[| 38] = nodeValue_Float("Ground offset", self, 0 );
inputs[| 39] = nodeValue("Bounce amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5 )
inputs[| 39] = nodeValue_Float("Bounce amount", self, 0.5 )
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 40] = nodeValue("Bounce friction", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1, "Apply horizontal friction once particle stop bouncing." )
inputs[| 40] = nodeValue_Float("Bounce friction", self, 0.1, "Apply horizontal friction once particle stop bouncing." )
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 41] = nodeValue("Position wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector, { label: [ "Amplitude", "Period" ], linkable: false, per_line: true });
inputs[| 41] = nodeValue_Vector("Position wiggle", self, [ 0, 0 ] , { label: [ "Amplitude", "Period" ], linkable: false, per_line: true });
inputs[| 42] = nodeValue("Rotation wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector, { label: [ "Amplitude", "Period" ], linkable: false, per_line: true });
inputs[| 42] = nodeValue_Vector("Rotation wiggle", self, [ 0, 0 ] , { label: [ "Amplitude", "Period" ], linkable: false, per_line: true });
inputs[| 43] = nodeValue("Scale wiggle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector, { label: [ "Amplitude", "Period" ], linkable: false, per_line: true });
inputs[| 43] = nodeValue_Vector("Scale wiggle", self, [ 0, 0 ] , { label: [ "Amplitude", "Period" ], linkable: false, per_line: true });
inputs[| 44] = nodeValue("Spawn", self, JUNCTION_CONNECT.input, VALUE_TYPE.trigger, false )
inputs[| 44] = nodeValue_Trigger("Spawn", self, false )
.setDisplay(VALUE_DISPLAY.button, { name: "Trigger" });
inputs[| 45] = nodeValue("Follow Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| 45] = nodeValue_Bool("Follow Path", self, false );
inputs[| 46] = nodeValue("Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.pathnode, noone );
inputs[| 46] = nodeValue_PathNode("Path", self, noone );
inputs[| 47] = nodeValue("Path Deviation", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11 );
inputs[| 48] = nodeValue("Reset Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.trigger, false )
inputs[| 48] = nodeValue_Trigger("Reset Seed", self, false )
.setDisplay(VALUE_DISPLAY.button, { name: "Trigger" })
inputs[| 49] = nodeValue("Stretch Animation", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| 49] = nodeValue_Bool("Stretch Animation", self, false );
for (var i = 2, n = ds_list_size(inputs); i < n; i++)
inputs[| i].rejectArray();

View file

@ -45,17 +45,16 @@ function _Node_Strand_Affector(_x, _y, _group = noone) : Node(_x, _y, _group) co
inputs[| 1] = nodeValue_Enum_Scroll("Shape", self, 0, [ "Point", "Band" ]);
inputs[| 2] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue_Vector("Position", self, [ 0, 0 ]);
inputs[| 3] = nodeValue("Range", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 4);
inputs[| 3] = nodeValue_Float("Range", self, 4);
inputs[| 4] = nodeValue_Rotation("Direction", self, 0);
inputs[| 5] = nodeValue("Falloff", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.2)
inputs[| 5] = nodeValue_Float("Falloff", self, 0.2)
.setDisplay(VALUE_DISPLAY.slider);
outputs[| 0] = nodeValue("Strand", self, JUNCTION_CONNECT.output, VALUE_TYPE.strands, noone);
outputs[| 0] = nodeValue_Output("Strand", self, VALUE_TYPE.strands, noone);
input_fix_len = ds_list_size(inputs);

View file

@ -1,9 +1,9 @@
function __init_mask_modifier(_mask_index) { #region
var _ind = ds_list_size(inputs);
inputs[| _ind + 0] = nodeValue("Invert mask", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
inputs[| _ind + 0] = nodeValue_Bool("Invert mask", self, false);
inputs[| _ind + 1] = nodeValue("Mask feather", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0)
inputs[| _ind + 1] = nodeValue_Float("Mask feather", self, 0)
.setDisplay(VALUE_DISPLAY.slider, { range: [0, 32, 0.1] });
__mask_index = _mask_index;

View file

@ -6,21 +6,20 @@ function Node_MK_Delay_Machine(_x, _y, _group = noone) : Node(_x, _y, _group) co
inputs[| 0] = nodeValue_Surface("Surface", self);
inputs[| 1] = nodeValue("Delay Amounts", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4);
inputs[| 1] = nodeValue_Int("Delay Amounts", self, 4);
inputs[| 2] = nodeValue("Delay Frames", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1);
inputs[| 2] = nodeValue_Int("Delay Frames", self, 1);
inputs[| 3] = nodeValue("Blend over Delay", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_white ])
.setDisplay(VALUE_DISPLAY.palette);
inputs[| 3] = nodeValue_Palette("Blend over Delay", self, [ c_white ]);
inputs[| 4] = nodeValue("Alpha over Delay", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11);
inputs[| 5] = nodeValue_Enum_Scroll("Palette Select", self, 0, [ "Loop", "Pingpong", "Random" ]);
inputs[| 6] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, seed_random(6))
inputs[| 6] = nodeValue_Int("Seed", self, seed_random(6))
.setDisplay(VALUE_DISPLAY._default, { side_button : button(function() { randomize(); inputs[| 6].setValue(seed_random(6)); }).setIcon(THEME.icon_random, 0, COLORS._main_icon) });
outputs[| 0] = nodeValue("Surface", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface", self, VALUE_TYPE.surface, noone);
input_display_list = [ 0,
["Delay", false], 1, 2,

View file

@ -22,30 +22,27 @@ function Node_2D_light(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
new scrollItem("Line asymmetric", s_node_2d_light_shape, 2),
new scrollItem("Spot", s_node_2d_light_shape, 3), ]);
inputs[| 2] = nodeValue("Center", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 16, 16 ])
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 2] = nodeValue_Vector("Center", self, [ 16, 16 ])
.setUnitRef(function(index) { return getDimension(index); });
inputs[| 3] = nodeValue("Range", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 16);
inputs[| 3] = nodeValue_Float("Range", self, 16);
inputs[| 4] = nodeValue("Intensity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
inputs[| 4] = nodeValue_Float("Intensity", self, 1)
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 5] = nodeValue("Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white);
inputs[| 5] = nodeValue_Color("Color", self, c_white);
inputs[| 6] = nodeValue("Start", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 16, 16 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 6] = nodeValue_Vector("Start", self, [ 16, 16 ]);
inputs[| 7] = nodeValue("Finish", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 32, 16 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 7] = nodeValue_Vector("Finish", self, [ 32, 16 ]);
inputs[| 8] = nodeValue("Sweep", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 15)
inputs[| 8] = nodeValue_Int("Sweep", self, 15)
.setDisplay(VALUE_DISPLAY.slider, { range: [-80, 80, 0.1] });
inputs[| 9] = nodeValue("Sweep end", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
inputs[| 9] = nodeValue_Int("Sweep end", self, 0)
.setDisplay(VALUE_DISPLAY.slider, { range: [-80, 80, 0.1] });
inputs[| 10] = nodeValue("Banding", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
inputs[| 10] = nodeValue_Int("Banding", self, 0)
.setDisplay(VALUE_DISPLAY.slider, { range: [0, 16, 0.1] });
inputs[| 11] = nodeValue_Enum_Scroll("Attenuation", self, 0,
@ -54,19 +51,19 @@ function Node_2D_light(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
new scrollItem("Linear", s_node_curve, 2), ])
.setTooltip("Control how light fade out over distance.");
inputs[| 12] = nodeValue("Radial banding", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
inputs[| 12] = nodeValue_Int("Radial banding", self, 0)
.setDisplay(VALUE_DISPLAY.slider, { range: [0, 16, 0.1] });
inputs[| 13] = nodeValue_Rotation("Radial start", self, 0);
inputs[| 14] = nodeValue("Radial band ratio", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5)
inputs[| 14] = nodeValue_Float("Radial band ratio", self, 0.5)
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 15] = nodeValue("Active", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
inputs[| 15] = nodeValue_Bool("Active", self, true);
active_index = 15;
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 1] = nodeValue("Light only", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
outputs[| 1] = nodeValue_Output("Light only", self, VALUE_TYPE.surface, noone);
input_display_list = [ 15, 0,
["Shape", false], 1, 2, 6, 7, 8, 9,

View file

@ -18,68 +18,66 @@ function Node_3D_Camera(_x, _y, _group = noone) : Node_3D_Object(_x, _y, _group)
global.SKY_SPHERE = new __3dUVSphere(0.5, 16, 8, true);
inputs[| in_d3d + 0] = nodeValue("FOV", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 60 )
inputs[| in_d3d + 0] = nodeValue_Int("FOV", self, 60 )
.setDisplay(VALUE_DISPLAY.slider, { range: [ 10, 90, 0.1 ] });
inputs[| in_d3d + 1] = nodeValue("Clipping Distance", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 10 ] )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| in_d3d + 1] = nodeValue_Vector("Clipping Distance", self, [ 1, 10 ] );
inputs[| in_d3d + 2] = nodeValue_Dimension(self);
inputs[| in_d3d + 3] = nodeValue_Enum_Button("Projection", self, 1 , [ "Perspective", "Orthographic" ]);
inputs[| in_d3d + 4] = nodeValue("Scene", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Scene, noone )
inputs[| in_d3d + 4] = nodeValue_D3Scene("Scene", self, noone )
.setVisible(true, true);
inputs[| in_d3d + 5] = nodeValue("Ambient Light", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_dkgrey );
inputs[| in_d3d + 5] = nodeValue_Color("Ambient Light", self, c_dkgrey );
inputs[| in_d3d + 6] = nodeValue("Show Background", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| in_d3d + 6] = nodeValue_Bool("Show Background", self, false );
inputs[| in_d3d + 7] = nodeValue_Enum_Button("Backface Culling", self, 2 , [ "None", "CW", "CCW" ]);
inputs[| in_d3d + 8] = nodeValue("Orthographic Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5 )
inputs[| in_d3d + 8] = nodeValue_Float("Orthographic Scale", self, 0.5 )
.setDisplay(VALUE_DISPLAY.slider, { range: [ 0.01, 4, 0.01 ] });
inputs[| in_d3d + 9] = nodeValue_Enum_Scroll("Postioning Mode", self, 2, [ "Position + Rotation", "Position + Lookat", "Lookat + Rotation" ] );
inputs[| in_d3d + 10] = nodeValue("Lookat Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| in_d3d + 10] = nodeValue_Vector("Lookat Position", self, [ 0, 0, 0 ] );
inputs[| in_d3d + 11] = nodeValue_Rotation("Roll", self, 0);
inputs[| in_d3d + 12] = nodeValue_Rotation("Horizontal Angle", self, 45 );
inputs[| in_d3d + 13] = nodeValue("Vertical Angle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 30 )
inputs[| in_d3d + 13] = nodeValue_Float("Vertical Angle", self, 30 )
.setDisplay(VALUE_DISPLAY.slider, { range: [0, 90, 0.1] });
inputs[| in_d3d + 14] = nodeValue("Distance", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 4 );
inputs[| in_d3d + 14] = nodeValue_Float("Distance", self, 4 );
inputs[| in_d3d + 15] = nodeValue("Gamma Adjust", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| in_d3d + 15] = nodeValue_Bool("Gamma Adjust", self, false );
inputs[| in_d3d + 16] = nodeValue_Surface("Environment Texture", self);
inputs[| in_d3d + 17] = nodeValue("Ambient Occlusion", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| in_d3d + 17] = nodeValue_Bool("Ambient Occlusion", self, false );
inputs[| in_d3d + 18] = nodeValue("AO Radius", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.25 );
inputs[| in_d3d + 18] = nodeValue_Float("AO Radius", self, 0.25 );
inputs[| in_d3d + 19] = nodeValue("AO Bias", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.05 );
inputs[| in_d3d + 19] = nodeValue_Float("AO Bias", self, 0.05 );
inputs[| in_d3d + 20] = nodeValue("AO Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1. )
inputs[| in_d3d + 20] = nodeValue_Float("AO Strength", self, 1. )
.setDisplay(VALUE_DISPLAY.slider, { range: [ 0.01, 4, 0.01 ] });
inputs[| in_d3d + 21] = nodeValue("Round Normal", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 )
inputs[| in_d3d + 21] = nodeValue_Int("Round Normal", self, 0 )
.setWindows();
inputs[| in_d3d + 22] = nodeValue_Enum_Button("Blend mode", self, 0 , [ "Normal", "Additive" ]);
in_cam = ds_list_size(inputs);
outputs[| 0] = nodeValue("Rendered", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone );
outputs[| 0] = nodeValue_Output("Rendered", self, VALUE_TYPE.surface, noone );
outputs[| 1] = nodeValue("Normal", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone )
outputs[| 1] = nodeValue_Output("Normal", self, VALUE_TYPE.surface, noone )
.setVisible(false);
outputs[| 2] = nodeValue("Depth", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone )
outputs[| 2] = nodeValue_Output("Depth", self, VALUE_TYPE.surface, noone )
.setVisible(false);
input_display_list = [ in_d3d + 4,

View file

@ -8,28 +8,28 @@ function Node_3D_Camera_Set(_x, _y, _group = noone) : Node_3D_Camera(_x, _y, _gr
inputs[| in_cam + 0] = nodeValue_Rotation("L1 H angle", self, 30)
.setName("Horizontal angle");
inputs[| in_cam + 1] = nodeValue("L1 V angle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 45 )
inputs[| in_cam + 1] = nodeValue_Float("L1 V angle", self, 45 )
.setName("Vertical angle")
.setDisplay(VALUE_DISPLAY.slider, { range: [0, 90, 0.1] });
inputs[| in_cam + 2] = nodeValue("L1 Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white )
inputs[| in_cam + 2] = nodeValue_Color("L1 Color", self, c_white )
.setName("Color")
inputs[| in_cam + 3] = nodeValue("L1 Intensity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 )
inputs[| in_cam + 3] = nodeValue_Float("L1 Intensity", self, 1 )
.setName("Intensity")
.setDisplay(VALUE_DISPLAY.slider);
inputs[| in_cam + 4] = nodeValue_Rotation("L2 H angle", self, -45)
.setName("Horizontal angle");
inputs[| in_cam + 5] = nodeValue("L2 V angle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 45 )
inputs[| in_cam + 5] = nodeValue_Float("L2 V angle", self, 45 )
.setName("Vertical angle")
.setDisplay(VALUE_DISPLAY.slider, { range: [0, 90, 0.1] });
inputs[| in_cam + 6] = nodeValue("L2 Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white )
inputs[| in_cam + 6] = nodeValue_Color("L2 Color", self, c_white )
.setName("Color")
inputs[| in_cam + 7] = nodeValue("L2 Intensity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.25 )
inputs[| in_cam + 7] = nodeValue_Float("L2 Intensity", self, 0.25 )
.setName("Intensity")
.setDisplay(VALUE_DISPLAY.slider);

View file

@ -5,10 +5,9 @@ function Node_3D_Depth(_x, _y, _group = noone) : Node_Processor(_x, _y, _group)
inputs[| 1] = nodeValue_Surface("Depth", self);
inputs[| 2] = nodeValue("Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [0, 0, 0] )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 2] = nodeValue_Vector("Rotation", self, [0, 0, 0] );
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
input_display_list = [
["Texture", false], 0, 1,

View file

@ -1,10 +1,9 @@
function Node_3D_Instancer(_x, _y, _group = noone) : Node_3D_Modifier(_x, _y, _group) constructor {
name = "3D Instancer";
inputs[| in_mesh + 0] = nodeValue("Amounts", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1);
inputs[| in_mesh + 0] = nodeValue_Int("Amounts", self, 1);
inputs[| in_mesh + 1] = nodeValue("Positions", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector)
inputs[| in_mesh + 1] = nodeValue_Vector("Positions", self, [ 0, 0, 0 ])
.setArrayDepth(1);
static processData = function(_output, _data, _output_index, _array_index = 0) {

View file

@ -3,13 +3,13 @@ function Node_3D_Light_Directional(_x, _y, _group = noone) : Node_3D_Light(_x, _
object_class = __3dLightDirectional;
inputs[| in_light + 0] = nodeValue("Cast Shadow", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
inputs[| in_light + 0] = nodeValue_Bool("Cast Shadow", self, false);
inputs[| in_light + 1] = nodeValue("Shadow Map Size", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1024);
inputs[| in_light + 1] = nodeValue_Int("Shadow Map Size", self, 1024);
inputs[| in_light + 2] = nodeValue("Shadow Map Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4);
inputs[| in_light + 2] = nodeValue_Int("Shadow Map Scale", self, 4);
inputs[| in_light + 3] = nodeValue("Shadow Bias", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, .001);
inputs[| in_light + 3] = nodeValue_Float("Shadow Bias", self, .001);
input_display_list = [
["Transform", false], 0,

View file

@ -3,15 +3,15 @@ function Node_3D_Light_Point(_x, _y, _group = noone) : Node_3D_Light(_x, _y, _gr
object_class = __3dLightPoint;
inputs[| in_light + 0] = nodeValue("Radius", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 4)
inputs[| in_light + 0] = nodeValue_Float("Radius", self, 4)
inputs[| in_light + 1] = nodeValue("Cast Shadow", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false)
inputs[| in_light + 1] = nodeValue_Bool("Cast Shadow", self, false)
.setWindows();
inputs[| in_light + 2] = nodeValue("Shadow Map Size", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1024)
inputs[| in_light + 2] = nodeValue_Int("Shadow Map Size", self, 1024)
.setWindows();
inputs[| in_light + 3] = nodeValue("Shadow Bias", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, .001)
inputs[| in_light + 3] = nodeValue_Float("Shadow Bias", self, .001)
.setWindows();
input_display_list = [

View file

@ -5,27 +5,27 @@ function Node_3D_Material(_x, _y, _group = noone) : Node_3D(_x, _y, _group) cons
inputs[| 0] = nodeValue_Surface("Texture", self)
.setVisible(true, true);
inputs[| 1] = nodeValue("Diffuse", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 )
inputs[| 1] = nodeValue_Float("Diffuse", self, 1 )
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 2] = nodeValue("Specular", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 )
inputs[| 2] = nodeValue_Float("Specular", self, 0 )
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 3] = nodeValue("Shininess", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 );
inputs[| 3] = nodeValue_Float("Shininess", self, 1 );
inputs[| 4] = nodeValue("Metalic", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| 4] = nodeValue_Bool("Metalic", self, false );
inputs[| 5] = nodeValue_Surface("Normal Map", self);
inputs[| 6] = nodeValue("Normal Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 )
inputs[| 6] = nodeValue_Float("Normal Strength", self, 1 )
.setDisplay(VALUE_DISPLAY.slider, { range: [ 0, 2, 0.01 ] });
inputs[| 7] = nodeValue("Roughness", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 )
inputs[| 7] = nodeValue_Float("Roughness", self, 1 )
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 8] = nodeValue("Anti aliasing", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| 8] = nodeValue_Bool("Anti aliasing", self, false );
outputs[| 0] = nodeValue("Material", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3Material, noone);
outputs[| 0] = nodeValue_Output("Material", self, VALUE_TYPE.d3Material, noone);
input_display_list = [ 0, 8,
["Properties", false], 1, 2, 3, 4, 7,

View file

@ -3,16 +3,16 @@ function Node_3D_Mesh_Cone(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _group
object_class = __3dCone;
inputs[| in_mesh + 0] = nodeValue("Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 8 )
inputs[| in_mesh + 0] = nodeValue_Int("Side", self, 8 )
.setValidator(VV_min(3));
inputs[| in_mesh + 1] = nodeValue("Material Bottom", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() )
inputs[| in_mesh + 1] = nodeValue_D3Material("Material Bottom", self, new __d3dMaterial())
.setVisible(true, true);
inputs[| in_mesh + 2] = nodeValue("Material Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() )
inputs[| in_mesh + 2] = nodeValue_D3Material("Material Side", self, new __d3dMaterial())
.setVisible(true, true);
inputs[| in_mesh + 3] = nodeValue("Smooth Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| in_mesh + 3] = nodeValue_Bool("Smooth Side", self, false );
input_display_list = [
__d3d_input_list_mesh, in_mesh + 0, in_mesh + 3,

View file

@ -2,24 +2,24 @@ function Node_3D_Mesh_Cube(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _group
name = "3D Cube";
object_class = noone;
inputs[| in_mesh + 0] = nodeValue("Material per side", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| in_mesh + 0] = nodeValue_Bool("Material per side", self, false );
inputs[| in_mesh + 1] = nodeValue("Material", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() )
inputs[| in_mesh + 1] = nodeValue_D3Material("Material", self, new __d3dMaterial())
.setVisible(true, true);
inputs[| in_mesh + 2] = nodeValue("Material Bottom", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() )
inputs[| in_mesh + 2] = nodeValue_D3Material("Material Bottom", self, new __d3dMaterial())
.setVisible(true, true);
inputs[| in_mesh + 3] = nodeValue("Material Left", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() )
inputs[| in_mesh + 3] = nodeValue_D3Material("Material Left", self, new __d3dMaterial())
.setVisible(true, true);
inputs[| in_mesh + 4] = nodeValue("Material Right", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() )
inputs[| in_mesh + 4] = nodeValue_D3Material("Material Right", self, new __d3dMaterial())
.setVisible(true, true);
inputs[| in_mesh + 5] = nodeValue("Material Back", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() )
inputs[| in_mesh + 5] = nodeValue_D3Material("Material Back", self, new __d3dMaterial())
.setVisible(true, true);
inputs[| in_mesh + 6] = nodeValue("Material Front", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() )
inputs[| in_mesh + 6] = nodeValue_D3Material("Material Front", self, new __d3dMaterial())
.setVisible(true, true);
input_display_list = [

View file

@ -3,21 +3,21 @@ function Node_3D_Mesh_Cylinder(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _g
object_class = __3dCylinder;
inputs[| in_mesh + 0] = nodeValue("Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 8 )
inputs[| in_mesh + 0] = nodeValue_Int("Side", self, 8 )
.setValidator(VV_min(3));
inputs[| in_mesh + 1] = nodeValue("Material Top", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() )
inputs[| in_mesh + 1] = nodeValue_D3Material("Material Top", self, new __d3dMaterial())
.setVisible(true, true);
inputs[| in_mesh + 2] = nodeValue("Material Bottom", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() )
inputs[| in_mesh + 2] = nodeValue_D3Material("Material Bottom", self, new __d3dMaterial())
.setVisible(true, true);
inputs[| in_mesh + 3] = nodeValue("Material Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() )
inputs[| in_mesh + 3] = nodeValue_D3Material("Material Side", self, new __d3dMaterial())
.setVisible(true, true);
inputs[| in_mesh + 4] = nodeValue("Smooth Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| in_mesh + 4] = nodeValue_Bool("Smooth Side", self, false );
inputs[| in_mesh + 5] = nodeValue("End caps", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true );
inputs[| in_mesh + 5] = nodeValue_Bool("End caps", self, true );
input_display_list = [
__d3d_input_list_mesh, in_mesh + 0, in_mesh + 4, in_mesh + 5,

View file

@ -1,16 +1,16 @@
function Node_3D_Mesh_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Mesh Export";
inputs[| 0] = nodeValue("Mesh", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Mesh, noone)
inputs[| 0] = nodeValue_D3Mesh("Mesh", self, noone)
.setVisible(true, true);
inputs[| 1] = nodeValue("Paths", self, JUNCTION_CONNECT.input, VALUE_TYPE.path, "")
inputs[| 1] = nodeValue_Text("Paths", self, "")
.setDisplay(VALUE_DISPLAY.path_save, { filter: "Obj (.obj)|*.obj" })
.setVisible(true);
inputs[| 2] = nodeValue("Export Texture", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
inputs[| 2] = nodeValue_Bool("Export Texture", self, true);
inputs[| 3] = nodeValue("Invert UV", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
inputs[| 3] = nodeValue_Bool("Invert UV", self, false);
input_display_list = [ 0,
["Export", false], 1, 2, 3,

View file

@ -3,27 +3,25 @@ function Node_3D_Mesh_Extrude(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _gr
object_class = __3dSurfaceExtrude;
inputs[| in_mesh + 0] = nodeValue("Front Surface", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial())
inputs[| in_mesh + 0] = nodeValue_D3Material("Front Surface", self, new __d3dMaterial())
.setVisible(true, true);
inputs[| in_mesh + 1] = nodeValue_Surface("Front Height", self);
inputs[| in_mesh + 2] = nodeValue("Smooth", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false)
inputs[| in_mesh + 2] = nodeValue_Bool("Smooth", self, false)
inputs[| in_mesh + 3] = nodeValue("Always update", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
inputs[| in_mesh + 3] = nodeValue_Bool("Always update", self, false);
inputs[| in_mesh + 4] = nodeValue("Double Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
inputs[| in_mesh + 4] = nodeValue_Bool("Double Side", self, false);
inputs[| in_mesh + 5] = nodeValue("Back Surface", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial())
inputs[| in_mesh + 5] = nodeValue_D3Material("Back Surface", self, new __d3dMaterial())
.setVisible(true, true);
inputs[| in_mesh + 6] = nodeValue_Surface("Back Height", self);
inputs[| in_mesh + 7] = nodeValue("Front Height Level", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 1 ])
.setDisplay(VALUE_DISPLAY.slider_range);
inputs[| in_mesh + 7] = nodeValue_Slider_Range("Front Height Level", self, [ 0, 1 ]);
inputs[| in_mesh + 8] = nodeValue("Back Height Level", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 1 ])
.setDisplay(VALUE_DISPLAY.slider_range);
inputs[| in_mesh + 8] = nodeValue_Slider_Range("Back Height Level", self, [ 0, 1 ]);
input_display_list = [ in_mesh + 3,
__d3d_input_list_mesh,

View file

@ -25,14 +25,14 @@ function Node_3D_Mesh_Obj(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _group)
object = noone;
object_class = __3dObject;
inputs[| in_mesh + 0] = nodeValue("File Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.path, "" )
inputs[| in_mesh + 0] = nodeValue_Text("File Path", self, "" )
.setDisplay(VALUE_DISPLAY.path_load, { filter: "3d object|*.obj" })
.rejectArray();
inputs[| in_mesh + 1] = nodeValue("Flip UV", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true, "Flip UV axis, can be use to fix some texture mapping error.")
inputs[| in_mesh + 1] = nodeValue_Bool("Flip UV", self, true, "Flip UV axis, can be use to fix some texture mapping error.")
.rejectArray();
inputs[| in_mesh + 2] = nodeValue("Import Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
inputs[| in_mesh + 2] = nodeValue_Float("Import Scale", self, 1)
.rejectArray();
inputs[| in_mesh + 3] = nodeValue_Enum_Scroll("Axis", self, 0, [ "XYZ", "XZ-Y", "X-ZY" ])
@ -73,7 +73,7 @@ function Node_3D_Mesh_Obj(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _group)
static createNewInput = function(index = -1) { #region
if(index == -1) index = ds_list_size(inputs);
inputs[| index] = nodeValue("Material", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial())
inputs[| index] = nodeValue_D3Material("Material", self, new __d3dMaterial())
.setVisible(true, true);
} #endregion

View file

@ -3,36 +3,35 @@ function Node_3D_Mesh_Path_Extrude(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y
object_class = __3dPathExtrude;
inputs[| in_mesh + 0] = nodeValue("Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.pathnode, noone )
inputs[| in_mesh + 0] = nodeValue_PathNode("Path", self, noone )
.setVisible(true, true);
inputs[| in_mesh + 1] = nodeValue("Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 8 )
inputs[| in_mesh + 1] = nodeValue_Int("Side", self, 8 )
.setValidator(VV_min(2));
inputs[| in_mesh + 2] = nodeValue("Material Side", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() )
inputs[| in_mesh + 2] = nodeValue_D3Material("Material Side", self, new __d3dMaterial())
.setVisible(true, true);
inputs[| in_mesh + 3] = nodeValue("Material Cap", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() )
inputs[| in_mesh + 3] = nodeValue_D3Material("Material Cap", self, new __d3dMaterial())
.setVisible(true, true);
inputs[| in_mesh + 4] = nodeValue("Smooth", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| in_mesh + 4] = nodeValue_Bool("Smooth", self, false );
inputs[| in_mesh + 5] = nodeValue("End caps", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true );
inputs[| in_mesh + 5] = nodeValue_Bool("End caps", self, true );
inputs[| in_mesh + 6] = nodeValue("Subdivision", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 8 )
inputs[| in_mesh + 6] = nodeValue_Int("Subdivision", self, 8 )
.setValidator(VV_min(2));
inputs[| in_mesh + 7] = nodeValue("Radius", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.25 )
inputs[| in_mesh + 7] = nodeValue_Float("Radius", self, 0.25 )
.setDisplay(VALUE_DISPLAY.slider);
inputs[| in_mesh + 8] = nodeValue("Radius Over Path", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_11 );
inputs[| in_mesh + 9] = nodeValue("Texture Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ] )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| in_mesh + 9] = nodeValue_Vector("Texture Scale", self, [ 1, 1 ] );
inputs[| in_mesh + 10] = nodeValue("Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| in_mesh + 10] = nodeValue_Bool("Loop", self, false );
inputs[| in_mesh + 11] = nodeValue("Inverted", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| in_mesh + 11] = nodeValue_Bool("Inverted", self, false );
input_display_list = [
["Path", false], in_mesh + 0, in_mesh + 10,

View file

@ -3,15 +3,15 @@ function Node_3D_Mesh_Plane(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _grou
object_class = __3dPlane;
inputs[| in_mesh + 0] = nodeValue("Material", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() )
inputs[| in_mesh + 0] = nodeValue_D3Material("Material", self, new __d3dMaterial())
.setVisible(true, true);
inputs[| in_mesh + 1] = nodeValue_Enum_Button("Normal", self, 2 , [ "X", "Y", "Z" ]);
inputs[| in_mesh + 2] = nodeValue("Both side", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false )
inputs[| in_mesh + 2] = nodeValue_Bool("Both side", self, false )
.rejectArray();
inputs[| in_mesh + 3] = nodeValue("Back Material", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() );
inputs[| in_mesh + 3] = nodeValue_D3Material("Back Material", self, new __d3dMaterial())
input_display_list = [
__d3d_input_list_mesh, in_mesh + 1,

View file

@ -3,13 +3,13 @@ function Node_3D_Mesh_Sphere_Ico(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y,
object_class = __3dICOSphere;
inputs[| in_mesh + 0] = nodeValue("Subdivision", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1 )
inputs[| in_mesh + 0] = nodeValue_Int("Subdivision", self, 1 )
.setValidator(VV_min(0));
inputs[| in_mesh + 1] = nodeValue("Material", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() )
inputs[| in_mesh + 1] = nodeValue_D3Material("Material", self, new __d3dMaterial())
.setVisible(true, true);
inputs[| in_mesh + 2] = nodeValue("Smooth Normal", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| in_mesh + 2] = nodeValue_Bool("Smooth Normal", self, false );
input_display_list = [
__d3d_input_list_mesh, in_mesh + 0, in_mesh + 2,

View file

@ -3,16 +3,16 @@ function Node_3D_Mesh_Sphere_UV(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _
object_class = __3dUVSphere;
inputs[| in_mesh + 0] = nodeValue("Horizontal Slices", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 8 )
inputs[| in_mesh + 0] = nodeValue_Int("Horizontal Slices", self, 8 )
.setValidator(VV_min(2));
inputs[| in_mesh + 1] = nodeValue("Vertical Slices", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 16 )
inputs[| in_mesh + 1] = nodeValue_Int("Vertical Slices", self, 16 )
.setValidator(VV_min(3));
inputs[| in_mesh + 2] = nodeValue("Material", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() )
inputs[| in_mesh + 2] = nodeValue_D3Material("Material", self, new __d3dMaterial())
.setVisible(true, true);
inputs[| in_mesh + 3] = nodeValue("Smooth Normal", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| in_mesh + 3] = nodeValue_Bool("Smooth Normal", self, false );
input_display_list = [
__d3d_input_list_mesh, in_mesh + 0, in_mesh + 1, in_mesh + 3,

View file

@ -1,20 +1,18 @@
function Node_3D_Mesh_Stack_Slice(_x, _y, _group = noone) : Node(_x, _y, _group) constructor {
name = "Slice Stack";
inputs[| 0] = nodeValue("Mesh", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Mesh, noone)
inputs[| 0] = nodeValue_D3Mesh("Mesh", self, noone)
.setVisible(true, true);
inputs[| 1] = nodeValue("Output Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 16, 16 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue_Vector("Output Dimension", self, [ 16, 16 ]);
inputs[| 2] = nodeValue("Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1);
inputs[| 2] = nodeValue_Float("Scale", self, 1);
inputs[| 3] = nodeValue("Slices", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4);
inputs[| 3] = nodeValue_Int("Slices", self, 4);
inputs[| 4] = nodeValue("BBOX Padding", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 4] = nodeValue_Vector("BBOX Padding", self, [ 0, 0, 0 ]);
outputs[| 0] = nodeValue("Outputs", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, [])
outputs[| 0] = nodeValue_Output("Outputs", self, VALUE_TYPE.surface, [])
.setArrayDepth(1);
mesh_data = new Inspector_Label("", f_code);

View file

@ -3,22 +3,21 @@ function Node_3D_Mesh_Terrain(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _gr
object_class = __3dTerrain;
inputs[| in_mesh + 0] = nodeValue("Material", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() )
inputs[| in_mesh + 0] = nodeValue_D3Material("Material", self, new __d3dMaterial())
.setVisible(true, true);
inputs[| in_mesh + 1] = nodeValue_Enum_Button("Input type", self, 0 , [ "Surface", "Array" ]);
inputs[| in_mesh + 2] = nodeValue_Surface("Height map", self);
inputs[| in_mesh + 3] = nodeValue("Subdivision", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4 );
inputs[| in_mesh + 3] = nodeValue_Int("Subdivision", self, 4 );
inputs[| in_mesh + 4] = nodeValue("Height array", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [] )
inputs[| in_mesh + 4] = nodeValue_Float("Height array", self, [] )
.setArrayDepth(2);
inputs[| in_mesh + 5] = nodeValue("Smooth", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| in_mesh + 5] = nodeValue_Bool("Smooth", self, false );
inputs[| in_mesh + 6] = nodeValue("Front Height Level", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 1 ])
.setDisplay(VALUE_DISPLAY.slider_range);
inputs[| in_mesh + 6] = nodeValue_Slider_Range("Front Height Level", self, [ 0, 1 ]);
input_display_list = [
__d3d_input_list_transform,

View file

@ -2,7 +2,7 @@ function Node_3D_Particle(_x, _y, _group = noone) : Node_3D_Modifier(_x, _y, _gr
name = "3D Particle";
update_on_frame = true;
inputs[| in_mesh + 0] = nodeValue("Amounts", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1);
inputs[| in_mesh + 0] = nodeValue_Int("Amounts", self, 1);
part_pool_size = 128;
parts = array_create(part_pool_size);

View file

@ -5,24 +5,21 @@ function Node_3D_Point_Affector(_x, _y, _group = noone) : Node_3D_Object(_x, _y,
gizmo_plane = [ new __3dGizmoPlaneFalloff(,, 0.75) ];
gizmo_object = noone;
inputs[| in_d3d + 0] = nodeValue("Points", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setVisible(true, true)
.setDisplay(VALUE_DISPLAY.vector);
inputs[| in_d3d + 0] = nodeValue_Vector("Points", self, [ 0, 0, 0 ])
.setVisible(true, true);
inputs[| in_d3d + 1] = nodeValue("Initial value", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| in_d3d + 1] = nodeValue_Vector("Initial value", self, [ 0, 0, 0 ]);
inputs[| in_d3d + 2] = nodeValue("Final value", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
inputs[| in_d3d + 2] = nodeValue_Vector("Final value", self, [ 0, 0, 0 ]);
inputs[| in_d3d + 3] = nodeValue("Falloff distance", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5);
inputs[| in_d3d + 3] = nodeValue_Float("Falloff distance", self, 0.5);
inputs[| in_d3d + 4] = nodeValue("Falloff curve", self, JUNCTION_CONNECT.input, VALUE_TYPE.curve, CURVE_DEF_01);
inputs[| in_d3d + 5] = nodeValue_Enum_Scroll("Shape", self, 0, [ new scrollItem("Sphere", s_node_3d_affector_shape, 0),
new scrollItem("Plane", s_node_3d_affector_shape, 1), ]);
outputs[| 0] = nodeValue("Output", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [ 0, 0, 0 ])
outputs[| 0] = nodeValue_Output("Output", self, VALUE_TYPE.float, [ 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.vector);
input_display_list = [

View file

@ -1,45 +1,39 @@
function Node_3D_Repeat(_x, _y, _group = noone) : Node_3D(_x, _y, _group) constructor {
name = "3D Repeat";
inputs[| 0] = nodeValue("Objects", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Mesh, noone )
inputs[| 0] = nodeValue_D3Mesh("Objects", self, noone)
.setArrayDepth(1)
.setVisible(true, true);
inputs[| 1] = nodeValue_Enum_Button("Object Mode", self, 0 , [ "Duplicate", "Array" ] )
.rejectArray();
inputs[| 2] = nodeValue("Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1 );
inputs[| 2] = nodeValue_Int("Amount", self, 1 );
inputs[| 3] = nodeValue("Starting Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 3] = nodeValue_Vector("Starting Position", self, [ 0, 0, 0 ] );
inputs[| 4] = nodeValue("Starting Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0, 1 ] )
.setDisplay(VALUE_DISPLAY.d3quarternion);
inputs[| 4] = nodeValue_Quaternion("Starting Rotation", self, [ 0, 0, 0, 1 ] );
inputs[| 5] = nodeValue("Starting Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1, 1 ] )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 5] = nodeValue_Vector("Starting Scale", self, [ 1, 1, 1 ] );
inputs[| 6] = nodeValue("Shift Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 6] = nodeValue_Vector("Shift Position", self, [ 0, 0, 0 ] );
inputs[| 7] = nodeValue("Shift Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0, 1 ] )
.setDisplay(VALUE_DISPLAY.d3quarternion);
inputs[| 7] = nodeValue_Quaternion("Shift Rotation", self, [ 0, 0, 0, 1 ] );
inputs[| 8] = nodeValue("Shift Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 8] = nodeValue_Vector("Shift Scale", self, [ 0, 0, 0 ] );
inputs[| 9] = nodeValue("Positions", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [] )
inputs[| 9] = nodeValue_Float("Positions", self, [] )
.setArrayDepth(2);
inputs[| 10] = nodeValue("Rotations", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [] )
inputs[| 10] = nodeValue_Float("Rotations", self, [] )
.setArrayDepth(2);
inputs[| 11] = nodeValue("Scales", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [] )
inputs[| 11] = nodeValue_Float("Scales", self, [] )
.setArrayDepth(2);
inputs[| 12] = nodeValue("Use Instance", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true )
inputs[| 12] = nodeValue_Bool("Use Instance", self, true )
outputs[| 0] = nodeValue("Scene", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3Scene, noone);
outputs[| 0] = nodeValue_Output("Scene", self, VALUE_TYPE.d3Scene, noone);
input_display_list = [
["Objects", false], 0, 3, 4, 5,

View file

@ -1,7 +1,7 @@
function Node_3D_Round_Vertex(_x, _y, _group = noone) : Node_3D_Modifier(_x, _y, _group) constructor {
name = "Discretize vertex";
inputs[| in_mesh + 0] = nodeValue("Step", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.1)
inputs[| in_mesh + 0] = nodeValue_Float("Step", self, 0.1)
static processData = function(_output, _data, _output_index, _array_index = 0) {
var _obj = _data[0];

View file

@ -1,13 +1,13 @@
function Node_3D_Scene(_x, _y, _group = noone) : Node_3D(_x, _y, _group) constructor {
name = "3D Scene";
outputs[| 0] = nodeValue("Scene", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3Scene, noone);
outputs[| 0] = nodeValue_Output("Scene", self, VALUE_TYPE.d3Scene, noone);
object_lists = [];
static createNewInput = function() {
var index = ds_list_size(inputs);
inputs[| index] = nodeValue("Object", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Mesh, noone )
inputs[| index] = nodeValue_D3Mesh("Object", self, noone)
.setVisible(true, true);
return inputs[| index];

View file

@ -1,11 +1,11 @@
function Node_3D_Set_Material(_x, _y, _group = noone) : Node_3D_Modifier(_x, _y, _group) constructor {
name = "Set Material";
inputs[| in_mesh + 0] = nodeValue("Materials", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, new __d3dMaterial() )
inputs[| in_mesh + 0] = nodeValue_D3Material("Materials", self, new __d3dMaterial())
.setVisible(true, true)
.setArrayDepth(1);
inputs[| in_mesh + 1] = nodeValue("Single material", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true)
inputs[| in_mesh + 1] = nodeValue_Bool("Single material", self, true)
static preGetInputs = function() { #region
var _sing = inputs[| in_mesh + 1].getValue();

View file

@ -1,10 +1,10 @@
function Node_3D_Transform(_x, _y, _group = noone) : Node_3D_Object(_x, _y, _group) constructor {
name = "Transform";
inputs[| in_d3d + 0] = nodeValue("Mesh", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Mesh, noone)
inputs[| in_d3d + 0] = nodeValue_D3Mesh("Mesh", self, noone)
.setVisible(true, true);
outputs[| 0] = nodeValue("Mesh", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3Mesh, noone);
outputs[| 0] = nodeValue_Output("Mesh", self, VALUE_TYPE.d3Mesh, noone);
input_display_list = [ in_d3d + 0,
["Transform", false], 0, 1, 2,

View file

@ -8,7 +8,7 @@ function Node_3D_Mesh_Plane(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y, _grou
inputs[| in_mesh + 1] = nodeValue_Enum_Button("Normal", self, 2 , [ "X", "Y", "Z" ]);
inputs[| in_mesh + 2] = nodeValue("Both side", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false )
inputs[| in_mesh + 2] = nodeValue_Bool("Both side", self, false )
inputs[| in_mesh + 3] = nodeValue("Back Material", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Material, noone )

View file

@ -28,7 +28,7 @@ function Node_3D_Transform_Image(_x, _y, _group = noone) : Node_3D_Mesh(_x, _y,
]
outputs[| 0].setVisible(false);
outputs[| 1] = nodeValue("Rendered", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 1] = nodeValue_Output("Rendered", self, VALUE_TYPE.surface, noone);
output_display_list = [ 1 ]

View file

@ -1,16 +1,16 @@
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)
inputs[| 0] = nodeValue_D3Scene("Scene", self, noone)
.setVisible(true, true);
inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [])
inputs[| 1] = nodeValue_Float("Position", self, [])
.setArrayDepth(2);
inputs[| 2] = nodeValue("Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [])
inputs[| 2] = nodeValue_Float("Rotation", self, [])
.setArrayDepth(2);
inputs[| 3] = nodeValue("Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [])
inputs[| 3] = nodeValue_Float("Scale", self, [])
.setArrayDepth(2);
inputs[| 4] = nodeValue_Enum_Scroll("Positioning type", self, 0, [ "Additive", "Override" ]);
@ -19,7 +19,7 @@ function Node_3D_Transform_Scene(_x, _y, _group = noone) : Node_3D(_x, _y, _grou
inputs[| 6] = nodeValue_Enum_Scroll("Scaling type", self, 0, [ "Additive", "Multiplicative", "Override" ]);
outputs[| 0] = nodeValue("Scene", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3Scene, noone);
outputs[| 0] = nodeValue_Output("Scene", self, VALUE_TYPE.d3Scene, noone);
input_display_list = [ 0,
["Transform", false], 1, 2, 3,

View file

@ -2,16 +2,16 @@ function Node_3D_UV_Remap(_x, _y, _group = noone) : Node_3D_Object(_x, _y, _grou
name = "UV Remap";
gizmo = new __3dGizmoPlane();
inputs[| in_d3d + 0] = nodeValue("Mesh", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Mesh, noone)
inputs[| in_d3d + 0] = nodeValue_D3Mesh("Mesh", self, noone)
.setVisible(true, true);
inputs[| in_d3d + 1] = nodeValue("Target subobject", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, -1)
inputs[| in_d3d + 1] = nodeValue_Int("Target subobject", self, -1)
.setArrayDepth(1);
inputs[| in_d3d + 2] = nodeValue("Bake UV", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
inputs[| in_d3d + 2] = nodeValue_Int("Bake UV", self, 0)
.setDisplay(VALUE_DISPLAY.button, { name: "Bake", onClick: function() { attributes.bakedUV = !attributes.bakedUV; triggerRender(); } });
outputs[| 0] = nodeValue("Mesh", self, JUNCTION_CONNECT.output, VALUE_TYPE.d3Mesh, noone);
outputs[| 0] = nodeValue_Output("Mesh", self, VALUE_TYPE.d3Mesh, noone);
input_display_list = [
["Transform", false], 0, 1, 2,

View file

@ -3,18 +3,17 @@ function Node_3DSurf(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
cached_object = [];
object_class = dynaSurf_3d;
inputs[| 0] = nodeValue("Scene", self, JUNCTION_CONNECT.input, VALUE_TYPE.d3Scene, noone)
inputs[| 0] = nodeValue_D3Scene("Scene", self, noone)
.setVisible(true, true);
inputs[| 1] = nodeValue("Base Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF)
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 1] = nodeValue_Vector("Base Dimension", self, DEF_SURF);
inputs[| 2] = nodeValue("Vertical Angle", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 45 )
inputs[| 2] = nodeValue_Float("Vertical Angle", self, 45 )
.setDisplay(VALUE_DISPLAY.slider, { range: [0, 90, 0.1] });
inputs[| 3] = nodeValue("Distance", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 4 );
inputs[| 3] = nodeValue_Float("Distance", self, 4 );
outputs[| 0] = nodeValue("3DSurf", self, JUNCTION_CONNECT.output, VALUE_TYPE.dynaSurface, noone);
outputs[| 0] = nodeValue_Output("3DSurf", self, VALUE_TYPE.dynaSurface, noone);
input_display_list = [ 0,
["Camera", false], 1, 2, 3,

View file

@ -5,13 +5,12 @@ function Node_9Slice(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) co
inputs[| 1] = nodeValue_Dimension(self);
inputs[| 2] = nodeValue("Splice", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 0, 0, 0, 0 ])
.setDisplay(VALUE_DISPLAY.padding)
inputs[| 2] = nodeValue_Padding("Splice", self, [ 0, 0, 0, 0 ])
.setUnitRef(function(index) { return getDimension(index); });
inputs[| 3] = nodeValue_Enum_Scroll("Filling modes", self, 0, [ "Scale", "Repeat" ]);
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
attribute_surface_depth();
attribute_interpolation();

View file

@ -2,13 +2,13 @@ function Node_FFT(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) const
name = "FFT";
setDimension(96, 72);
inputs[| 0] = nodeValue("Data", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [])
inputs[| 0] = nodeValue_Float("Data", self, [])
.setArrayDepth(1)
.setVisible(true, true);
inputs[| 1] = nodeValue_Enum_Scroll("Preprocess Function", self, 0, [ "None", "Hann" ]);
outputs[| 0] = nodeValue("Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [])
outputs[| 0] = nodeValue_Output("Array", self, VALUE_TYPE.float, [])
.setArrayDepth(1);
static processData = function(_outSurf, _data, _output_index, _array_index) {

View file

@ -6,7 +6,7 @@ function Node_FLIP_Add_Rigidbody(_x, _y, _group = noone) : Node(_x, _y, _group)
manual_ungroupable = false;
inputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.input, VALUE_TYPE.fdomain, noone )
inputs[| 0] = nodeValue_Fdomain("Domain", self, noone )
.setVisible(true, true);
inputs[| 1] = nodeValue("Objects", self, JUNCTION_CONNECT.input, VALUE_TYPE.rigid, [] )
@ -16,7 +16,7 @@ function Node_FLIP_Add_Rigidbody(_x, _y, _group = noone) : Node(_x, _y, _group)
["Collider", false], 1,
]
outputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.output, VALUE_TYPE.fdomain, noone );
outputs[| 0] = nodeValue_Output("Domain", self, VALUE_TYPE.fdomain, noone );
obstracle = new FLIP_Obstracle();
index = 0;

View file

@ -22,20 +22,18 @@ function Node_FLIP_Apply_Force(_x, _y, _group = noone) : Node(_x, _y, _group) co
manual_ungroupable = false;
inputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.input, VALUE_TYPE.fdomain, noone )
inputs[| 0] = nodeValue_Fdomain("Domain", self, noone )
.setVisible(true, true);
inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 1] = nodeValue_Vector("Position", self, [ 0, 0 ] )
.setUnitRef(function(index) { return getDimension(); });
inputs[| 2] = nodeValue("Radius", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 4 )
inputs[| 2] = nodeValue_Float("Radius", self, 4 )
.setDisplay(VALUE_DISPLAY.slider, { range: [1, 16, 0.1] });
inputs[| 3] = nodeValue_Enum_Scroll("Shape", self, 0 , [ new scrollItem("Circle", s_node_shape_circle, 0), new scrollItem("Rectangle", s_node_shape_rectangle, 0), ]);
inputs[| 4] = nodeValue("Size", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 4, 4 ] )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 4] = nodeValue_Vector("Size", self, [ 4, 4 ] );
inputs[| 5] = nodeValue_Surface("Texture", self)
@ -44,7 +42,7 @@ function Node_FLIP_Apply_Force(_x, _y, _group = noone) : Node(_x, _y, _group) co
["Obstracle", false], 1, 5,
]
outputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.output, VALUE_TYPE.fdomain, noone );
outputs[| 0] = nodeValue_Output("Domain", self, VALUE_TYPE.fdomain, noone );
obstracle = new FLIP_Obstracle();
index = 0;

View file

@ -6,29 +6,26 @@ function Node_FLIP_Apply_Velocity(_x, _y, _group = noone) : Node(_x, _y, _group)
manual_ungroupable = false;
inputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.input, VALUE_TYPE.fdomain, noone )
inputs[| 0] = nodeValue_Fdomain("Domain", self, noone )
.setVisible(true, true);
inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 1] = nodeValue_Vector("Position", self, [ 0, 0 ] )
.setUnitRef(function(index) { return getDimension(); });
inputs[| 2] = nodeValue("Radius", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 4 )
inputs[| 2] = nodeValue_Float("Radius", self, 4 )
.setDisplay(VALUE_DISPLAY.slider, { range: [1, 16, 0.1] });
inputs[| 3] = nodeValue("Velocity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 3] = nodeValue_Vector("Velocity", self, [ 0, 0 ] );
inputs[| 4] = nodeValue_Enum_Scroll("Shape", self, 0 , [ new scrollItem("Circle", s_node_shape_circle, 0), new scrollItem("Rectangle", s_node_shape_rectangle, 0) ]);
inputs[| 5] = nodeValue("Size", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 4, 4 ] )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 5] = nodeValue_Vector("Size", self, [ 4, 4 ] );
input_display_list = [ 0,
["Velocity", false], 4, 1, 2, 5, 3,
]
outputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.output, VALUE_TYPE.fdomain, noone );
outputs[| 0] = nodeValue_Output("Domain", self, VALUE_TYPE.fdomain, noone );
static getDimension = function() {
var domain = getInputData(0);

View file

@ -6,25 +6,23 @@ function Node_FLIP_Destroy(_x, _y, _group = noone) : Node(_x, _y, _group) constr
manual_ungroupable = false;
inputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.input, VALUE_TYPE.fdomain, noone )
inputs[| 0] = nodeValue_Fdomain("Domain", self, noone )
.setVisible(true, true);
inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 1] = nodeValue_Vector("Position", self, [ 0, 0 ] )
.setUnitRef(function(index) { return getDimension(); });
inputs[| 2] = nodeValue_Enum_Scroll("Shape", self, 0 , [ new scrollItem("Circle", s_node_shape_circle, 0), new scrollItem("Rectangle", s_node_shape_rectangle, 0), ]);
inputs[| 3] = nodeValue("Radius", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 4 )
inputs[| 3] = nodeValue_Float("Radius", self, 4 )
.setDisplay(VALUE_DISPLAY.slider, { range: [1, 16, 0.1] });
inputs[| 4] = nodeValue("Size", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 4, 4 ] )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 4] = nodeValue_Vector("Size", self, [ 4, 4 ] );
inputs[| 5] = nodeValue("Ratio", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 )
inputs[| 5] = nodeValue_Float("Ratio", self, 1 )
.setDisplay(VALUE_DISPLAY.slider);
outputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.output, VALUE_TYPE.fdomain, noone );
outputs[| 0] = nodeValue_Output("Domain", self, VALUE_TYPE.fdomain, noone );
static drawOverlay = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) { #region
var _pos = getInputData(1);

View file

@ -9,34 +9,33 @@ function Node_FLIP_Domain(_x, _y, _group = noone) : Node(_x, _y, _group) constru
inputs[| 0] = nodeValue_Dimension(self);
inputs[| 1] = nodeValue("Particle Size", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1);
inputs[| 1] = nodeValue_Int("Particle Size", self, 1);
inputs[| 2] = nodeValue("Particle Density", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 10);
inputs[| 2] = nodeValue_Int("Particle Density", self, 10);
inputs[| 3] = nodeValue("FLIP Ratio", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.8)
inputs[| 3] = nodeValue_Float("FLIP Ratio", self, 0.8)
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 4] = nodeValue("Resolve accelerator", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1.5);
inputs[| 4] = nodeValue_Float("Resolve accelerator", self, 1.5);
inputs[| 5] = nodeValue("Iteration", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 8);
inputs[| 5] = nodeValue_Int("Iteration", self, 8);
inputs[| 6] = nodeValue("Damping", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.8)
inputs[| 6] = nodeValue_Float("Damping", self, 0.8)
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 7] = nodeValue("Gravity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 5);
inputs[| 7] = nodeValue_Float("Gravity", self, 5);
inputs[| 8] = nodeValue("Time Step", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.05);
inputs[| 8] = nodeValue_Float("Time Step", self, 0.05);
inputs[| 9] = nodeValue("Wall", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0b1111)
.setDisplay(VALUE_DISPLAY.toggle, { data: [ "T", "B", "L", "R" ] });
inputs[| 9] = nodeValue_Toggle("Wall", self, 0b1111, { data: [ "T", "B", "L", "R" ] });
inputs[| 10] = nodeValue("Viscosity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.)
inputs[| 10] = nodeValue_Float("Viscosity", self, 0.)
.setDisplay(VALUE_DISPLAY.slider, { range: [ -1, 1, 0.01 ] });
inputs[| 11] = nodeValue("Friction", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.)
inputs[| 11] = nodeValue_Float("Friction", self, 0.)
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 12] = nodeValue("Wall Elasticity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.)
inputs[| 12] = nodeValue_Float("Wall Elasticity", self, 0.)
.setDisplay(VALUE_DISPLAY.slider, { range: [ 0, 2, 0.01 ] });
inputs[| 13] = nodeValue_Rotation("Gravity Direction", self, 0);
@ -47,7 +46,7 @@ function Node_FLIP_Domain(_x, _y, _group = noone) : Node(_x, _y, _group) constru
["Physics", false], 7, 13, 10, 11,
]
outputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.output, VALUE_TYPE.fdomain, noone);
outputs[| 0] = nodeValue_Output("Domain", self, VALUE_TYPE.fdomain, noone);
#region attributes
array_push(attributeEditors, "FLIP Solver");

View file

@ -5,37 +5,34 @@ function Node_FLIP_Render(_x, _y, _group = noone) : Node(_x, _y, _group) constru
manual_ungroupable = false;
inputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.input, VALUE_TYPE.fdomain, noone)
inputs[| 0] = nodeValue_Fdomain("Domain", self, noone)
.setVisible(true, true);
inputs[| 1] = nodeValue("Merge threshold", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.75)
inputs[| 1] = nodeValue_Float("Merge threshold", self, 0.75)
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 2] = nodeValue("Lifespan", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 0, 0 ])
.setDisplay(VALUE_DISPLAY.range, { linked : true });
inputs[| 2] = nodeValue_Range("Lifespan", self, [ 0, 0 ], { linked : true });
inputs[| 3] = nodeValue("Particle expansion", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 20);
inputs[| 3] = nodeValue_Float("Particle expansion", self, 20);
inputs[| 4] = nodeValue("Draw obstracles", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
inputs[| 4] = nodeValue_Bool("Draw obstracles", self, true);
inputs[| 5] = nodeValue_Surface("Fluid particle", self);
inputs[| 6] = nodeValue_Enum_Scroll("Render type", self, 0, [ new scrollItem("Particle", s_node_flip_render, 0),
new scrollItem("Line", s_node_flip_render, 1), ] );
inputs[| 7] = nodeValue("Threshold", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
inputs[| 7] = nodeValue_Bool("Threshold", self, true);
inputs[| 8] = nodeValue("Additive", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
inputs[| 8] = nodeValue_Bool("Additive", self, true);
inputs[| 9] = nodeValue("Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 1, 1 ])
.setDisplay(VALUE_DISPLAY.slider_range);
inputs[| 9] = nodeValue_Slider_Range("Alpha", self, [ 1, 1 ]);
inputs[| 10] = nodeValue("Segments", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1);
inputs[| 10] = nodeValue_Int("Segments", self, 1);
inputs[| 11] = nodeValue("Color Over Velocity", self, JUNCTION_CONNECT.input, VALUE_TYPE.gradient, new gradientObject(cola(c_white)));
inputs[| 11] = nodeValue_Gradient("Color Over Velocity", self, new gradientObject(cola(c_white)));
inputs[| 12] = nodeValue("Velocity Map", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 10 ])
.setDisplay(VALUE_DISPLAY.range);
inputs[| 12] = nodeValue_Range("Velocity Map", self, [ 0, 10 ]);
input_display_list = [ 0, 5,
["Rendering", false], 6, 10, 3, 4, 9,
@ -43,7 +40,7 @@ function Node_FLIP_Render(_x, _y, _group = noone) : Node(_x, _y, _group) constru
["Post Processing", false], 8, 7, 1,
];
outputs[| 0] = nodeValue("Rendered", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Rendered", self, VALUE_TYPE.surface, noone);
seed = irandom_range(100000, 999999);
temp_surface = [ noone ];

View file

@ -6,23 +6,22 @@ function Node_FLIP_Repel(_x, _y, _group = noone) : Node(_x, _y, _group) construc
manual_ungroupable = false;
inputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.input, VALUE_TYPE.fdomain, noone )
inputs[| 0] = nodeValue_Fdomain("Domain", self, noone )
.setVisible(true, true);
inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 1] = nodeValue_Vector("Position", self, [ 0, 0 ] )
.setUnitRef(function(index) { return getDimension(); });
inputs[| 2] = nodeValue("Radius", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 4 );
inputs[| 2] = nodeValue_Float("Radius", self, 4 );
inputs[| 3] = nodeValue("Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 4 )
inputs[| 3] = nodeValue_Float("Strength", self, 4 )
.setDisplay(VALUE_DISPLAY.slider, { range: [ 0, 16, 0.1 ] });
input_display_list = [ 0,
["Repel", false], 1, 2, 3,
]
outputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.output, VALUE_TYPE.fdomain, noone );
outputs[| 0] = nodeValue_Output("Domain", self, VALUE_TYPE.fdomain, noone );
static getDimension = function() { #region
var domain = getInputData(0);

View file

@ -6,49 +6,45 @@ function Node_FLIP_Spawner(_x, _y, _group = noone) : Node(_x, _y, _group) constr
manual_ungroupable = false;
inputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.input, VALUE_TYPE.fdomain, noone )
inputs[| 0] = nodeValue_Fdomain("Domain", self, noone )
.setVisible(true, true);
inputs[| 1] = nodeValue_Enum_Scroll("Spawn Shape", self, 0 , [ new scrollItem("Circle", s_node_shape_circle, 0), new scrollItem("Rectangle", s_node_shape_rectangle, 0), "Surface" ]);
inputs[| 2] = nodeValue("Spawn Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0.5, 0.25 ] )
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 2] = nodeValue_Vector("Spawn Position", self, [ 0.5, 0.25 ] )
.setUnitRef(function(index) { return getDimension(); }, VALUE_UNIT.reference);
inputs[| 3] = nodeValue_Enum_Button("Spawn Type", self, 0 , [ "Stream", "Splash" ]);
inputs[| 4] = nodeValue("Spawn Frame", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 );
inputs[| 4] = nodeValue_Int("Spawn Frame", self, 0 );
inputs[| 5] = nodeValue("Spawn Amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 8 );
inputs[| 5] = nodeValue_Float("Spawn Amount", self, 8 );
inputs[| 6] = nodeValue("Spawn Velocity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.range);
inputs[| 6] = nodeValue_Range("Spawn Velocity", self, [ 0, 0 ] );
inputs[| 7] = nodeValue_Surface("Spawn Surface", self);
inputs[| 8] = nodeValue("Spawn Radius", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 2 )
inputs[| 8] = nodeValue_Float("Spawn Radius", self, 2 )
.setDisplay(VALUE_DISPLAY.slider, { range: [1, 16, 0.1] });
inputs[| 9] = nodeValue("Seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, seed_random(6))
inputs[| 9] = nodeValue_Int("Seed", self, seed_random(6))
.setDisplay(VALUE_DISPLAY._default, { side_button : button(function() { randomize(); inputs[| 9].setValue(seed_random(6)); }).setIcon(THEME.icon_random, 0, COLORS._main_icon) });
inputs[| 10] = nodeValue("Spawn Direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 45, 135, 0, 0 ] )
.setDisplay(VALUE_DISPLAY.rotation_random);
inputs[| 10] = nodeValue_Rotation_Random("Spawn Direction", self, [ 0, 45, 135, 0, 0 ] );
inputs[| 11] = nodeValue("Inherit Velocity", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 )
inputs[| 11] = nodeValue_Float("Inherit Velocity", self, 0 )
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 12] = nodeValue("Spawn Duration", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1 );
inputs[| 12] = nodeValue_Int("Spawn Duration", self, 1 );
inputs[| 13] = nodeValue("Spawn Szie", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 2, 2 ] )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 13] = nodeValue_Vector("Spawn Szie", self, [ 2, 2 ] );
input_display_list = [ 0, 9,
["Spawner", false], 1, 7, 8, 13, 2, 3, 4, 12, 5,
["Physics", false], 10, 6, 11,
]
outputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.output, VALUE_TYPE.fdomain, noone );
outputs[| 0] = nodeValue_Output("Domain", self, VALUE_TYPE.fdomain, noone );
spawn_amo = 0;
prev_position = [ 0, 0 ];

View file

@ -6,10 +6,10 @@ function Node_FLIP_to_VFX(_x, _y, _group = noone) : Node(_x, _y, _group) constru
manual_ungroupable = false;
inputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.input, VALUE_TYPE.fdomain, noone)
inputs[| 0] = nodeValue_Fdomain("Domain", self, noone)
.setVisible(true, true);
outputs[| 0] = nodeValue("Particles", self, JUNCTION_CONNECT.output, VALUE_TYPE.particle, [] );
outputs[| 0] = nodeValue_Output("Particles", self, VALUE_TYPE.particle, [] );
attributes.part_amount = 512;
array_push(attributeEditors, ["Maximum particles", function() { return attributes.part_amount; },

View file

@ -6,20 +6,20 @@ function Node_FLIP_Update(_x, _y, _group = noone) : Node(_x, _y, _group) constru
manual_ungroupable = false;
inputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.input, VALUE_TYPE.fdomain, noone)
inputs[| 0] = nodeValue_Fdomain("Domain", self, noone)
.setVisible(true, true);
inputs[| 1] = nodeValue("Update", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
inputs[| 1] = nodeValue_Bool("Update", self, true);
inputs[| 2] = nodeValue("Override timestep", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
inputs[| 2] = nodeValue_Bool("Override timestep", self, false);
inputs[| 3] = nodeValue("Timestep", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.01);
inputs[| 3] = nodeValue_Float("Timestep", self, 0.01);
input_display_list = [ 0, 1,
["Timestep", false], 2, 3,
];
outputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.output, VALUE_TYPE.fdomain, noone);
outputs[| 0] = nodeValue_Output("Domain", self, VALUE_TYPE.fdomain, noone);
static update = function(frame = CURRENT_FRAME) {
var domain = getInputData(0);

View file

@ -6,26 +6,25 @@ function Node_FLIP_Vortex(_x, _y, _group = noone) : Node(_x, _y, _group) constru
manual_ungroupable = false;
inputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.input, VALUE_TYPE.fdomain, noone )
inputs[| 0] = nodeValue_Fdomain("Domain", self, noone )
.setVisible(true, true);
inputs[| 1] = nodeValue("Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ] )
.setDisplay(VALUE_DISPLAY.vector)
inputs[| 1] = nodeValue_Vector("Position", self, [ 0, 0 ] )
.setUnitRef(function(index) { return getDimension(); });
inputs[| 2] = nodeValue("Radius", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 4 );
inputs[| 2] = nodeValue_Float("Radius", self, 4 );
inputs[| 3] = nodeValue("Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 4 )
inputs[| 3] = nodeValue_Float("Strength", self, 4 )
.setDisplay(VALUE_DISPLAY.slider, { range: [ -8, 8, 0.01 ] });
inputs[| 4] = nodeValue("Attraction", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0 )
inputs[| 4] = nodeValue_Float("Attraction", self, 0 )
.setDisplay(VALUE_DISPLAY.slider, { range: [ -8, 8, 0.01 ] });
input_display_list = [ 0,
["Vertex", false], 1, 2, 3, 4,
]
outputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.output, VALUE_TYPE.fdomain, noone );
outputs[| 0] = nodeValue_Output("Domain", self, VALUE_TYPE.fdomain, noone );
static getDimension = function() { #region
var domain = getInputData(0);

View file

@ -6,17 +6,16 @@ function Node_FLIP_Wall(_x, _y, _group = noone) : Node(_x, _y, _group) construct
manual_ungroupable = false;
inputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.input, VALUE_TYPE.fdomain, noone )
inputs[| 0] = nodeValue_Fdomain("Domain", self, noone )
.setVisible(true, true);
inputs[| 1] = nodeValue("Area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, DEF_AREA )
.setDisplay(VALUE_DISPLAY.area, { useShape : false });
inputs[| 1] = nodeValue_Area("Area", self, DEF_AREA , { useShape : false });
input_display_list = [ 0,
["Collider", false], 1
]
outputs[| 0] = nodeValue("Domain", self, JUNCTION_CONNECT.output, VALUE_TYPE.fdomain, noone );
outputs[| 0] = nodeValue_Output("Domain", self, VALUE_TYPE.fdomain, noone );
obstracle = new FLIP_Obstracle();

View file

@ -3,12 +3,12 @@ function Node_FXAA(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) cons
inputs[| 0] = nodeValue_Surface("Surface in", self);
inputs[| 1] = nodeValue("Active", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true);
inputs[| 1] = nodeValue_Bool("Active", self, true);
inputs[| 2] = nodeValue("Distance", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.5)
inputs[| 2] = nodeValue_Float("Distance", self, 0.5)
.setDisplay(VALUE_DISPLAY.slider);
inputs[| 3] = nodeValue("Mix", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1)
inputs[| 3] = nodeValue_Float("Mix", self, 1)
.setDisplay(VALUE_DISPLAY.slider);
active_index = 1;
@ -18,7 +18,7 @@ function Node_FXAA(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) cons
["Effect", false], 2, 3,
]
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
attribute_surface_depth();

View file

@ -11,13 +11,13 @@ function Node_BW(_x, _y) : Node_Processor(_x, _y) constructor {
uniform_con = shader_get_uniform(sh_bw, "contrast");
inputs[| 0] = new NodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0);
inputs[| 1] = new NodeValue(1, "Brightness", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0);
inputs[| 1] = new NodeValue_Float(1, "Brightness", self, 0);
inputs[| 1].setDisplay(VALUE_DISPLAY.slider, [ -1, 1, 0.01]);
inputs[| 2] = new NodeValue(2, "Contrast", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1);
inputs[| 2] = new NodeValue_Float(2, "Contrast", self, 1);
inputs[| 2].setDisplay(VALUE_DISPLAY.slider, [ -1, 4, 0.01]);
outputs[| 0] = new NodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, surface_create(1, 1));
outputs[| 0] = new nodeValue_Output(0, "Surface out", self, VALUE_TYPE.surface, surface_create(1, 1));
function process_data(_inSurf, _outSurf, _data) {
var _exp = _data[1];

View file

@ -5,7 +5,7 @@ function Node_PCX_Array_Get(_x, _y, _group = noone) : Node_PCX(_x, _y, _group) c
inputs[| 1] = nodeValue("Index", self, JUNCTION_CONNECT.input, VALUE_TYPE.PCXnode, noone);
outputs[| 0] = nodeValue("PCX", self, JUNCTION_CONNECT.output, VALUE_TYPE.PCXnode, noone);
outputs[| 0] = nodeValue_Output("PCX", self, VALUE_TYPE.PCXnode, noone);
static update = function() {
var _arr = getInputData(0);

View file

@ -7,7 +7,7 @@ function Node_PCX_Array_Set(_x, _y, _group = noone) : Node_PCX(_x, _y, _group) c
inputs[| 2] = nodeValue("Value", self, JUNCTION_CONNECT.input, VALUE_TYPE.PCXnode, noone);
outputs[| 0] = nodeValue("PCX", self, JUNCTION_CONNECT.output, VALUE_TYPE.PCXnode, noone);
outputs[| 0] = nodeValue_Output("PCX", self, VALUE_TYPE.PCXnode, noone);
static update = function() {
var _arr = getInputData(0);

View file

@ -7,7 +7,7 @@ function Node_PCX_Condition(_x, _y, _group = noone) : Node_PCX(_x, _y, _group) c
inputs[| 2] = nodeValue("False", self, JUNCTION_CONNECT.input, VALUE_TYPE.PCXnode, noone);
outputs[| 0] = nodeValue("PCX", self, JUNCTION_CONNECT.output, VALUE_TYPE.PCXnode, noone);
outputs[| 0] = nodeValue_Output("PCX", self, VALUE_TYPE.PCXnode, noone);
static update = function() {
var _cond = getInputData(0);

View file

@ -4,9 +4,9 @@ function Node_PCX_Equation(_x, _y, _group = noone) : Node_PCX(_x, _y, _group) co
setDimension(96, 48);
ast = noone;
inputs[| 0] = nodeValue("Equation", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "");
inputs[| 0] = nodeValue_Text("Equation", self, "");
outputs[| 0] = nodeValue("Result", self, JUNCTION_CONNECT.output, VALUE_TYPE.PCXnode, noone );
outputs[| 0] = nodeValue_Output("Result", self, VALUE_TYPE.PCXnode, noone );
argument_renderer = new Inspector_Custom_Renderer(function(_x, _y, _w, _m, _hover, _focus) { #region
argument_renderer.x = _x;
@ -50,7 +50,7 @@ function Node_PCX_Equation(_x, _y, _group = noone) : Node_PCX(_x, _y, _group) co
static createNewInput = function() {
var index = ds_list_size(inputs);
inputs[| index + 0] = nodeValue("Argument name", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "" )
inputs[| index + 0] = nodeValue_Text("Argument name", self, "" )
.setDisplay(VALUE_DISPLAY.text_box);
inputs[| index + 1] = nodeValue("Argument value", self, JUNCTION_CONNECT.input, VALUE_TYPE.PCXnode, noone )

View file

@ -13,7 +13,7 @@ function Node_PCX_fn_Math(_x, _y, _group = noone) : Node_PCX(_x, _y, _group) con
inputs[| 3] = nodeValue("z", self, JUNCTION_CONNECT.input, VALUE_TYPE.PCXnode, noone);
outputs[| 0] = nodeValue("PCX", self, JUNCTION_CONNECT.output, VALUE_TYPE.PCXnode, noone);
outputs[| 0] = nodeValue_Output("PCX", self, VALUE_TYPE.PCXnode, noone);
static update = function() {
static syms = [ "+", "-", "*", "/", "$", "%", "abs", -1, "round", "floor", "ceil",

View file

@ -5,9 +5,9 @@ function Node_PCX_fn_Random(_x, _y, _group = noone) : Node_PCX(_x, _y, _group) c
inputs[| 1] = nodeValue("Max", self, JUNCTION_CONNECT.input, VALUE_TYPE.PCXnode, noone);
inputs[| 2] = nodeValue("Integer", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false);
inputs[| 2] = nodeValue_Bool("Integer", self, false);
outputs[| 0] = nodeValue("PCX", self, JUNCTION_CONNECT.output, VALUE_TYPE.PCXnode, noone);
outputs[| 0] = nodeValue_Output("PCX", self, VALUE_TYPE.PCXnode, noone);
input_display_list = [ 2, 0, 1 ];

View file

@ -3,7 +3,7 @@ function Node_PCX_fn_Surface_Height(_x, _y, _group = noone) : Node_PCX(_x, _y, _
inputs[| 0] = nodeValue("Surface", self, JUNCTION_CONNECT.input, VALUE_TYPE.PCXnode, noone);
outputs[| 0] = nodeValue("PCX", self, JUNCTION_CONNECT.output, VALUE_TYPE.PCXnode, noone);
outputs[| 0] = nodeValue_Output("PCX", self, VALUE_TYPE.PCXnode, noone);
static update = function() {
var _surf = getInputData(0);

View file

@ -3,7 +3,7 @@ function Node_PCX_fn_Surface_Width(_x, _y, _group = noone) : Node_PCX(_x, _y, _g
inputs[| 0] = nodeValue("Surface", self, JUNCTION_CONNECT.input, VALUE_TYPE.PCXnode, noone);
outputs[| 0] = nodeValue("PCX", self, JUNCTION_CONNECT.output, VALUE_TYPE.PCXnode, noone);
outputs[| 0] = nodeValue_Output("PCX", self, VALUE_TYPE.PCXnode, noone);
static update = function() {
var _surf = getInputData(0);

View file

@ -4,7 +4,7 @@ function Node_PCX_fn_var(_x, _y, _group = noone) : Node_PCX(_x, _y, _group) cons
inputs[| 0] = nodeValue("Default Value", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, 0);
outputs[| 0] = nodeValue("PCX", self, JUNCTION_CONNECT.output, VALUE_TYPE.PCXnode, noone);
outputs[| 0] = nodeValue_Output("PCX", self, VALUE_TYPE.PCXnode, noone);
static update = function() {
var _def = getInputData(0);

View file

@ -1,11 +1,11 @@
function Node_PCX_var(_x, _y, _group = noone) : Node_PCX(_x, _y, _group) constructor {
name = "Variable";
inputs[| 0] = nodeValue("Name", self, JUNCTION_CONNECT.input, VALUE_TYPE.text, "");
inputs[| 0] = nodeValue_Text("Name", self, "");
inputs[| 1] = nodeValue("Value", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, -1);
outputs[| 0] = nodeValue("PCX", self, JUNCTION_CONNECT.output, VALUE_TYPE.PCXnode, noone);
outputs[| 0] = nodeValue_Output("PCX", self, VALUE_TYPE.PCXnode, noone);
static update = function() {
var _name = getInputData(0);

View file

@ -4,12 +4,12 @@ function Node_VCT(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) const
color = COLORS.node_blend_vct;
vct = new VCT(self);
inputs[| 0] = nodeValue("Editor", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0)
inputs[| 0] = nodeValue_Int("Editor", self, 0)
.setDisplay(VALUE_DISPLAY.button, { name: "Editor", onClick: function() {
vct.createDialog();
} });
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
input_display_list = [ 0,
["Automations", false],

View file

@ -4,7 +4,7 @@ function Node_VFX_Attract(_x, _y, _group = noone) : Node_VFX_effector(_x, _y, _g
inputs[| 4].setVisible(false, false);
inputs[| effector_input_length + 0] = nodeValue("Destroy when reach middle", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| effector_input_length + 0] = nodeValue_Bool("Destroy when reach middle", self, false );
array_push(input_display_list, effector_input_length + 0);

View file

@ -15,7 +15,7 @@ function Node_VFX_Group(_x, _y, _group = noone) : Node_Collection(_x, _y, _group
preview_node = noone;
allCached = false;
inputs[| 0] = nodeValue("Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true )
inputs[| 0] = nodeValue_Bool("Loop", self, true )
.rejectArray();
custom_input_index = ds_list_size(inputs);

View file

@ -6,7 +6,7 @@ function Node_VFX_Group_Inline(_x, _y, _group = noone) : Node_Collection_Inline(
is_root = false;
topoList = [];
inputs[| 0] = nodeValue("Loop", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true )
inputs[| 0] = nodeValue_Bool("Loop", self, true )
.rejectArray();
is_simulation = true;

View file

@ -6,11 +6,11 @@ function Node_VFX_Oscillate(_x, _y, _group = noone) : Node_VFX_effector(_x, _y,
inputs[| 6].setVisible(false, false);
inputs[| 7].setVisible(false, false);
inputs[| effector_input_length + 0] = nodeValue("Amplitude", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 2 );
inputs[| effector_input_length + 0] = nodeValue_Float("Amplitude", self, 2 );
inputs[| effector_input_length + 1] = nodeValue("Frequency", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.2 );
inputs[| effector_input_length + 1] = nodeValue_Float("Frequency", self, 0.2 );
inputs[| effector_input_length + 2] = nodeValue("Multiply by speed", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| effector_input_length + 2] = nodeValue_Bool("Multiply by speed", self, false );
array_push(input_display_list, effector_input_length + 0, effector_input_length + 1, effector_input_length + 2);

View file

@ -7,23 +7,23 @@ function Node_VFX_Override(_x, _y, _group = noone) : Node(_x, _y, _group) constr
manual_ungroupable = false;
setDimension(96, 48);
inputs[| 0] = nodeValue("Particles", self, JUNCTION_CONNECT.input, VALUE_TYPE.particle, -1 )
inputs[| 0] = nodeValue_Particle("Particles", self, -1 )
.setVisible(true, true);
inputs[| 1] = nodeValue("Positions", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, noone );
inputs[| 1] = nodeValue_Float("Positions", self, noone );
inputs[| 2] = nodeValue("Rotations", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, noone );
inputs[| 2] = nodeValue_Float("Rotations", self, noone );
inputs[| 3] = nodeValue("Scales", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, noone );
inputs[| 3] = nodeValue_Float("Scales", self, noone );
inputs[| 4] = nodeValue("Blend", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, noone );
inputs[| 4] = nodeValue_Color("Blend", self, noone );
inputs[| 5] = nodeValue("Alpha", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, noone );
inputs[| 5] = nodeValue_Float("Alpha", self, noone );
inputs[| 6] = nodeValue_Surface("Surface", self)
.setVisible(true, false);
outputs[| 0] = nodeValue("Particles", self, JUNCTION_CONNECT.output, VALUE_TYPE.particle, -1 );
outputs[| 0] = nodeValue_Output("Particles", self, VALUE_TYPE.particle, -1 );
static update = function(frame = CURRENT_FRAME) {
var parts = getInputData(0);

View file

@ -6,16 +6,15 @@ function Node_VFX_Renderer(_x, _y, _group = noone) : Node(_x, _y, _group) constr
manual_ungroupable = false;
inputs[| 0] = nodeValue("Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 0] = nodeValue_Vector("Output dimension", self, DEF_SURF );
inputs[| 1] = nodeValue("Round position", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true, "Round position to the closest integer value to avoid jittering.")
inputs[| 1] = nodeValue_Bool("Round position", self, true, "Round position to the closest integer value to avoid jittering.")
.rejectArray();
inputs[| 2] = nodeValue_Enum_Button("Render Type", self, PARTICLE_RENDER_TYPE.surface , [ "Surface", "Line" ])
.rejectArray();
inputs[| 3] = nodeValue("Line life", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4 )
inputs[| 3] = nodeValue_Int("Line life", self, 4 )
.rejectArray();
input_display_list = [
@ -32,7 +31,7 @@ function Node_VFX_Renderer(_x, _y, _group = noone) : Node(_x, _y, _group) constr
inputs[| index + 0] = nodeValue_Enum_Scroll("Blend mode", self, 0 , [ "Normal", "Alpha", "Additive" ])
.rejectArray();
inputs[| index + 1] = nodeValue("Particles", self, JUNCTION_CONNECT.input, VALUE_TYPE.particle, noone )
inputs[| index + 1] = nodeValue_Particle("Particles", self, noone )
.setVisible(true, true);
array_push(input_display_list, ["Particle", false], index + 0, index + 1);
@ -43,7 +42,7 @@ function Node_VFX_Renderer(_x, _y, _group = noone) : Node(_x, _y, _group) constr
setDynamicInput(2, true, VALUE_TYPE.particle);
dyna_input_check_shift = 1;
outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Surface out", self, VALUE_TYPE.surface, noone);
insp2UpdateTooltip = "Clear cache";
insp2UpdateIcon = [ THEME.cache, 0, COLORS._main_icon ];

View file

@ -7,16 +7,15 @@ function Node_VFX_Renderer_Output(_x, _y, _group = noone) : Node_Group_Output(_x
manual_ungroupable = false;
previewable = true;
inputs[| 0] = nodeValue("Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF)
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 0] = nodeValue_Vector("Output dimension", self, DEF_SURF);
inputs[| 1] = nodeValue("Round position", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true, "Round position to the closest integer value to avoid jittering.")
inputs[| 1] = nodeValue_Bool("Round position", self, true, "Round position to the closest integer value to avoid jittering.")
.rejectArray();
inputs[| 2] = nodeValue_Enum_Button("Render Type", self, PARTICLE_RENDER_TYPE.surface , [ "Surface", "Line" ])
.rejectArray();
inputs[| 3] = nodeValue("Line life", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4 )
inputs[| 3] = nodeValue_Int("Line life", self, 4 )
.rejectArray();
input_display_list = [
@ -38,7 +37,7 @@ function Node_VFX_Renderer_Output(_x, _y, _group = noone) : Node_Group_Output(_x
inputs[| index + 0] = nodeValue_Enum_Scroll("Blend mode", self, 0 , [ "Normal", "Alpha", "Additive" ])
.rejectArray();
inputs[| index + 1] = nodeValue("Particles", self, JUNCTION_CONNECT.input, VALUE_TYPE.particle, noone )
inputs[| index + 1] = nodeValue_Particle("Particles", self, noone )
.setVisible(true, true);
array_push(input_display_list, ["Particle", false], index + 0, index + 1);

View file

@ -15,12 +15,12 @@ function Node_VFX_Spawner(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y
inputs[| input_len + 0] = nodeValue("Spawn trigger", self, JUNCTION_CONNECT.input, VALUE_TYPE.node, false)
.setVisible(true, true);
inputs[| input_len + 1] = nodeValue("Step interval", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1, "How often the 'on step' event is triggered.\nWith 1 being trigger every frame, 2 means triggered once every 2 frames.");
inputs[| input_len + 1] = nodeValue_Int("Step interval", self, 1, "How often the 'on step' event is triggered.\nWith 1 being trigger every frame, 2 means triggered once every 2 frames.");
outputs[| 0] = nodeValue("Particles", self, JUNCTION_CONNECT.output, VALUE_TYPE.particle, [] );
outputs[| 1] = nodeValue("On create", self, JUNCTION_CONNECT.output, VALUE_TYPE.node, noone );
outputs[| 2] = nodeValue("On step", self, JUNCTION_CONNECT.output, VALUE_TYPE.node, noone );
outputs[| 3] = nodeValue("On destroy", self, JUNCTION_CONNECT.output, VALUE_TYPE.node, noone );
outputs[| 0] = nodeValue_Output("Particles", self, VALUE_TYPE.particle, [] );
outputs[| 1] = nodeValue_Output("On create", self, VALUE_TYPE.node, noone );
outputs[| 2] = nodeValue_Output("On step", self, VALUE_TYPE.node, noone );
outputs[| 3] = nodeValue_Output("On destroy", self, VALUE_TYPE.node, noone );
array_insert(input_display_list, 0, ["Trigger", true], input_len + 0, input_len + 1);

View file

@ -10,14 +10,14 @@ function Node_VFX_Trail(_x, _y, _group = noone) : Node(_x, _y, _group) construct
lineLength = [];
lineData = [];
inputs[| 0] = nodeValue("Particles", self, JUNCTION_CONNECT.input, VALUE_TYPE.particle, -1 )
inputs[| 0] = nodeValue_Particle("Particles", self, -1 )
.setVisible(true, true);
inputs[| 1] = nodeValue("Life", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4 );
inputs[| 1] = nodeValue_Int("Life", self, 4 );
inputs[| 2] = nodeValue("Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| 2] = nodeValue_Bool("Color", self, false );
outputs[| 0] = nodeValue("Path", self, JUNCTION_CONNECT.output, VALUE_TYPE.pathnode, self);
outputs[| 0] = nodeValue_Output("Path", self, VALUE_TYPE.pathnode, self);
static drawOverlay = function(hover, active, _x, _y, _s, _mx, _my, _snx, _sny) { #region
draw_set_color(COLORS._main_accent);

View file

@ -14,21 +14,20 @@ function Node_VFX_Triangulate(_x, _y, _group = noone) : Node(_x, _y, _group) con
manual_ungroupable = false;
inputs[| 0] = nodeValue("Output dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, DEF_SURF )
.setDisplay(VALUE_DISPLAY.vector);
inputs[| 0] = nodeValue_Vector("Output dimension", self, DEF_SURF );
inputs[| 1] = nodeValue("Particles", self, JUNCTION_CONNECT.input, VALUE_TYPE.particle, -1 )
inputs[| 1] = nodeValue_Particle("Particles", self, -1 )
.setVisible(true, true);
inputs[| 2] = nodeValue("Thickness", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 );
inputs[| 2] = nodeValue_Float("Thickness", self, 1 );
inputs[| 3] = nodeValue("Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white );
inputs[| 3] = nodeValue_Color("Color", self, c_white );
inputs[| 4] = nodeValue("Inherit Thickness", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| 4] = nodeValue_Bool("Inherit Thickness", self, false );
inputs[| 5] = nodeValue("Inherit Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| 5] = nodeValue_Bool("Inherit Color", self, false );
outputs[| 0] = nodeValue("Triangles", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone);
outputs[| 0] = nodeValue_Output("Triangles", self, VALUE_TYPE.surface, noone);
input_display_list = [ 0,
[ "Particles", false], 1,

View file

@ -4,9 +4,9 @@ function Node_VFX_Turbulence(_x, _y, _group = noone) : Node_VFX_effector(_x, _y,
inputs[| 4].setVisible(false, false);
inputs[| effector_input_length + 0] = nodeValue("Turbulence scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 1 );
inputs[| effector_input_length + 0] = nodeValue_Float("Turbulence scale", self, 1 );
inputs[| effector_input_length + 1] = nodeValue("Constant seed", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
inputs[| effector_input_length + 1] = nodeValue_Bool("Constant seed", self, false );
array_push(input_display_list, effector_input_length + 0, effector_input_length + 1);

View file

@ -8,48 +8,48 @@ function Node_VFX_Variable(_x, _y, _group = noone) : Node(_x, _y, _group) constr
manual_ungroupable = false;
inputs[| 0] = nodeValue("Particles", self, JUNCTION_CONNECT.input, VALUE_TYPE.particle, -1 )
inputs[| 0] = nodeValue_Particle("Particles", self, -1 )
.setVisible(true, true);
input_display_list = [ 0 ];
outputs[| 0] = nodeValue("Positions", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [] )
outputs[| 0] = nodeValue_Output("Positions", self, VALUE_TYPE.float, [] )
.setDisplay(VALUE_DISPLAY.none)
.setVisible(false);
outputs[| 1] = nodeValue("Scales", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [] )
outputs[| 1] = nodeValue_Output("Scales", self, VALUE_TYPE.float, [] )
.setDisplay(VALUE_DISPLAY.none)
.setVisible(false);
outputs[| 2] = nodeValue("Rotations", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0 )
outputs[| 2] = nodeValue_Output("Rotations", self, VALUE_TYPE.float, 0 )
.setDisplay(VALUE_DISPLAY.none)
.setVisible(false);
outputs[| 3] = nodeValue("Blending", self, JUNCTION_CONNECT.output, VALUE_TYPE.color, 0 )
outputs[| 3] = nodeValue_Output("Blending", self, VALUE_TYPE.color, 0 )
.setDisplay(VALUE_DISPLAY.none)
.setVisible(false);
outputs[| 4] = nodeValue("Alpha", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0 )
outputs[| 4] = nodeValue_Output("Alpha", self, VALUE_TYPE.float, 0 )
.setDisplay(VALUE_DISPLAY.none)
.setVisible(false);
outputs[| 5] = nodeValue("Life", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0 )
outputs[| 5] = nodeValue_Output("Life", self, VALUE_TYPE.float, 0 )
.setDisplay(VALUE_DISPLAY.none)
.setVisible(false);
outputs[| 6] = nodeValue("Max life", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0 )
outputs[| 6] = nodeValue_Output("Max life", self, VALUE_TYPE.float, 0 )
.setDisplay(VALUE_DISPLAY.none)
.setVisible(false);
outputs[| 7] = nodeValue("Surface", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone )
outputs[| 7] = nodeValue_Output("Surface", self, VALUE_TYPE.surface, noone )
.setDisplay(VALUE_DISPLAY.none)
.setVisible(false);
outputs[| 8] = nodeValue("Velocity", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, [] )
outputs[| 8] = nodeValue_Output("Velocity", self, VALUE_TYPE.float, [] )
.setDisplay(VALUE_DISPLAY.none)
.setVisible(false);
outputs[| 9] = nodeValue("Seed", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, 0 )
outputs[| 9] = nodeValue_Output("Seed", self, VALUE_TYPE.float, 0 )
.setDisplay(VALUE_DISPLAY.none)
.setVisible(false);

Some files were not shown because too many files have changed in this diff Show more