New Delay Value node.

This commit is contained in:
Tanasart 2025-02-05 12:17:09 +07:00
parent 968b2e4f9c
commit 447ed392ea
12 changed files with 203 additions and 2 deletions

View file

@ -824,6 +824,7 @@
{"name":"node_custom_shader","order":1,"path":"scripts/node_custom_shader/node_custom_shader.yy",},
{"name":"node_data","order":1,"path":"scripts/node_data/node_data.yy",},
{"name":"node_de_stray","order":2,"path":"scripts/node_de_stray/node_de_stray.yy",},
{"name":"node_delay_value","order":6,"path":"scripts/node_delay_value/node_delay_value.yy",},
{"name":"node_delay","order":5,"path":"scripts/node_delay/node_delay.yy",},
{"name":"node_differential","order":17,"path":"scripts/node_differential/node_differential.yy",},
{"name":"node_diffuse","order":7,"path":"scripts/node_diffuse/node_diffuse.yy",},
@ -2046,6 +2047,7 @@
{"name":"s_node_curve","order":27,"path":"sprites/s_node_curve/s_node_curve.yy",},
{"name":"s_node_de_corner","order":28,"path":"sprites/s_node_de_corner/s_node_de_corner.yy",},
{"name":"s_node_de_stray","order":29,"path":"sprites/s_node_de_stray/s_node_de_stray.yy",},
{"name":"s_node_delay_value","order":13,"path":"sprites/s_node_delay_value/s_node_delay_value.yy",},
{"name":"s_node_delay","order":7,"path":"sprites/s_node_delay/s_node_delay.yy",},
{"name":"s_node_differential","order":13,"path":"sprites/s_node_differential/s_node_differential.yy",},
{"name":"s_node_diffuse","order":41,"path":"sprites/s_node_diffuse/s_node_diffuse.yy",},

View file

@ -558,6 +558,7 @@
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Animation/Node_Audio_Loudness","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Animation/Node_Audio_Window","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Animation/Node_Counter","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Animation/Node_Delay_Value","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Animation/Node_Delay","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Animation/Node_Fn_Ease","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Animation/Node_Fn_Math","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
@ -2004,6 +2005,7 @@
{"id":{"name":"node_data","path":"scripts/node_data/node_data.yy",},},
{"id":{"name":"node_de_corner","path":"scripts/node_de_corner/node_de_corner.yy",},},
{"id":{"name":"node_de_stray","path":"scripts/node_de_stray/node_de_stray.yy",},},
{"id":{"name":"node_delay_value","path":"scripts/node_delay_value/node_delay_value.yy",},},
{"id":{"name":"node_delay","path":"scripts/node_delay/node_delay.yy",},},
{"id":{"name":"node_differential","path":"scripts/node_differential/node_differential.yy",},},
{"id":{"name":"node_diffuse","path":"scripts/node_diffuse/node_diffuse.yy",},},
@ -3386,6 +3388,7 @@
{"id":{"name":"s_node_curve","path":"sprites/s_node_curve/s_node_curve.yy",},},
{"id":{"name":"s_node_de_corner","path":"sprites/s_node_de_corner/s_node_de_corner.yy",},},
{"id":{"name":"s_node_de_stray","path":"sprites/s_node_de_stray/s_node_de_stray.yy",},},
{"id":{"name":"s_node_delay_value","path":"sprites/s_node_delay_value/s_node_delay_value.yy",},},
{"id":{"name":"s_node_delay","path":"sprites/s_node_delay/s_node_delay.yy",},},
{"id":{"name":"s_node_differential","path":"sprites/s_node_differential/s_node_differential.yy",},},
{"id":{"name":"s_node_diffuse","path":"sprites/s_node_diffuse/s_node_diffuse.yy",},},

Binary file not shown.

View file

@ -0,0 +1,8 @@
{
"name":"Delay Value",
"spr":"s_node_delay_value",
"tooltip":"Delay value by fix amount of frames.",
"pxc_version":118080,
"baseNode":"Node_Delay_Value",
"io":[],
}

