diff --git a/PixelComposer.resource_order b/PixelComposer.resource_order index 837581c3a..7cb0ea3b6 100644 --- a/PixelComposer.resource_order +++ b/PixelComposer.resource_order @@ -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",}, diff --git a/PixelComposer.yyp b/PixelComposer.yyp index 06a791749..61f68f840 100644 --- a/PixelComposer.yyp +++ b/PixelComposer.yyp @@ -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",},}, diff --git a/datafiles/data/Nodes/Internal.zip b/datafiles/data/Nodes/Internal.zip index b4a1b8f37..1ca4ec9be 100644 Binary files a/datafiles/data/Nodes/Internal.zip and b/datafiles/data/Nodes/Internal.zip differ diff --git a/datafiles/data/Nodes/Internal/Values/Array/Node_Array_Boolean_Opr/info.json b/datafiles/data/Nodes/Internal/Values/Array/Node_Array_Boolean_Opr/info.json index 78c45d789..62c50ccf0 100644 --- a/datafiles/data/Nodes/Internal/Values/Array/Node_Array_Boolean_Opr/info.json +++ b/datafiles/data/Nodes/Internal/Values/Array/Node_Array_Boolean_Opr/info.json @@ -6,5 +6,11 @@ "io":[ "float" ], + "alias":[ + "union", + "intersection", + "difference", + "xor", + ] "pxc_version":118069, } \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Values/Number/Node_Differential/info.json b/datafiles/data/Nodes/Internal/Values/Number/Node_Differential/info.json new file mode 100644 index 000000000..72a31d0eb --- /dev/null +++ b/datafiles/data/Nodes/Internal/Values/Number/Node_Differential/info.json @@ -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" + ], +} \ No newline at end of file diff --git a/datafiles/data/Nodes/Internal/Values/Number/Node_Math/info.json b/datafiles/data/Nodes/Internal/Values/Number/Node_Math/info.json index 5cf25deae..cd034c1a2 100644 --- a/datafiles/data/Nodes/Internal/Values/Number/Node_Math/info.json +++ b/datafiles/data/Nodes/Internal/Values/Number/Node_Math/info.json @@ -23,7 +23,8 @@ "abs", "fract", "clamp", - "snap" + "snap", + "map", ], "spr":"s_node_math", "baseNode":"Node_Math", diff --git a/datafiles/data/Nodes/display_data.json b/datafiles/data/Nodes/display_data.json index 8a5173f08..7d52e5123 100644 --- a/datafiles/data/Nodes/display_data.json +++ b/datafiles/data/Nodes/display_data.json @@ -664,6 +664,7 @@ "Node_Statistic", "Node_Base_Convert", "Node_FFT", + "Node_Differential", { "label": "/Surfaces" }, "Node_Interpret_Number", diff --git a/scripts/node_differential/node_differential.gml b/scripts/node_differential/node_differential.gml new file mode 100644 index 000000000..9c050c850 --- /dev/null +++ b/scripts/node_differential/node_differential.gml @@ -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); + } +} diff --git a/scripts/node_differential/node_differential.yy b/scripts/node_differential/node_differential.yy new file mode 100644 index 000000000..7e7de4087 --- /dev/null +++ b/scripts/node_differential/node_differential.yy @@ -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", +} \ No newline at end of file diff --git a/sprites/s_node_differential/8cc4667f-9c3c-4e01-b52b-0777c8d37513.png b/sprites/s_node_differential/8cc4667f-9c3c-4e01-b52b-0777c8d37513.png new file mode 100644 index 000000000..cfee0f370 Binary files /dev/null and b/sprites/s_node_differential/8cc4667f-9c3c-4e01-b52b-0777c8d37513.png differ diff --git a/sprites/s_node_differential/layers/8cc4667f-9c3c-4e01-b52b-0777c8d37513/ea5fdb10-fc03-4528-b72f-b15584004814.png b/sprites/s_node_differential/layers/8cc4667f-9c3c-4e01-b52b-0777c8d37513/ea5fdb10-fc03-4528-b72f-b15584004814.png new file mode 100644 index 000000000..cfee0f370 Binary files /dev/null and b/sprites/s_node_differential/layers/8cc4667f-9c3c-4e01-b52b-0777c8d37513/ea5fdb10-fc03-4528-b72f-b15584004814.png differ diff --git a/sprites/s_node_differential/s_node_differential.yy b/sprites/s_node_differential/s_node_differential.yy new file mode 100644 index 000000000..f1bd0f20c --- /dev/null +++ b/sprites/s_node_differential/s_node_differential.yy @@ -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":"", + "Keyframes":[], + "resourceType":"KeyframeStore", + "resourceVersion":"2.0", + }, + "eventStubScript":null, + "eventToFunction":{}, + "length":1.0, + "lockOrigin":false, + "moments":{ + "$KeyframeStore":"", + "Keyframes":[], + "resourceType":"KeyframeStore", + "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":"","Keyframes":[ + {"$Keyframe":"","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","resourceVersion":"2.0","Stretch":false,}, + ],"resourceType":"KeyframeStore","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, +} \ No newline at end of file