New (numerical) Differential node.

This commit is contained in:
Tanasart 2025-01-14 12:13:08 +07:00
parent f075d11357
commit 7de4b56e23
12 changed files with 161 additions and 2 deletions

View file

@ -820,6 +820,7 @@
{"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","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",},
{"name":"node_directory_search","order":17,"path":"scripts/node_directory_search/node_directory_search.yy",},
{"name":"node_displace","order":2,"path":"scripts/node_displace/node_displace.yy",},
@ -2032,6 +2033,7 @@
{"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","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",},
{"name":"s_node_dilate","order":30,"path":"sprites/s_node_dilate/s_node_dilate.yy",},
{"name":"s_node_directory_search","order":35,"path":"sprites/s_node_directory_search/s_node_directory_search.yy",},

View file

@ -1120,7 +1120,6 @@
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Values/Array/Node_Array_Shuffle","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Values/Array/Node_Array_Sort","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Values/Array/Node_Array_Split","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Values/Array/Node_Array_Unique copy","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Values/Array/Node_Array_Unique","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Values/Array/Node_Array_Zip","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Values/Array/Node_Array","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
@ -1142,6 +1141,7 @@
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Values/Number/Node_Base_Convert","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Values/Number/Node_Boolean","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Values/Number/Node_Compare","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Values/Number/Node_Differential","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Values/Number/Node_Equation","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Values/Number/Node_FFT","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
{"$GMIncludedFile":"","%Name":"info.json","CopyToMask":-1,"filePath":"datafiles/data/Nodes/Internal/Values/Number/Node_Logic","name":"info.json","resourceType":"GMIncludedFile","resourceVersion":"2.0",},
@ -1994,6 +1994,7 @@
{"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","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",},},
{"id":{"name":"node_dilate","path":"scripts/node_dilate/node_dilate.yy",},},
{"id":{"name":"node_directory_search","path":"scripts/node_directory_search/node_directory_search.yy",},},
@ -3364,6 +3365,7 @@
{"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","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",},},
{"id":{"name":"s_node_dilate","path":"sprites/s_node_dilate/s_node_dilate.yy",},},
{"id":{"name":"s_node_directory_search","path":"sprites/s_node_directory_search/s_node_directory_search.yy",},},

Binary file not shown.

View file

@ -6,5 +6,11 @@
"io":[
"float"
],
"alias":[
"union",
"intersection",
"difference",
"xor",
]
"pxc_version":118069,
}

View file

@ -0,0 +1,10 @@
{
"name":"Differential",
"baseNode":"Node_Differential",
"tooltip":"Calculate how much the input value has changed since the last frame.",
"spr":"s_node_differential",
"pxc_version":118069,
"io":[
"float"
],
}

View file

@ -23,7 +23,8 @@
"abs",
"fract",
"clamp",
"snap"
"snap",
"map",
],
"spr":"s_node_math",
"baseNode":"Node_Math",

View file

@ -664,6 +664,7 @@
"Node_Statistic",
"Node_Base_Convert",
"Node_FFT",
"Node_Differential",
{ "label": "/Surfaces" },
"Node_Interpret_Number",

View file

@ -0,0 +1,34 @@
function Node_Differential(_x, _y, _group = noone) : Node_Processor(_x, _y, _group) constructor {
name = "Differential";
color = COLORS.node_blend_number;
setDimension(96, 48);
newInput(0, nodeValue_Float("Value", self, 0))
.setVisible(true, true);
newOutput(0, nodeValue_Output("Result", self, VALUE_TYPE.float, 0));
prev_values = [];
static processData = function(_output, _data, _output_index, _array_index = 0) {
var _v = _data[0];
var _p = array_safe_get_fast(prev_values, _array_index, 0);
if(!is_array(_p)) _p = [ 0, 0 ];
var _dx = _v - _p[0];
var _dt = CURRENT_FRAME - _p[1];
_p[0] = _v;
_p[1] = CURRENT_FRAME;
prev_values[_array_index] = _p;
return _dt == 0? 0 : _dx / _dt;
}
static onDrawNode = function(xx, yy, _mx, _my, _s, _hover, _focus) {
var bbox = drawGetBbox(xx, yy, _s);
draw_sprite_bbox_uniform(s_node_differential, 0, bbox);
}
}

View file

@ -0,0 +1,13 @@
{
"$GMScript":"v1",
"%Name":"node_differential",
"isCompatibility":false,
"isDnD":false,
"name":"node_differential",
"parent":{
"name":"number",
"path":"folders/nodes/data/value/number.yy",
},
"resourceType":"GMScript",
"resourceVersion":"2.0",
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -0,0 +1,90 @@
{
"$GMSprite":"",
"%Name":"s_node_differential",
"bboxMode":0,
"bbox_bottom":60,
"bbox_left":11,
"bbox_right":52,
"bbox_top":3,
"collisionKind":1,
"collisionTolerance":0,
"DynamicTexturePage":false,
"edgeFiltering":false,
"For3D":false,
"frames":[
{"$GMSpriteFrame":"","%Name":"8cc4667f-9c3c-4e01-b52b-0777c8d37513","name":"8cc4667f-9c3c-4e01-b52b-0777c8d37513","resourceType":"GMSpriteFrame","resourceVersion":"2.0",},
],
"gridX":0,
"gridY":0,
"height":64,
"HTile":false,
"layers":[
{"$GMImageLayer":"","%Name":"ea5fdb10-fc03-4528-b72f-b15584004814","blendMode":0,"displayName":"default","isLocked":false,"name":"ea5fdb10-fc03-4528-b72f-b15584004814","opacity":100.0,"resourceType":"GMImageLayer","resourceVersion":"2.0","visible":true,},
],
"name":"s_node_differential",
"nineSlice":null,
"origin":4,
"parent":{
"name":"number",
"path":"folders/nodes/icons/value/number.yy",
},
"preMultiplyAlpha":false,
"resourceType":"GMSprite",
"resourceVersion":"2.0",
"sequence":{
"$GMSequence":"",
"%Name":"s_node_differential",
"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_differential",
"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":"8cc4667f-9c3c-4e01-b52b-0777c8d37513","path":"sprites/s_node_differential/s_node_differential.yy",},"resourceType":"SpriteFrameKeyframe","resourceVersion":"2.0",},
},"Disabled":false,"id":"b2b530ad-2ba0-4eac-ba97-da1d91494520","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,
}