View file

@ -873,6 +873,7 @@
{ "label": "Animations" },
"Node_Rate_Remap",
"Node_Delay",
"Node_Delay_Value",
"Node_Stagger",
"Node_Revert",

View file

@ -1253,7 +1253,7 @@ event_inherited();
tx += string_width(_node.getName());
}
if(_hover && MOUSE_MOVED && point_in_rectangle(_m[0], _m[1], 0, yy, pd + ui(32), yy + list_height - 1)) {
if(_hover && point_in_rectangle(_m[0], _m[1], 0, yy, pd + ui(32), yy + list_height - 1)) {
node_selecting = noone;
gpu_set_tex_filter(true); BLEND_ADD

View file

@ -1393,7 +1393,6 @@ function Node(_x, _y, _group = noone) : __Node_Base(_x, _y) constructor {
}
var _prev = getPreviousNodes();
for( var i = 0, n = array_length(_prev); i < n; i++ ) {
if(_prev[i].__getNodeChildList(_node, _arr)) {
array_push(_arr, self);

View file

@ -0,0 +1,84 @@
#region create
FN_NODE_CONTEXT_INVOKE {
addHotkey("Node_Delay_Value", "Overflow > Toggle", "O", MOD_KEY.none, function() /*=>*/ { PANEL_GRAPH_FOCUS_STR _n.inputs[2].setValue((_n.inputs[2].getValue() + 1) % 3); });
});
#endregion
function Node_Delay_Value(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Delay Value";
is_simulation = true;
setDimension(96, 32 + 24);
newInput(0, nodeValue("Value", self, CONNECT_TYPE.input, VALUE_TYPE.any, noone))
.setVisible(true, true);
newInput(1, nodeValue_Int("Frames", self, 1));
newInput(2, nodeValue_Enum_Scroll("Overflow", self, 0, [ "Hold", "Loop", "Value" ]));
newInput(3, nodeValue("Default", self, CONNECT_TYPE.input, VALUE_TYPE.any, noone));
newOutput(0, nodeValue_Output("Value", self, VALUE_TYPE.any, noone));
input_display_list = [ 0,
["Delay", false], 1, 2, 3,
];
data_indexes = [];
curr_frame = 0;
static processData_prebatch = function() {
data_indexes = array_verify(data_indexes, process_amount);
for( var i = 0; i < process_amount; i++ )
data_indexes[i] = array_verify(data_indexes[i], TOTAL_FRAMES);
var _ovr = getSingleValue(2);
inputs[3].setVisible(_ovr == 2, _ovr == 2);
var _frm = inputs[0].value_from;
var _typ = _frm == noone? VALUE_TYPE.any : _frm.type;
inputs[0].setType(_typ);
outputs[0].setType(_typ);
}
static processData = function(_output, _data, _output_index, _array_index = 0) {
var _val = _data[0];
var _frme = _data[1];
var _ovrf = _data[2];
var _def = _data[3];
var _time = CURRENT_FRAME;
var _totl = TOTAL_FRAMES;
var _frtm = _time - _frme;
switch(_ovrf) {
case 0 : _frtm = clamp(_frtm, 0, _totl - 1); break;
case 1 : _frtm = (_frtm + _totl) % _totl; break;
}
curr_frame = _frtm;
var _surfA = data_indexes[_array_index];
_surfA[_time] = variable_clone(_val);
return array_safe_get(_surfA, _frtm, _def);
}
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
var str = getSingleValue(0, preview_index, true);
var bbox = drawGetBbox(xx, yy, _s);
draw_set_text(f_sdf, fa_center, fa_center, COLORS._main_text);
draw_text_bbox(bbox, str);
}
static drawAnimationTimeline = function(_shf, _w, _h, _s) {
draw_set_color(COLORS._main_value_positive);
draw_set_alpha(1);
var _x = _shf + (curr_frame + 1) * _s;
draw_line_width(_x, 0, _x, _h, 1);
draw_set_alpha(1);
}
}

View file

@ -0,0 +1,14 @@
{
"$GMScript":"v1",
"%Name":"node_delay_value",
"isCompatibility":false,
"isDnD":false,
"name":"node_delay_value",
"parent":{
"name":"animation",
"path":"folders/nodes/data/animation.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",
"tags":[],
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -0,0 +1,90 @@
{
"$GMSprite":"",
"%Name":"s_node_delay_value",
"bboxMode":0,
"bbox_bottom":56,
"bbox_left":5,
"bbox_right":58,
"bbox_top":6,
"collisionKind":1,
"collisionTolerance":0,
"DynamicTexturePage":false,
"edgeFiltering":false,
"For3D":false,
"frames":[
{"$GMSpriteFrame":"","%Name":"0b4ceeea-7b66-42b6-bf1a-6b2b50022500","name":"0b4ceeea-7b66-42b6-bf1a-6b2b50022500","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
],
"gridX":0,
"gridY":0,
"height":64,
"HTile":false,
"layers":[
{"$GMImageLayer":"","%Name":"2ea190d2-0b79-4fea-ac50-881f6c20ca51","blendMode":0,"displayName":"default","isLocked":false,"name":"2ea190d2-0b79-4fea-ac50-881f6c20ca51","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
],
"name":"s_node_delay_value",
"nineSlice":null,
"origin":4,
"parent":{
"name":"animation",
"path":"folders/nodes/icons/animation.yy",
},
"preMultiplyAlpha":false,
"resourceType":"GMSprite",
"resourceVersion":"2.0",
"sequence":{
"$GMSequence":"",
"%Name":"s_node_delay_value",
"autoRecord":true,
"backdropHeight":768,
"backdropImageOpacity":0.5,
"backdropImagePath":"",
"backdropWidth":1366,
"backdropXOffset":0.0,
"backdropYOffset":0.0,
"events":{
"$KeyframeStore<MessageEventKeyframe>":"",
"Keyframes":[],
"resourceType":"KeyframeStore<MessageEventKeyframe>",
"resourceVersion":"2.0",
},
"eventStubScript":null,
"eventToFunction":{},
"length":1.0,
"lockOrigin":false,
"moments":{
"$KeyframeStore<MomentsEventKeyframe>":"",
"Keyframes":[],
"resourceType":"KeyframeStore<MomentsEventKeyframe>",
"resourceVersion":"2.0",
},
"name":"s_node_delay_value",
"playback":1,
"playbackSpeed":30.0,
"playbackSpeedType":0,
"resourceType":"GMSequence",
"resourceVersion":"2.0",
"showBackdrop":true,
"showBackdropImage":false,
"timeUnits":1,
"tracks":[
{"$GMSpriteFramesTrack":"","builtinName":0,"events":[],"inheritsTrackColour":true,"interpolation":1,"isCreationTrack":false,"keyframes":{"$KeyframeStore<SpriteFrameKeyframe>":"","Keyframes":[
{"$Keyframe<SpriteFrameKeyframe>":"","Channels":{
"0":{"$SpriteFrameKeyframe":"","Id":{"name":"0b4ceeea-7b66-42b6-bf1a-6b2b50022500","path":"sprites/s_node_delay_value/s_node_delay_value.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"d77e5fe2-f346-4187-ab5c-2e4438436dc5","IsCreationKey":false,"Key":0.0,"Length":1.0,"resourceType":"Keyframe<SpriteFrameKeyframe>","resourceVersion":"2.0","Stretch":false,},
],"resourceType":"KeyframeStore<SpriteFrameKeyframe>","resourceVersion":"2.0",},"modifiers":[],"name":"frames","resourceType":"GMSpriteFramesTrack","resourceVersion":"2.0","spriteId":null,"trackColour":0,"tracks":[],"traits":0,},
],
"visibleRange":null,
"volume":1.0,
"xorigin":32,
"yorigin":32,
},
"swatchColours":null,
"swfPrecision":0.5,
"textureGroupId":{
"name":"Default",
"path":"texturegroups/Default",
},
"type":0,
"VTile":false,
"width":64,
}