mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2025-01-24 03:48:06 +01:00
Expression bug fixes
This commit is contained in:
parent
1d282222ca
commit
77e7fefff0
44 changed files with 6419 additions and 242 deletions
|
@ -21,6 +21,7 @@
|
||||||
{"name":"widget","order":9,"path":"folders/dialog/widget.yy",},
|
{"name":"widget","order":9,"path":"folders/dialog/widget.yy",},
|
||||||
{"name":"font","order":7,"path":"folders/font.yy",},
|
{"name":"font","order":7,"path":"folders/font.yy",},
|
||||||
{"name":"functions","order":6,"path":"folders/functions.yy",},
|
{"name":"functions","order":6,"path":"folders/functions.yy",},
|
||||||
|
{"name":"action","order":40,"path":"folders/functions/action.yy",},
|
||||||
{"name":"animation","order":19,"path":"folders/functions/animation.yy",},
|
{"name":"animation","order":19,"path":"folders/functions/animation.yy",},
|
||||||
{"name":"async","order":36,"path":"folders/functions/async.yy",},
|
{"name":"async","order":36,"path":"folders/functions/async.yy",},
|
||||||
{"name":"audio","order":35,"path":"folders/functions/audio.yy",},
|
{"name":"audio","order":35,"path":"folders/functions/audio.yy",},
|
||||||
|
@ -829,6 +830,7 @@
|
||||||
{"name":"node_trigger_bool","order":1,"path":"scripts/node_trigger_bool/node_trigger_bool.yy",},
|
{"name":"node_trigger_bool","order":1,"path":"scripts/node_trigger_bool/node_trigger_bool.yy",},
|
||||||
{"name":"s_node_strandSim_gravity","order":4,"path":"sprites/s_node_strandSim_gravity/s_node_strandSim_gravity.yy",},
|
{"name":"s_node_strandSim_gravity","order":4,"path":"sprites/s_node_strandSim_gravity/s_node_strandSim_gravity.yy",},
|
||||||
{"name":"node_VFX_effect_turbulence","order":11,"path":"scripts/node_VFX_effect_turbulence/node_VFX_effect_turbulence.yy",},
|
{"name":"node_VFX_effect_turbulence","order":11,"path":"scripts/node_VFX_effect_turbulence/node_VFX_effect_turbulence.yy",},
|
||||||
|
{"name":"action_loader","order":15,"path":"scripts/action_loader/action_loader.yy",},
|
||||||
{"name":"sh_surface_replace_replace","order":1,"path":"shaders/sh_surface_replace_replace/sh_surface_replace_replace.yy",},
|
{"name":"sh_surface_replace_replace","order":1,"path":"shaders/sh_surface_replace_replace/sh_surface_replace_replace.yy",},
|
||||||
{"name":"node_ase_file_read","order":14,"path":"scripts/node_ase_file_read/node_ase_file_read.yy",},
|
{"name":"node_ase_file_read","order":14,"path":"scripts/node_ase_file_read/node_ase_file_read.yy",},
|
||||||
{"name":"s_node_print","order":30,"path":"sprites/s_node_print/s_node_print.yy",},
|
{"name":"s_node_print","order":30,"path":"sprites/s_node_print/s_node_print.yy",},
|
||||||
|
@ -1316,6 +1318,7 @@
|
||||||
{"name":"s_node_image_animation","order":2,"path":"sprites/s_node_image_animation/s_node_image_animation.yy",},
|
{"name":"s_node_image_animation","order":2,"path":"sprites/s_node_image_animation/s_node_image_animation.yy",},
|
||||||
{"name":"node_string_merge","order":6,"path":"scripts/node_string_merge/node_string_merge.yy",},
|
{"name":"node_string_merge","order":6,"path":"scripts/node_string_merge/node_string_merge.yy",},
|
||||||
{"name":"s_node_palette_replace","order":1,"path":"sprites/s_node_palette_replace/s_node_palette_replace.yy",},
|
{"name":"s_node_palette_replace","order":1,"path":"sprites/s_node_palette_replace/s_node_palette_replace.yy",},
|
||||||
|
{"name":"node_action_object","order":1,"path":"scripts/node_action_object/node_action_object.yy",},
|
||||||
{"name":"s_node_pb_box_divide","order":24,"path":"sprites/s_node_pb_box_divide/s_node_pb_box_divide.yy",},
|
{"name":"s_node_pb_box_divide","order":24,"path":"sprites/s_node_pb_box_divide/s_node_pb_box_divide.yy",},
|
||||||
{"name":"bin_function","order":11,"path":"scripts/bin_function/bin_function.yy",},
|
{"name":"bin_function","order":11,"path":"scripts/bin_function/bin_function.yy",},
|
||||||
{"name":"s_node_feedback_output","order":9,"path":"sprites/s_node_feedback_output/s_node_feedback_output.yy",},
|
{"name":"s_node_feedback_output","order":9,"path":"sprites/s_node_feedback_output/s_node_feedback_output.yy",},
|
||||||
|
|
|
@ -42,6 +42,7 @@
|
||||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"font","folderPath":"folders/font.yy",},
|
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"font","folderPath":"folders/font.yy",},
|
||||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"functions","folderPath":"folders/functions.yy",},
|
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"functions","folderPath":"folders/functions.yy",},
|
||||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"3d","folderPath":"folders/functions/3d.yy",},
|
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"3d","folderPath":"folders/functions/3d.yy",},
|
||||||
|
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"action","folderPath":"folders/functions/action.yy",},
|
||||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"animation","folderPath":"folders/functions/animation.yy",},
|
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"animation","folderPath":"folders/functions/animation.yy",},
|
||||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"async","folderPath":"folders/functions/async.yy",},
|
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"async","folderPath":"folders/functions/async.yy",},
|
||||||
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"audio","folderPath":"folders/functions/audio.yy",},
|
{"resourceType":"GMFolder","resourceVersion":"1.0","name":"audio","folderPath":"folders/functions/audio.yy",},
|
||||||
|
@ -220,6 +221,14 @@
|
||||||
],
|
],
|
||||||
"IncludedFiles": [
|
"IncludedFiles": [
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"ApolloHelp.html","ConfigValues":{"Itch":{"CopyToMask":"0",},},"CopyToMask":-1,"filePath":"datafiles",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"ApolloHelp.html","ConfigValues":{"Itch":{"CopyToMask":"0",},},"CopyToMask":-1,"filePath":"datafiles",},
|
||||||
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Actions.zip","CopyToMask":-1,"filePath":"datafiles/data",},
|
||||||
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"icons.ai","CopyToMask":-1,"filePath":"datafiles/data/Actions",},
|
||||||
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Armature Build.json","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes",},
|
||||||
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Armature Build.png","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes",},
|
||||||
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Follow Path.json","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes",},
|
||||||
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Follow Path.png","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes",},
|
||||||
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Line from Path.json","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes",},
|
||||||
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Line from Path.png","CopyToMask":-1,"filePath":"datafiles/data/Actions/Nodes",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Addons.zip","CopyToMask":-1,"filePath":"datafiles/data",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Addons.zip","CopyToMask":-1,"filePath":"datafiles/data",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Assets.zip","CopyToMask":-1,"filePath":"datafiles/data",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Assets.zip","CopyToMask":-1,"filePath":"datafiles/data",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Collections.zip","CopyToMask":-1,"filePath":"datafiles/data",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Collections.zip","CopyToMask":-1,"filePath":"datafiles/data",},
|
||||||
|
@ -320,6 +329,7 @@
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_output_visibility.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_output_visibility.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_play_sound.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_play_sound.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_preview_export.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_preview_export.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_reset_16.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_reset_when_preview_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_reset_when_preview_strip2.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_revert.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_revert.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_save_all.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_icon_save_all.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
|
@ -365,6 +375,7 @@
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_paste.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_paste.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_pin.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_pin.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_pixel_builder.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_pixel_builder.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_play_24.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_play_all.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_play_all.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_preset.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_preset.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_project.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
{"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_project.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",},
|
||||||
|
@ -1423,6 +1434,7 @@
|
||||||
{"id":{"name":"node_trigger_bool","path":"scripts/node_trigger_bool/node_trigger_bool.yy",},},
|
{"id":{"name":"node_trigger_bool","path":"scripts/node_trigger_bool/node_trigger_bool.yy",},},
|
||||||
{"id":{"name":"s_node_strandSim_gravity","path":"sprites/s_node_strandSim_gravity/s_node_strandSim_gravity.yy",},},
|
{"id":{"name":"s_node_strandSim_gravity","path":"sprites/s_node_strandSim_gravity/s_node_strandSim_gravity.yy",},},
|
||||||
{"id":{"name":"node_VFX_effect_turbulence","path":"scripts/node_VFX_effect_turbulence/node_VFX_effect_turbulence.yy",},},
|
{"id":{"name":"node_VFX_effect_turbulence","path":"scripts/node_VFX_effect_turbulence/node_VFX_effect_turbulence.yy",},},
|
||||||
|
{"id":{"name":"action_loader","path":"scripts/action_loader/action_loader.yy",},},
|
||||||
{"id":{"name":"sh_surface_replace_replace","path":"shaders/sh_surface_replace_replace/sh_surface_replace_replace.yy",},},
|
{"id":{"name":"sh_surface_replace_replace","path":"shaders/sh_surface_replace_replace/sh_surface_replace_replace.yy",},},
|
||||||
{"id":{"name":"node_ase_file_read","path":"scripts/node_ase_file_read/node_ase_file_read.yy",},},
|
{"id":{"name":"node_ase_file_read","path":"scripts/node_ase_file_read/node_ase_file_read.yy",},},
|
||||||
{"id":{"name":"s_workshop_frame","path":"sprites/s_workshop_frame/s_workshop_frame.yy",},},
|
{"id":{"name":"s_workshop_frame","path":"sprites/s_workshop_frame/s_workshop_frame.yy",},},
|
||||||
|
@ -1617,6 +1629,7 @@
|
||||||
{"id":{"name":"ase_reader","path":"scripts/ase_reader/ase_reader.yy",},},
|
{"id":{"name":"ase_reader","path":"scripts/ase_reader/ase_reader.yy",},},
|
||||||
{"id":{"name":"fd_rectangle_inherit_velocity","path":"scripts/fd_rectangle_inherit_velocity/fd_rectangle_inherit_velocity.yy",},},
|
{"id":{"name":"fd_rectangle_inherit_velocity","path":"scripts/fd_rectangle_inherit_velocity/fd_rectangle_inherit_velocity.yy",},},
|
||||||
{"id":{"name":"node_path","path":"scripts/node_path/node_path.yy",},},
|
{"id":{"name":"node_path","path":"scripts/node_path/node_path.yy",},},
|
||||||
|
{"id":{"name":"action_object","path":"scripts/action_object/action_object.yy",},},
|
||||||
{"id":{"name":"node_wrap_area","path":"scripts/node_wrap_area/node_wrap_area.yy",},},
|
{"id":{"name":"node_wrap_area","path":"scripts/node_wrap_area/node_wrap_area.yy",},},
|
||||||
{"id":{"name":"node_attributes","path":"scripts/node_attributes/node_attributes.yy",},},
|
{"id":{"name":"node_attributes","path":"scripts/node_attributes/node_attributes.yy",},},
|
||||||
{"id":{"name":"sh_seperate_shape_sep","path":"shaders/sh_seperate_shape_sep/sh_seperate_shape_sep.yy",},},
|
{"id":{"name":"sh_seperate_shape_sep","path":"shaders/sh_seperate_shape_sep/sh_seperate_shape_sep.yy",},},
|
||||||
|
@ -1980,6 +1993,7 @@
|
||||||
{"id":{"name":"s_node_image_animation","path":"sprites/s_node_image_animation/s_node_image_animation.yy",},},
|
{"id":{"name":"s_node_image_animation","path":"sprites/s_node_image_animation/s_node_image_animation.yy",},},
|
||||||
{"id":{"name":"node_string_merge","path":"scripts/node_string_merge/node_string_merge.yy",},},
|
{"id":{"name":"node_string_merge","path":"scripts/node_string_merge/node_string_merge.yy",},},
|
||||||
{"id":{"name":"s_node_palette_replace","path":"sprites/s_node_palette_replace/s_node_palette_replace.yy",},},
|
{"id":{"name":"s_node_palette_replace","path":"sprites/s_node_palette_replace/s_node_palette_replace.yy",},},
|
||||||
|
{"id":{"name":"node_action_object","path":"scripts/node_action_object/node_action_object.yy",},},
|
||||||
{"id":{"name":"s_node_pb_box_divide","path":"sprites/s_node_pb_box_divide/s_node_pb_box_divide.yy",},},
|
{"id":{"name":"s_node_pb_box_divide","path":"sprites/s_node_pb_box_divide/s_node_pb_box_divide.yy",},},
|
||||||
{"id":{"name":"bin_function","path":"scripts/bin_function/bin_function.yy",},},
|
{"id":{"name":"bin_function","path":"scripts/bin_function/bin_function.yy",},},
|
||||||
{"id":{"name":"s_node_feedback_output","path":"sprites/s_node_feedback_output/s_node_feedback_output.yy",},},
|
{"id":{"name":"s_node_feedback_output","path":"sprites/s_node_feedback_output/s_node_feedback_output.yy",},},
|
||||||
|
|
BIN
datafiles/data/Actions.zip
Normal file
BIN
datafiles/data/Actions.zip
Normal file
Binary file not shown.
15
datafiles/data/Actions/Nodes/Armature Build.json
Normal file
15
datafiles/data/Actions/Nodes/Armature Build.json
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"name": "Armature Build",
|
||||||
|
"tags": ["bone", "rigging"],
|
||||||
|
"tooltip": "",
|
||||||
|
"sprPath": "./Armature Build.png",
|
||||||
|
"nodes": [
|
||||||
|
{ "node": "Node_Armature" },
|
||||||
|
{ "node": "Node_Armature_Pose" },
|
||||||
|
{ "node": "Node_Armature_Bind" }
|
||||||
|
],
|
||||||
|
"connections": [
|
||||||
|
{ "from": 0, "fromIndex": 0, "to": 1, "toIndex": 0 },
|
||||||
|
{ "from": 1, "fromIndex": 0, "to": 2, "toIndex": 1 }
|
||||||
|
]
|
||||||
|
}
|
BIN
datafiles/data/Actions/Nodes/Armature Build.png
Normal file
BIN
datafiles/data/Actions/Nodes/Armature Build.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
14
datafiles/data/Actions/Nodes/Follow Path.json
Normal file
14
datafiles/data/Actions/Nodes/Follow Path.json
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"name": "Follow Path",
|
||||||
|
"tags": [],
|
||||||
|
"tooltip": "",
|
||||||
|
"sprPath": "./Follow Path.png",
|
||||||
|
"nodes": [
|
||||||
|
{ "node": "Node_Path", "y": 64 },
|
||||||
|
{ "node": "Node_Transform", "setValues": [ { "index": 2, "unit": "constant" } ] }
|
||||||
|
],
|
||||||
|
"connections": [
|
||||||
|
{ "from": 0, "fromIndex": 0, "to": 1, "toIndex": 2 }
|
||||||
|
],
|
||||||
|
"inputNode": 1
|
||||||
|
}
|
BIN
datafiles/data/Actions/Nodes/Follow Path.png
Normal file
BIN
datafiles/data/Actions/Nodes/Follow Path.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
13
datafiles/data/Actions/Nodes/Line from Path.json
Normal file
13
datafiles/data/Actions/Nodes/Line from Path.json
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
"name": "Line from Path",
|
||||||
|
"tags": [],
|
||||||
|
"tooltip": "",
|
||||||
|
"sprPath": "./Line from Path.png",
|
||||||
|
"nodes": [
|
||||||
|
{ "node": "Node_Path" },
|
||||||
|
{ "node": "Node_Line" }
|
||||||
|
],
|
||||||
|
"connections": [
|
||||||
|
{ "from": 0, "fromIndex": 1, "to": 1, "toIndex": 7 }
|
||||||
|
]
|
||||||
|
}
|
BIN
datafiles/data/Actions/Nodes/Line from Path.png
Normal file
BIN
datafiles/data/Actions/Nodes/Line from Path.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 KiB |
5607
datafiles/data/Actions/icons.ai
Normal file
5607
datafiles/data/Actions/icons.ai
Normal file
File diff suppressed because one or more lines are too long
Binary file not shown.
|
@ -142,6 +142,14 @@ event_inherited();
|
||||||
|
|
||||||
_inputs = _new_node.inputs;
|
_inputs = _new_node.inputs;
|
||||||
_outputs = _new_node.outputs;
|
_outputs = _new_node.outputs;
|
||||||
|
} else if(instanceof(_node) == "NodeAction") {
|
||||||
|
var res = _node.build(node_target_x, node_target_y,, _param);
|
||||||
|
|
||||||
|
if(_node.inputNode != noone)
|
||||||
|
_inputs = res[_node.inputNode].inputs;
|
||||||
|
|
||||||
|
if(_node.outputNode != noone)
|
||||||
|
_outputs = res[_node.outputNode].outputs;
|
||||||
} else {
|
} else {
|
||||||
var _new_list = APPEND(_node.path);
|
var _new_list = APPEND(_node.path);
|
||||||
_inputs = ds_list_create();
|
_inputs = ds_list_create();
|
||||||
|
@ -381,7 +389,12 @@ event_inherited();
|
||||||
var _boxx = _nx + (grid_width - grid_size) / 2;
|
var _boxx = _nx + (grid_width - grid_size) / 2;
|
||||||
|
|
||||||
BLEND_OVERRIDE;
|
BLEND_OVERRIDE;
|
||||||
|
if(instanceof(_node) == "NodeObject")
|
||||||
draw_sprite_stretched(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size);
|
draw_sprite_stretched(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size);
|
||||||
|
else if(instanceof(_node) == "NodeAction")
|
||||||
|
draw_sprite_stretched_ext(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size, COLORS._main_value_positive, 1);
|
||||||
|
else
|
||||||
|
draw_sprite_stretched_ext(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size, COLORS.dialog_add_node_collection, 1);
|
||||||
BLEND_NORMAL;
|
BLEND_NORMAL;
|
||||||
|
|
||||||
if(_hover && point_in_rectangle(_m[0], _m[1], _nx, yy, _nx + grid_width, yy + grid_size)) {
|
if(_hover && point_in_rectangle(_m[0], _m[1], _nx, yy, _nx + grid_width, yy + grid_size)) {
|
||||||
|
@ -396,7 +409,11 @@ event_inherited();
|
||||||
var spr_y = yy + grid_size / 2;
|
var spr_y = yy + grid_size / 2;
|
||||||
|
|
||||||
if(variable_struct_exists(_node, "getSpr")) _node.getSpr();
|
if(variable_struct_exists(_node, "getSpr")) _node.getSpr();
|
||||||
if(sprite_exists(_node.spr)) draw_sprite_ui_uniform(_node.spr, 0, spr_x, spr_y, 0.5);
|
if(sprite_exists(_node.spr))
|
||||||
|
draw_sprite_ui_uniform(_node.spr, 0, spr_x, spr_y, 0.5);
|
||||||
|
|
||||||
|
if(instanceof(_node) == "NodeAction")
|
||||||
|
draw_sprite_ui_uniform(THEME.play_action, 0, _boxx + grid_size - 16, yy + grid_size - 16, 1, COLORS._main_value_positive);
|
||||||
|
|
||||||
if(_node.getTooltip() != "") {
|
if(_node.getTooltip() != "") {
|
||||||
if(point_in_rectangle(_m[0], _m[1], _boxx, yy, _boxx + ui(16), yy + ui(16))) {
|
if(point_in_rectangle(_m[0], _m[1], _boxx, yy, _boxx + ui(16), yy + ui(16))) {
|
||||||
|
@ -515,6 +532,9 @@ event_inherited();
|
||||||
draw_sprite_ext(_node.spr, 0, spr_x, spr_y, ss, ss, 0, c_white, 1);
|
draw_sprite_ext(_node.spr, 0, spr_x, spr_y, ss, ss, 0, c_white, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(instanceof(_node) == "NodeAction")
|
||||||
|
draw_sprite_ui_uniform(THEME.play_action, 0, spr_x + list_height / 2 - 8, spr_y + list_height / 2 - 8, 0.5, COLORS._main_value_positive);
|
||||||
|
|
||||||
var tx = list_height + ui(40);
|
var tx = list_height + ui(40);
|
||||||
|
|
||||||
if(_node.new_node) {
|
if(_node.new_node) {
|
||||||
|
@ -688,8 +708,10 @@ event_inherited();
|
||||||
var _boxx = _nx + (grid_width - grid_size) / 2;
|
var _boxx = _nx + (grid_width - grid_size) / 2;
|
||||||
|
|
||||||
BLEND_OVERRIDE;
|
BLEND_OVERRIDE;
|
||||||
if(is_array(s_res))
|
if(instanceof(_node) == "NodeObject")
|
||||||
draw_sprite_stretched(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size);
|
draw_sprite_stretched(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size);
|
||||||
|
else if(instanceof(_node) == "NodeAction")
|
||||||
|
draw_sprite_stretched_ext(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size, COLORS._main_value_positive, 1);
|
||||||
else
|
else
|
||||||
draw_sprite_stretched_ext(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size, COLORS.dialog_add_node_collection, 1);
|
draw_sprite_stretched_ext(THEME.node_bg, 0, _boxx, yy, grid_size, grid_size, COLORS.dialog_add_node_collection, 1);
|
||||||
BLEND_NORMAL;
|
BLEND_NORMAL;
|
||||||
|
@ -712,6 +734,9 @@ event_inherited();
|
||||||
draw_sprite_ext(_node.spr, _si, _sx, _sy, _ss, _ss, 0, c_white, 1);
|
draw_sprite_ext(_node.spr, _si, _sx, _sy, _ss, _ss, 0, c_white, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(instanceof(_node) == "NodeAction")
|
||||||
|
draw_sprite_ui_uniform(THEME.play_action, 0, _boxx + grid_size - 16, yy + grid_size - 16, 1, COLORS._main_value_positive);
|
||||||
|
|
||||||
draw_set_text(f_p2, fa_center, fa_top, COLORS._main_text);
|
draw_set_text(f_p2, fa_center, fa_top, COLORS._main_text);
|
||||||
var txt = _node.getName();
|
var txt = _node.getName();
|
||||||
name_height = max(name_height, string_height_ext(txt, -1, grid_width) + ui(8));
|
name_height = max(name_height, string_height_ext(txt, -1, grid_width) + ui(8));
|
||||||
|
@ -792,8 +817,10 @@ event_inherited();
|
||||||
_sy += _sh * _ss / 2 - _soy * _ss;
|
_sy += _sh * _ss / 2 - _soy * _ss;
|
||||||
|
|
||||||
draw_sprite_ext(_node.spr, _si, _sx, _sy, _ss, _ss, 0, c_white, 1);
|
draw_sprite_ext(_node.spr, _si, _sx, _sy, _ss, _ss, 0, c_white, 1);
|
||||||
}
|
|
||||||
|
|
||||||
|
if(instanceof(_node) == "NodeAction")
|
||||||
|
draw_sprite_ui_uniform(THEME.play_action, 0, _sx + list_height / 2 - 8, _sy + list_height / 2 - 8, 0.5, COLORS._main_value_positive);
|
||||||
|
}
|
||||||
|
|
||||||
var fav = struct_has(_node, "node") && array_exists(global.FAV_NODES, _node.node);
|
var fav = struct_has(_node, "node") && array_exists(global.FAV_NODES, _node.node);
|
||||||
if(fav) draw_sprite_ui_uniform(THEME.star, 0, ui(20), yy + list_height / 2, 0.7, COLORS._main_accent, 1.);
|
if(fav) draw_sprite_ui_uniform(THEME.star, 0, ui(20), yy + list_height / 2, 0.7, COLORS._main_accent, 1.);
|
||||||
|
|
|
@ -71,7 +71,6 @@
|
||||||
var line = array_safe_get(textbox._input_text_line, textbox.cursor_line, "");
|
var line = array_safe_get(textbox._input_text_line, textbox.cursor_line, "");
|
||||||
var crop = string_copy(line, 1, textbox.cursor - textbox.char_run);
|
var crop = string_copy(line, 1, textbox.cursor - textbox.char_run);
|
||||||
var slp = string_splice(crop, [" ", "(", ","], true);
|
var slp = string_splice(crop, [" ", "(", ","], true);
|
||||||
print(slp)
|
|
||||||
slp[array_length(slp) - 1] = rep;
|
slp[array_length(slp) - 1] = rep;
|
||||||
|
|
||||||
var txt = "";
|
var txt = "";
|
||||||
|
|
|
@ -63,6 +63,7 @@
|
||||||
log_message("SESSION", "Begin");
|
log_message("SESSION", "Begin");
|
||||||
log_message("DIRECTORY", DIRECTORY);
|
log_message("DIRECTORY", DIRECTORY);
|
||||||
|
|
||||||
|
log_message("SESSION", "> init Action"); __initAction();
|
||||||
log_message("SESSION", "> init SurfaceFormat"); __initSurfaceFormat();
|
log_message("SESSION", "> init SurfaceFormat"); __initSurfaceFormat();
|
||||||
log_message("SESSION", "> init Locale"); __initLocale();
|
log_message("SESSION", "> init Locale"); __initLocale();
|
||||||
log_message("SESSION", "> init Theme"); __initTheme();
|
log_message("SESSION", "> init Theme"); __initTheme();
|
||||||
|
|
20
scripts/action_loader/action_loader.gml
Normal file
20
scripts/action_loader/action_loader.gml
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#region action
|
||||||
|
global.ACTIONS = [];
|
||||||
|
|
||||||
|
function __initAction() {
|
||||||
|
global.ACTIONS = [];
|
||||||
|
|
||||||
|
var root = DIRECTORY + "Actions";
|
||||||
|
if(!directory_exists(root))
|
||||||
|
directory_create(root);
|
||||||
|
|
||||||
|
var _l = root + "/version";
|
||||||
|
if(file_exists(_l)) {
|
||||||
|
var res = json_load_struct(_l);
|
||||||
|
if(!is_struct(res) || !struct_has(res, "version") || res.version != BUILD_NUMBER)
|
||||||
|
zip_unzip("data/Actions.zip", DIRECTORY);
|
||||||
|
} else
|
||||||
|
zip_unzip("data/Actions.zip", DIRECTORY);
|
||||||
|
json_save_struct(_l, { version: BUILD_NUMBER });
|
||||||
|
}
|
||||||
|
#endregion
|
11
scripts/action_loader/action_loader.yy
Normal file
11
scripts/action_loader/action_loader.yy
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"resourceType": "GMScript",
|
||||||
|
"resourceVersion": "1.0",
|
||||||
|
"name": "action_loader",
|
||||||
|
"isCompatibility": false,
|
||||||
|
"isDnD": false,
|
||||||
|
"parent": {
|
||||||
|
"name": "startup scripts",
|
||||||
|
"path": "folders/main/startup scripts.yy",
|
||||||
|
},
|
||||||
|
}
|
75
scripts/action_object/action_object.gml
Normal file
75
scripts/action_object/action_object.gml
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
function actionStep() constructor {
|
||||||
|
type = "";
|
||||||
|
data = {};
|
||||||
|
|
||||||
|
static trigger = function() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static serialize = function() {
|
||||||
|
var map = {};
|
||||||
|
|
||||||
|
map.type = type;
|
||||||
|
map.data = data;
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
static deserialize = function(map) {
|
||||||
|
type = map.type;
|
||||||
|
data = map.data;
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function actionObject() constructor {
|
||||||
|
name = "";
|
||||||
|
spr = noone;
|
||||||
|
|
||||||
|
isPlaying = false;
|
||||||
|
playStep = 0;
|
||||||
|
|
||||||
|
actions = [];
|
||||||
|
|
||||||
|
static step = function() {
|
||||||
|
actions[playStep].trigger();
|
||||||
|
playStep++;
|
||||||
|
|
||||||
|
if(playStep == array_length(actions)) {
|
||||||
|
isPlaying = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static play = function() {
|
||||||
|
if(isPlaying) return;
|
||||||
|
|
||||||
|
isPlaying = true;
|
||||||
|
playStep = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static serialize = function() {
|
||||||
|
var map = {};
|
||||||
|
|
||||||
|
map.name = name;
|
||||||
|
map.actions = [];
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(actions); i < n; i++ )
|
||||||
|
map.actions[i] = actions[i].serialize();
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
static deserialize = function(map) {
|
||||||
|
name = map.name;
|
||||||
|
actions = [];
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(map.actions); i < n; i++ )
|
||||||
|
actions[i] = new actionStep().deserialize(map.actions[i]);
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
}
|
11
scripts/action_object/action_object.yy
Normal file
11
scripts/action_object/action_object.yy
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"resourceType": "GMScript",
|
||||||
|
"resourceVersion": "1.0",
|
||||||
|
"name": "action_object",
|
||||||
|
"isCompatibility": false,
|
||||||
|
"isDnD": false,
|
||||||
|
"parent": {
|
||||||
|
"name": "action",
|
||||||
|
"path": "folders/functions/action.yy",
|
||||||
|
},
|
||||||
|
}
|
|
@ -22,7 +22,7 @@ function __APPEND_MAP(_map, context = PANEL_GRAPH.getCurrentContext()) {
|
||||||
var _v = _map.version;
|
var _v = _map.version;
|
||||||
PROJECT.version = _v;
|
PROJECT.version = _v;
|
||||||
if(_v != SAVE_VERSION) {
|
if(_v != SAVE_VERSION) {
|
||||||
var warn = "File version mismatch : loading file verion " + string(_v) + " to Pixel Composer " + string(SAVE_VERSION);
|
var warn = "File version mismatch : loading file version " + string(_v) + " to Pixel Composer " + string(SAVE_VERSION);
|
||||||
log_warning("FILE", warn)
|
log_warning("FILE", warn)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,7 +91,7 @@
|
||||||
globalvar PROJECT_VARIABLES;
|
globalvar PROJECT_VARIABLES;
|
||||||
PROJECT_VARIABLES = ds_map_create();
|
PROJECT_VARIABLES = ds_map_create();
|
||||||
PROJECT_VARIABLES[? "frame"] = function() { return PROJECT.animator.current_frame; };
|
PROJECT_VARIABLES[? "frame"] = function() { return PROJECT.animator.current_frame; };
|
||||||
PROJECT_VARIABLES[? "progress"] = function() { return PROJECT.animator.current_frame / PROJECT.animator.frames_total; };
|
PROJECT_VARIABLES[? "progress"] = function() { return PROJECT.animator.current_frame / (PROJECT.animator.frames_total - 1); };
|
||||||
PROJECT_VARIABLES[? "frameTotal"] = function() { return PROJECT.animator.frames_total; };
|
PROJECT_VARIABLES[? "frameTotal"] = function() { return PROJECT.animator.frames_total; };
|
||||||
PROJECT_VARIABLES[? "fps"] = function() { return PROJECT.animator.framerate; };
|
PROJECT_VARIABLES[? "fps"] = function() { return PROJECT.animator.framerate; };
|
||||||
PROJECT_VARIABLES[? "time"] = function() { return PROJECT.animator.current_frame / PROJECT.animator.framerate; };
|
PROJECT_VARIABLES[? "time"] = function() { return PROJECT.animator.current_frame / PROJECT.animator.framerate; };
|
||||||
|
|
|
@ -93,7 +93,7 @@ function __LOAD_PATH(path, readonly = false, safe_mode = false, override = false
|
||||||
var _v = _load_content.version;
|
var _v = _load_content.version;
|
||||||
PROJECT.version = _v;
|
PROJECT.version = _v;
|
||||||
if(_v != SAVE_VERSION) {
|
if(_v != SAVE_VERSION) {
|
||||||
var warn = $"File version mismatch : loading file verion {_v} to Pixel Composer {SAVE_VERSION}";
|
var warn = $"File version mismatch : loading file version {_v} to Pixel Composer {SAVE_VERSION}";
|
||||||
log_warning("LOAD", warn);
|
log_warning("LOAD", warn);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
102
scripts/node_action_object/node_action_object.gml
Normal file
102
scripts/node_action_object/node_action_object.gml
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
#region node action
|
||||||
|
function NodeAction() constructor {
|
||||||
|
name = "";
|
||||||
|
spr = noone;
|
||||||
|
node = noone;
|
||||||
|
tags = [];
|
||||||
|
|
||||||
|
tooltip = "";
|
||||||
|
tooltip_spr = noone;
|
||||||
|
new_node = false;
|
||||||
|
|
||||||
|
nodes = [];
|
||||||
|
connections = [];
|
||||||
|
|
||||||
|
inputNode = noone;
|
||||||
|
outputNode = noone;
|
||||||
|
|
||||||
|
static getName = function() { return name; /*__txt_node_name(node, name); */ }
|
||||||
|
static getTooltip = function() { return tooltip; /*__txt_node_tooltip(node, tooltip); */ }
|
||||||
|
|
||||||
|
static build = function(_x, _y, _group = PANEL_GRAPH.getCurrentContext(), _param = "") {
|
||||||
|
var _n = [];
|
||||||
|
for( var i = 0, n = array_length(nodes); i < n; i++ ) {
|
||||||
|
var __n = nodes[i];
|
||||||
|
var _nx = struct_has(__n, "x")? _x + __n.x : _x + 160 * i;
|
||||||
|
var _ny = struct_has(__n, "y")? _y + __n.y : _y;
|
||||||
|
|
||||||
|
_n[i] = nodeBuild(__n.node, _nx, _ny, _group);
|
||||||
|
|
||||||
|
if(struct_has(__n, "setValues")) {
|
||||||
|
var _setVals = __n.setValues;
|
||||||
|
for(var j = 0, m = array_length(_setVals); j < m; j++ ) {
|
||||||
|
var _setVal = _setVals[j];
|
||||||
|
var _index = _n[i].inputs[| _setVal.index];
|
||||||
|
|
||||||
|
if(struct_has(_setVal, "value"))
|
||||||
|
_index.setValue(_setVal.value);
|
||||||
|
if(struct_has(_setVal, "unit"))
|
||||||
|
_index.unit.setMode(_setVal.unit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for( var i = 0, n = array_length(connections); i < n; i++ ) {
|
||||||
|
var _c = connections[i];
|
||||||
|
|
||||||
|
_n[_c.to].inputs[| _c.toIndex].setFrom(_n[_c.from].outputs[| _c.fromIndex]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return _n;
|
||||||
|
}
|
||||||
|
|
||||||
|
static serialize = function() {
|
||||||
|
var map = { name, tooltip, nodes, connections, tags };
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
static deserialize = function(path) {
|
||||||
|
var map = json_load_struct(path);
|
||||||
|
|
||||||
|
name = struct_try_get(map, "name", "");
|
||||||
|
tags = struct_try_get(map, "tags", []);
|
||||||
|
tooltip = struct_try_get(map, "tooltip", "");
|
||||||
|
nodes = struct_try_get(map, "nodes", []);
|
||||||
|
connections = struct_try_get(map, "connections", []);
|
||||||
|
|
||||||
|
inputNode = struct_try_get(map, "inputNode", noone);
|
||||||
|
outputNode = struct_try_get(map, "outputNode", noone);
|
||||||
|
|
||||||
|
if(struct_has(map, "sprPath")) {
|
||||||
|
var _path = string_replace(map.sprPath, "./", filename_dir(path) + "/");
|
||||||
|
|
||||||
|
if(file_exists(_path)) {
|
||||||
|
spr = sprite_add(_path, 1, false, false, 0, 0);
|
||||||
|
sprite_set_offset(spr, sprite_get_width(spr) / 2, sprite_get_height(spr) / 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function __initNodeActions(list) {
|
||||||
|
var root = DIRECTORY + "Actions";
|
||||||
|
if(!directory_exists(root)) directory_create(root);
|
||||||
|
|
||||||
|
root += "/Nodes";
|
||||||
|
if(!directory_exists(root)) directory_create(root);
|
||||||
|
|
||||||
|
var f = file_find_first(root + "/*", 0);
|
||||||
|
|
||||||
|
while (f != "") {
|
||||||
|
if(filename_ext(f) == ".json") {
|
||||||
|
var _c = new NodeAction().deserialize($"{root}/{f}");
|
||||||
|
ds_list_add(list, _c);
|
||||||
|
}
|
||||||
|
|
||||||
|
f = file_find_next();
|
||||||
|
}
|
||||||
|
file_find_close();
|
||||||
|
}
|
||||||
|
#endregion
|
11
scripts/node_action_object/node_action_object.yy
Normal file
11
scripts/node_action_object/node_action_object.yy
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"resourceType": "GMScript",
|
||||||
|
"resourceVersion": "1.0",
|
||||||
|
"name": "node_action_object",
|
||||||
|
"isCompatibility": false,
|
||||||
|
"isDnD": false,
|
||||||
|
"parent": {
|
||||||
|
"name": "action",
|
||||||
|
"path": "folders/functions/action.yy",
|
||||||
|
},
|
||||||
|
}
|
|
@ -77,10 +77,25 @@ function Node_Armature(_x, _y, _group = noone) : Node(_x, _y, _group) constructo
|
||||||
bone.tb_name.draw(__x + 24, ty + 3, ww + 16, _hh - 6, bone.name, _m);
|
bone.tb_name.draw(__x + 24, ty + 3, ww + 16, _hh - 6, bone.name, _m);
|
||||||
|
|
||||||
var _x0 = __x + 24 + ww + 32;
|
var _x0 = __x + 24 + ww + 32;
|
||||||
draw_sprite_ui(THEME.bone, 3, _x0, ty + 14,,,, COLORS._main_icon, 0.5);
|
var _y0 = ty + 14;
|
||||||
|
var cc = bone.apply_scale? COLORS._main_icon : COLORS._main_value_negative;
|
||||||
|
if(point_in_circle(_m[0], _m[1], _x0, _y0, 16)) {
|
||||||
|
draw_sprite_ui(THEME.bone, 3, _x0, _y0,,,, cc, 0.75);
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, _focus))
|
||||||
|
bone.apply_scale = !bone.apply_scale;
|
||||||
|
} else
|
||||||
|
draw_sprite_ui(THEME.bone, 3, _x0, _y0,,,, cc, 0.5);
|
||||||
|
|
||||||
_x0 += 20;
|
_x0 += 20;
|
||||||
draw_sprite_ui(THEME.bone, 4, _x0, ty + 14,,,, COLORS._main_icon, 0.5);
|
var cc = bone.apply_rotation? COLORS._main_icon : COLORS._main_value_negative;
|
||||||
|
if(point_in_circle(_m[0], _m[1], _x0, _y0, 16)) {
|
||||||
|
draw_sprite_ui(THEME.bone, 4, _x0, _y0,,,, cc, 0.75);
|
||||||
|
|
||||||
|
if(mouse_press(mb_left, _focus))
|
||||||
|
bone.apply_rotation = !bone.apply_rotation;
|
||||||
|
} else
|
||||||
|
draw_sprite_ui(THEME.bone, 4, _x0, _y0,,,, cc, 0.5);
|
||||||
|
|
||||||
ty += _hh;
|
ty += _hh;
|
||||||
|
|
||||||
|
|
|
@ -223,6 +223,16 @@ function Node_Armature_Bind(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
|
||||||
} else
|
} else
|
||||||
draw_sprite_ui_uniform(THEME.icon_delete, 3, _bx, _cy + lh / 2, 1, COLORS._main_icon);
|
draw_sprite_ui_uniform(THEME.icon_delete, 3, _bx, _cy + lh / 2, 1, COLORS._main_icon);
|
||||||
|
|
||||||
|
_bx -= 32;
|
||||||
|
|
||||||
|
//if(point_in_circle(_m[0], _m[1], _bx, _cy + lh / 2, 16)) {
|
||||||
|
// draw_sprite_ui_uniform(THEME.reset_16, 3, _bx, _cy + lh / 2, 1, COLORS._main_value_negative);
|
||||||
|
|
||||||
|
// if(mouse_press(mb_left, _focus))
|
||||||
|
// resetTransform(i);
|
||||||
|
//} else
|
||||||
|
// draw_sprite_ui_uniform(THEME.reset_16, 3, _bx, _cy + lh / 2, 1, COLORS._main_icon);
|
||||||
|
|
||||||
if(!is_surface(_surf)) continue;
|
if(!is_surface(_surf)) continue;
|
||||||
|
|
||||||
var aa = (index != layer_dragging || layer_dragging == noone)? 1 : 0.5;
|
var aa = (index != layer_dragging || layer_dragging == noone)? 1 : 0.5;
|
||||||
|
@ -382,6 +392,8 @@ function Node_Armature_Bind(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
|
||||||
|
|
||||||
inputs[| index + 2] = nodeValue("Inherit Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true );
|
inputs[| index + 2] = nodeValue("Inherit Rotation", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true );
|
||||||
|
|
||||||
|
inputs[| index + 3] = nodeValue("Inherit Scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, false );
|
||||||
|
|
||||||
for( var i = 0; i < data_length; i++ )
|
for( var i = 0; i < data_length; i++ )
|
||||||
array_push(input_display_list, index + i);
|
array_push(input_display_list, index + i);
|
||||||
|
|
||||||
|
@ -393,7 +405,7 @@ function Node_Armature_Bind(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
|
||||||
}
|
}
|
||||||
|
|
||||||
input_fix_len = ds_list_size(inputs);
|
input_fix_len = ds_list_size(inputs);
|
||||||
data_length = 3;
|
data_length = 4;
|
||||||
|
|
||||||
if(!LOADING && !APPENDING) createNewSurface();
|
if(!LOADING && !APPENDING) createNewSurface();
|
||||||
|
|
||||||
|
@ -507,7 +519,9 @@ function Node_Armature_Bind(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
|
||||||
if(surf_dragging > -1) {
|
if(surf_dragging > -1) {
|
||||||
var input_dragging = surf_dragging + 1;
|
var input_dragging = surf_dragging + 1;
|
||||||
var _surf = current_data[surf_dragging];
|
var _surf = current_data[surf_dragging];
|
||||||
var _tran = current_data[input_dragging];
|
var _tran = current_data[input_dragging + 0];
|
||||||
|
var _aang = current_data[input_dragging + 1];
|
||||||
|
var _asca = current_data[input_dragging + 2];
|
||||||
|
|
||||||
var _bone = inputs[| surf_dragging].extra_data.bone_id;
|
var _bone = inputs[| surf_dragging].extra_data.bone_id;
|
||||||
_bone = boneMap[? _bone];
|
_bone = boneMap[? _bone];
|
||||||
|
@ -535,7 +549,7 @@ function Node_Armature_Bind(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
|
||||||
|
|
||||||
_tran[TRANSFORM.rot] = sa;
|
_tran[TRANSFORM.rot] = sa;
|
||||||
} else if(drag_type == NODE_COMPOSE_DRAG.scale) {
|
} else if(drag_type == NODE_COMPOSE_DRAG.scale) {
|
||||||
var _rot = _ang * _bone.angle + _tran[TRANSFORM.rot];
|
var _rot = _aang * _bone.angle + _tran[TRANSFORM.rot];
|
||||||
var _sw = surface_get_width(_surf);
|
var _sw = surface_get_width(_surf);
|
||||||
var _sh = surface_get_height(_surf);
|
var _sh = surface_get_height(_surf);
|
||||||
|
|
||||||
|
@ -548,6 +562,11 @@ function Node_Armature_Bind(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
|
||||||
sca_y = sca_x;
|
sca_y = sca_x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(_asca) {
|
||||||
|
sca_x /= _bone.pose_scale;
|
||||||
|
sca_y /= _bone.pose_scale;
|
||||||
|
}
|
||||||
|
|
||||||
_tran[TRANSFORM.sca_x] = sca_x;
|
_tran[TRANSFORM.sca_x] = sca_x;
|
||||||
_tran[TRANSFORM.sca_y] = sca_y;
|
_tran[TRANSFORM.sca_y] = sca_y;
|
||||||
}
|
}
|
||||||
|
@ -589,6 +608,10 @@ function Node_Armature_Bind(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
|
||||||
var _anc = _bone.getPoint(0.5);
|
var _anc = _bone.getPoint(0.5);
|
||||||
var _mov = point_rotate(_tran[TRANSFORM.pos_x], _tran[TRANSFORM.pos_y], 0, 0, _bone.angle);
|
var _mov = point_rotate(_tran[TRANSFORM.pos_x], _tran[TRANSFORM.pos_y], 0, 0, _bone.angle);
|
||||||
var _sca = [ _tran[TRANSFORM.sca_x], _tran[TRANSFORM.sca_y] ];
|
var _sca = [ _tran[TRANSFORM.sca_x], _tran[TRANSFORM.sca_y] ];
|
||||||
|
if(_asca) {
|
||||||
|
_sca[0] *= _bone.pose_scale;
|
||||||
|
_sca[1] *= _bone.pose_scale;
|
||||||
|
}
|
||||||
|
|
||||||
var _ww = surface_get_width(_surf);
|
var _ww = surface_get_width(_surf);
|
||||||
var _hh = surface_get_height(_surf);
|
var _hh = surface_get_height(_surf);
|
||||||
|
@ -658,7 +681,9 @@ function Node_Armature_Bind(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
|
||||||
|
|
||||||
draw_sprite_colored(THEME.anchor_rotate, _ri, a.rr[0], a.rr[1],, a.rot);
|
draw_sprite_colored(THEME.anchor_rotate, _ri, a.rr[0], a.rr[1],, a.rot);
|
||||||
draw_sprite_colored(THEME.anchor_scale, _si, a.d3[0], a.d3[1],, a.rot);
|
draw_sprite_colored(THEME.anchor_scale, _si, a.d3[0], a.d3[1],, a.rot);
|
||||||
} else if(point_in_rectangle_points(_mx, _my, a.d0[0], a.d0[1], a.d1[0], a.d1[1], a.d2[0], a.d2[1], a.d3[0], a.d3[1])) {
|
} else if(point_in_rectangle_points(_mx, _my, a.d0[0], a.d0[1], a.d1[0], a.d1[1], a.d2[0], a.d2[1], a.d3[0], a.d3[1]) &&
|
||||||
|
(surface_selecting != hovering || surface_selecting == noone)) {
|
||||||
|
|
||||||
hovering = index;
|
hovering = index;
|
||||||
hovering_type = NODE_COMPOSE_DRAG.move;
|
hovering_type = NODE_COMPOSE_DRAG.move;
|
||||||
}
|
}
|
||||||
|
@ -688,6 +713,10 @@ function Node_Armature_Bind(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
|
||||||
}
|
}
|
||||||
|
|
||||||
if(hovering != noone && hovering_type != noone && mouse_press(mb_left, active)) {
|
if(hovering != noone && hovering_type != noone && mouse_press(mb_left, active)) {
|
||||||
|
var _tran = current_data[hovering + 1];
|
||||||
|
var _aang = current_data[hovering + 2];
|
||||||
|
var _asca = current_data[hovering + 3];
|
||||||
|
|
||||||
var a = anchors[hovering];
|
var a = anchors[hovering];
|
||||||
|
|
||||||
if(hovering_type == NODE_COMPOSE_DRAG.move) { //move
|
if(hovering_type == NODE_COMPOSE_DRAG.move) { //move
|
||||||
|
@ -783,10 +812,16 @@ function Node_Armature_Bind(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
|
||||||
|
|
||||||
var _tran = use_data? _bind[i].transform : _data[datInd + 1];
|
var _tran = use_data? _bind[i].transform : _data[datInd + 1];
|
||||||
var _aang = _data[datInd + 2];
|
var _aang = _data[datInd + 2];
|
||||||
|
var _asca = _data[datInd + 3];
|
||||||
|
|
||||||
var _rot = _aang * _b.angle + _tran[TRANSFORM.rot];
|
var _rot = _aang * _b.angle + _tran[TRANSFORM.rot];
|
||||||
var _anc = _b.getPoint(0.5);
|
var _anc = _b.getPoint(0.5);
|
||||||
var _mov = point_rotate(_tran[TRANSFORM.pos_x], _tran[TRANSFORM.pos_y], 0, 0, _b.angle);
|
var _mov = point_rotate(_tran[TRANSFORM.pos_x], _tran[TRANSFORM.pos_y], 0, 0, _b.angle);
|
||||||
var _sca = [ _tran[TRANSFORM.sca_x], _tran[TRANSFORM.sca_y] ];
|
var _sca = [ _tran[TRANSFORM.sca_x], _tran[TRANSFORM.sca_y] ];
|
||||||
|
if(_asca) {
|
||||||
|
_sca[0] *= _b.pose_scale;
|
||||||
|
_sca[1] *= _b.pose_scale;
|
||||||
|
}
|
||||||
|
|
||||||
var _ww = surface_get_width(_s);
|
var _ww = surface_get_width(_s);
|
||||||
var _hh = surface_get_height(_s);
|
var _hh = surface_get_height(_s);
|
||||||
|
@ -815,6 +850,29 @@ function Node_Armature_Bind(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
|
||||||
return _outSurf;
|
return _outSurf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static resetTransform = function(surfIndex) {
|
||||||
|
var _bind = inputs[| 2].getValue();
|
||||||
|
var use_data = _bind != noone;
|
||||||
|
|
||||||
|
var _surf = inputs[| surfIndex + 0].getValue();
|
||||||
|
var _tran = inputs[| surfIndex + 1].getValue();
|
||||||
|
var _arot = inputs[| surfIndex + 2].getValue();
|
||||||
|
|
||||||
|
var _b = use_data? _bind[i].bone : inputs[| surfIndex].extra_data.bone_id;
|
||||||
|
if(!ds_map_exists(boneMap, _b)) return;
|
||||||
|
|
||||||
|
_b = boneMap[? _b];
|
||||||
|
|
||||||
|
var _cx = surface_get_width(_surf) / 2;
|
||||||
|
var _cy = surface_get_height(_surf) / 2;
|
||||||
|
|
||||||
|
var _anc = _b.getPoint(0.5);
|
||||||
|
var _rot = _arot? -_b.angle : 0;
|
||||||
|
|
||||||
|
var _tr = [ _cx - _anc.x, _cy - _anc.y, _rot, 1, 1 ];
|
||||||
|
inputs[| surfIndex + 1].setValue(_tr);
|
||||||
|
}
|
||||||
|
|
||||||
static postDeserialize = function() {
|
static postDeserialize = function() {
|
||||||
var _inputs = load_map.inputs;
|
var _inputs = load_map.inputs;
|
||||||
|
|
||||||
|
@ -823,8 +881,10 @@ function Node_Armature_Bind(_x, _y, _group = noone) : Node_Processor(_x, _y, _gr
|
||||||
|
|
||||||
if(PROJECT.version < 11481) {
|
if(PROJECT.version < 11481) {
|
||||||
var _idx = [];
|
var _idx = [];
|
||||||
for( var i = load_fix_len, n = array_length(_inputs); i < n; i += 2 )
|
for( var i = load_fix_len, n = array_length(_inputs); i < n; i += 2 ) {
|
||||||
array_append(_idx, i + 3);
|
array_append(_idx, i + 3);
|
||||||
|
array_append(_idx, i + 4);
|
||||||
|
}
|
||||||
|
|
||||||
for( var i = array_length(_idx) - 1; i >= 0; i++ )
|
for( var i = array_length(_idx) - 1; i >= 0; i++ )
|
||||||
array_insert(load_map.inputs, _idx[i], noone);
|
array_insert(load_map.inputs, _idx[i], noone);
|
||||||
|
|
|
@ -353,7 +353,6 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor
|
||||||
_pathTemp = "\"" + _pathTemp + "\"";
|
_pathTemp = "\"" + _pathTemp + "\"";
|
||||||
var shell_cmd = _pathTemp + " -quality " + string(qual) + " " + _pathOut;
|
var shell_cmd = _pathTemp + " -quality " + string(qual) + " " + _pathOut;
|
||||||
|
|
||||||
print(shell_cmd)
|
|
||||||
execute_shell(magick, shell_cmd);
|
execute_shell(magick, shell_cmd);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,18 @@ function Node_Path_Array(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static getSegmentCount = function(ind = 0) {
|
||||||
|
for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i += data_length ) {
|
||||||
|
var _path = inputs[| i].getValue();
|
||||||
|
var lc = struct_has(_path, "getLineCount")? _path.getLineCount() : 1;
|
||||||
|
|
||||||
|
if(ind < lc) return _path.getSegmentCount(ind);
|
||||||
|
ind -= lc;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static getLength = function(ind = 0) {
|
static getLength = function(ind = 0) {
|
||||||
for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i += data_length ) {
|
for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i += data_length ) {
|
||||||
var _path = inputs[| i].getValue();
|
var _path = inputs[| i].getValue();
|
||||||
|
@ -68,18 +80,6 @@ function Node_Path_Array(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getBoundary = function(ind = 0) {
|
|
||||||
for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i += data_length ) {
|
|
||||||
var _path = inputs[| i].getValue();
|
|
||||||
var lc = struct_has(_path, "getLineCount")? _path.getLineCount() : 1;
|
|
||||||
|
|
||||||
if(ind < lc) return _path.getBoundary(ind);
|
|
||||||
ind -= lc;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static getAccuLength = function(ind = 0) {
|
static getAccuLength = function(ind = 0) {
|
||||||
for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i += data_length ) {
|
for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i += data_length ) {
|
||||||
var _path = inputs[| i].getValue();
|
var _path = inputs[| i].getValue();
|
||||||
|
@ -92,18 +92,6 @@ function Node_Path_Array(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getSegmentCount = function(ind = 0) {
|
|
||||||
for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i += data_length ) {
|
|
||||||
var _path = inputs[| i].getValue();
|
|
||||||
var lc = struct_has(_path, "getLineCount")? _path.getLineCount() : 1;
|
|
||||||
|
|
||||||
if(ind < lc) return _path.getSegmentCount(ind);
|
|
||||||
ind -= lc;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static getPointRatio = function(_rat, ind = 0) {
|
static getPointRatio = function(_rat, ind = 0) {
|
||||||
for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i += data_length ) {
|
for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i += data_length ) {
|
||||||
var _path = inputs[| i].getValue();
|
var _path = inputs[| i].getValue();
|
||||||
|
@ -128,6 +116,18 @@ function Node_Path_Array(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
return new Point();
|
return new Point();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static getBoundary = function(ind = 0) {
|
||||||
|
for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i += data_length ) {
|
||||||
|
var _path = inputs[| i].getValue();
|
||||||
|
var lc = struct_has(_path, "getLineCount")? _path.getLineCount() : 1;
|
||||||
|
|
||||||
|
if(ind < lc) return _path.getBoundary(ind);
|
||||||
|
ind -= lc;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static update = function(frame = PROJECT.animator.current_frame) {
|
static update = function(frame = PROJECT.animator.current_frame) {
|
||||||
outputs[| 0].setValue(self);
|
outputs[| 0].setValue(self);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ function Node_Path_Blend(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
previewable = false;
|
previewable = false;
|
||||||
|
|
||||||
w = 96;
|
w = 96;
|
||||||
|
length = 0;
|
||||||
|
|
||||||
inputs[| 0] = nodeValue("Path 1", self, JUNCTION_CONNECT.input, VALUE_TYPE.pathnode, noone)
|
inputs[| 0] = nodeValue("Path 1", self, JUNCTION_CONNECT.input, VALUE_TYPE.pathnode, noone)
|
||||||
.setVisible(true, true)
|
.setVisible(true, true)
|
||||||
|
@ -18,7 +19,12 @@ function Node_Path_Blend(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
|
|
||||||
outputs[| 0] = nodeValue("Path", self, JUNCTION_CONNECT.output, VALUE_TYPE.pathnode, self);
|
outputs[| 0] = nodeValue("Path", self, JUNCTION_CONNECT.output, VALUE_TYPE.pathnode, self);
|
||||||
|
|
||||||
static getSegmentCount = function() {
|
static getLineCount = function() {
|
||||||
|
var _path = inputs[| 0].getValue();
|
||||||
|
return struct_has(_path, "getLineCount")? _path.getLineCount() : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static getSegmentCount = function(ind = 0) {
|
||||||
var _path1 = inputs[| 0].getValue();
|
var _path1 = inputs[| 0].getValue();
|
||||||
var _path2 = inputs[| 1].getValue();
|
var _path2 = inputs[| 1].getValue();
|
||||||
var _lerp = inputs[| 2].getValue();
|
var _lerp = inputs[| 2].getValue();
|
||||||
|
@ -27,32 +33,10 @@ function Node_Path_Blend(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
var p2 = _path2 != noone && struct_has(_path2, "getSegmentCount");
|
var p2 = _path2 != noone && struct_has(_path2, "getSegmentCount");
|
||||||
|
|
||||||
if(!p1 && !p2) return 0;
|
if(!p1 && !p2) return 0;
|
||||||
if( p1 && !p2) return _path1.getSegmentCount();
|
if( p1 && !p2) return _path1.getSegmentCount(ind);
|
||||||
if(!p1 && p2) return _path2.getSegmentCount();
|
if(!p1 && p2) return _path2.getSegmentCount(ind);
|
||||||
|
|
||||||
return max(_path1.getSegmentCount(), _path2.getSegmentCount());
|
return max(_path1.getSegmentCount(ind), _path2.getSegmentCount(ind));
|
||||||
}
|
|
||||||
|
|
||||||
static getPointRatio = function(_rat) {
|
|
||||||
var _path1 = inputs[| 0].getValue();
|
|
||||||
var _path2 = inputs[| 1].getValue();
|
|
||||||
var _lerp = inputs[| 2].getValue();
|
|
||||||
|
|
||||||
var p1 = _path1 != noone && struct_has(_path1, "getPointRatio");
|
|
||||||
var p2 = _path2 != noone && struct_has(_path2, "getPointRatio");
|
|
||||||
|
|
||||||
if(!p1 && !p2) return new Point();
|
|
||||||
if( p1 && !p2) return _path1.getPointRatio(_rat);
|
|
||||||
if(!p1 && p2) return _path2.getPointRatio(_rat);
|
|
||||||
|
|
||||||
var _p1 = _path1.getPointRatio(_rat);
|
|
||||||
var _p2 = _path2.getPointRatio(_rat);
|
|
||||||
var _r = new Point();
|
|
||||||
|
|
||||||
_r.x = lerp(_p1.x, _p2.x, _lerp);
|
|
||||||
_r.y = lerp(_p1.y, _p2.y, _lerp);
|
|
||||||
|
|
||||||
return _r;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static getLength = function(ind = 0) {
|
static getLength = function(ind = 0) {
|
||||||
|
@ -73,7 +57,61 @@ function Node_Path_Blend(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
return lerp(_p1, _p2, _lerp);
|
return lerp(_p1, _p2, _lerp);
|
||||||
}
|
}
|
||||||
|
|
||||||
static getBoundary = function() {
|
static getAccuLength = function(ind = 0) {
|
||||||
|
var _path1 = inputs[| 0].getValue();
|
||||||
|
var _path2 = inputs[| 1].getValue();
|
||||||
|
var _lerp = inputs[| 2].getValue();
|
||||||
|
|
||||||
|
var p1 = _path1 != noone && struct_has(_path1, "getAccuLength");
|
||||||
|
var p2 = _path2 != noone && struct_has(_path2, "getAccuLength");
|
||||||
|
|
||||||
|
if(!p1 && !p2) return 0;
|
||||||
|
if( p1 && !p2) return _path1.getAccuLength(ind);
|
||||||
|
if(!p1 && p2) return _path2.getAccuLength(ind);
|
||||||
|
|
||||||
|
var _p1 = _path1.getAccuLength(ind);
|
||||||
|
var _p2 = _path2.getAccuLength(ind);
|
||||||
|
|
||||||
|
var len = max(array_length(_p1), array_length(_p2));
|
||||||
|
var res = [];
|
||||||
|
|
||||||
|
for( var i = 0; i < len; i++ ) {
|
||||||
|
var _l1 = array_get_decimal(_p1, i);
|
||||||
|
var _l2 = array_get_decimal(_p2, i);
|
||||||
|
|
||||||
|
res[i] = lerp(_l1, _l2, _lerp);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
static getPointRatio = function(_rat, ind = 0) {
|
||||||
|
var _path1 = inputs[| 0].getValue();
|
||||||
|
var _path2 = inputs[| 1].getValue();
|
||||||
|
var _lerp = inputs[| 2].getValue();
|
||||||
|
|
||||||
|
var p1 = _path1 != noone && struct_has(_path1, "getPointRatio");
|
||||||
|
var p2 = _path2 != noone && struct_has(_path2, "getPointRatio");
|
||||||
|
|
||||||
|
if(!p1 && !p2) return new Point();
|
||||||
|
if( p1 && !p2) return _path1.getPointRatio(_rat, ind);
|
||||||
|
if(!p1 && p2) return _path2.getPointRatio(_rat, ind);
|
||||||
|
|
||||||
|
var _p1 = _path1.getPointRatio(_rat, ind);
|
||||||
|
var _p2 = _path2.getPointRatio(_rat, ind);
|
||||||
|
var _r = new Point();
|
||||||
|
|
||||||
|
_r.x = lerp(_p1.x, _p2.x, _lerp);
|
||||||
|
_r.y = lerp(_p1.y, _p2.y, _lerp);
|
||||||
|
|
||||||
|
return _r;
|
||||||
|
}
|
||||||
|
|
||||||
|
static getPointDistance = function(_dist, ind = 0) {
|
||||||
|
return getPointRatio(_dist / getLength(ind), ind);
|
||||||
|
}
|
||||||
|
|
||||||
|
static getBoundary = function(ind = 0) {
|
||||||
var _path1 = inputs[| 0].getValue();
|
var _path1 = inputs[| 0].getValue();
|
||||||
var _path2 = inputs[| 1].getValue();
|
var _path2 = inputs[| 1].getValue();
|
||||||
var _lerp = inputs[| 2].getValue();
|
var _lerp = inputs[| 2].getValue();
|
||||||
|
@ -82,11 +120,11 @@ function Node_Path_Blend(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
var p2 = _path2 != noone && struct_has(_path2, "getPointRatio");
|
var p2 = _path2 != noone && struct_has(_path2, "getPointRatio");
|
||||||
|
|
||||||
if(!p1 && !p2) return new BoundingBox();
|
if(!p1 && !p2) return new BoundingBox();
|
||||||
if( p1 && !p2) return _path1.getBoundary();
|
if( p1 && !p2) return _path1.getBoundary(ind);
|
||||||
if(!p1 && p2) return _path2.getBoundary();
|
if(!p1 && p2) return _path2.getBoundary(ind);
|
||||||
|
|
||||||
var _p1 = _path1.getBoundary();
|
var _p1 = _path1.getBoundary(ind);
|
||||||
var _p2 = _path2.getBoundary();
|
var _p2 = _path2.getBoundary(ind);
|
||||||
|
|
||||||
return _p1.lerpTo(_p2, _lerp);
|
return _p1.lerpTo(_p2, _lerp);
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,15 +59,6 @@ function Node_Path_Builder(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
|
|
||||||
static getAccuLength = function(index) { return array_safe_get(lengthAcc, index, []); }
|
static getAccuLength = function(index) { return array_safe_get(lengthAcc, index, []); }
|
||||||
|
|
||||||
static getBoundary = function() {
|
|
||||||
var boundary = new BoundingBox();
|
|
||||||
var _lines = inputs[| 0].getValue();
|
|
||||||
for( var i = 0, n = array_length(_lines); i < n; i++ )
|
|
||||||
boundary.addPoint(_lines[i][0], _lines[i][1]);
|
|
||||||
|
|
||||||
return boundary;
|
|
||||||
}
|
|
||||||
|
|
||||||
static getPointRatio = function(_rat, _ind = 0) {
|
static getPointRatio = function(_rat, _ind = 0) {
|
||||||
var _lines = inputs[| 0].getValue();
|
var _lines = inputs[| 0].getValue();
|
||||||
var _conn = inputs[| 1].getValue();
|
var _conn = inputs[| 1].getValue();
|
||||||
|
@ -107,6 +98,15 @@ function Node_Path_Builder(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
else return getPointRatio(_dist / length[ind], ind);
|
else return getPointRatio(_dist / length[ind], ind);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static getBoundary = function() {
|
||||||
|
var boundary = new BoundingBox();
|
||||||
|
var _lines = inputs[| 0].getValue();
|
||||||
|
for( var i = 0, n = array_length(_lines); i < n; i++ )
|
||||||
|
boundary.addPoint(_lines[i][0], _lines[i][1]);
|
||||||
|
|
||||||
|
return boundary;
|
||||||
|
}
|
||||||
|
|
||||||
function update() {
|
function update() {
|
||||||
var _lines = inputs[| 0].getValue();
|
var _lines = inputs[| 0].getValue();
|
||||||
var _conn = inputs[| 1].getValue();
|
var _conn = inputs[| 1].getValue();
|
||||||
|
|
|
@ -141,10 +141,9 @@ function Node_Path_L_System(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static getBoundary = function() { return boundary; }
|
|
||||||
|
|
||||||
static getLineCount = function() { return array_length(lines); }
|
static getLineCount = function() { return array_length(lines); }
|
||||||
static getSegmentCount = function() { return 1; }
|
static getSegmentCount = function() { return 1; }
|
||||||
|
|
||||||
static getLength = function() { return current_length; }
|
static getLength = function() { return current_length; }
|
||||||
static getAccuLength = function() { return [ 0, current_length ]; }
|
static getAccuLength = function() { return [ 0, current_length ]; }
|
||||||
|
|
||||||
|
@ -162,10 +161,6 @@ function Node_Path_L_System(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
||||||
return lerp(_p0[2], _p1[2], _rat);
|
return lerp(_p0[2], _p1[2], _rat);
|
||||||
}
|
}
|
||||||
|
|
||||||
static getPointDistance = function(_dist, _ind = 0) {
|
|
||||||
return getPointRatio(_dist / current_length, _ind);
|
|
||||||
}
|
|
||||||
|
|
||||||
static getPointRatio = function(_rat, _ind = 0) {
|
static getPointRatio = function(_rat, _ind = 0) {
|
||||||
var _p0 = lines[_ind][0];
|
var _p0 = lines[_ind][0];
|
||||||
var _p1 = lines[_ind][1];
|
var _p1 = lines[_ind][1];
|
||||||
|
@ -179,6 +174,12 @@ function Node_Path_L_System(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
||||||
return new Point( _x, _y );
|
return new Point( _x, _y );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static getPointDistance = function(_dist, _ind = 0) {
|
||||||
|
return getPointRatio(_dist / current_length, _ind);
|
||||||
|
}
|
||||||
|
|
||||||
|
static getBoundary = function() { return boundary; }
|
||||||
|
|
||||||
function update() {
|
function update() {
|
||||||
var _len = inputs[| 0].getValue();
|
var _len = inputs[| 0].getValue();
|
||||||
var _ang = inputs[| 1].getValue();
|
var _ang = inputs[| 1].getValue();
|
||||||
|
|
|
@ -22,19 +22,19 @@ function Node_Path_Map_Area(_x, _y, _group = noone) : Node(_x, _y, _group) const
|
||||||
return struct_has(_path, "getLineCount")? _path.getLineCount() : 1;
|
return struct_has(_path, "getLineCount")? _path.getLineCount() : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getSegmentCount = function() {
|
static getSegmentCount = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = inputs[| 0].getValue();
|
||||||
return struct_has(_path, "getSegmentCount")? _path.getSegmentCount() : 0;
|
return struct_has(_path, "getSegmentCount")? _path.getSegmentCount(ind) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getLength = function() {
|
static getLength = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = inputs[| 0].getValue();
|
||||||
return struct_has(_path, "getLength")? _path.getLength() : 0;
|
return struct_has(_path, "getLength")? _path.getLength(ind) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getAccuLength = function() {
|
static getAccuLength = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = inputs[| 0].getValue();
|
||||||
return struct_has(_path, "getAccuLength")? _path.getAccuLength() : [];
|
return struct_has(_path, "getAccuLength")? _path.getAccuLength(ind) : [];
|
||||||
}
|
}
|
||||||
|
|
||||||
static getPointRatio = function(_rat, ind = 0) {
|
static getPointRatio = function(_rat, ind = 0) {
|
||||||
|
|
|
@ -2,6 +2,7 @@ function Node_Path_Plot(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
name = "Plot Path";
|
name = "Plot Path";
|
||||||
previewable = false;
|
previewable = false;
|
||||||
|
|
||||||
|
length = 0;
|
||||||
w = 96;
|
w = 96;
|
||||||
|
|
||||||
inputs[| 0] = nodeValue("Output scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 8, 8 ])
|
inputs[| 0] = nodeValue("Output scale", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 8, 8 ])
|
||||||
|
@ -39,14 +40,16 @@ function Node_Path_Plot(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
|
|
||||||
boundary = new BoundingBox( 0, 0, 1, 1 );
|
boundary = new BoundingBox( 0, 0, 1, 1 );
|
||||||
|
|
||||||
static getLineCount = function() { return 1; }
|
|
||||||
static getSegmentCount = function() { return 0; }
|
|
||||||
static getBoundary = function() { return boundary; }
|
|
||||||
|
|
||||||
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
|
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
|
||||||
inputs[| 5].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
|
inputs[| 5].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static getLineCount = function() { return 1; }
|
||||||
|
static getSegmentCount = function() { return 1; }
|
||||||
|
|
||||||
|
static getLength = function(ind = 0) { return length; }
|
||||||
|
static getAccuLength = function(ind = 0) { return [ length ]; }
|
||||||
|
|
||||||
static getPointRatio = function(_rat, ind = 0) {
|
static getPointRatio = function(_rat, ind = 0) {
|
||||||
var _sca = inputs[| 0].getValue();
|
var _sca = inputs[| 0].getValue();
|
||||||
var _coor = inputs[| 1].getValue();
|
var _coor = inputs[| 1].getValue();
|
||||||
|
@ -107,6 +110,12 @@ function Node_Path_Plot(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
return _p;
|
return _p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static getPointDistance = function(_dist, ind = 0) {
|
||||||
|
return getPointRatio(_dist / getLength(ind), ind);
|
||||||
|
}
|
||||||
|
|
||||||
|
static getBoundary = function() { return boundary; }
|
||||||
|
|
||||||
function step() {
|
function step() {
|
||||||
var _coor = inputs[| 1].getValue();
|
var _coor = inputs[| 1].getValue();
|
||||||
var _eqa = inputs[| 2].getValue();
|
var _eqa = inputs[| 2].getValue();
|
||||||
|
@ -160,11 +169,18 @@ function Node_Path_Plot(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
|
|
||||||
function updateBoundary() {
|
function updateBoundary() {
|
||||||
boundary = new BoundingBox( 0, 0, 1, 1 );
|
boundary = new BoundingBox( 0, 0, 1, 1 );
|
||||||
|
length = 0;
|
||||||
|
|
||||||
var sample = 64;
|
var sample = 64;
|
||||||
|
var op, np;
|
||||||
|
|
||||||
for( var i = 0; i <= sample; i++ ) {
|
for( var i = 0; i <= sample; i++ ) {
|
||||||
var p = getPointRatio(i / sample);
|
np = getPointRatio(i / sample);
|
||||||
boundary.addPoint(p.x, p.y);
|
boundary.addPoint(np.x, np.y);
|
||||||
|
|
||||||
|
if(i) length += point_distance(op.x, op.y, np.x, np.y);
|
||||||
|
|
||||||
|
op = np;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,24 +14,24 @@ function Node_Path_Reverse(_x, _y, _group = noone) : Node(_x, _y, _group) constr
|
||||||
return struct_has(_path, "getLineCount")? _path.getLineCount() : 1;
|
return struct_has(_path, "getLineCount")? _path.getLineCount() : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getSegmentCount = function() {
|
static getSegmentCount = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = inputs[| 0].getValue();
|
||||||
return struct_has(_path, "getSegmentCount")? _path.getSegmentCount() : 0;
|
return struct_has(_path, "getSegmentCount")? _path.getSegmentCount(ind) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getLength = function() {
|
static getLength = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = inputs[| 0].getValue();
|
||||||
return struct_has(_path, "getLength")? _path.getLength() : 0;
|
return struct_has(_path, "getLength")? _path.getLength(ind) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getAccuLength = function() {
|
static getAccuLength = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = inputs[| 0].getValue();
|
||||||
return struct_has(_path, "getAccuLength")? _path.getAccuLength() : [];
|
return struct_has(_path, "getAccuLength")? array_reverse(_path.getAccuLength(ind)) : [];
|
||||||
}
|
}
|
||||||
|
|
||||||
static getBoundary = function() {
|
static getBoundary = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = inputs[| 0].getValue();
|
||||||
return struct_has(_path, "getBoundary")? _path.getBoundary() : new BoundingBox(0, 0, 1, 1);
|
return struct_has(_path, "getBoundary")? _path.getBoundary(ind) : new BoundingBox(0, 0, 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static getPointRatio = function(_rat, ind = 0) {
|
static getPointRatio = function(_rat, ind = 0) {
|
||||||
|
|
|
@ -16,24 +16,19 @@ function Node_Path_Shift(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
return struct_has(_path, "getLineCount")? _path.getLineCount() : 1;
|
return struct_has(_path, "getLineCount")? _path.getLineCount() : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getSegmentCount = function() {
|
static getSegmentCount = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = inputs[| 0].getValue();
|
||||||
return struct_has(_path, "getSegmentCount")? _path.getSegmentCount() : 0;
|
return struct_has(_path, "getSegmentCount")? _path.getSegmentCount(ind) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getLength = function() {
|
static getLength = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = inputs[| 0].getValue(ind = 0);
|
||||||
return struct_has(_path, "getLength")? _path.getLength() : 0;
|
return struct_has(_path, "getLength")? _path.getLength(ind) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getAccuLength = function() {
|
static getAccuLength = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = inputs[| 0].getValue(ind = 0);
|
||||||
return struct_has(_path, "getAccuLength")? _path.getAccuLength() : [];
|
return struct_has(_path, "getAccuLength")? _path.getAccuLength(ind) : [];
|
||||||
}
|
|
||||||
|
|
||||||
static getBoundary = function() {
|
|
||||||
var _path = inputs[| 0].getValue();
|
|
||||||
return struct_has(_path, "getBoundary")? _path.getBoundary() : new BoundingBox( 0, 0, 1, 1 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static getPointRatio = function(_rat, ind = 0) {
|
static getPointRatio = function(_rat, ind = 0) {
|
||||||
|
@ -64,6 +59,11 @@ function Node_Path_Shift(_x, _y, _group = noone) : Node(_x, _y, _group) construc
|
||||||
return getPointRatio(_dist / getLength(), ind);
|
return getPointRatio(_dist / getLength(), ind);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static getBoundary = function(ind = 0) {
|
||||||
|
var _path = inputs[| 0].getValue();
|
||||||
|
return struct_has(_path, "getBoundary")? _path.getBoundary(ind) : new BoundingBox( 0, 0, 1, 1 );
|
||||||
|
}
|
||||||
|
|
||||||
function update() {
|
function update() {
|
||||||
outputs[| 0].setValue(self);
|
outputs[| 0].setValue(self);
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,27 +36,27 @@ function Node_Path_Transform(_x, _y, _group = noone) : Node(_x, _y, _group) cons
|
||||||
return struct_has(_path, "getLineCount")? _path.getLineCount() : 1;
|
return struct_has(_path, "getLineCount")? _path.getLineCount() : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getSegmentCount = function() {
|
static getSegmentCount = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = inputs[| 0].getValue();
|
||||||
return struct_has(_path, "getSegmentCount")? _path.getSegmentCount() : 0;
|
return struct_has(_path, "getSegmentCount")? _path.getSegmentCount(ind) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getLength = function() {
|
static getLength = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = inputs[| 0].getValue();
|
||||||
return struct_has(_path, "getLength")? _path.getLength() : 0;
|
return struct_has(_path, "getLength")? _path.getLength(ind) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getAccuLength = function() {
|
static getAccuLength = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = inputs[| 0].getValue();
|
||||||
return struct_has(_path, "getAccuLength")? _path.getAccuLength() : [];
|
return struct_has(_path, "getAccuLength")? _path.getAccuLength(ind) : [];
|
||||||
}
|
}
|
||||||
|
|
||||||
static getBoundary = function() {
|
static getBoundary = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = inputs[| 0].getValue();
|
||||||
if(!struct_has(_path, "getBoundary"))
|
if(!struct_has(_path, "getBoundary"))
|
||||||
return new BoundingBox( 0, 0, 1, 1 );
|
return new BoundingBox( 0, 0, 1, 1 );
|
||||||
|
|
||||||
var b = _path.getBoundary().clone();
|
var b = _path.getBoundary(ind).clone();
|
||||||
|
|
||||||
var _pos = inputs[| 1].getValue();
|
var _pos = inputs[| 1].getValue();
|
||||||
var _rot = inputs[| 2].getValue();
|
var _rot = inputs[| 2].getValue();
|
||||||
|
@ -115,7 +115,7 @@ function Node_Path_Transform(_x, _y, _group = noone) : Node(_x, _y, _group) cons
|
||||||
return getPointRatio(_dist / getLength(), ind);
|
return getPointRatio(_dist / getLength(), ind);
|
||||||
}
|
}
|
||||||
|
|
||||||
static getBoundary = function() {
|
static getBoundary = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = inputs[| 0].getValue();
|
||||||
var _pos = inputs[| 1].getValue();
|
var _pos = inputs[| 1].getValue();
|
||||||
var _rot = inputs[| 2].getValue();
|
var _rot = inputs[| 2].getValue();
|
||||||
|
@ -123,7 +123,7 @@ function Node_Path_Transform(_x, _y, _group = noone) : Node(_x, _y, _group) cons
|
||||||
|
|
||||||
if(_path == noone) return [ 0, 0, 1, 1 ];
|
if(_path == noone) return [ 0, 0, 1, 1 ];
|
||||||
|
|
||||||
var _b = _path.getBoundary();
|
var _b = _path.getBoundary(ind);
|
||||||
|
|
||||||
var cx = (_b[0] + _b[2]) / 2;
|
var cx = (_b[0] + _b[2]) / 2;
|
||||||
var cy = (_b[1] + _b[1]) / 2;
|
var cy = (_b[1] + _b[1]) / 2;
|
||||||
|
|
|
@ -17,24 +17,19 @@ function Node_Path_Trim(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
return struct_has(_path, "getLineCount")? _path.getLineCount() : 1;
|
return struct_has(_path, "getLineCount")? _path.getLineCount() : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getSegmentCount = function() {
|
static getSegmentCount = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = inputs[| 0].getValue();
|
||||||
return struct_has(_path, "getSegmentCount")? _path.getSegmentCount() : 0;
|
return struct_has(_path, "getSegmentCount")? _path.getSegmentCount(ind) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getLength = function() {
|
static getLength = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = inputs[| 0].getValue();
|
||||||
return struct_has(_path, "getLength")? _path.getLength() : 0;
|
return struct_has(_path, "getLength")? _path.getLength(ind) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getAccuLength = function() {
|
static getAccuLength = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = inputs[| 0].getValue();
|
||||||
return struct_has(_path, "getAccuLength")? _path.getAccuLength() : [];
|
return struct_has(_path, "getAccuLength")? _path.getAccuLength(ind) : [];
|
||||||
}
|
|
||||||
|
|
||||||
static getBoundary = function() {
|
|
||||||
var _path = inputs[| 0].getValue();
|
|
||||||
return struct_has(_path, "getBoundary")? _path.getBoundary() : new BoundingBox( 0, 0, 1, 1 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static getPointRatio = function(_rat, ind = 0) {
|
static getPointRatio = function(_rat, ind = 0) {
|
||||||
|
@ -57,6 +52,11 @@ function Node_Path_Trim(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
return getPointRatio(_dist / getLength(), ind);
|
return getPointRatio(_dist / getLength(), ind);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static getBoundary = function(ind = 0) {
|
||||||
|
var _path = inputs[| 0].getValue();
|
||||||
|
return struct_has(_path, "getBoundary")? _path.getBoundary(ind) : new BoundingBox( 0, 0, 1, 1 );
|
||||||
|
}
|
||||||
|
|
||||||
function update() {
|
function update() {
|
||||||
outputs[| 0].setValue(self);
|
outputs[| 0].setValue(self);
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,37 +22,49 @@ function Node_Path_Wave(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
["Wave", false], 1, 2, 3, 4,
|
["Wave", false], 1, 2, 3, 4,
|
||||||
]
|
]
|
||||||
|
|
||||||
|
current_data = [];
|
||||||
|
|
||||||
static getLineCount = function() {
|
static getLineCount = function() {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = current_data[0];
|
||||||
return struct_has(_path, "getLineCount")? _path.getLineCount() : 1;
|
return struct_has(_path, "getLineCount")? _path.getLineCount() : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getSegmentCount = function() {
|
static getSegmentCount = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = current_data[0];
|
||||||
return struct_has(_path, "getSegmentCount")? _path.getSegmentCount() : 0;
|
return struct_has(_path, "getSegmentCount")? _path.getSegmentCount(ind) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getLength = function() {
|
static getLength = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = current_data[0];
|
||||||
return struct_has(_path, "getLength")? _path.getLength() : 0;
|
var _fre = current_data[1];
|
||||||
|
var _amo = current_data[2];
|
||||||
|
|
||||||
|
var _len = struct_has(_path, "getLength")? _path.getLength(ind) : 0;
|
||||||
|
_len *= _fre * sqrt(_amo + 1 / _fre);
|
||||||
|
|
||||||
|
return _len;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getAccuLength = function() {
|
static getAccuLength = function(ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = current_data[0];
|
||||||
return struct_has(_path, "getAccuLength")? _path.getAccuLength() : [];
|
var _fre = current_data[1];
|
||||||
}
|
var _amo = current_data[2];
|
||||||
|
|
||||||
static getBoundary = function() {
|
var _len = struct_has(_path, "getAccuLength")? _path.getAccuLength(ind) : [];
|
||||||
var _path = inputs[| 0].getValue();
|
var _mul = _fre * sqrt(_amo + 1 / _fre);
|
||||||
return struct_has(_path, "getBoundary")? _path.getBoundary() : new BoundingBox( 0, 0, 1, 1 );
|
|
||||||
|
for( var i = 0, n = array_length(_len); i < n; i++ )
|
||||||
|
_len[i] *= _mul;
|
||||||
|
|
||||||
|
return _len;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getPointRatio = function(_rat, ind = 0) {
|
static getPointRatio = function(_rat, ind = 0) {
|
||||||
var _path = inputs[| 0].getValue();
|
var _path = current_data[0];
|
||||||
var _fre = inputs[| 1].getValue();
|
var _fre = current_data[1];
|
||||||
var _amo = inputs[| 2].getValue();
|
var _amo = current_data[2];
|
||||||
var _shf = inputs[| 3].getValue();
|
var _shf = current_data[3];
|
||||||
var _smt = inputs[| 4].getValue();
|
var _smt = current_data[4];
|
||||||
|
|
||||||
if(is_array(_path)) {
|
if(is_array(_path)) {
|
||||||
_path = array_safe_get(_path, ind);
|
_path = array_safe_get(_path, ind);
|
||||||
|
@ -82,7 +94,15 @@ function Node_Path_Wave(_x, _y, _group = noone) : Node(_x, _y, _group) construct
|
||||||
return getPointRatio(_dist / getLength(), ind);
|
return getPointRatio(_dist / getLength(), ind);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static getBoundary = function(ind = 0) {
|
||||||
|
var _path = current_data[0];
|
||||||
|
return struct_has(_path, "getBoundary")? _path.getBoundary(ind) : new BoundingBox( 0, 0, 1, 1 );
|
||||||
|
}
|
||||||
|
|
||||||
function update() {
|
function update() {
|
||||||
|
for( var i = 0, n = ds_list_size(inputs); i < n; i++ )
|
||||||
|
current_data[i] = inputs[| i].getValue();
|
||||||
|
|
||||||
outputs[| 0].setValue(self);
|
outputs[| 0].setValue(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,8 +68,7 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor {
|
||||||
ALL_NODES[? _node] = _n;
|
ALL_NODES[? _node] = _n;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(tooltip != "")
|
if(tooltip != "") _n.tooltip = tooltip;
|
||||||
_n.tooltip = tooltip;
|
|
||||||
ds_list_add(_list, _n);
|
ds_list_add(_list, _n);
|
||||||
return _n;
|
return _n;
|
||||||
}
|
}
|
||||||
|
@ -623,6 +622,10 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor {
|
||||||
ds_list_add(node, "Debug");
|
ds_list_add(node, "Debug");
|
||||||
addNodeObject(node, "Print", s_node_print, "Node_Print", [1, Node_Print], ["debug log"], "Display text to notification.").setVersion(1145);
|
addNodeObject(node, "Print", s_node_print, "Node_Print", [1, Node_Print], ["debug log"], "Display text to notification.").setVersion(1145);
|
||||||
|
|
||||||
|
var actions = ds_list_create();
|
||||||
|
addNodeCatagory("Actions", actions);
|
||||||
|
__initNodeActions(actions);
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////// PIXEL BUILDER ////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////// PIXEL BUILDER ////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
var pb_draw = ds_list_create();
|
var pb_draw = ds_list_create();
|
||||||
|
@ -708,7 +711,7 @@ function NodeObject(_name, _spr, _node, _create, tags = []) constructor {
|
||||||
global.VALUE_SUGGESTION[? VALUE_TYPE.color] = [ "Node_Solid", "Node_Color_Data", "Node_Color_Mix" ];
|
global.VALUE_SUGGESTION[? VALUE_TYPE.color] = [ "Node_Solid", "Node_Color_Data", "Node_Color_Mix" ];
|
||||||
global.VALUE_SUGGESTION[? VALUE_TYPE.surface] = [ "Node_Transform", "Node_Blend", "Node_Composite", "Node_Export" ];
|
global.VALUE_SUGGESTION[? VALUE_TYPE.surface] = [ "Node_Transform", "Node_Blend", "Node_Composite", "Node_Export" ];
|
||||||
|
|
||||||
global.VALUE_SUGGESTION[? VALUE_TYPE.path] = [ ];
|
global.VALUE_SUGGESTION[? VALUE_TYPE.path] = [ "Node_Line" ];
|
||||||
global.VALUE_SUGGESTION[? VALUE_TYPE.curve] = [ ];
|
global.VALUE_SUGGESTION[? VALUE_TYPE.curve] = [ ];
|
||||||
global.VALUE_SUGGESTION[? VALUE_TYPE.text] = [ "Node_Text", "Node_To_Number" ];
|
global.VALUE_SUGGESTION[? VALUE_TYPE.text] = [ "Node_Text", "Node_To_Number" ];
|
||||||
global.VALUE_SUGGESTION[? VALUE_TYPE.object] = [ ];
|
global.VALUE_SUGGESTION[? VALUE_TYPE.object] = [ ];
|
||||||
|
|
|
@ -289,6 +289,16 @@ function nodeValueUnit(value) constructor {
|
||||||
triggerButton.icon_blend = COLORS._main_icon_light;
|
triggerButton.icon_blend = COLORS._main_icon_light;
|
||||||
triggerButton.icon = THEME.unit_ref;
|
triggerButton.icon = THEME.unit_ref;
|
||||||
|
|
||||||
|
static setMode = function(type) {
|
||||||
|
if(type == "constant" && mode == VALUE_UNIT.constant) return;
|
||||||
|
if(type == "relative" && mode == VALUE_UNIT.reference) return;
|
||||||
|
|
||||||
|
mode = type == "constant"? VALUE_UNIT.constant : VALUE_UNIT.reference;
|
||||||
|
value.cache_value[0] = false;
|
||||||
|
value.unitConvert(mode);
|
||||||
|
value.node.doUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
static draw = function(_x, _y, _w, _h, _m) {
|
static draw = function(_x, _y, _w, _h, _m) {
|
||||||
triggerButton.icon_index = mode;
|
triggerButton.icon_index = mode;
|
||||||
triggerButton.tooltip = (mode? "Fraction" : "Pixel") + " unit";
|
triggerButton.tooltip = (mode? "Fraction" : "Pixel") + " unit";
|
||||||
|
@ -1167,7 +1177,9 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
if(global.EVALUATE_HEAD != noone && global.EVALUATE_HEAD == self) {
|
if(global.EVALUATE_HEAD != noone && global.EVALUATE_HEAD == self) {
|
||||||
//noti_warning($"Expression evaluation error : recursive call detected.");
|
//noti_warning($"Expression evaluation error : recursive call detected.");
|
||||||
} else {
|
} else {
|
||||||
printIf(global.LOG_EXPRESSION, "==================== EVAL BEGIN {expTree} ====================");
|
printIf(global.LOG_EXPRESSION, $"==================== EVAL BEGIN {expTree} ====================");
|
||||||
|
//print(json_beautify(json_stringify(expTree)));
|
||||||
|
//printCallStack();
|
||||||
|
|
||||||
global.EVALUATE_HEAD = self;
|
global.EVALUATE_HEAD = self;
|
||||||
var params = {
|
var params = {
|
||||||
|
@ -1175,7 +1187,13 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
node_name: node.display_name,
|
node_name: node.display_name,
|
||||||
value: val[0]
|
value: val[0]
|
||||||
};
|
};
|
||||||
val[0] = expTree.eval(variable_clone(params));
|
|
||||||
|
var _exp_res = expTree.eval(variable_clone(params));
|
||||||
|
if(is_undefined(_exp_res)) {
|
||||||
|
val[0] = 0;
|
||||||
|
noti_warning("Expression not returning any values.");
|
||||||
|
} else
|
||||||
|
val[0] = _exp_res;
|
||||||
global.EVALUATE_HEAD = noone;
|
global.EVALUATE_HEAD = noone;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1209,7 +1227,11 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
}
|
}
|
||||||
|
|
||||||
static showValue = function() {
|
static showValue = function() {
|
||||||
var val = _getValue(, false);
|
var useCache = true;
|
||||||
|
if(display_type == VALUE_DISPLAY.area)
|
||||||
|
useCache = false;
|
||||||
|
|
||||||
|
var val = getValue(, false, 0, useCache);
|
||||||
|
|
||||||
if(isArray()) {
|
if(isArray()) {
|
||||||
if(array_length(val) == 0) return 0;
|
if(array_length(val) == 0) return 0;
|
||||||
|
@ -1506,6 +1528,8 @@ function NodeValue(_name, _node, _connect, _type, _value, _tooltip = "") constru
|
||||||
drag_sy = 0;
|
drag_sy = 0;
|
||||||
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
|
static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) {
|
||||||
if(type != VALUE_TYPE.integer && type != VALUE_TYPE.float) return -1;
|
if(type != VALUE_TYPE.integer && type != VALUE_TYPE.float) return -1;
|
||||||
|
if(value_from != noone) return -1;
|
||||||
|
if(expUse) return -1;
|
||||||
|
|
||||||
switch(display_type) {
|
switch(display_type) {
|
||||||
case VALUE_DISPLAY._default :
|
case VALUE_DISPLAY._default :
|
||||||
|
|
|
@ -84,7 +84,7 @@
|
||||||
ds_list_add(STATUSES, noti);
|
ds_list_add(STATUSES, noti);
|
||||||
ds_list_add(WARNING, noti);
|
ds_list_add(WARNING, noti);
|
||||||
|
|
||||||
if(!instance_exists(o_dialog_warning) && !TESTING)
|
if(!instance_exists(o_dialog_warning))
|
||||||
dialogCall(o_dialog_warning, mouse_mx + ui(16), mouse_my + ui(16)).warning_text = str;
|
dialogCall(o_dialog_warning, mouse_mx + ui(16), mouse_my + ui(16)).warning_text = str;
|
||||||
|
|
||||||
if(ref) {
|
if(ref) {
|
||||||
|
|
|
@ -94,13 +94,13 @@ function readObj(path, flipUV = false) {
|
||||||
}
|
}
|
||||||
file_text_close(file);
|
file_text_close(file);
|
||||||
|
|
||||||
var txt = "OBJ summary";
|
//var txt = "OBJ summary";
|
||||||
txt += "\n\tVerticies : " + string(array_length(v));
|
//txt += "\n\tVerticies : " + string(array_length(v));
|
||||||
txt += "\n\tTexture Verticies : " + string(array_length(vt));
|
//txt += "\n\tTexture Verticies : " + string(array_length(vt));
|
||||||
txt += "\n\tNormal Verticies : " + string(array_length(vn));
|
//txt += "\n\tNormal Verticies : " + string(array_length(vn));
|
||||||
txt += "\n\tFaces : " + string(face);
|
//txt += "\n\tFaces : " + string(face);
|
||||||
txt += "\n\tVertex groups : " + string(array_length(_VB));
|
//txt += "\n\tVertex groups : " + string(array_length(_VB));
|
||||||
print(txt);
|
//print(txt);
|
||||||
|
|
||||||
#region centralize vertex
|
#region centralize vertex
|
||||||
var cv = [0, 0, 0];
|
var cv = [0, 0, 0];
|
||||||
|
|
|
@ -14,7 +14,7 @@ function pxl_document_parser(prompt) {
|
||||||
|
|
||||||
if(array_length(eq) > 1) {
|
if(array_length(eq) > 1) {
|
||||||
for( var j = 0; j < array_length(eq) - 1; j++ )
|
for( var j = 0; j < array_length(eq) - 1; j++ )
|
||||||
array_push(params, string_trim(eq[j]));
|
array_push_unique(params, string_trim(eq[j]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,11 @@
|
||||||
global.EQUATION_PRES[? "~"] = 9;
|
global.EQUATION_PRES[? "~"] = 9;
|
||||||
|
|
||||||
global.EQUATION_PRES[? "="] = -99;
|
global.EQUATION_PRES[? "="] = -99;
|
||||||
|
global.EQUATION_PRES[? "⊕"] = -99; //+=
|
||||||
|
global.EQUATION_PRES[? "⊖"] = -99; //-=
|
||||||
|
global.EQUATION_PRES[? "⊗"] = -99; //*=
|
||||||
|
global.EQUATION_PRES[? "⊘"] = -99; ///=
|
||||||
|
|
||||||
global.EQUATION_PRES[? "⩵"] = -1; //==
|
global.EQUATION_PRES[? "⩵"] = -1; //==
|
||||||
global.EQUATION_PRES[? "≠"] = -1; //!=
|
global.EQUATION_PRES[? "≠"] = -1; //!=
|
||||||
global.EQUATION_PRES[? "<"] = 0;
|
global.EQUATION_PRES[? "<"] = 0;
|
||||||
|
@ -95,6 +100,14 @@ function functionStringClean(fx) {
|
||||||
fx = string_replace_all(fx, ">=", "≥");
|
fx = string_replace_all(fx, ">=", "≥");
|
||||||
fx = string_replace_all(fx, "<=", "≤");
|
fx = string_replace_all(fx, "<=", "≤");
|
||||||
|
|
||||||
|
fx = string_replace_all(fx, "++", "⊕1");
|
||||||
|
fx = string_replace_all(fx, "--", "⊖1");
|
||||||
|
|
||||||
|
fx = string_replace_all(fx, "+=", "⊕");
|
||||||
|
fx = string_replace_all(fx, "-=", "⊖");
|
||||||
|
fx = string_replace_all(fx, "*=", "⊗");
|
||||||
|
fx = string_replace_all(fx, "/=", "⊘");
|
||||||
|
|
||||||
fx = string_trim(fx);
|
fx = string_trim(fx);
|
||||||
|
|
||||||
return fx;
|
return fx;
|
||||||
|
@ -175,6 +188,7 @@ function functionStringClean(fx) {
|
||||||
itr_array = false;
|
itr_array = false;
|
||||||
|
|
||||||
cond_init = noone;
|
cond_init = noone;
|
||||||
|
cond_indx = noone;
|
||||||
cond_iter = noone;
|
cond_iter = noone;
|
||||||
cond_term = noone;
|
cond_term = noone;
|
||||||
|
|
||||||
|
@ -215,6 +229,8 @@ function functionStringClean(fx) {
|
||||||
printIf(global.LOG_EXPRESSION, $"<<<<<< FOR EACH {_arr} >>>>>>");
|
printIf(global.LOG_EXPRESSION, $"<<<<<< FOR EACH {_arr} >>>>>>");
|
||||||
for( var i = 0, n = array_length(_arr); i < n; i++ ) {
|
for( var i = 0, n = array_length(_arr); i < n; i++ ) {
|
||||||
var val = _arr[i];
|
var val = _arr[i];
|
||||||
|
if(cond_indx != noone)
|
||||||
|
params[$ cond_indx] = i;
|
||||||
params[$ cond_iter] = val;
|
params[$ cond_iter] = val;
|
||||||
|
|
||||||
printIf(global.LOG_EXPRESSION, $"<< ITER {i}: {cond_iter} = {val} >>");
|
printIf(global.LOG_EXPRESSION, $"<< ITER {i}: {cond_iter} = {val} >>");
|
||||||
|
@ -345,7 +361,14 @@ function functionStringClean(fx) {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
var v1 = getVal(l, params, symbol == "=" || symbol == "【" || isLeft);
|
var getRaw = false;
|
||||||
|
switch(symbol) {
|
||||||
|
case "=":
|
||||||
|
case "【":
|
||||||
|
getRaw = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var v1 = getVal(l, params, getRaw || isLeft);
|
||||||
var v2 = getVal(r, params);
|
var v2 = getVal(r, params);
|
||||||
|
|
||||||
var res = 0;
|
var res = 0;
|
||||||
|
@ -362,7 +385,7 @@ function functionStringClean(fx) {
|
||||||
} else if(symbol == "=") {
|
} else if(symbol == "=") {
|
||||||
if(is_array(v1)) {
|
if(is_array(v1)) {
|
||||||
var val = params[$ v1[0]];
|
var val = params[$ v1[0]];
|
||||||
array_safe_set(val, v1[1], v2);
|
val = array_safe_set(val, v1[1], v2);
|
||||||
params[$ v1[0]] = val;
|
params[$ v1[0]] = val;
|
||||||
res = val;
|
res = val;
|
||||||
} else {
|
} else {
|
||||||
|
@ -384,28 +407,54 @@ function functionStringClean(fx) {
|
||||||
} else
|
} else
|
||||||
res = eval_real(v1, v2);
|
res = eval_real(v1, v2);
|
||||||
|
|
||||||
|
var _v1_var = getVal(l, params, true);
|
||||||
|
switch(symbol) {
|
||||||
|
case "⊕":
|
||||||
|
case "⊖":
|
||||||
|
case "⊗":
|
||||||
|
case "⊘":
|
||||||
|
if(is_array(_v1_var)) {
|
||||||
|
var val = params[$ _v1_var[0]];
|
||||||
|
val = array_safe_set(val, _v1_var[1], res);
|
||||||
|
params[$ _v1_var[0]] = val;
|
||||||
|
} else
|
||||||
|
params[$ _v1_var] = res;
|
||||||
|
|
||||||
|
printIf(global.LOG_EXPRESSION, $"|{_v1_var}| = {v1}|{symbol}|{v2}| = {res}");
|
||||||
|
printIf(global.LOG_EXPRESSION, $"symbol : {symbol}");
|
||||||
|
printIf(global.LOG_EXPRESSION, $"l : | {typeof(l)} |{l}|");
|
||||||
|
printIf(global.LOG_EXPRESSION, $"r : | {typeof(r)} |{r}|");
|
||||||
|
printIf(global.LOG_EXPRESSION, "====================");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
printIf(global.LOG_EXPRESSION, $"|{v1}|{symbol}|{v2}| = {res}");
|
printIf(global.LOG_EXPRESSION, $"|{v1}|{symbol}|{v2}| = {res}");
|
||||||
printIf(global.LOG_EXPRESSION, $"symbol : {symbol}");
|
printIf(global.LOG_EXPRESSION, $"symbol : {symbol}");
|
||||||
printIf(global.LOG_EXPRESSION, $"l : | {typeof(l)} |{l}|");
|
printIf(global.LOG_EXPRESSION, $"l : | {typeof(l)} |{l}|");
|
||||||
printIf(global.LOG_EXPRESSION, $"r : | {typeof(r)} |{r}|");
|
printIf(global.LOG_EXPRESSION, $"r : | {typeof(r)} |{r}|");
|
||||||
printIf(global.LOG_EXPRESSION, "====================");
|
printIf(global.LOG_EXPRESSION, "====================");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
static eval_real = function(v1, v2) {
|
static eval_real = function(v1, v2, _symbol = symbol) {
|
||||||
switch(symbol) {
|
switch(_symbol) {
|
||||||
case "+":
|
case "+":
|
||||||
|
case "⊕":
|
||||||
if(_string(v1) || _string(v2))
|
if(_string(v1) || _string(v2))
|
||||||
return _string_trim(v1) + _string_trim(v2);
|
return _string_trim(v1) + _string_trim(v2);
|
||||||
if(is_real(v1) && is_real(v2))
|
if(is_real(v1) && is_real(v2))
|
||||||
return v1 + v2;
|
return v1 + v2;
|
||||||
return 0;
|
return 0;
|
||||||
case "-": return (is_real(v1) && is_real(v2))? v1 - v2 : 0;
|
case "-":
|
||||||
|
case "⊖": return (is_real(v1) && is_real(v2))? v1 - v2 : 0;
|
||||||
case "∸": return is_real(v1)? -v1 : 0;
|
case "∸": return is_real(v1)? -v1 : 0;
|
||||||
case "*": return (is_real(v1) && is_real(v2))? v1 * v2 : 0;
|
case "*":
|
||||||
|
case "⊗": return (is_real(v1) && is_real(v2))? v1 * v2 : 0;
|
||||||
case "$": return (is_real(v1) && is_real(v2))? power(v1, v2) : 0;
|
case "$": return (is_real(v1) && is_real(v2))? power(v1, v2) : 0;
|
||||||
case "/": return (is_real(v1) && is_real(v2) && v2 != 0)? v1 / v2 : 0;
|
case "/":
|
||||||
|
case "⊘": return (is_real(v1) && is_real(v2) && v2 != 0)? v1 / v2 : 0;
|
||||||
case "%": return (is_real(v1) && is_real(v2) && v2 != 0)? v1 % v2 : 0;
|
case "%": return (is_real(v1) && is_real(v2) && v2 != 0)? v1 % v2 : 0;
|
||||||
|
|
||||||
case "&": return (is_real(v1) && is_real(v2))? v1 & v2 : 0;
|
case "&": return (is_real(v1) && is_real(v2))? v1 & v2 : 0;
|
||||||
|
@ -459,39 +508,51 @@ function functionStringClean(fx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function evaluateFunctionList(fx) {
|
function evaluateFunctionList(fx) {
|
||||||
var fxs = string_split(fx, "\n");
|
fx = string_replace_all(fx, "{", "\n{\n");
|
||||||
|
fx = string_replace_all(fx, "}", "\n}\n");
|
||||||
|
|
||||||
|
var fxs = string_split(fx, "\n", true);
|
||||||
|
|
||||||
var flist = new __funcList();
|
var flist = new __funcList();
|
||||||
|
|
||||||
var call_st = ds_stack_create();
|
var call_st = ds_stack_create();
|
||||||
|
var blok_st = ds_stack_create();
|
||||||
ds_stack_push(call_st, flist);
|
ds_stack_push(call_st, flist);
|
||||||
|
|
||||||
for( var i = 0, n = array_length(fxs); i < n; i++ ) {
|
for( var i = 0, n = array_length(fxs); i < n; i++ ) {
|
||||||
var _fx = functionStringClean(fxs[i]);
|
var _fx = functionStringClean(fxs[i]);
|
||||||
if(_fx == "") continue;
|
//print($"Eval line {i}: {_fx} [stack size = {ds_stack_size(call_st)}]");
|
||||||
|
|
||||||
var _fx_sp = string_split(_fx, "(");
|
if(_fx == "" || _fx == "{") continue;
|
||||||
if(string_char_at(_fx, 1) == "}") {
|
if(_fx == "}") {
|
||||||
ds_stack_pop(call_st);
|
ds_stack_pop(call_st);
|
||||||
_fx = string_replace(_fx, "}", "");
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(array_length(_fx_sp) > 1) {
|
var _fx_sp = string_split(_fx, "(");
|
||||||
|
var _cmd = string_trim(_fx_sp[0]);
|
||||||
var _cond = functionStrip(_fx);
|
var _cond = functionStrip(_fx);
|
||||||
|
|
||||||
switch(_fx_sp[0]) {
|
switch(_cmd) {
|
||||||
case "if":
|
case "if":
|
||||||
var con_if = new __funcIf();
|
var con_if = new __funcIf();
|
||||||
con_if.condition = evaluateFunctionTree(_cond);
|
con_if.condition = evaluateFunctionTree(_cond);
|
||||||
ds_stack_top(call_st).addFunction(con_if);
|
ds_stack_top(call_st).addFunction(con_if);
|
||||||
ds_stack_push(call_st, con_if.if_true);
|
ds_stack_push(call_st, con_if.if_true);
|
||||||
|
ds_stack_push(blok_st, con_if);
|
||||||
continue;
|
continue;
|
||||||
case "else if":
|
case "elseif":
|
||||||
var con_if = new __funcIf();
|
var con_if = ds_stack_pop(blok_st);
|
||||||
con_if.condition = evaluateFunctionTree(_cond);
|
var con_elif = new __funcIf();
|
||||||
ds_stack_top(call_st).addFunction(con_if);
|
con_elif.condition = evaluateFunctionTree(_cond);
|
||||||
ds_stack_push(call_st, con_if.if_true);
|
|
||||||
|
con_if.if_false.addFunction(con_elif);
|
||||||
|
ds_stack_push(call_st, con_elif.if_true);
|
||||||
|
ds_stack_push(blok_st, con_elif);
|
||||||
continue;
|
continue;
|
||||||
case "else":
|
case "else":
|
||||||
|
var con_if = ds_stack_pop(blok_st);
|
||||||
|
|
||||||
ds_stack_push(call_st, con_if.if_false);
|
ds_stack_push(call_st, con_if.if_false);
|
||||||
continue;
|
continue;
|
||||||
case "for":
|
case "for":
|
||||||
|
@ -499,8 +560,16 @@ function functionStringClean(fx) {
|
||||||
var cond = string_splice(_cond, ":");
|
var cond = string_splice(_cond, ":");
|
||||||
if(array_length(cond) == 2) {
|
if(array_length(cond) == 2) {
|
||||||
con_for.itr_array = true;
|
con_for.itr_array = true;
|
||||||
con_for.cond_iter = cond[0];
|
|
||||||
con_for.cond_arr = evaluateFunctionTree(cond[1]);
|
con_for.cond_arr = evaluateFunctionTree(cond[1]);
|
||||||
|
|
||||||
|
cond[0] = string_trim(cond[0]);
|
||||||
|
var _itr = string_split(cond[0], ",");
|
||||||
|
if(array_length(_itr) == 1)
|
||||||
|
con_for.cond_iter = cond[0];
|
||||||
|
else if(array_length(_itr) == 2) {
|
||||||
|
con_for.cond_indx = string_trim(_itr[0]);
|
||||||
|
con_for.cond_iter = string_trim(_itr[1]);
|
||||||
|
}
|
||||||
} else if(array_length(cond) == 3) {
|
} else if(array_length(cond) == 3) {
|
||||||
con_for.itr_array = false;
|
con_for.itr_array = false;
|
||||||
con_for.cond_init = evaluateFunctionTree(cond[0]);
|
con_for.cond_init = evaluateFunctionTree(cond[0]);
|
||||||
|
@ -511,15 +580,19 @@ function functionStringClean(fx) {
|
||||||
ds_stack_push(call_st, con_for.action);
|
ds_stack_push(call_st, con_for.action);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(ds_stack_empty(call_st)) {
|
||||||
|
print("Block stack empty, how?");
|
||||||
|
} else {
|
||||||
|
var _top = ds_stack_top(call_st);
|
||||||
|
_top.addFunction(evaluateFunctionTree(_fx));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ds_stack_top(call_st).addFunction(evaluateFunctionTree(_fx));
|
|
||||||
}
|
|
||||||
|
|
||||||
var val = ds_stack_pop(call_st);
|
|
||||||
ds_stack_destroy(call_st);
|
ds_stack_destroy(call_st);
|
||||||
|
ds_stack_destroy(blok_st);
|
||||||
|
|
||||||
return val;
|
return flist;
|
||||||
}
|
}
|
||||||
|
|
||||||
function evaluateFunctionTree(fx) {
|
function evaluateFunctionTree(fx) {
|
||||||
|
@ -721,6 +794,11 @@ function functionStringClean(fx) {
|
||||||
case "<":
|
case "<":
|
||||||
case ">":
|
case ">":
|
||||||
|
|
||||||
|
case "⊕":
|
||||||
|
case "⊖":
|
||||||
|
case "⊗":
|
||||||
|
case "⊘":
|
||||||
|
|
||||||
if(ds_stack_size(vl) >= 2) {
|
if(ds_stack_size(vl) >= 2) {
|
||||||
var _v1 = ds_stack_pop(vl);
|
var _v1 = ds_stack_pop(vl);
|
||||||
var _v2 = ds_stack_pop(vl);
|
var _v2 = ds_stack_pop(vl);
|
||||||
|
|
Loading…
Reference in a new issue